31 _specific_internal_energy_neighbor(
38 _speed_neighbor(getNeighborADMaterialProperty<
Real>(
nms::
speed)),
64 const ADReal v1 = 1.0 / rho1;
66 const ADReal E1 = e1 + 0.5 * u1 * u1;
67 const ADReal p1 = hllc_data.
fluid.p_from_v_e(v1, e1);
69 const ADReal c1 = hllc_data.
fluid.c_from_v_e(v1, e1);
74 const ADReal v2 = 1.0 / rho2;
76 const ADReal E2 = e2 + 0.5 * u2 * u2;
77 const ADReal p2 = hllc_data.
fluid.p_from_v_e(v2, e2);
79 const ADReal c2 = hllc_data.
fluid.c_from_v_e(v2, e2);
82 const ADReal sqrt_rho1 = std::sqrt(rho1);
83 const ADReal sqrt_rho2 = std::sqrt(rho2);
84 const ADReal u_roe = (sqrt_rho1 * u1 + sqrt_rho2 * u2) / (sqrt_rho1 + sqrt_rho2);
85 const ADReal q_roe = (sqrt_rho1 * q1 + sqrt_rho2 * q2) / (sqrt_rho1 + sqrt_rho2);
86 const ADReal H_roe = (sqrt_rho1 *
H1 + sqrt_rho2 *
H2) / (sqrt_rho1 + sqrt_rho2);
87 const ADReal h_roe = H_roe - 0.5 * u_roe * u_roe;
88 const ADReal rho_roe = std::sqrt(rho1 * rho2);
89 const ADReal v_roe = 1.0 / rho_roe;
90 const ADReal e_roe = hllc_data.
fluid.e_from_v_h(v_roe, h_roe);
91 const ADReal c_roe = hllc_data.
fluid.c_from_v_e(v_roe, e_roe);
94 ADReal SL = std::min(q1 - c1, q_roe - c_roe);
95 ADReal SR = std::max(q2 + c2, q_roe + c_roe);
96 ADReal SM = (rho2 * q2 * (SR - q2) - rho1 * q1 * (SL - q1) + p1 - p2) /
97 (rho2 * (SR - q2) - rho1 * (SL - q1));
99 return {{std::move(SL), std::move(SM), std::move(SR)}};
static InputParameters validParams()
static const std::string total_energy_density
static std::array< ADReal, 3 > waveSpeed(const HLLCData &hllc_data, const ADRealVectorValue &normal)
helper function for computing wave speed
const ADMaterialProperty< Real > & _specific_internal_energy_elem
internal energies left == elem, right == neighbor
const ADReal & e_elem
internal energies left == elem, right == neighbor
auto norm() const -> decltype(std::norm(T()))
const ADRealVectorValue & vel_elem
velocities left == elem, right == neighbor
const ADReal & e_neighbor
static const std::string speed
const ADReal & rho_elem
densities left == elem, right == neighbor
const RealVectorValue & normal() const
CNSFVHLLCBase(const InputParameters ¶ms)
static const std::string density
static const std::string fluid
HLLCData hllcData() const
DualNumber< Real, DNDerivativeType, true > ADReal
const ADMaterialProperty< Real > & _specific_internal_energy_neighbor
static const std::string specific_internal_energy
const ADMaterialProperty< Real > & _rho_neighbor
static InputParameters validParams()
const SinglePhaseFluidProperties & fluid
fluid properties
Common class for single phase fluid properties.
const ADReal & rho_neighbor
const ADMaterialProperty< RealVectorValue > & _vel_neighbor
const SinglePhaseFluidProperties & _fluid
fluid properties
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string pressure
const ADRealVectorValue & vel_neighbor
static const std::string velocity
Helper structure for holding data necessary for computing HLLC fluxes.
const ADMaterialProperty< Real > & _rho_elem
densities left == elem, right == neighbor
const ADMaterialProperty< RealVectorValue > & _vel_elem
velocities left == elem, right == neighbor