From 87fa6dcf3ff19d937313d20cca8f9e2bca1d4aec Mon Sep 17 00:00:00 2001 From: Peter Diener Date: Fri, 13 Nov 2009 16:49:01 -0600 Subject: Merge with Erik's latest changes. Signed-off-by: Peter Diener --- ML_BSSN_Helper/param.ccl | 5 +++ ML_BSSN_Helper/schedule.ccl | 33 ++++++++++++--- ML_BSSN_Helper/src/SetGroupTags.c | 69 ++++++++++++++++++++++++++++++++ ML_BSSN_Helper/src/UnsetCheckpointTags.c | 59 --------------------------- ML_BSSN_Helper/src/make.code.defn | 2 +- 5 files changed, 103 insertions(+), 65 deletions(-) create mode 100644 ML_BSSN_Helper/src/SetGroupTags.c delete mode 100644 ML_BSSN_Helper/src/UnsetCheckpointTags.c (limited to 'ML_BSSN_Helper') diff --git a/ML_BSSN_Helper/param.ccl b/ML_BSSN_Helper/param.ccl index 338d0a2..f9267d0 100644 --- a/ML_BSSN_Helper/param.ccl +++ b/ML_BSSN_Helper/param.ccl @@ -17,10 +17,15 @@ USES CCTK_INT boundary_width SHARES: ML_BSSN USES CCTK_INT timelevels +USES CCTK_INT rhs_timelevels USES KEYWORD calculate_ADMBase_variables_at USES CCTK_REAL harmonicF +EXTENDS KEYWORD my_initial_boundary_condition +{ + "extrapolate-gammas" :: "extrapolate-gammas" +} EXTENDS KEYWORD my_rhs_boundary_condition { "NewRad" :: "NewRad" diff --git a/ML_BSSN_Helper/schedule.ccl b/ML_BSSN_Helper/schedule.ccl index 48bea28..2c677cc 100644 --- a/ML_BSSN_Helper/schedule.ccl +++ b/ML_BSSN_Helper/schedule.ccl @@ -21,6 +21,19 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { STORAGE: ADMBase::shift[3] STORAGE: ADMBase::dtlapse[3] STORAGE: ADMBase::dtshift[3] + } else if (timelevels == 4) { + #STORAGE: ADMBase::metric[4] + #STORAGE: ADMBase::curv[4] + #STORAGE: ADMBase::lapse[4] + #STORAGE: ADMBase::shift[4] + #STORAGE: ADMBase::dtlapse[4] + #STORAGE: ADMBase::dtshift[4] + STORAGE: ADMBase::metric[3] + STORAGE: ADMBase::curv[3] + STORAGE: ADMBase::lapse[3] + STORAGE: ADMBase::shift[3] + STORAGE: ADMBase::dtlapse[3] + STORAGE: ADMBase::dtshift[3] } SCHEDULE ML_BSSN_RegisterSlicing AT startup @@ -29,11 +42,11 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { OPTIONS: meta } "Register slicing" - SCHEDULE ML_BSSN_UnsetCheckpointTags AT startup + SCHEDULE ML_BSSN_SetGroupTags AT startup BEFORE Driver_Startup { LANG: C OPTIONS: meta - } "Don't checkpoint ADMBase variables" + } "Set checkpointing and prolongation group tags" SCHEDULE ML_BSSN_RegisterConstrained IN MoL_Register { @@ -43,6 +56,13 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { + #SCHEDULE GROUP ML_BSSN_evolCalcGroup AT postinitial AFTER MoL_PostStep + #{ + #} "Calculate BSSN RHS" + SCHEDULE GROUP MoL_CalcRHS AT postinitial AFTER MoL_PostStep + { + } "Evaluate RHS" + SCHEDULE GROUP ML_BSSN_evolCalcGroup IN MoL_CalcRHS { } "Calculate BSSN RHS" @@ -62,7 +82,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { - if (CCTK_EQUALS (my_rhs_boundary_condition, "NewRad")) + if (CCTK_EQUALS (my_initial_boundary_condition, "extrapolate-gammas")) { SCHEDULE ML_BSSN_ExtrapolateGammas AT initial AFTER ML_BSSN_convertFromADMBaseGamma { @@ -71,7 +91,10 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { SYNC: ML_dtlapse SYNC: ML_dtshift } "Extrapolate Gammas and time derivatives of lapse and shift" - + } + + if (CCTK_EQUALS (my_rhs_boundary_condition, "NewRad")) + { SCHEDULE ML_BSSN_NewRad IN ML_BSSN_evolCalcGroup AFTER ML_BSSN_RHS { LANG: C @@ -97,7 +120,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { { # if (timelevels > 1) # { - # SCHEDULE ML_BSSN_CopyADMBase AT CCTK_PRESTEP + # SCHEDULE ML_BSSN_CopyADMBase AT prestep # { # LANG: C # } "Copy ADMBase variables to current time level" diff --git a/ML_BSSN_Helper/src/SetGroupTags.c b/ML_BSSN_Helper/src/SetGroupTags.c new file mode 100644 index 0000000..a3f20a7 --- /dev/null +++ b/ML_BSSN_Helper/src/SetGroupTags.c @@ -0,0 +1,69 @@ +#include +#include +#include + +#include + +static void +set_group_tags (int const checkpoint, int const prolongate, + char const * restrict const gn); + +int +ML_BSSN_SetGroupTags (void) +{ + DECLARE_CCTK_PARAMETERS; + + set_group_tags (0, 1, "ADMBase::metric"); + set_group_tags (0, 1, "ADMBase::curv"); + set_group_tags (0, 1, "ADMBase::lapse"); + set_group_tags (0, 1, "ADMBase::shift"); + set_group_tags (0, 1, "ADMBase::dtlapse"); + set_group_tags (0, 1, "ADMBase::dtshift"); + + set_group_tags (0, 0, "ML_BSSN::ML_cons_detg"); + set_group_tags (0, 0, "ML_BSSN::ML_cons_Gamma"); + set_group_tags (0, 0, "ML_BSSN::ML_cons_traceA"); + set_group_tags (0, 0, "ML_BSSN::ML_Ham"); + set_group_tags (0, 0, "ML_BSSN::ML_mom"); + set_group_tags (0, 0, "ML_BSSN::ML_curvrhs"); + + int const checkpoint = rhs_timelevels > 1; + set_group_tags (checkpoint, 0, "ML_BSSN::ML_dtlapserhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_dtshiftrhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_Gammarhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_lapserhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_log_confacrhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_metricrhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_shiftrhs"); + set_group_tags (checkpoint, 0, "ML_BSSN::ML_trace_curvrhs"); + + return 0; +} + +static void +set_group_tags (int const checkpoint, int const prolongate, + char const * restrict const gn) +{ + assert (gn); + + int const gi = CCTK_GroupIndex (gn); + assert (gi >= 0); + + int const table = CCTK_GroupTagsTableI (gi); + assert (table >= 0); + + if (! checkpoint) { + int ierr; + ierr = Util_TableSetString (table, "no", "Checkpoint"); + assert (! ierr); + + ierr = Util_TableSetString (table, "no", "Persistent"); + assert (! ierr); + } + + if (! prolongate) { + int ierr; + ierr = Util_TableSetString (table, "none", "Prolongation"); + assert (! ierr); + } +} diff --git a/ML_BSSN_Helper/src/UnsetCheckpointTags.c b/ML_BSSN_Helper/src/UnsetCheckpointTags.c deleted file mode 100644 index 3eaf347..0000000 --- a/ML_BSSN_Helper/src/UnsetCheckpointTags.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include - -#include - -static void -unset_checkpoint_tag (int prolongate, char const * restrict gn); - -int -ML_BSSN_UnsetCheckpointTags (void) -{ - unset_checkpoint_tag (1, "ADMBase::metric"); - unset_checkpoint_tag (1, "ADMBase::curv"); - unset_checkpoint_tag (1, "ADMBase::lapse"); - unset_checkpoint_tag (1, "ADMBase::shift"); - unset_checkpoint_tag (1, "ADMBase::dtlapse"); - unset_checkpoint_tag (1, "ADMBase::dtshift"); - - unset_checkpoint_tag (0, "ML_BSSN::ML_cons_detg"); - unset_checkpoint_tag (0, "ML_BSSN::ML_cons_Gamma"); - unset_checkpoint_tag (0, "ML_BSSN::ML_cons_traceA"); - unset_checkpoint_tag (0, "ML_BSSN::ML_Ham"); - unset_checkpoint_tag (0, "ML_BSSN::ML_mom"); - unset_checkpoint_tag (0, "ML_BSSN::ML_curvrhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_dtlapserhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_dtshiftrhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_Gammarhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_lapserhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_log_confacrhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_metricrhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_shiftrhs"); - unset_checkpoint_tag (0, "ML_BSSN::ML_trace_curvrhs"); - - return 0; -} - -static void -unset_checkpoint_tag (int const prolongate, char const * restrict const gn) -{ - assert (gn); - - int const gi = CCTK_GroupIndex (gn); - assert (gi >= 0); - - int const table = CCTK_GroupTagsTableI (gi); - assert (table >= 0); - - int ierr; - ierr = Util_TableSetString (table, "no", "Checkpoint"); - assert (! ierr); - - ierr = Util_TableSetString (table, "no", "Persistent"); - assert (! ierr); - - if (! prolongate) { - ierr = Util_TableSetString (table, "none", "Prolongation"); - assert (! ierr); - } -} diff --git a/ML_BSSN_Helper/src/make.code.defn b/ML_BSSN_Helper/src/make.code.defn index 7cc4e72..2625d6c 100644 --- a/ML_BSSN_Helper/src/make.code.defn +++ b/ML_BSSN_Helper/src/make.code.defn @@ -1,3 +1,3 @@ # -*-Makefile-*- -SRCS = ExtrapolateGammas.c NewRad.c RegisterConstrained.c RegisterSlicing.c SelectBCsADMBase.c UnsetCheckpointTags.c +SRCS = ExtrapolateGammas.c NewRad.c RegisterConstrained.c RegisterSlicing.c SelectBCsADMBase.c SetGroupTags.c # CopyADMBase.c -- cgit v1.2.3