30 _specific_internal_energy_elem(getADMaterialProperty<Real>(
nms::specific_internal_energy)),
31 _specific_internal_energy_neighbor(
32 getNeighborADMaterialProperty<Real>(
nms::specific_internal_energy)),
33 _rho_et_elem(getADMaterialProperty<Real>(
nms::total_energy_density)),
34 _rho_et_neighbor(getNeighborADMaterialProperty<Real>(
nms::total_energy_density)),
35 _vel_elem(getADMaterialProperty<RealVectorValue>(
nms::velocity)),
36 _vel_neighbor(getNeighborADMaterialProperty<RealVectorValue>(
nms::velocity)),
37 _speed_elem(getADMaterialProperty<Real>(
nms::speed)),
38 _speed_neighbor(getNeighborADMaterialProperty<Real>(
nms::speed)),
39 _rho_elem(getADMaterialProperty<Real>(
nms::density)),
40 _rho_neighbor(getNeighborADMaterialProperty<Real>(
nms::density)),
41 _pressure_elem(getADMaterialProperty<Real>(
nms::pressure)),
42 _pressure_neighbor(getNeighborADMaterialProperty<Real>(
nms::pressure))
61 using std::sqrt, std::min, std::max;
66 const ADReal v1 = 1.0 / rho1;
68 const ADReal E1 = e1 + 0.5 * u1 * u1;
69 const ADReal p1 = hllc_data.
fluid.p_from_v_e(v1, e1);
70 const ADReal H1 = E1 + p1 / rho1;
71 const ADReal c1 = hllc_data.
fluid.c_from_v_e(v1, e1);
76 const ADReal v2 = 1.0 / rho2;
78 const ADReal E2 = e2 + 0.5 * u2 * u2;
79 const ADReal p2 = hllc_data.
fluid.p_from_v_e(v2, e2);
80 const ADReal H2 = E2 + p2 / rho2;
81 const ADReal c2 = hllc_data.
fluid.c_from_v_e(v2, e2);
84 const ADReal sqrt_rho1 = sqrt(rho1);
85 const ADReal sqrt_rho2 = sqrt(rho2);
86 const ADReal u_roe = (sqrt_rho1 * u1 + sqrt_rho2 * u2) / (sqrt_rho1 + sqrt_rho2);
87 const ADReal q_roe = (sqrt_rho1 * q1 + sqrt_rho2 * q2) / (sqrt_rho1 + sqrt_rho2);
88 const ADReal H_roe = (sqrt_rho1 * H1 + sqrt_rho2 * H2) / (sqrt_rho1 + sqrt_rho2);
89 const ADReal h_roe = H_roe - 0.5 * u_roe * u_roe;
90 const ADReal rho_roe = sqrt(rho1 * rho2);
91 const ADReal v_roe = 1.0 / rho_roe;
92 const ADReal e_roe = hllc_data.
fluid.e_from_v_h(v_roe, h_roe);
93 const ADReal c_roe = hllc_data.
fluid.c_from_v_e(v_roe, e_roe);
96 ADReal SL = min(q1 - c1, q_roe - c_roe);
97 ADReal SR = max(q2 + c2, q_roe + c_roe);
98 ADReal SM = (rho2 * q2 * (SR - q2) - rho1 * q1 * (SL - q1) + p1 - p2) /
99 (rho2 * (SR - q2) - rho1 * (SL - q1));
101 return {{std::move(SL), std::move(SM), std::move(SR)}};
DualNumber< Real, DNDerivativeType, true > ADReal
const SinglePhaseFluidProperties & _fluid
fluid properties
CNSFVHLLCBase(const InputParameters ¶ms)
const ADMaterialProperty< Real > & _specific_internal_energy_elem
internal energies left == elem, right == neighbor
const ADMaterialProperty< Real > & _rho_elem
densities left == elem, right == neighbor
const ADMaterialProperty< Real > & _rho_neighbor
static std::array< ADReal, 3 > waveSpeed(const HLLCData &hllc_data, const ADRealVectorValue &normal)
helper function for computing wave speed
HLLCData hllcData() const
const ADMaterialProperty< RealVectorValue > & _vel_elem
velocities left == elem, right == neighbor
const ADMaterialProperty< Real > & _specific_internal_energy_neighbor
static InputParameters validParams()
const ADMaterialProperty< RealVectorValue > & _vel_neighbor
static InputParameters validParams()
const RealVectorValue & normal() const
Common class for single phase fluid properties.
static const std::string fluid
Helper structure for holding data necessary for computing HLLC fluxes.
const ADReal & e_neighbor
const SinglePhaseFluidProperties & fluid
fluid properties
const ADRealVectorValue & vel_neighbor
const ADReal & rho_elem
densities left == elem, right == neighbor
const ADReal & e_elem
internal energies left == elem, right == neighbor
const ADRealVectorValue & vel_elem
velocities left == elem, right == neighbor
const ADReal & rho_neighbor