# Make sure there is storage for the conformal state flag # so we can use it irrespective of metric_type storage: conformal_state schedule ADMConstraints_ParamCheck at CCTK_PARAMCHECK { LANG: C } "Check that we can deal with this metric_type and have enough conformal derivatives" schedule ADMConstraints_ConformalCheck at CCTK_POSTINITIAL { LANG: C } "Set conformal_state to 0 for physical, or check that it is at least 3" schedule ADMConstraint_InitSymBound at CCTK_BASEGRID { LANG: Fortran } "Register GF symmetries for ADM Constraints" if (constraints_persist) { STORAGE: hamiltonian, normalized_hamiltonian, momentum schedule ADMConstraints at CCTK_POSTSTEP { LANG: Fortran } "Evaluate ADM constraints for use in other routines" schedule ADMConstraints_Boundaries at CCTK_POSTSTEP after ADMConstraints { LANG: Fortran OPTIONS: LEVEL } "Apply boundary conditions to the ADM constraints" schedule GROUP ApplyBCs as ADMConstraints_ApplyBCs at CCTK_POSTSTEP after ADMConstraints_Boundaries { SYNC: hamiltonian, normalized_hamiltonian, momentum } "Apply (symmetry) boundary conditions" } else { schedule GROUP ADMConstraintsGroup at CCTK_ANALYSIS { STORAGE: hamiltonian, normalized_hamiltonian, momentum 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_Boundaries in ADMConstraintsGroup after ADMConstraints { LANG: Fortran OPTIONS: LEVEL } "Apply boundary conditions to the ADM constraints" schedule GROUP ApplyBCs as ADMConstraints_ApplyBCs in ADMConstraintsGroup after ADMConstraints_Boundaries { } "Apply (symmetry) boundary conditions" }