diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-04-02 18:42:43 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-04-02 18:42:43 -0500 |
commit | 70fd92da159408e939381abf14f37c01d523760d (patch) | |
tree | 589333caf890e42614583161b5a71dc00c8f2625 /ML_BSSN_MP_Helper | |
parent | 90b1458fa8c6340ad8c81dbc0dd43ed77f64f993 (diff) |
Create several specialised thorns: ML_ADM and ML_BSSN as standard cases,
ML_BSSN_MP for multi-patch simulations, and ML_BSSN_M for AMR simulations
with matter.
Add helper thorns for all BSSN thorns. Helper thorns are required at run
time, e.g. to register gauge conditions.
Split ADM and BSSN equations into their own source files.
Diffstat (limited to 'ML_BSSN_MP_Helper')
-rw-r--r-- | ML_BSSN_MP_Helper/configuration.ccl | 1 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/interface.ccl | 8 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/param.ccl | 11 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/schedule.ccl | 83 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/src/RegisterSlicing.c | 10 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/src/SelectBCsADMBase.c | 28 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c | 38 | ||||
-rw-r--r-- | ML_BSSN_MP_Helper/src/make.code.defn | 2 |
8 files changed, 181 insertions, 0 deletions
diff --git a/ML_BSSN_MP_Helper/configuration.ccl b/ML_BSSN_MP_Helper/configuration.ccl new file mode 100644 index 0000000..aecb1c4 --- /dev/null +++ b/ML_BSSN_MP_Helper/configuration.ccl @@ -0,0 +1 @@ +REQUIRES THORNS: CoordGauge diff --git a/ML_BSSN_MP_Helper/interface.ccl b/ML_BSSN_MP_Helper/interface.ccl new file mode 100644 index 0000000..f8409dd --- /dev/null +++ b/ML_BSSN_MP_Helper/interface.ccl @@ -0,0 +1,8 @@ +IMPLEMENTS: ML_BSSN_MP_Helper + +INHERITS: ADMBase CoordGauge ML_BSSN_MP + + + +CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, CCTK_STRING IN group_name, CCTK_STRING IN bc_name) +USES FUNCTION Boundary_SelectGroupForBC diff --git a/ML_BSSN_MP_Helper/param.ccl b/ML_BSSN_MP_Helper/param.ccl new file mode 100644 index 0000000..e7642dc --- /dev/null +++ b/ML_BSSN_MP_Helper/param.ccl @@ -0,0 +1,11 @@ +SHARES: ADMBase + +USES KEYWORD evolution_method + +SHARES: GenericFD + +USES CCTK_INT boundary_width + +SHARES: ML_BSSN_MP + +USES CCTK_INT timelevels diff --git a/ML_BSSN_MP_Helper/schedule.ccl b/ML_BSSN_MP_Helper/schedule.ccl new file mode 100644 index 0000000..79799bc --- /dev/null +++ b/ML_BSSN_MP_Helper/schedule.ccl @@ -0,0 +1,83 @@ +if (CCTK_EQUALS (evolution_method, "ML_BSSN_MP")) { + + if (timelevels == 1) { + STORAGE: ADMBase::metric[1] + STORAGE: ADMBase::curv[1] + STORAGE: ADMBase::lapse[1] + STORAGE: ADMBase::shift[1] + STORAGE: ADMBase::dtlapse[1] + STORAGE: ADMBase::dtshift[1] + } else if (timelevels == 2) { + STORAGE: ADMBase::metric[2] + STORAGE: ADMBase::curv[2] + STORAGE: ADMBase::lapse[2] + STORAGE: ADMBase::shift[2] + STORAGE: ADMBase::dtlapse[2] + STORAGE: ADMBase::dtshift[2] + } else if (timelevels == 3) { + STORAGE: ADMBase::metric[3] + STORAGE: ADMBase::curv[3] + STORAGE: ADMBase::lapse[3] + STORAGE: ADMBase::shift[3] + STORAGE: ADMBase::dtlapse[3] + STORAGE: ADMBase::dtshift[3] + } + + SCHEDULE ML_BSSN_MP_RegisterSlicing AT startup + { + LANG: C + OPTIONS: meta + } "Register slicing" + + SCHEDULE ML_BSSN_MP_UnsetCheckpointTags AT basegrid + { + LANG: C + OPTIONS: meta + } "Don't checkpoint ADMBase variables" + + + + SCHEDULE GROUP ML_BSSN_MP_evolCalcGroup IN MoL_CalcRHS + { + } "Calculate BSSN RHS" + + SCHEDULE GROUP ML_BSSN_MP_evolCalcGroup AT analysis + { + TRIGGERS: ML_BSSN_MP::ML_log_confacrhs + TRIGGERS: ML_BSSN_MP::ML_metricrhs + TRIGGERS: ML_BSSN_MP::ML_Gammarhs + TRIGGERS: ML_BSSN_MP::ML_trace_curvrhs + TRIGGERS: ML_BSSN_MP::ML_curvrhs + TRIGGERS: ML_BSSN_MP::ML_lapserhs + TRIGGERS: ML_BSSN_MP::ML_dtlapserhs + TRIGGERS: ML_BSSN_MP::ML_shiftrhs + TRIGGERS: ML_BSSN_MP::ML_dtshiftrhs + } "Calculate BSSN RHS" + + + + SCHEDULE GROUP ML_BSSN_MP_constraintsCalcGroup AT analysis + { + TRIGGERS: ML_BSSN_MP::ML_Ham + TRIGGERS: ML_BSSN_MP::ML_mom + } "Calculate BSSN constraints" + + + + SCHEDULE ML_BSSN_MP_SelectBCsADMBase IN MoL_PostStep AFTER ML_BSSN_MP_convertToADMBase + { + LANG: C + OPTIONS: level + SYNC: ADMBase::metric + SYNC: ADMBase::curv + SYNC: ADMBase::lapse + SYNC: ADMBase::shift + SYNC: ADMBase::dtlapse + SYNC: ADMBase::dtshift + } "Apply boundary conditions to ADMBase variables" + + SCHEDULE GROUP ApplyBCs AS ML_BSSN_MP_ApplyBCsADMBase IN MoL_PostStep AFTER ML_BSSN_MP_SelectBCsADMBase + { + } "Apply boundary conditions to ADMBase variables" + +} diff --git a/ML_BSSN_MP_Helper/src/RegisterSlicing.c b/ML_BSSN_MP_Helper/src/RegisterSlicing.c new file mode 100644 index 0000000..e9ebf81 --- /dev/null +++ b/ML_BSSN_MP_Helper/src/RegisterSlicing.c @@ -0,0 +1,10 @@ +#include <cctk.h> + +#include "CactusEinstein/CoordGauge/src/Slicing.h" + +int +ML_BSSN_MP_RegisterSlicing (void) +{ + Einstein_RegisterSlicing ("ML_BSSN_MP"); + return 0; +} diff --git a/ML_BSSN_MP_Helper/src/SelectBCsADMBase.c b/ML_BSSN_MP_Helper/src/SelectBCsADMBase.c new file mode 100644 index 0000000..4a1c095 --- /dev/null +++ b/ML_BSSN_MP_Helper/src/SelectBCsADMBase.c @@ -0,0 +1,28 @@ +#include <cctk.h> +#include <cctk_Arguments.h> +#include <cctk_Parameters.h> + +static void +select_bcs (cGH const * restrict cctkGH, char const * restrict gn); + +void +ML_BSSN_MP_SelectBCsADMBase (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + + select_bcs (cctkGH, "ADMBase::metric"); + select_bcs (cctkGH, "ADMBase::curv"); + select_bcs (cctkGH, "ADMBase::lapse"); + select_bcs (cctkGH, "ADMBase::shift"); + select_bcs (cctkGH, "ADMBase::dtlapse"); + select_bcs (cctkGH, "ADMBase::dtshift"); +} + +static void +select_bcs (cGH const * restrict const cctkGH, char const * restrict const gn) +{ + DECLARE_CCTK_PARAMETERS; + + Boundary_SelectGroupForBC + (cctkGH, CCTK_ALL_FACES, boundary_width, -1, gn, "none"); +} diff --git a/ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c b/ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c new file mode 100644 index 0000000..b16e9eb --- /dev/null +++ b/ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c @@ -0,0 +1,38 @@ +#include <cctk.h> +#include <cctk_Arguments.h> +#include <cctk_Parameters.h> +#include <util_Table.h> + +#include <assert.h> + +static void +unset_checkpoint_tag (char const * restrict gn); + +void +ML_BSSN_MP_UnsetCheckpointTags (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + unset_checkpoint_tag ("ADMBase::metric"); + unset_checkpoint_tag ("ADMBase::curv"); + unset_checkpoint_tag ("ADMBase::lapse"); + unset_checkpoint_tag ("ADMBase::shift"); + unset_checkpoint_tag ("ADMBase::dtlapse"); + unset_checkpoint_tag ("ADMBase::dtshift"); +} + +static void +unset_checkpoint_tag (char const * restrict const gn) +{ + assert (gn); + + int const gi = CCTK_GroupIndex (gn); + assert (gi >= 0); + + int const table = CCTK_GroupTagsTableI (gi); + assert (table >= 0); + + int const ierr = Util_TableSetString (table, "no", "Checkpoint"); + assert (! ierr); +} diff --git a/ML_BSSN_MP_Helper/src/make.code.defn b/ML_BSSN_MP_Helper/src/make.code.defn new file mode 100644 index 0000000..12fb65d --- /dev/null +++ b/ML_BSSN_MP_Helper/src/make.code.defn @@ -0,0 +1,2 @@ +# -*-Makefile-*- +SRCS = SelectBCsADMBase.c RegisterSlicing.c UnsetCheckpointTags.c |