From 26067015fd74e5079d09a589fc3bab9e7fd13f22 Mon Sep 17 00:00:00 2001 From: rhaas Date: Thu, 2 Aug 2012 16:34:52 +0000 Subject: MoL: add Multirate capabilities. This add three new multirate RK schemes to MoL. Flags indicate whether it is time to execute slow RHS computation. For instance, in the RK4-RK2 scheme, there are 4 substeps in total, but the RK2 RHS are only evaluated in the very first and in the very last step of the four substeps. From: Christian Reisswig, minor changes by Roland Haas git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/MoL/trunk@175 578cdeb0-5ea1-4b81-8215-5a3b8777ee0b --- interface.ccl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'interface.ccl') diff --git a/interface.ccl b/interface.ccl index fa72e0c..d2d14f9 100644 --- a/interface.ccl +++ b/interface.ccl @@ -34,14 +34,21 @@ USES FUNCTION EnableProlongating CCTK_INT FUNCTION MoLRegisterEvolved(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) +CCTK_INT FUNCTION MoLRegisterEvolvedSlow(CCTK_INT IN EvolvedIndex, \ + CCTK_INT IN RHSIndexSlow) + CCTK_INT FUNCTION MoLRegisterConstrained(CCTK_INT IN ConstrainedIndex) CCTK_INT FUNCTION MoLRegisterSaveAndRestore(CCTK_INT IN SandRIndex) CCTK_INT FUNCTION MoLRegisterEvolvedGroup(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) +CCTK_INT FUNCTION MoLRegisterEvolvedGroupSlow(CCTK_INT IN EvolvedIndex, \ + CCTK_INT IN RHSIndexSlow) CCTK_INT FUNCTION MoLRegisterConstrainedGroup(CCTK_INT IN ConstrainedIndex) CCTK_INT FUNCTION MoLRegisterSaveAndRestoreGroup(CCTK_INT IN SandRIndex) CCTK_INT FUNCTION MoLChangeToEvolved(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) +CCTK_INT FUNCTION MoLChangeToEvolvedSlow(CCTK_INT IN EvolvedIndex, \ + CCTK_INT IN RHSIndexSlow) CCTK_INT FUNCTION MoLChangeToConstrained(CCTK_INT IN ConstrainedIndex) CCTK_INT FUNCTION MoLChangeToSaveAndRestore(CCTK_INT IN SandRIndex) CCTK_INT FUNCTION MoLChangeToNone(CCTK_INT IN RemoveIndex) @@ -49,17 +56,21 @@ CCTK_INT FUNCTION MoLQueryEvolvedRHS(CCTK_INT IN EvolvedIndex) CCTK_INT FUNCTION MoLNumIntegratorSubsteps() PROVIDES FUNCTION MoLRegisterEvolved WITH MoL_RegisterEvolved LANGUAGE C +PROVIDES FUNCTION MoLRegisterEvolvedSlow WITH MoL_RegisterEvolvedSlow LANGUAGE C PROVIDES FUNCTION MoLRegisterConstrained WITH MoL_RegisterConstrained \ LANGUAGE C PROVIDES FUNCTION MoLRegisterSaveAndRestore WITH MoL_RegisterSaveAndRestore \ LANGUAGE C PROVIDES FUNCTION MoLRegisterEvolvedGroup WITH MoL_RegisterEvolvedGroup \ LANGUAGE C +PROVIDES FUNCTION MoLRegisterEvolvedGroupSlow WITH MoL_RegisterEvolvedGroupSlow \ + LANGUAGE C PROVIDES FUNCTION MoLRegisterConstrainedGroup WITH \ MoL_RegisterConstrainedGroup LANGUAGE C PROVIDES FUNCTION MoLRegisterSaveAndRestoreGroup WITH \ MoL_RegisterSaveAndRestoreGroup LANGUAGE C PROVIDES FUNCTION MoLChangeToEvolved WITH MoL_ChangeToEvolved LANGUAGE C +PROVIDES FUNCTION MoLChangeToEvolvedSlow WITH MoL_ChangeToEvolvedSlow LANGUAGE C PROVIDES FUNCTION MoLChangeToConstrained WITH MoL_ChangeToConstrained \ LANGUAGE C PROVIDES FUNCTION MoLChangeToSaveAndRestore WITH MoL_ChangeToSaveAndRestore \ @@ -226,6 +237,17 @@ CCTK_INT MoL_Counters \ { MoL_Intermediate_Step MoL_Stepsize_Bad + + # A flag indicating whether it is time for slow RHS evaluation. + # Oustide the MoL loop, it is guaranteed to be 1. + # It is only zero for certain MoL substeps when multirate methods are used. + MoL_SlowStep + + # A flag indicating whether it is time for slow post step computations (e.g. applying BCs) + # Oustide the MoL loop, it is guaranteed to be 1. + # It is only zero for certain MoL substeps when multirate methods are used. + MoL_SlowPostStep + } "The counter for the time integration method" CCTK_REAL MoL_Original_Time \ @@ -241,6 +263,11 @@ CCTK_REAL ScratchSpace[MoL_Num_Evolved_Vars*MoL_Num_Scratch_Levels] \ Timelevels = 1 \ TAGS = 'Prolongation="None" Checkpoint="no"' +CCTK_REAL ScratchSpaceSlow[MoL_Num_Evolved_Vars_Slow*MoL_Num_Scratch_Levels] \ + TYPE = GF \ + Timelevels = 1 \ + TAGS = 'Prolongation="None" Checkpoint="no"' + CCTK_REAL SandRScratchSpace[MoL_Num_SaveAndRestore_Vars] \ TYPE = GF \ Timelevels = 1 \ -- cgit v1.2.3