19 public mfem::ParNonlinearForm
23 std::shared_ptr<mfem::ParFiniteElementSpace>
vfes;
24 std::shared_ptr<mfem::ParFiniteElementSpace>
fes0;
25 std::shared_ptr<mfem::ParMesh>
pmesh;
26 std::shared_ptr<mfem::ParGridFunction>
eta;
27 std::shared_ptr<Prandtl::PerssonPeraireIndicator>
indicator;
47 std::shared_ptr<mfem::ParFiniteElementSpace> fes0_,
48 std::shared_ptr<mfem::ParMesh> pmesh_,
49 std::shared_ptr<mfem::ParGridFunction> eta_,
50 std::shared_ptr<mfem::ParGridFunction> alpha_,
51 std::shared_ptr<Prandtl::PerssonPeraireIndicator> indicator_,
53 : mfem::TimeDependentOperator(vfes_->GetTrueVSize()),
54 mfem::ParNonlinearForm(vfes_.get()),
71 void SetBCDescriptorData(
const mfem::Array<Theseus::BCDescriptor> &bc_descr,
const mfem::Vector &bc_scalar_dat,
72 const mfem::Vector &bc_vector_dat)
101 { std::cout <<
"RHSOperatorBase::ComputeIntegralMeasures empty." << std::endl; }
102 virtual void Mult(
const mfem::Vector &u, mfem::Vector &dudt)
const override
103 { std::cout <<
"RHSOperatorBase::Mult empty." << std::endl; }
105 return std::string(
"RHSOperatorBase::GasModel: NONE");
108 return std::string(
"RHSOperatorBase::NumFlux: NONE");
111 return std::string(
"RHSOperatorBase::FlowModel: NONE");
115 MFEM_ABORT(
"RHSOperatorBase::GetGasModelInterface() called on base class.");
119 template<
typename PhysicsT>
126 using Gas =
typename Physics::GasModel;
134 std::shared_ptr<const Gas>
gas;
138 std::shared_ptr<mfem::ParFiniteElementSpace> fes0_,
139 std::shared_ptr<mfem::ParMesh> pmesh_,
140 std::shared_ptr<mfem::ParGridFunction> eta_,
141 std::shared_ptr<mfem::ParGridFunction> alpha_,
142 std::shared_ptr<Prandtl::PerssonPeraireIndicator> indicator_,
143 std::shared_ptr<const Gas> gas_,
144 const std::string &gasModelName_,
145 const std::string &numFluxName_,
146 const std::string &flowModelName_,
161 void Finalize(mfem::real_t time = 0)
override;
163#ifdef SUBCELL_FV_BLENDING
164 void ComputeBlendingCoefficient()
const;
165 void CheckIndicatorSmoothness()
const;
166 void ComputeIndicatorField(
const mfem::Vector &u)
const;
169 void Mult(
const mfem::Vector &u, mfem::Vector &dudt)
const override;
171 virtual mfem::real_t
FlowMult(
const mfem::Vector &pu, mfem::Vector &pdudt)
const = 0;
183 mfem::Vector &uInt, mfem::Vector &uBnd)
const;
Definition GasModel.hpp:262
Definition GasModel.hpp:235
Definition RHSOperator.hpp:20
mfem::real_t alpha_dof
Definition RHSOperator.hpp:43
void AddBdrFaceMarker(mfem::Array< int > &bdr_marker_)
Definition RHSOperator.hpp:79
virtual std::string FlowModelName() const
Definition RHSOperator.hpp:110
const int dim
Definition RHSOperator.hpp:29
const mfem::real_t sharpness_fac
Definition RHSOperator.hpp:33
virtual std::string NumFluxName() const
Definition RHSOperator.hpp:107
Theseus::IntegralMeasures diag0
Definition RHSOperator.hpp:44
std::vector< mfem::Array< int > > bdr_marker
Definition RHSOperator.hpp:38
const mfem::real_t alpha_min
Definition RHSOperator.hpp:35
virtual const GasModelInterface & GetGasModelInterface() const
Definition RHSOperator.hpp:113
std::shared_ptr< mfem::ParMesh > pmesh
Definition RHSOperator.hpp:25
mfem::Array< Theseus::BCDescriptor > bc_descriptors
Definition RHSOperator.hpp:39
const int num_dofs_scalar
Definition RHSOperator.hpp:30
std::shared_ptr< mfem::ParFiniteElementSpace > fes0
Definition RHSOperator.hpp:24
mfem::real_t max_char_speed
Definition RHSOperator.hpp:22
virtual void Mult(const mfem::Vector &u, mfem::Vector &dudt) const override
Definition RHSOperator.hpp:102
mfem::Vector bc_scalar_data
Definition RHSOperator.hpp:41
mfem::real_t GetMaxCharSpeed() const
Definition RHSOperator.hpp:91
mfem::Vector bc_vector_data
Definition RHSOperator.hpp:40
mfem::real_t & GetTimeRef()
Definition RHSOperator.hpp:96
RHSOperatorBase(std::shared_ptr< mfem::ParFiniteElementSpace > vfes_, std::shared_ptr< mfem::ParFiniteElementSpace > fes0_, std::shared_ptr< mfem::ParMesh > pmesh_, std::shared_ptr< mfem::ParGridFunction > eta_, std::shared_ptr< mfem::ParGridFunction > alpha_, std::shared_ptr< Prandtl::PerssonPeraireIndicator > indicator_, const mfem::real_t alpha_max=0.5, const mfem::real_t alpha_min=0.001)
Definition RHSOperator.hpp:46
virtual void Finalize(mfem::real_t time=0)
Definition RHSOperator.hpp:84
const mfem::real_t modalThreshold
Definition RHSOperator.hpp:34
virtual std::string GasModelName() const
Definition RHSOperator.hpp:104
std::shared_ptr< Prandtl::PerssonPeraireIndicator > indicator
Definition RHSOperator.hpp:27
virtual void ComputeIntegralMeasures(const mfem::Vector &u, Theseus::IntegralMeasures &diag) const
Definition RHSOperator.hpp:100
virtual ~RHSOperatorBase()=default
IntegralMeasures GetIntegralMeasuresBaseline() const
Definition RHSOperator.hpp:89
std::shared_ptr< mfem::ParFiniteElementSpace > vfes
Definition RHSOperator.hpp:23
std::shared_ptr< mfem::ParGridFunction > eta
Definition RHSOperator.hpp:26
const int Ndofs
Definition RHSOperator.hpp:31
const int num_elements
Definition RHSOperator.hpp:29
const int order
Definition RHSOperator.hpp:29
const int num_equations
Definition RHSOperator.hpp:29
void SetBCDescriptorData(const mfem::Array< Theseus::BCDescriptor > &bc_descr, const mfem::Vector &bc_scalar_dat, const mfem::Vector &bc_vector_dat)
Definition RHSOperator.hpp:71
const mfem::real_t alpha_max
Definition RHSOperator.hpp:36
Definition RHSOperator.hpp:121
PhysicsT Physics
Definition RHSOperator.hpp:123
const std::string flowModelName
Definition RHSOperator.hpp:133
const std::string numFluxName
Definition RHSOperator.hpp:132
DeviceCache device_cache
Definition RHSOperator.hpp:130
std::shared_ptr< const Gas > gas
Definition RHSOperator.hpp:134
const GasModelInterface & GetGasModelInterface() const override
Definition RHSOperator.hpp:178
OperatorCache & GetOperatorCacheReference()
Definition RHSOperator.hpp:158
void Mult(const mfem::Vector &u, mfem::Vector &dudt) const override
Definition RHSOperator_impl.hpp:397
std::string NumFluxName() const override
Definition RHSOperator.hpp:174
std::shared_ptr< const GasModelInterface > gas_interface
Definition RHSOperator.hpp:135
void FetchRestrictions(const mfem::Vector &pu, mfem::Vector &uVol, mfem::Vector &uInt, mfem::Vector &uBnd) const
Definition RHSOperator_impl.hpp:39
void Finalize(mfem::real_t time=0) override
Definition RHSOperator_impl.hpp:11
OperatorCache operator_cache
Definition RHSOperator.hpp:129
virtual mfem::real_t FlowMult(const mfem::Vector &pu, mfem::Vector &pdudt) const =0
RHSOperator(std::shared_ptr< mfem::ParFiniteElementSpace > vfes_, std::shared_ptr< mfem::ParFiniteElementSpace > fes0_, std::shared_ptr< mfem::ParMesh > pmesh_, std::shared_ptr< mfem::ParGridFunction > eta_, std::shared_ptr< mfem::ParGridFunction > alpha_, std::shared_ptr< Prandtl::PerssonPeraireIndicator > indicator_, std::shared_ptr< const Gas > gas_, const std::string &gasModelName_, const std::string &numFluxName_, const std::string &flowModelName_, const mfem::real_t alpha_max=0.5, const mfem::real_t alpha_min=0.001)
Definition RHSOperator.hpp:137
virtual ~RHSOperator()=default
std::string FlowModelName() const override
Definition RHSOperator.hpp:175
typename Physics::GasModel Gas
Definition RHSOperator.hpp:126
typename Physics::InviscidFlux InviscidFlux
Definition RHSOperator.hpp:127
void ComputeIntegralMeasures(const mfem::Vector &u, Theseus::IntegralMeasures &diag) const override
Definition RHSOperator_impl.hpp:208
const Gas & GetGasModel() const
Definition RHSOperator.hpp:177
std::string GasModelName() const override
Definition RHSOperator.hpp:173
const std::string gasModelName
Definition RHSOperator.hpp:131
Definition AxisymmetricGeometry.hpp:15
std::shared_ptr< mfem::ParGridFunction > alpha
Definition dgsem_cache.hpp:151
OperatorGasModel gas
Definition dgsem_cache.hpp:126
Definition dgsem_cache.hpp:16
mfem::real_t en
Definition dgsem_cache.hpp:19
mfem::real_t mass
Definition dgsem_cache.hpp:17
mfem::real_t ke
Definition dgsem_cache.hpp:18