PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800

◆ enthalpy_permissive()

double pism::EnthalpyConverter::enthalpy_permissive ( double  T,
double  omega,
double  P 
) const

Compute enthalpy more permissively than enthalpy().

Computes enthalpy from absolute temperature, liquid water fraction, and pressure. Use this form of enthalpy() when outside sources (e.g. information from a coupler) might generate a temperature above the pressure melting point or generate cold ice with a positive water fraction.

Treats temperatures above pressure-melting point as at the pressure-melting point. Interprets contradictory case of \(T < T_m(p)\) and \(\omega > 0\) as cold ice, ignoring the water fraction ( \(\omega\)) value.

Calls enthalpy(), which validates its inputs.

Computes:

\[ E = \begin{cases} E(T,0.0,p), & T < T_m(p) \quad \text{and} \quad \omega \ge 0, \\ E(T_m(p),\omega,p), & T \ge T_m(p) \quad \text{and} \quad \omega \ge 0, \end{cases} \]

but ensures \( 0 \le \omega \le 1 \) in second case. Calls enthalpy() for \( E(T,\omega,p) \).

Definition at line 273 of file EnthalpyConverter.cc.

References enthalpy(), pism::array::max(), melting_temperature(), and pism::array::min().

Referenced by pism::enthalpy_from_temperature_cold().