From cd483db4b2580d0c7ac875ce2d176bd6af993f37 Mon Sep 17 00:00:00 2001 From: schnetter Date: Thu, 31 May 2007 01:39:47 +0000 Subject: 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 --- interface.ccl | 6 +++--- param.ccl | 14 +++++++++++++- schedule.ccl | 60 +++++++++++++++++++++++++++++++---------------------------- 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" -- cgit v1.2.3