aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interface.ccl12
-rw-r--r--param.ccl33
-rw-r--r--schedule.ccl82
3 files changed, 116 insertions, 11 deletions
diff --git a/interface.ccl b/interface.ccl
index 477462b..bf12b1c 100644
--- a/interface.ccl
+++ b/interface.ccl
@@ -11,32 +11,32 @@ INT shift_state TYPE = SCALAR "state of storage for shift"
INT dtlapse_state TYPE = SCALAR "state of storage for dtlapse"
INT dtshift_state TYPE = SCALAR "state of storage for dtshift"
-REAL metric TYPE = GF timelevels = 3 tags='tensortypealias="DD_sym"'
+REAL metric TYPE = GF timelevels = 3 tags='tensortypealias="DD_sym" ProlongationParameter="ADMBase::metric_prolongation_type"'
{
gxx,gxy,gxz,gyy,gyz,gzz
} "ADM 3-metric g_ij"
-REAL curv TYPE = GF timelevels = 3 tags='tensortypealias="DD_sym"'
+REAL curv TYPE = GF timelevels = 3 tags='tensortypealias="DD_sym" ProlongationParameter="ADMBase::metric_prolongation_type"'
{
kxx,kxy,kxz,kyy,kyz,kzz
} "ADM extrinsic curvature K_ij"
-REAL lapse TYPE = GF timelevels = 3 tags='tensortypealias="Scalar"'
+REAL lapse TYPE = GF timelevels = 3 tags='tensortypealias="Scalar" ProlongationParameter="ADMBase::lapse_prolongation_type"'
{
alp
} "ADM lapse function alpha"
-REAL shift TYPE = GF timelevels = 3 tags='tensortypealias="U"'
+REAL shift TYPE = GF timelevels = 3 tags='tensortypealias="U" ProlongationParameter="ADMBase::shift_prolongation_type"'
{
betax,betay,betaz
} "ADM shift function beta^i"
-REAL dtlapse TYPE = GF timelevels = 3 tags='tensortypealias="Scalar"'
+REAL dtlapse TYPE = GF timelevels = 3 tags='tensortypealias="Scalar" ProlongationParameter="ADMBase::lapse_prolongation_type"'
{
dtalp
} "Time derivative of ADM lapse function alpha"
-REAL dtshift TYPE = GF timelevels = 3 tags='tensortypealias="U"'
+REAL dtshift TYPE = GF timelevels = 3 tags='tensortypealias="U" ProlongationParameter="ADMBase::shift_prolongation_type"'
{
dtbetax,dtbetay,dtbetaz
} "Time derivative of ADM shift function beta^i"
diff --git a/param.ccl b/param.ccl
index 4e34d41..1693654 100644
--- a/param.ccl
+++ b/param.ccl
@@ -65,3 +65,36 @@ KEYWORD metric_type "The semantics of the metric variables (physical, static con
{
"physical" :: "metric and extrinsic curvature are the physical ones"
} "physical"
+
+KEYWORD lapse_prolongation_type "The kind of boundary prolongation for the lapse"
+{
+ "Lagrange" :: "standard prolongation (requires several time levels)"
+ "none" :: "no prolongation (use this if you do not have enough time levels active)"
+} "Lagrange"
+
+KEYWORD shift_prolongation_type "The kind of boundary prolongation for the shift"
+{
+ "Lagrange" :: "standard prolongation (requires several time levels)"
+ "none" :: "no prolongation (use this if you do not have enough time levels active)"
+} "Lagrange"
+
+KEYWORD metric_prolongation_type "The kind of boundary prolongation for the metric and extrinsic curvature"
+{
+ "Lagrange" :: "standard prolongation (requires several time levels)"
+ "none" :: "no prolongation (use this if you do not have enough time levels active)"
+} "Lagrange"
+
+INT lapse_timelevels "Number of time levels for the lapse"
+{
+ 0:3 :: ""
+} 1
+
+INT shift_timelevels "Number of time levels for the shift"
+{
+ 0:3 :: ""
+} 1
+
+INT metric_timelevels "Number of time levels for the metric and extrinsic curvature"
+{
+ 0:3 :: ""
+} 1
diff --git a/schedule.ccl b/schedule.ccl
index 61274db..ce70686 100644
--- a/schedule.ccl
+++ b/schedule.ccl
@@ -1,7 +1,83 @@
# Schedule definitions for thorn ADMBase
# $Header$
-STORAGE: shift_state, dtlapse_state, dtshift_state, metric[1], curv[1], lapse[1]
+STORAGE: shift_state dtlapse_state dtshift_state
+
+if (lapse_timelevels == 1)
+{
+ STORAGE: lapse[1]
+}
+else if (lapse_timelevels == 2)
+{
+ STORAGE: lapse[2]
+}
+else if (lapse_timelevels == 3)
+{
+ STORAGE: lapse[3]
+}
+
+if (! CCTK_Equals(initial_shift, "none"))
+{
+ if (shift_timelevels == 1)
+ {
+ STORAGE: shift[1]
+ }
+ else if (shift_timelevels == 2)
+ {
+ STORAGE: shift[2]
+ }
+ else if (shift_timelevels == 3)
+ {
+ STORAGE: shift[3]
+ }
+}
+
+if (! CCTK_Equals(initial_dtlapse, "none"))
+{
+ if (lapse_timelevels == 1)
+ {
+ STORAGE: dtlapse[1]
+ }
+ else if (lapse_timelevels == 2)
+ {
+ STORAGE: dtlapse[2]
+ }
+ else if (lapse_timelevels == 3)
+ {
+ STORAGE: dtlapse[3]
+ }
+}
+
+if (! CCTK_Equals(initial_dtshift, "none"))
+{
+ if (shift_timelevels == 1)
+ {
+ STORAGE: dtshift[1]
+ }
+ else if (shift_timelevels == 2)
+ {
+ STORAGE: dtshift[2]
+ }
+ else if (shift_timelevels == 3)
+ {
+ STORAGE: dtshift[3]
+ }
+}
+
+if (metric_timelevels == 1)
+{
+ STORAGE: metric[1], curv[1]
+}
+else if (metric_timelevels == 2)
+{
+ STORAGE: metric[2], curv[2]
+}
+else if (metric_timelevels == 3)
+{
+ STORAGE: metric[3], curv[3]
+}
+
+
SCHEDULE ADMBase_ParamCheck at CCTK_PARAMCHECK
{
@@ -46,8 +122,6 @@ if(CCTK_Equals(initial_lapse, "one"))
# Do we have storage for the shift ?
if (!CCTK_Equals(initial_shift, "none"))
{
- STORAGE: shift[1]
-
SCHEDULE ADMBase_SetShiftStateOn at CCTK_BASEGRID
{
LANG: C
@@ -71,7 +145,6 @@ if (! CCTK_Equals(initial_dtlapse, "none"))
}
else
{
- STORAGE: dtlapse[1]
SCHEDULE ADMBase_SetDtLapseStateOff at CCTK_BASEGRID
{
LANG: C
@@ -106,7 +179,6 @@ if (CCTK_Equals(initial_shift, "zero"))
# Initial data for dtlapse
if (CCTK_Equals(initial_dtlapse, "zero"))
{
- STORAGE: dtshift[1]
SCHEDULE ADMBase_DtLapseZero in ADMBase_InitialGauge
{
LANG: C