schedule ADM_ParamCheck at CCTK_PARAMCHECK { LANG: C } "Check parameters" if (evolution_storage==1) { STORAGE:ADM_metric_prev,ADM_curv_prev } if (CCTK_Equals(evolution_system,"ADM")) { STORAGE: ADM_metric_prev,ADM_lapse_prev,ADM_curv_prev schedule ADMSetSym at CCTK_BASEGRID { LANG: Fortran } "Set grid function symmetries" if (store_initial_lapse == 1) { STORAGE:ADM_initlapse } schedule ADMRegisterSlicing at CCTK_STARTUP { LANG: C } "Register slicings" schedule ADM_PreLoop at CCTK_INITIAL after InitialEinstein { LANG: Fortran }"Setup for ADM" if (store_initial_lapse) { schedule ADM_alp0_init at CCTK_POSTINITIAL { LANG: Fortran }"Save the lapse function at the initial timestep" } if (CCTK_Equals(method,"stagleap")) { # Evolve using Staggered Leapfrog STORAGE: ADM_curv_stag,ADM_sources,ADM_extrap,ADM_gauge schedule ADM_StaggeredLeapfrog1 at CCTK_EVOL { LANG: Fortran } "Evolve using Staggered Leapfrog (step 1)" schedule ADM_StaggeredLeapfrog2 at CCTK_EVOL after ADM_StaggeredLeapfrog1 { LANG: Fortran } "Evolve using Staggered Leapfrog (step 2)" } else if (CCTK_Equals(method,"leapfrog")) { # Evolve using Double Leapfrog STORAGE: ADM_sources,ADM_gauge schedule ADM_DoubleLeap at CCTK_EVOL { LANG: Fortran }"Evolve using Double Leapfrog" } else if (CCTK_Equals(method,"icn") || CCTK_Equals(method,"ICN")) { # Evolve using Iterative Crank-Nicholson STORAGE: ADM_sources,ADM_gauge schedule ADM_ICN_init at CCTK_EVOL before ICN_LOOP { LANG: Fortran } "Initialise ICN" schedule ADM_IterativeCN in ICN_LOOP { LANG: Fortran }"Evolve using Iterative Crank-Nicholson" schedule GROUP ICN_LOOP while adm::icn_iteration AT EVOL { } "Iterative Crank-Nicholson Loop" } }