aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/Carpet/src')
-rw-r--r--Carpet/Carpet/src/CarpetBasegrid.cc36
-rw-r--r--Carpet/Carpet/src/carpet.hh1
-rw-r--r--Carpet/Carpet/src/make.code.defn1
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 \