1 #ifndef ERF_IBSEB_BALANCE_H
2 #define ERF_IBSEB_BALANCE_H
4 #include <AMReX_REAL.H>
5 #include <AMReX_GpuQualifiers.H>
6 #include <AMReX_Math.H>
79 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
91 auto residual = [&](
Real T) {
93 return SW_abs + Q_abs + emis * LW_ext - e_eff * T4
94 - C_H * (
T / exner - theta_air) - LE - (slab_a *
T - slab_b);
96 Real T = amrex::max(amrex::min(T_start, T_max), T_min);
99 for (
int it = 0; it < max_iter; ++it) {
101 const Real Fp = -
Real(4.0) * e_eff *
T *
T *
T - C_H / exner - slab_a;
103 step = amrex::max(amrex::min(step, max_step), -max_step);
104 const Real T_new = amrex::max(amrex::min(
T + step, T_max), T_min);
105 const Real dT = std::abs(T_new -
T);
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ T
Definition: ERF_IndexDefines.H:128
Definition: ERF_IBSEBBalance.H:51
constexpr amrex::Real SIGMA_SB
Stefan-Boltzmann constant [W/m2/K4].
Definition: ERF_IBSEBBalance.H:54
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real solve_skin_balance(amrex::Real T_start, amrex::Real SW_abs, amrex::Real Q_abs, amrex::Real LW_ext, amrex::Real emis, amrex::Real f_bldg, amrex::Real C_H, amrex::Real exner, amrex::Real theta_air, amrex::Real LE, amrex::Real slab_a, amrex::Real slab_b, amrex::Real T_min, amrex::Real T_max, amrex::Real max_step, amrex::Real tol, int max_iter, int &n_iter, amrex::Real &resid)
Definition: ERF_IBSEBBalance.H:80