aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN_MP_Helper
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2009-04-27 13:46:38 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2009-04-27 13:46:38 -0500
commit20a951ae90552fd2bda42af987b1e082adba0de3 (patch)
tree49c9cdedae43dbaa83ba33c17f843f309d81c3ec /ML_BSSN_MP_Helper
parent028eeb71a95553e1a4106a8b38149ad4ece8f445 (diff)
Add Helper thorns that went missing during a merge (my apologies)
Diffstat (limited to 'ML_BSSN_MP_Helper')
-rw-r--r--ML_BSSN_MP_Helper/configuration.ccl1
-rw-r--r--ML_BSSN_MP_Helper/interface.ccl10
-rw-r--r--ML_BSSN_MP_Helper/param.ccl12
-rw-r--r--ML_BSSN_MP_Helper/schedule.ccl113
-rw-r--r--ML_BSSN_MP_Helper/src/CopyADMBase.c49
-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.c57
-rw-r--r--ML_BSSN_MP_Helper/src/make.code.defn2
9 files changed, 282 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..edaa5b7
--- /dev/null
+++ b/ML_BSSN_MP_Helper/configuration.ccl
@@ -0,0 +1 @@
+REQUIRES THORNS: CartGrid3D CoordGauge
diff --git a/ML_BSSN_MP_Helper/interface.ccl b/ML_BSSN_MP_Helper/interface.ccl
new file mode 100644
index 0000000..6258207
--- /dev/null
+++ b/ML_BSSN_MP_Helper/interface.ccl
@@ -0,0 +1,10 @@
+IMPLEMENTS: ML_BSSN_MP_Helper
+
+INHERITS: ADMBase CoordGauge ML_BSSN_MP
+
+USES INCLUDE: Symmetry.h
+
+
+
+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..05396c9
--- /dev/null
+++ b/ML_BSSN_MP_Helper/param.ccl
@@ -0,0 +1,12 @@
+SHARES: ADMBase
+
+USES KEYWORD evolution_method
+
+SHARES: GenericFD
+
+USES CCTK_INT boundary_width
+
+SHARES: ML_BSSN_MP
+
+USES CCTK_INT timelevels
+USES KEYWORD calculate_ADMBase_variables_at
diff --git a/ML_BSSN_MP_Helper/schedule.ccl b/ML_BSSN_MP_Helper/schedule.ccl
new file mode 100644
index 0000000..7efdd80
--- /dev/null
+++ b/ML_BSSN_MP_Helper/schedule.ccl
@@ -0,0 +1,113 @@
+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 startup
+ {
+ 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"
+
+
+
+ if (CCTK_EQUALS (calculate_ADMBase_variables_at, "MoL_PostStep"))
+ {
+ if (timelevels > 1)
+ {
+ SCHEDULE ML_BSSN_MP_CopyADMBase AT CCTK_PRESTEP
+ {
+ LANG: C
+ } "Copy ADMBase variables to current time level"
+ }
+ SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroup IN MoL_PostStep AFTER (ML_BSSN_MP_ApplyBCs ML_BSSN_MP_enforce) BEFORE Whisky_PostStep
+ {
+ } "Calculate ADM variables"
+ }
+ else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL"))
+ {
+ SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroup AT evol AFTER MoL_Evolution
+ {
+ } "Calculate ADM variables"
+ }
+ else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_ANALYSIS"))
+ {
+ SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroup AT analysis
+ {
+ TRIGGERS: ML_BSSN_MP::ML_Ham
+ TRIGGERS: ML_BSSN_MP::ML_mom
+ } "Calculate ADM variables"
+ }
+
+
+
+ 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 BEFORE ADMBase_SetADMVars
+ {
+ } "Apply boundary conditions to ADMBase variables"
+
+}
diff --git a/ML_BSSN_MP_Helper/src/CopyADMBase.c b/ML_BSSN_MP_Helper/src/CopyADMBase.c
new file mode 100644
index 0000000..be662cf
--- /dev/null
+++ b/ML_BSSN_MP_Helper/src/CopyADMBase.c
@@ -0,0 +1,49 @@
+#include <string.h>
+
+#include <cctk.h>
+#include <cctk_Arguments.h>
+
+static void
+copy (cGH const * restrict cctkGH,
+ CCTK_REAL * restrict dst, CCTK_REAL const * restrict src);
+
+void
+ML_BSSN_MP_CopyADMBase (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+
+ copy (cctkGH, gxx, gxx_p);
+ copy (cctkGH, gxy, gxx_p);
+ copy (cctkGH, gxz, gxx_p);
+ copy (cctkGH, gyy, gxx_p);
+ copy (cctkGH, gyz, gxx_p);
+ copy (cctkGH, gzz, gxx_p);
+
+ copy (cctkGH, kxx, gxx_p);
+ copy (cctkGH, kxy, gxx_p);
+ copy (cctkGH, kxz, gxx_p);
+ copy (cctkGH, kyy, gxx_p);
+ copy (cctkGH, kyz, gxx_p);
+ copy (cctkGH, kzz, gxx_p);
+
+ copy (cctkGH, alp, alp_p);
+
+ copy (cctkGH, betax, betax_p);
+ copy (cctkGH, betay, betay_p);
+ copy (cctkGH, betaz, betaz_p);
+
+ copy (cctkGH, dtalp, dtalp_p);
+
+ copy (cctkGH, dtbetax, dtbetax_p);
+ copy (cctkGH, dtbetay, dtbetay_p);
+ copy (cctkGH, dtbetaz, dtbetaz_p);
+}
+
+static void
+copy (cGH const * restrict cctkGH,
+ CCTK_REAL * restrict dst, CCTK_REAL const * restrict src)
+{
+ int const npoints =
+ cctkGH->cctk_lsh[0] * cctkGH->cctk_lsh[1] * cctkGH->cctk_lsh[2];
+ memcpy (dst, src, npoints * sizeof *dst);
+}
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..7341af7
--- /dev/null
+++ b/ML_BSSN_MP_Helper/src/UnsetCheckpointTags.c
@@ -0,0 +1,57 @@
+#include <cctk.h>
+#include <util_Table.h>
+
+#include <assert.h>
+
+static void
+unset_checkpoint_tag (char const * restrict gn);
+
+int
+ML_BSSN_MP_UnsetCheckpointTags (void)
+{
+ 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");
+
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_cons_detg");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_cons_Gamma");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_cons_traceA");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_Ham");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_mom");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_curvrhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_dtlapserhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_dtshiftrhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_Gammarhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_lapserhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_log_confacrhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_metricrhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_shiftrhs");
+ unset_checkpoint_tag ("ML_BSSN_MP::ML_trace_curvrhs");
+
+ return 0;
+}
+
+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 ierr;
+ ierr = Util_TableSetString (table, "no", "Checkpoint");
+ assert (! ierr);
+
+ ierr = Util_TableSetString (table, "none", "Prolongation");
+ assert (! ierr);
+
+ ierr = Util_TableSetString (table, "no", "Persistent");
+ 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..37d79d5
--- /dev/null
+++ b/ML_BSSN_MP_Helper/src/make.code.defn
@@ -0,0 +1,2 @@
+# -*-Makefile-*-
+SRCS = CopyADMBase.c SelectBCsADMBase.c RegisterSlicing.c UnsetCheckpointTags.c