82 const auto in = 1.0 / 2.0 * (1 - abs(_m[i]) / _m[i]) * _Tdown[i] +
83 1.0 / 2.0 * (1 + abs(_m[i]) / _m[i]) * _Tup[i];
84 const auto mu = _fp.mu_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
85 const auto rho = _fp.rho_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
86 const auto cp = _fp.cp_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
87 const auto k = _fp.k_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
90 const auto Dh = 4.0 * _area(qp, state) / _perimeter(qp, state);
91 const auto G = abs(_m[i]) / _area(qp, state);
92 const auto Re = G * Dh /
mu;
93 const auto Pr =
mu * cp / k;
95 const auto h = 0.023 *
pow(
Re, 0.8) *
pow(Pr, 0.4) * k / Dh;
96 const auto q = h * _perimeter(qp, state) / 2.0 * (2.0 * _Tw[i] - Base::_u[i] - in);
98 energy_residual += (_m[i] / 2.0 * (1 - abs(_m[i]) / _m[i]) * _Tdown[i] -
99 _m[i] / 2.0 * (1 + abs(_m[i]) / _m[i]) * _Tup[i] + abs(_m[i]) * Base::_u[i]) /
100 _length(qp, state) / _area(qp, state) /
rho;
102 energy_residual -= q / _area(qp, state) /
rho / cp;
104 return energy_residual;
111 if constexpr (!is_ad)
113 Real energy_jacob = 0;
118 const auto in = 1.0 / 2.0 * (1 - abs(_m[i]) / _m[i]) * _Tdown[i] +
119 1.0 / 2.0 * (1 + abs(_m[i]) / _m[i]) * _Tup[i];
120 const auto mu = _fp.mu_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
121 const auto rho = _fp.rho_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
122 const auto cp = _fp.cp_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
123 const auto k = _fp.k_from_p_T(_Pref(qp, state), (Base::_u[i] + in) / 2);
126 const auto Dh = 4.0 * _area(qp, state) / _perimeter(qp, state);
127 const auto G = abs(_m[i]) / _area(qp, state);
128 const auto Re = G * Dh /
mu;
129 const auto Pr =
mu * cp / k;
131 const auto h = 0.023 *
pow(
Re, 0.8) *
pow(Pr, 0.4) * k / Dh;
132 const auto q = -h * _perimeter(qp, state) / 2.0;
134 energy_jacob += abs(_m[i]) / _length(qp, state) / _area(qp, state) /
rho;
136 energy_jacob -= q / _area(qp, state) /
rho / cp;
142 mooseError(
"computeQpJacobian() should not be called in AD mode");