aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN_MP_Helper
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-04-02 18:42:43 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2008-04-02 18:42:43 -0500
commit70fd92da159408e939381abf14f37c01d523760d (patch)
tree589333caf890e42614583161b5a71dc00c8f2625 /ML_BSSN_MP_Helper
parent90b1458fa8c6340ad8c81dbc0dd43ed77f64f993 (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.ccl1
-rw-r--r--ML_BSSN_MP_Helper/interface.ccl8
-rw-r--r--ML_BSSN_MP_Helper/param.ccl11
-rw-r--r--ML_BSSN_MP_Helper/schedule.ccl83
-rw-r--r--ML_BSSN_MP_Helper/src/RegisterSlicing.c10
-rw-r--r--ML_BSSN_MP_Helper/src/SelectBCsADMBase.c28
-rw-r--r--ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c38
-rw-r--r--ML_BSSN_MP_Helper/src/make.code.defn2
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