diff options
Diffstat (limited to 'Carpet/Carpet/src')
-rw-r--r-- | Carpet/Carpet/src/CarpetBasegrid.cc | 36 | ||||
-rw-r--r-- | Carpet/Carpet/src/carpet.hh | 1 | ||||
-rw-r--r-- | Carpet/Carpet/src/make.code.defn | 1 |
3 files changed, 38 insertions, 0 deletions
diff --git a/Carpet/Carpet/src/CarpetBasegrid.cc b/Carpet/Carpet/src/CarpetBasegrid.cc new file mode 100644 index 000000000..c2dc45f81 --- /dev/null +++ b/Carpet/Carpet/src/CarpetBasegrid.cc @@ -0,0 +1,36 @@ +#include <limits> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "carpet.hh" + + + +namespace Carpet { + + using namespace std; + + void CarpetRefineTimeStep (CCTK_ARGUMENTS) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + // Find the smallest CFL factor for all refinement levels + CCTK_REAL min_cfl = numeric_limits<CCTK_REAL>::max(); + for (int rl = 0; rl < reflevels; ++ rl) { + CCTK_REAL const level_cfl = + timereffacts.AT(rl) / maxval (spacereffacts.AT(rl)); + min_cfl = min (min_cfl, level_cfl); + } + + // Reduce the time step correspondingly + cctkGH->cctk_delta_time *= min_cfl; + CCTK_VInfo (CCTK_THORNSTRING, + "Timestep reduced by a factor of %g to %g", + double (1 / min_cfl), + double (cctkGH->cctk_delta_time/cctkGH->cctk_timefac)); + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/carpet.hh b/Carpet/Carpet/src/carpet.hh index 271a86086..16dca4228 100644 --- a/Carpet/Carpet/src/carpet.hh +++ b/Carpet/Carpet/src/carpet.hh @@ -22,6 +22,7 @@ namespace Carpet { int CarpetStartup (void); int CarpetMultiModelStartup (void); void CarpetParamCheck (CCTK_ARGUMENTS); + void CarpetRefineTimeStep (CCTK_ARGUMENTS); } // Registered functions diff --git a/Carpet/Carpet/src/make.code.defn b/Carpet/Carpet/src/make.code.defn index 374e3dad4..1f70291cd 100644 --- a/Carpet/Carpet/src/make.code.defn +++ b/Carpet/Carpet/src/make.code.defn @@ -3,6 +3,7 @@ # Source files in this directory SRCS = AllGatherString.cc \ CallFunction.cc \ + CarpetBasegrid.cc \ CarpetParamCheck.cc \ CarpetStartup.cc \ Checksum.cc \ |