ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_CloudChamberWallDtGuard.H
Go to the documentation of this file.
1 #ifndef ERF_CLOUD_CHAMBER_WALL_DT_GUARD_H_
2 #define ERF_CLOUD_CHAMBER_WALL_DT_GUARD_H_
3 
4 #include <AMReX.H>
5 #include <AMReX_Print.H>
6 #include <AMReX_REAL.H>
7 
8 #include <ostream>
9 
11 
12 inline bool
13 fixed_dt_exceeds_limit (double fixed_dt, double wall_dt) noexcept
14 {
15  return fixed_dt > 0.0 && fixed_dt > wall_dt;
16 }
17 
18 inline void
19 enforce_fixed_dt_limit (int level, double fixed_dt, double wall_dt,
20  amrex::Real max_wall_rate)
21 {
22  if (!fixed_dt_exceeds_limit(fixed_dt, wall_dt)) { return; }
23 
24  amrex::Print() << "Cloud Chamber wall-transfer timestep violation at level "
25  << level
26  << ": fixed_dt=" << fixed_dt
27  << ", wall_dt=" << wall_dt
28  << ", max_wall_rate=" << max_wall_rate << std::endl;
29  amrex::Abort(
30  "Cloud Chamber wall-transfer timestep exceeds dt_wall = 0.5 / max_wall_rate");
31 }
32 
33 } // namespace erf_cloud_chamber_wall_dt_guard
34 
35 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_CloudChamberWallDtGuard.H:10
void enforce_fixed_dt_limit(int level, double fixed_dt, double wall_dt, amrex::Real max_wall_rate)
Definition: ERF_CloudChamberWallDtGuard.H:19
bool fixed_dt_exceeds_limit(double fixed_dt, double wall_dt) noexcept
Definition: ERF_CloudChamberWallDtGuard.H:13