aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@d576a68a-b34a-40ae-82fc-004fa1a9d16f>2010-01-23 22:01:40 +0000
committerschnetter <schnetter@d576a68a-b34a-40ae-82fc-004fa1a9d16f>2010-01-23 22:01:40 +0000
commit8237c71e945513806341c0b59485abce2a7f3a55 (patch)
treebbaa760debbcb8e6cce68521b2fb6c881e861919
parent1a75f97707101285753c33c4e619c09a30b0ed97 (diff)
Add parameters to let the user activate arbitrary numbers of time
levels in ADMBase. Add parameters to choose the prolongation type of the ADMBase variables. This is useful to disable prolongation, e.g. if only a single time level is active. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinBase/ADMBase/trunk@51 d576a68a-b34a-40ae-82fc-004fa1a9d16f
-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