23 params.
addParam<MaterialPropertyName>(
25 "An optional parameter for specifying a porosity material property. If not specified " 26 "free-flow conditions will be assumed.");
28 "Computes free-flow wave speeds on internal sides, useful in HLLC contexts");
35 _face_info(_mesh.faceInfo()),
38 _speed_elem(getADMaterialProperty<
Real>(
NS::
speed)),
39 _speed_neighbor(getNeighborADMaterialProperty<
Real>(
NS::
speed)),
41 _pressure_neighbor(getNeighborADMaterialProperty<
Real>(
NS::
pressure)),
43 _rho_neighbor(getNeighborADMaterialProperty<
Real>(
NS::
density)),
45 _specific_internal_energy_neighbor(
78 const ADReal v1 = 1.0 / rho1;
80 const ADReal E1 = e1 + 0.5 * u1 * u1;
89 const ADReal v2 = 1.0 / rho2;
91 const ADReal E2 = e2 + 0.5 * u2 * u2;
98 const ADReal sqrt_rho1 = std::sqrt(rho1);
99 const ADReal sqrt_rho2 = std::sqrt(rho2);
100 const ADReal u_roe = (sqrt_rho1 * u1 + sqrt_rho2 * u2) / (sqrt_rho1 + sqrt_rho2);
101 const ADReal q_roe = (sqrt_rho1 * q1 + sqrt_rho2 * q2) / (sqrt_rho1 + sqrt_rho2);
102 const ADReal H_roe = (sqrt_rho1 *
H1 + sqrt_rho2 *
H2) / (sqrt_rho1 + sqrt_rho2);
103 const ADReal h_roe = H_roe - 0.5 * u_roe * u_roe;
104 const ADReal rho_roe = std::sqrt(rho1 * rho2);
105 const ADReal v_roe = 1.0 / rho_roe;
110 const ADReal SL = std::min(q1 - c1, q_roe - c_roe);
111 const ADReal SR = std::max(q2 + c2, q_roe + c_roe);
113 (eps2 * rho2 * q2 * (SR - q2) - eps1 * rho1 * q1 * (SL - q1) + eps1 * p1 - eps2 * p2) /
114 (eps2 * rho2 * (SR - q2) - eps1 * rho1 * (SL - q1));
132 for (
auto & ws : pps._wave_speed)
138 for (
unsigned int j = 0;
j < 3; ++
j)
const unsigned int & _current_side
const SinglePhaseFluidProperties & _fluid
fluid properties
const ADMaterialProperty< Real > & _speed_elem
const ADMaterialProperty< Real > & _speed_neighbor
static const std::string speed
const ADMaterialProperty< Real > & _pressure_neighbor
const ADMaterialProperty< RealVectorValue > & _vel_elem
material properties computed by VarMat that Riemann solver needs
const ADMaterialProperty< Real > & _specific_internal_energy_elem
static InputParameters validParams()
static const std::string density
static const std::string fluid
const std::vector< double > y
virtual void initialSetup() override
registerMooseObject("NavierStokesApp", HLLCUserObject)
bool hasData(const Elem *elem, unsigned int side) const
Query whether this processor has data for the provided element and side.
std::map< side_type, std::vector< ADReal > > _wave_speed
data structure storing the wave speeds SL, SM, SR
virtual void threadJoin(const UserObject &y) override
static const std::string specific_internal_energy
static const std::string porosity
virtual void execute() override
const ADMaterialProperty< Real > & _rho_elem
const MaterialProperty< Real > *const _eps_elem
const MaterialProperty< Real > *const _eps_neighbor
static InputParameters validParams()
unsigned int _qp
quadrature point dummy
Common class for single phase fluid properties.
const ADMaterialProperty< Real > & _specific_internal_energy_neighbor
const Point & normal() const
std::map< side_type, unsigned int > _side_to_face_info
face info lookup allows searching for face info entry from elem/side pair
const std::vector< const FaceInfo * > & _face_info
FV face info from MooseMesh.
HLLCUserObject(const InputParameters ¶meters)
const Elem *const & _current_elem
std::vector< ADReal > waveSpeed(const Elem *elem, unsigned int side) const
accessor for the wave speed
std::pair< const Elem *, unsigned int > side_type
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const ADMaterialProperty< Real > & _pressure_elem
static const std::string pressure
void mooseError(Args &&... args) const
static const std::string velocity
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const FaceInfo & faceInfoHelper(const Elem *elem, unsigned int side) const
helper function for returning the FaceInfo object for an elem/side pair
const ADMaterialProperty< RealVectorValue > & _vel_neighbor
for(PetscInt i=0;i< nvars;++i)
const ADMaterialProperty< Real > & _rho_neighbor
void setupFiniteVolumeMeshData() const