From aed5c4b5b94ef683f83c7597aee2174e34ec245f Mon Sep 17 00:00:00 2001 From: knarf Date: Wed, 18 Nov 2009 16:36:37 +0000 Subject: This is a _temporary_ repository to be able to start to work on the code right now. I have put in the public version of Whisky to start from. Everybody with commit rights should get commit messages (and the other way around). It should not be a problem to add people to that list, just ask. I don't want to get into political problems because someone feels excluded, but I also don't want to give everyone access per se. Frank git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@3 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45 --- schedule.ccl | 997 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 997 insertions(+) create mode 100644 schedule.ccl (limited to 'schedule.ccl') diff --git a/schedule.ccl b/schedule.ccl new file mode 100644 index 0000000..acb02cb --- /dev/null +++ b/schedule.ccl @@ -0,0 +1,997 @@ +# Schedule definitions for thorn Whisky +# $Header$ + +####################################################################### +### We leave the storage on all the time for the variables required ### +### by MoL. There is probably a better way of doing this. ### +####################################################################### + +################################################# +### Storage for the extra timelevels for the ### +### use of MoL with Einstein ### +################################################# + +if (timelevels == 3) +{ + STORAGE:dens[3] + STORAGE:tau[3] + STORAGE:scon[3] + STORAGE:w_lorentz[3] + if (number_of_particles) + { + STORAGE:particles[3] + } + STORAGE: ADMBase::metric[3], ADMBase::curv[3] + STORAGE: ADMBase::lapse[3] +} +else +{ + STORAGE:dens[2] + STORAGE:tau[2] + STORAGE:scon[2] + STORAGE:w_lorentz[2] + if (number_of_particles) + { + STORAGE:particles[2] + } + STORAGE: ADMBase::metric[2], ADMBase::curv[2] + STORAGE: ADMBase::lapse[2] +} +STORAGE:whisky_reflevel +STORAGE:densrhs +STORAGE:taurhs +STORAGE:srhs +STORAGE:whisky_eos_scalars +STORAGE:whisky_minima +STORAGE:whisky_scalars +#STORAGE:fluxweightvolume +#STORAGE:cell_surface +if (number_of_particles) +{ + STORAGE:particle_rhs + STORAGE:particle_arrays +} + +if (evolve_tracer) +{ + STORAGE:whisky_tracers[3] + STORAGE:whisky_cons_tracers[3] + STORAGE:whisky_tracer_rhs +} + +# leave this here for compatibility with older code, should not be used anymore +# and go out at some point +schedule group Whisky_Initial IN HydroBase_Initial +{ +} "Whisky initial data group" + +################################################# +### Storage for the extra timelevels for the ### +### use of MoL with Einstein ### +################################################# + +if (timelevels == 3) +{ + STORAGE: ADMBase::metric[3], ADMBase::curv[3] + STORAGE: ADMBase::lapse[3] +} +else +{ + STORAGE: ADMBase::metric[2], ADMBase::curv[2] + STORAGE: ADMBase::lapse[2] +} +if (!CCTK_Equals(initial_shift,"none")) +{ + if (timelevels == 3) + { + STORAGE: ADMBase::shift[3] + } + else + { + STORAGE: ADMBase::shift[2] + } + if (CCTK_Equals(shift_evolution_method,"Comoving")) + { + if (timelevels == 3) + { + STORAGE: whisky_coords[3] + } + else + { + STORAGE: whisky_coords[2] + } + STORAGE: whisky_coords_rhs + + schedule Whisky_SetUpCoords IN HydroBase_Initial + { + LANG: Fortran + } "Set up the coordinates for use with the comoving shift" + + schedule Whisky_EvolveCoords IN WhiskyRHS + { + LANG: Fortran + } "Evolve the coordinates for the comoving shift" + + schedule Whisky_ComovingShift IN HydroBase_PostStep AFTER HydroBase_Con2Prim + { + LANG: Fortran + } "Comoving shift" + + } +} + +############################################## +### Storage for the conformal state scalar ### +############################################## + +STORAGE: conformal_state + +############################### +### Register startup banner ### +############################### + +schedule Whisky_Startup AT WRAGH AFTER EOSBase_GeneralRegister AFTER HydroBase_StartUp +{ + LANG: Fortran +} "Startup banner" + +######################################### +### Register the masks with SpaceMask ### +######################################### + +schedule Whisky_RegisterMask AT STARTUP +{ + LANG: C +} "Register the hydro masks" + + +#################################### +### Check the parameters are ok. ### +#################################### + +schedule Whisky_ParamCheck AT PARAMCHECK +{ + LANG: Fortran +} "Check parameters" + +###################################### +### Standard symmetry registration ### +###################################### + +schedule Whisky_InitSymBound AT BASEGRID +{ + LANG: Fortran +} "Schedule symmetries" + +########################################################## +### Schedule the flux weighting calculation at initial ### +########################################################## + +# schedule Whisky_Weights AT CCTK_INITIAL +# { +# LANG: C +# } "Set up the weighting terms for the fluxes" + +################################### +### Register with GZPatchSystem ### +################################### + +SCHEDULE GROUP GZPatchSystem_register +{ +} "Tell Cactus that this group exists, but is not scheduled from here" + +SCHEDULE Whisky_register_GZPatchSystem IN GZPatchSystem_register +{ + LANG: C + OPTIONS: meta +} "register to-be-interpatch-synchronized variables with GZPatchSystem" + +################################## +### Set the handle for the EOS ### +################################## + +schedule Whisky_EOSHandle AT CCTK_INITIAL before HydroBase_Initial +{ + LANG: C +} "Set the EOS number" + +schedule Whisky_EOSHandle AT CCTK_POST_RECOVER_VARIABLES +{ + LANG: C +} "Set the EOS number" + +#################################### +### Setup of rho minima scalars ### +#################################### + +schedule Whisky_Rho_Minima_Setup AT CCTK_Initial BEFORE HydroBase_Initial +{ + LANG: Fortran +} "Set up minimum for the rest-mass density in the atmosphere (before intial data)" + +if (rho_abs_min_after_recovery > 0.0) +{ + schedule Whisky_Change_Rho_Minimum_At_Recovery AT CCTK_POST_RECOVER_VARIABLES + { + LANG: Fortran + } "Set up minimum for the rest-mass density in the atmosphere (before intial data)" +} + +if (CCTK_IsThornActive("PUGH" )) +{ + schedule Whisky_Rho_Minima_Setup_Final_PUGH AT CCTK_PostInitial BEFORE MoL_PostStep + { + LANG: C + } "Set the value of the rest-mass density of the atmosphere which will be used during the evolution (PUGH)" +} +else if (CCTK_IsThornActive("Carpet")) + { +# schedule Whisky_Rho_Minima_Setup_Final AT CCTK_PostInitial BEFORE MoL_PostStep + schedule Whisky_Rho_Minima_Setup_Final AT CCTK_PostPostInitial BEFORE Con2Prim + { + LANG: C + } "Set the value of the rest-mass density of the atmosphere which will be used during the evolution" + } + +# this is a temporary hack, because carpet does allow only one loop over the levels for Basegrid-Iniital-Postinitial +# so we must compute whisky_rho_min at postpostinitial and the constraints after this (and afer C2P) +# schedule GROUP ADMConstraintsGroup at CCTK_POSTINITIAL after (MoL_PostStep MoL_PostInitial) + schedule GROUP ADMConstraintsGroup at CCTK_POSTPOSTINITIAL + { + } "Evaluate ADM constraints, and perform symmetry boundary conditions" + +###################################################################### +### Setup and remove the coefficient arrays for ENO reconstruction ### +###################################################################### + +if (CCTK_Equals(recon_method,"eno")) +{ + + schedule Whisky_ENOSetup AT CCTK_Basegrid + { + LANG:Fortran + } "Coefficients for ENO reconstruction" + + schedule Whisky_ENOShutdown AT CCTK_Terminate BEFORE Driver_Terminate + { + LANG:Fortran + } "Deallocate ENO coefficients" + +} + +###################################################################### +### This routine is a bit strangely situated, as it's really to do ### +### with initial data. There may be a better place for it later. ### +### What it does is reset the hydrodynamical quantities if we have ### +### changed the EoS between constructing the initial model and ### +### evolving. Essentially, we assume that the polytropic EoS that ### +### we are using for the atmosphere is correct, and reset eps ### +### given the values for rho. We then can call the primitive to ### +### conservative routine to get the pressure. ### +###################################################################### +if (EoS_Change) +{ + if (CCTK_Equals(EoS_Change_type,"Gamma")) + { + schedule Whisky_EoSChangeGamma AT CCTK_Initial AFTER HydroBase_Initial BEFORE Whisky_IVP + { + LANG: Fortran + } "Reset the specific internal energy if the EoS changes between ID and evolution" + } + if (CCTK_Equals(EoS_Change_type,"K")) + { + schedule Whisky_EoSChangeK AT CCTK_Initial AFTER HydroBase_Initial BEFORE Whisky_IVP + { + LANG: Fortran + } "Reset the hydro variables if the EoS (K) changes between ID and evolution" + } + if (CCTK_Equals(EoS_Change_type,"GammaKS")) + { + schedule Whisky_EoSChangeGammaK_Shibata AT CCTK_Initial AFTER HydroBase_Initial BEFORE Whisky_IVP + { + LANG: Fortran + SYNC: dens + SYNC: tau + SYNC: scon + SYNC: w_lorentz + SYNC: hydrobase::rho + SYNC: hydrobase::press + SYNC: hydrobase::eps + SYNC: hydrobase::vel + } "Reset the hydro variables if the EoS Gamma and K change between ID and evolution" + } +} + +##################################### +### Setup of dens minima scalars ### +##################################### +# commented out, since unused for a long time +#schedule Whisky_Dens_Minima_Setup AT CCTK_Postinitial +#{ +# LANG: Fortran +#} "Set up and check minima for dens" + +################################################# +### Standard registration of variables to MoL ### +################################################# + +schedule Whisky_Register IN MoL_Register +{ + LANG: C +} "Register variables for MoL" + +#################################################### +### Setup of any scalars for efficiency purposes ### +#################################################### + +schedule Whisky_Scalar_Setup IN MoL_PreStep +{ + LANG: Fortran +} "Set up and check scalars for efficiency" + +################################################ +### We might want to switch off evolution... ### +################################################ + +if (CCTK_EQUALS(evolution_method, "whisky")) { + +STORAGE:whisky_atmosphere_mask +STORAGE:whisky_atmosphere_descriptors + +schedule Whisky_SetupMask AT CCTK_Initial BEFORE HydroBase_Initial +{ + LANG: Fortran +} "Initialize the atmosphere mask" + +# If using mesh refinement +schedule Whisky_SetupMask AT POSTREGRID BEFORE MoL_PostStep AFTER (MaskOne,MaskZero) +{ + LANG: Fortran +} "Initialize the atmosphere mask" + +schedule Whisky_SetupMask AT POSTRESTRICTINITIAL BEFORE HydroBase_PostStep AFTER (MaskOne,MaskZero) +{ + LANG: Fortran +} "Initialize the atmosphere mask" + +if (wk_atmosphere) +{ + schedule Whisky_InitAtmosMask AT CCTK_PostInitial + { + LANG: Fortran + } "Set the atmosphere mask" + + schedule Whisky_InitAtmosMask AT POSTREGRID AFTER Whisky_SetupMask BEFORE MoL_PostStep + { + LANG: Fortran + } "Set the atmosphere mask" + + schedule Whisky_InitAtmosMask AT POSTRESTRICTINITIAL AFTER Whisky_SetupMask BEFORE HydroBase_PostStep + { + LANG: Fortran + } "Set the atmosphere mask" +} + +schedule Whisky_SetupDescriptors AT CCTK_Initial BEFORE HydroBase_Initial +{ + LANG: C +} "Get and store the mask descriptors" + +# If using mesh refinement + + +##################################################################### +### The group to calculate the update term for MoL. This contains ### +### the calculation of the source terms and the flux update. ### +##################################################################### + +schedule group WhiskyRHS IN HydroBase_RHS +{ + STORAGE:whisky_scalars +} "Calculate the update terms" + +#============================================ +# Uncomment the following lines for debugging +# +# schedule Whisky_Scalar_Setup AT CCTK_Initial +# { +# LANG: Fortran +# } "Set up and check scalars for efficiency" +# +# schedule group WhiskyRHS AT CCTK_Analysis +# { +# STORAGE:whisky_scalars +# TRIGGERS: densrhs +# TRIGGERS: srhs +# TRIGGERS: taurhs +# } "Calculate the update terms" +# +# STORAGE:whisky_fluxes +# STORAGE:whisky_con_bext +# STORAGE:whisky_prim_bext +# STORAGE:EOS_temps +# +# schedule Primitive2ConservativeCells AT CCTK_POSTINITIAL AFTER GZPatchSystem_cxform BEFORE MoL_PostStep +# { +# LANG: Fortran +# } "Convert to conserved variables" +# +#============================================== + +if (number_of_particles) +{ + schedule WhiskyParticleInitial AT CCTK_Initial BEFORE HydroBase_Initial + { + OPTIONS: GLOBAL + LANG: Fortran + } "Initial data for the particle arrays" + + schedule WhiskyParticleRHS IN WhiskyRHS + { + OPTIONS: GLOBAL + LANG: Fortran + } "Update terms for the particles" +} + +#################################################################### +### Do the source terms first, as this does not require the loop ### +### over the different directions ### +#################################################################### + +schedule SourceTerms IN WhiskyRHS BEFORE FluxTerms +{ + LANG: Fortran +} "Source term calculation" + +################################################################# +### Initial setup for the loop over the different directions. ### +################################################################# + +schedule WhiskyStartLoop IN WhiskyRHS BEFORE FluxTerms +{ + LANG: Fortran + OPTIONS: level +} "Set the flux_direction variable" + +################################################################### +### The group to calculate the update terms from the fluxes. We ### +### do this as a loop over each direction to reduce coding and ### +### hopefully to reduce bugs. The parameter flux_direction runs ### +### from (3->0) corresponding to (z->x) and stopping. At each ### +### step in the loop the data is reconstructed and then the ### +### fluxes are computed by the Riemann solve. ### +################################################################### + +####################################################### +### Switch between RSA FV and flux split FD methods ### +####################################################### + +if (CCTK_Equals(method_type, "RSA FV")) +{ + + if (evolve_tracer) + { + schedule group FluxTerms IN WhiskyRHS WHILE Whisky::flux_direction + { + STORAGE:whisky_prim_bext + STORAGE:whisky_con_bext + STORAGE:whisky_fluxes + STORAGE:whisky_tracer_cons_bext + STORAGE:whisky_tracer_prim_bext + STORAGE:whisky_tracer_flux + } "Calculation of intercell fluxes" + } + else + { + schedule group FluxTerms IN WhiskyRHS WHILE Whisky::flux_direction + { + STORAGE:whisky_prim_bext + STORAGE:whisky_con_bext + STORAGE:whisky_fluxes + } "Calculation of intercell fluxes" + } + +############################################################## +### This is a wrapper call to the reconstruction routines. ### +############################################################## + + if (CCTK_Equals(whisky_eos_type,"General")) { + + schedule Reconstruction IN FluxTerms AS Reconstruct + { + LANG: Fortran + } "Reconstruct the functions at the cell boundaries" + + } + else if (CCTK_Equals(whisky_eos_type,"Polytype")) { + + schedule ReconstructionPolytype IN FluxTerms AS Reconstruct + { + LANG: Fortran + } "Reconstruct the functions at the cell boundaries" + + } + + if (set_trivial_rp_grid_function) + { + schedule Set_Trivial_Riemann_Problem_Grid_Function \ + IN FluxTerms AFTER Reconstruct + { + LANG: C + SYNC: whisky_trivial_rp_gf_group + } "Set the gridfunction for the trp (for debugging only)" + } + +###################################################### +### This is a wrapper call to the Riemann solvers. ### +###################################################### + + if (use_eosgeneral) + { + schedule RiemannSolveGeneral IN FluxTerms AFTER Whisky_Convert AS Riemann + { + LANG: Fortran + STORAGE: EOS_temps + STORAGE: RoeAverage_temps + } "Solve the local Riemann problems" + } + else if (CCTK_Equals(whisky_eos_type,"General")) { + + schedule RiemannSolve IN FluxTerms AFTER Whisky_Convert AS Riemann + { + LANG: Fortran + STORAGE: EOS_temps + } "Solve the local Riemann problems" + + } + else if (CCTK_Equals(whisky_eos_type,"Polytype")) { + + schedule RiemannSolvePolytype IN FluxTerms AFTER Whisky_Convert AS Riemann + { + LANG: Fortran + STORAGE: EOS_temps + } "Solve the local Riemann problems" + } + +} +else if (CCTK_Equals(method_type, "Flux split FD")) +{ + + STORAGE:fs_alpha + + if (evolve_tracer) + { + + schedule group FluxTerms IN WhiskyRHS WHILE Whisky::flux_direction + { + STORAGE: whisky_fluxes + STORAGE: whisky_tracer_flux + } "Calculation of intercell fluxes" + + schedule Whisky_FSAlpha IN FluxTerms BEFORE Whisky_SplitFlux + { + LANG: Fortran + } "Compute the maximum characteristic speeds" + + schedule Whisky_SplitFlux IN FluxTerms AS Reconstruct + { + LANG: Fortran + STORAGE: flux_splitting + STORAGE: whisky_tracer_flux_splitting + SYNC: whisky_fluxes + } "Compute the fluxes using WENO5 FD + Lax-Friedrichs splitting" + + } + else + { + + schedule group FluxTerms IN WhiskyRHS WHILE Whisky::flux_direction + { + STORAGE: whisky_fluxes + } "Calculation of intercell fluxes" + + schedule Whisky_FSAlpha IN FluxTerms BEFORE Whisky_SplitFlux + { + LANG: Fortran + } "Compute the maximum characteristic speeds" + + schedule Whisky_SplitFlux IN FluxTerms AS Reconstruct + { + LANG: Fortran + STORAGE: flux_splitting + SYNC: whisky_fluxes + } "Compute the fluxes using WENO5 FD + Lax-Friedrichs splitting" + + } + +} + +########################################################### +### After calculating the fluxes, calculate the update. ### +########################################################### + +schedule UpdateCalculation IN FluxTerms AFTER Riemann +{ + LANG: Fortran +} "Calculate the update term from the fluxes" + +################################# +### Advance the loop counter. ### +################################# + +schedule WhiskyAdvanceLoop IN FluxTerms AFTER UpdateCalculation +{ + LANG: Fortran + OPTIONS: level +} "Decrement the flux_direction variable" + +########################################################### +### If we're in the atmosphere or inside the excision ### +### region then we don't want to do any updating (in ### +### fact if we're inside the excision region we don't ### +### want to calculate the fluxes, but we'll worry about ### +### that later). Just zero the update terms where ### +### certain conditions are violated. ### +########################################################### + +schedule WhiskyUpdateAtmosphereMask IN WhiskyRHS AFTER FluxTerms +{ + LANG: Fortran +} "Alter the update terms if inside the atmosphere region" + +############################################################### +### After we've done the update, there's a few things to do ### +############################################################### + +# This should not be used anymore and be removed after some time +schedule group Whisky_PostStep IN HydroBase_PostStep +{ +} "Post step tasks for Whisky" + +################################################################# +### After MoL has updated the conserved variables, we need to ### +### convert back to primitive variables. This is a wrapper ### +### over the entire grid. ### +################################################################# + +######################################################## +### Find the refinement level that is being computed ### +######################################################## + +schedule Whisky_RefinementLevel IN MoL_PostStep BEFORE (SetMetricTemps,HydroBase_PostStep) +{ + LANG: Fortran +} "Calculate current refinement level" + +schedule Whisky_RefinementLevel AT CCTK_PostStep +{ + LANG: Fortran +} "Calculate current refinement level (for the check of the C2P mask)" + +schedule Whisky_RefinementLevel AT POSTREGRIDINITIAL +{ + LANG: Fortran +} "Calculate current refinement level" + +schedule Whisky_RefinementLevel AT INITIAL BEFORE HydroBase_Initial +{ + LANG: Fortran +} "Calculate current refinement level" + + +if (use_eosgeneral) +{ + + STORAGE:Metric_temps + + schedule SetMetricTemps IN MoL_PostStep BEFORE HydroBase_PostStep + { + LANG: Fortran + SYNC: metric_temps + } "Set the temporary metric terms" + + schedule SetMetricTemps AT POSTRESTRICTINITIAL BEFORE HydroBase_PostStep + { + LANG: Fortran + SYNC: metric_temps + } "Set the temporary metric terms" + + + if (CCTK_Equals(whisky_eos_type,"General")) + { + + schedule Conservative2PrimitiveGeneral IN HydroBase_Con2Prim AS Con2Prim + { + LANG: Fortran + STORAGE: Con2Prim_temps + } "Convert back to primitive variables (general)" + + } + else if (CCTK_Equals(whisky_eos_type,"Polytype")) + { + + schedule Con2PrimPolytypeGeneral IN HydroBase_Con2Prim AS Con2Prim + { + LANG: Fortran + STORAGE: Con2Prim_temps + } "Convert back to primitive variables (polytype)" + + } + +} +else if (CCTK_Equals(whisky_eos_type,"General")) +{ + + schedule Conservative2Primitive IN HydroBase_Con2Prim AS Con2Prim + { + LANG: Fortran + } "Convert back to primitive variables (general)" + +} +else if (CCTK_Equals(whisky_eos_type,"Polytype")) +{ + + schedule Conservative2PrimitivePolytype IN HydroBase_Con2Prim AS Con2Prim + { + LANG: Fortran + } "Convert back to primitive variables (polytype)" + +} + +################################################################# +### Having finished all the updates, we apply the boundary ### +### conditions and synchronize the conservative and primitive ### +### variables. All other grid functions are reset only in the ### +### interior of the grid and are totally reset at every step, ### +### and so synchronization is not necessary. ### +################################################################# + +#schedule Whisky_Boundaries IN HydroBase_PostStep AFTER Con2Prim + +if (evolve_tracer) +{ + STORAGE:whisky_tracers[3] + STORAGE:whisky_cons_tracers[3] + STORAGE:whisky_tracer_rhs +} + +if (outflow_boundaries) +{ + schedule Whisky_OutflowBoundaries IN HydroBase_PostStep BEFORE Whisky_Boundaries + { + LANG: Fortran + } "Outflow boundaries over only some of the domain" +} + +# This should not be used anymore and should be removed after some time +schedule group Do_Whisky_Boundaries IN HydroBase_Boundaries +{ +} "Whisky Boundary conditions group" + +if (evolve_tracer) +{ + schedule Whisky_Boundaries IN HydroBase_Select_Boundaries + { + LANG: Fortran + OPTIONS: LEVEL + SYNC: dens + SYNC: tau + SYNC: scon + SYNC: w_lorentz + SYNC: HydroBase::rho + SYNC: HydroBase::press + SYNC: HydroBase::eps + SYNC: HydroBase::vel + SYNC: whisky_cons_tracers + SYNC: whisky_tracers + } "Select Whisky boundary conditions" +} else +{ + schedule Whisky_Boundaries IN HydroBase_Select_Boundaries + { + LANG: Fortran + OPTIONS: LEVEL + SYNC: dens + SYNC: tau + SYNC: scon + SYNC: w_lorentz + SYNC: HydroBase::rho + SYNC: HydroBase::press + SYNC: HydroBase::eps + SYNC: HydroBase::vel + } "Select Whisky boundary conditions" +} + +############################################################ +### Compute first differences of rho for mesh refinement ### +############################################################ + +# commented out (2006.08.22) since unused, for the time being +#STORAGE:DiffRho + +#schedule Whisky_DiffRho IN HydroBase_PostStep AFTER Whisky_ApplyBCs +#{ +# LANG: Fortran +#} "Compute relative differences in rho" + + +# older version +# schedule Whisky_DiffRho AT POSTREGRID +# { +# LANG: Fortran +# } "Compute relative differences in rho" + +################################################################ +### If a point has been marked as requiring resetting to the ### +### atmosphere, this is where we do it. ### +### ### +### You didn't see this abuse of MoL. Nothing to see here, ### +### move along. ### +################################################################ + +schedule Whisky_AtmosphereReset IN MoL_Evolution AFTER MoL_Step BEFORE HydroBase_Boundaries AFTER MoL_RestoreSandR +{ + LANG: Fortran +} "Reset the atmosphere" + +schedule group HydroBase_Boundaries IN MoL_Evolution AFTER MoL_Step +{ +} "HydroBase Boundary conditions group" + +} # end of if (CCTK_EQUALS(hydrobase::evolution_method, "whisky")) + +if (set_trivial_rp_grid_function) +{ + STORAGE: whisky_trivial_rp_gf_group +} + +if (ppm_mppm_debug_eigenvalues) +{ + STORAGE: whisky_mppm_eigenvalues +} + +if (compute_DCandMaxima) +{ + STORAGE: whisky_maxima_location + STORAGE: whisky_maxima_position + STORAGE: whisky_maxima_iteration + STORAGE: whisky_maxima_separation + STORAGE: maxrho_global + + schedule Whisky_InitFindMaxima AT Initial + { + LANG:Fortran + OPTIONS: GLOBAL + } "Initialize the scalars for the routine that locates the maxima" + + + schedule Whisky_InitFindMaxima AT CCTK_POST_RECOVER_VARIABLES + { + LANG:Fortran + OPTIONS: GLOBAL + } "Initialize the scalars for the routine that locates the maxima" + + schedule GROUP Whisky_DCAndMaxima AT POSTSTEP + { + STORAGE: whisky_maxima_location + STORAGE: whisky_maxima_position + STORAGE: whisky_maxima_separation + } "Find the maximum of the density and the star separation" + + schedule GROUP Whisky_DCAndMaxima AT CCTK_POST_RECOVER_VARIABLES + { + STORAGE: whisky_maxima_location + STORAGE: whisky_maxima_position + STORAGE: whisky_maxima_separation + } "Find the maximum of the density and the star separation" + + if (use_coord_maxima) + { + + schedule Whisky_FindMaxima IN Whisky_DCAndMaxima + { + LANG: Fortran + OPTIONS: local + } "Use the maximum of the density to set the position of the center of the star" + + } + else + { + + schedule Whisky_FindWeightedMaxima IN Whisky_DCAndMaxima + { + LANG: Fortran + OPTIONS: local + } "Use the weighted maximum of the density to set the position used by DriftCorrect" + + } + + if (set_dc_centroid) + { + schedule Whisky_SetDCCentroid IN Whisky_DCAndMaxima AFTER Whisky_FindMaxima + { + LANG: Fortran + OPTIONS: GLOBAL + } "Set DriftCorrect" + } + + if (compute_EqualMassStarSeparation) + { + schedule Whisky_FindSeparation IN Whisky_DCAndMaxima AFTER Whisky_FindMaxima + { + LANG: Fortran + OPTIONS: GLOBAL + TRIGGERS: whisky_maxima_position + TRIGGERS: whisky_maxima_separation + } "Find the separation of a binary NS from the maxima" + } +} + +# Check that rho >= whisky_rho_min +if (Check_Rho_Minimum) +{ + schedule Whisky_Check_Rho_Minimum AT ANALYSIS + { + LANG: Fortran + TRIGGERS: HydroBase::rho + TRIGGERS: HydroBase::press + TRIGGERS: HydroBase::eps + } "Check whether somewhere rho(i,j,k) < whisky_rho_min and produce a WARNING" + + schedule Whisky_RefinementLevel AT ANALYSIS BEFORE Whisky_Check_Rho_Minimum + { + LANG: Fortran + TRIGGERS: HydroBase::rho + TRIGGERS: HydroBase::press + TRIGGERS: HydroBase::eps + } "Calculate current refinement level" +} + +# set and check a mask containing the failures of C2P; if they occur at points overwritten by finer grids, they can be ignored. + +STORAGE: whisky_C2P_failed[1] + +schedule reset_whisky_C2P_failed AT BASEGRID +{ + LANG: Fortran +} "Initialise the mask function that contains the points where C2P has failed (at BASEGRID)" + +schedule reset_whisky_C2P_failed AT CCTK_PRESTEP +{ + LANG: Fortran +} "Reset the mask function that contains the points where C2P has failed (at PRESTEP)" + +schedule sync_whisky_C2P_failed AT CCTK_EVOL AFTER MoL_Evolution +{ + LANG: Fortran + SYNC: whisky_C2P_failed +} "Syncronise the mask function that contains the points where C2P has failed" + +schedule check_whisky_C2P_failed AT CCTK_POSTSTEP AFTER Whisky_RefinementLevel +{ + LANG: Fortran +} "Check the mask function that contains the points where C2P has failed and report an error in case a failure is found" + +schedule Whisky_Tmunu IN AddToTmunu +{ + LANG: Fortran +} "Compute the energy-momentum tensor" + +#the following is necessary because TmunuBase does not have enough schedule + +schedule GROUP SetTmunu AT POSTRESTRICTINITIAL AFTER HydroBase_Con2Prim BEFORE ADMConstraintsGroup +{ +} "Calculate the stress-energy tensor" + +schedule GROUP SetTmunu AT POSTPOSTINITIAL AFTER HydroBase_Con2Prim BEFORE ADMConstraintsGroup +{ +} "Calculate the stress-energy tensor" + +schedule GROUP SetTmunu AT POST_RECOVER_VARIABLES +{ +} "Calculate the stress-energy tensor" + +schedule GROUP SetTmunu IN MoL_Evolution AFTER ApplyBCs +{ +} "Calculate the stress-energy tensor" + -- cgit v1.2.3