aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@b7a48df3-cbbf-4440-997f-b4b717c9f7fc>2007-05-31 01:39:47 +0000
committerschnetter <schnetter@b7a48df3-cbbf-4440-997f-b4b717c9f7fc>2007-05-31 01:39:47 +0000
commitcd483db4b2580d0c7ac875ce2d176bd6af993f37 (patch)
treea54c14560550a79d9b3ffea1d70476d7104328a6
parent085f09123271e2612832e6ea1472da757f70f608 (diff)
Allow three time levels for the constraints. This is necessary so
that mesh refinement boundaries can be interpolated in time. Add parameter ADMConstraints::constraints_timelevels, which defaults to 1. Add parameter ADMConstraints::constraints_prolongation_type, which chooses the interpolator for the constraints. It defaults to "Lagrange". Document that the parameter ADMConstraints::excise is not only deprecated, but also unused. Schedule constraint calculation in a group ADMConstraintsGroup, so that it can be easily scheduled at several times. If constraints persist, then schedule constraint calculate in EVOL after the MoL integration. Re-calculate the constraints in the POSTREGRID bin. If the constraints do not persist, then calculate them in the ANALYSIS bin as usual. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/ADMConstraints/trunk@126 b7a48df3-cbbf-4440-997f-b4b717c9f7fc
-rw-r--r--interface.ccl6
-rw-r--r--param.ccl14
-rw-r--r--schedule.ccl60
3 files changed, 48 insertions, 32 deletions
diff --git a/interface.ccl b/interface.ccl
index baeb79a..d1bcc35 100644
--- a/interface.ccl
+++ b/interface.ccl
@@ -22,17 +22,17 @@ USES FUNCTION Boundary_SelectGroupForBC
public:
-real hamiltonian type=GF tags='tensortypealias="Scalar"'
+real hamiltonian type=GF timelevels=3 tags='tensortypealias="Scalar" ProlongationParameter="ADMConstraints::constraints_prolongation_type"'
{
ham
} "Hamiltonian constraint"
-real normalized_hamiltonian type=GF tags='tensortypealias="Scalar"'
+real normalized_hamiltonian timelevels=3 type=GF tags='tensortypealias="Scalar" ProlongationParameter="ADMConstraints::constraints_prolongation_type"'
{
hamnormalized
} "Normalized hamiltonian constraint"
-real momentum type=GF tags='tensortypealias="U"'
+real momentum type=GF timelevels=3 tags='tensortypealias="U" ProlongationParameter="ADMConstraints::constraints_prolongation_type"'
{
momx,
momy,
diff --git a/param.ccl b/param.ccl
index b8de448..99ea548 100644
--- a/param.ccl
+++ b/param.ccl
@@ -23,6 +23,17 @@ BOOLEAN constraints_persist "Keep storage of ham and mom* around for use in spec
{
} "no"
+INT constraints_timelevels "Number of time levels for the constraints"
+{
+ 1:3 :: ""
+} 1
+
+KEYWORD constraints_prolongation_type "The kind of boundary prolongation for the constraints"
+{
+ "Lagrange" :: "standard prolongation (requires several time levels)"
+ "none" :: "no prolongation (use this if you do not have enough time levels active)"
+} "Lagrange"
+
# Deprecated in Beta 13
BOOLEAN constraint_communication "THIS PARAMETER IS NOT USED"
{
@@ -39,7 +50,8 @@ BOOLEAN cartoon "THIS PARAMETER IS NOT USED"
{
} "no"
-BOOLEAN excise "Use excision?"
+# Deprecated
+BOOLEAN excise "THIS PARAMETER IS NOT USED"
{
} "no"
diff --git a/schedule.ccl b/schedule.ccl
index 526e77d..2004588 100644
--- a/schedule.ccl
+++ b/schedule.ccl
@@ -21,44 +21,48 @@ schedule ADMConstraint_InitSymBound at CCTK_WRAGH
if (constraints_persist)
{
- STORAGE: hamiltonian, normalized_hamiltonian, momentum
- schedule ADMConstraints at CCTK_POSTSTEP
+ if (constraints_timelevels == 1)
{
- LANG: Fortran
- } "Evaluate ADM constraints for use in other routines"
-
- schedule ADMConstraints_Boundaries at CCTK_POSTSTEP after ADMConstraints
+ STORAGE: hamiltonian[1], normalized_hamiltonian[1], momentum[1]
+ }
+ else if (constraints_timelevels == 2)
{
- LANG: Fortran
- OPTIONS: LEVEL
- } "Apply boundary conditions to the ADM constraints"
-
- schedule GROUP ApplyBCs as ADMConstraints_ApplyBCs at CCTK_POSTSTEP after ADMConstraints_Boundaries
+ STORAGE: hamiltonian[2], normalized_hamiltonian[2], momentum[2]
+ }
+ else if (constraints_timelevels == 3)
{
- SYNC: hamiltonian, normalized_hamiltonian, momentum
- } "Apply (symmetry) boundary conditions"
+ STORAGE: hamiltonian[3], normalized_hamiltonian[3], momentum[3]
+ }
+
+ schedule GROUP ADMConstraintsGroup at CCTK_EVOL after MoL_Evolution
+ {
+ } "Evaluate ADM constraints, and perform symmetry boundary conditions"
+
+ schedule GROUP ADMConstraintsGroup at CCTK_POSTREGRID
+ {
+ } "Evaluate ADM constraints, and perform symmetry boundary conditions"
}
else
{
schedule GROUP ADMConstraintsGroup at CCTK_ANALYSIS
{
- STORAGE: hamiltonian, normalized_hamiltonian, momentum
+ STORAGE: hamiltonian[1], normalized_hamiltonian[1], momentum[1]
TRIGGERS: hamiltonian, normalized_hamiltonian, momentum
- SYNC: hamiltonian, normalized_hamiltonian, momentum
} "Evaluate ADM constraints, and perform symmetry boundary conditions"
+}
- schedule ADMConstraints in ADMConstraintsGroup
- {
- LANG: Fortran
- } "Evaluate ADM constraints"
+schedule ADMConstraints in ADMConstraintsGroup
+{
+ LANG: Fortran
+} "Evaluate ADM constraints"
- schedule ADMConstraints_Boundaries in ADMConstraintsGroup after ADMConstraints
- {
- LANG: Fortran
- OPTIONS: LEVEL
- } "Apply boundary conditions to the ADM constraints"
+schedule ADMConstraints_Boundaries in ADMConstraintsGroup after ADMConstraints
+{
+ LANG: Fortran
+ OPTIONS: level
+ SYNC: hamiltonian, normalized_hamiltonian, momentum
+} "Select boundary conditions for the ADM constraints"
- schedule GROUP ApplyBCs as ADMConstraints_ApplyBCs in ADMConstraintsGroup after ADMConstraints_Boundaries
- {
- } "Apply (symmetry) boundary conditions"
-}
+schedule GROUP ApplyBCs as ADMConstraints_ApplyBCs in ADMConstraintsGroup after ADMConstraints_Boundaries
+{
+} "Apply boundary conditions to the ADM constraints"