Theseus
Compressible flow solver
Loading...
Searching...
No Matches
Theseus::NSOperator< PhysicsT > Class Template Reference

#include <NSOperator.hpp>

Inheritance diagram for Theseus::NSOperator< PhysicsT >:
Collaboration diagram for Theseus::NSOperator< PhysicsT >:

Public Types

using Physics = PhysicsT
 
using Base = Theseus::RHSOperator< Physics >
 
using OperatorCache = typename Base::OperatorCache
 
using DeviceCache = typename Base::DeviceCache
 
using Gas = typename Base::Gas
 
using InviscidFlux = typename Base::InviscidFlux
 
- Public Types inherited from Theseus::RHSOperator< PhysicsT >
using Physics = PhysicsT
 
using OperatorCache = DGSEMOperatorCacheT< Physics >
 
using DeviceCache = DGSEMDeviceCacheT< Physics >
 
using Gas = typename Physics::GasModel
 
using InviscidFlux = typename Physics::InviscidFlux
 

Public Member Functions

 NSOperator (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::vector< std::shared_ptr< mfem::ParGridFunction > > &grad_u_, std::shared_ptr< Prandtl::PerssonPeraireIndicator > indicator_, std::shared_ptr< const Gas > gasModel_, const std::string &gasModelName_, const std::string &numFluxName_, const mfem::real_t alpha_max=0.5, const mfem::real_t alpha_min=0.001)
 
mfem::real_t FlowMult (const mfem::Vector &u, mfem::Vector &dudt) const override
 
void GradOperator (const mfem::Vector &u, std::vector< mfem::Vector * > &grad_u) const
 
void GradOperator_Volume (const mfem::Vector &pu, std::vector< mfem::Vector * > &p_grad_u) const
 
void GradOperator_InteriorFaces (const mfem::Vector &pu, std::vector< mfem::Vector * > &p_grad_u) const
 
void GradOperator_BoundaryFaces (const mfem::Vector &pu, std::vector< mfem::Vector * > &p_grad_u) const
 
void ComputeEntropyState (const mfem::Vector &u, mfem::Vector &e) const
 
void ComputeGradPrimFromGradEntropy (const mfem::Vector &u, std::vector< mfem::Vector * > &gradEntropy) const
 
mfem::real_t MultCNS (const mfem::Vector &u, const std::vector< mfem::Vector * > &grad_prim, mfem::Vector &pdudt) const
 
mfem::real_t MultCNS_Volume (const mfem::Vector &pu, const std::vector< mfem::Vector * > &p_grad_prim, mfem::Vector &pdudt) const
 
mfem::real_t MultCNS_InteriorFaces (const mfem::Vector &pu, const std::vector< mfem::Vector * > &p_grad_prim, mfem::Vector &pdudt) const
 
mfem::real_t MultCNS_BoundaryFaces (const mfem::Vector &pu, const std::vector< mfem::Vector * > &p_grad_prim, mfem::Vector &pdudt) const
 
- Public Member Functions inherited from Theseus::RHSOperator< PhysicsT >
 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)
 
OperatorCacheGetOperatorCacheReference ()
 
virtual ~RHSOperator ()=default
 
void Finalize (mfem::real_t time=0) override
 
void Mult (const mfem::Vector &u, mfem::Vector &dudt) const override
 
void ComputeIntegralMeasures (const mfem::Vector &u, Theseus::IntegralMeasures &diag) const override
 
std::string GasModelName () const override
 
std::string NumFluxName () const override
 
std::string FlowModelName () const override
 
const GasGetGasModel () const
 
const GasModelInterfaceGetGasModelInterface () const override
 
void FetchRestrictions (const mfem::Vector &pu, mfem::Vector &uVol, mfem::Vector &uInt, mfem::Vector &uBnd) const
 
- Public Member Functions inherited from Theseus::RHSOperatorBase
 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)
 
virtual ~RHSOperatorBase ()=default
 
void SetBCDescriptorData (const mfem::Array< Theseus::BCDescriptor > &bc_descr, const mfem::Vector &bc_scalar_dat, const mfem::Vector &bc_vector_dat)
 
void AddBdrFaceMarker (mfem::Array< int > &bdr_marker_)
 
IntegralMeasures GetIntegralMeasuresBaseline () const
 
mfem::real_t GetMaxCharSpeed () const
 
mfem::real_t & GetTimeRef ()
 

Protected Attributes

OperatorCache operator_cache
 
DeviceCache device_cache
 
- Protected Attributes inherited from Theseus::RHSOperator< PhysicsT >
OperatorCache operator_cache
 
DeviceCache device_cache
 
const std::string gasModelName
 
const std::string numFluxName
 
const std::string flowModelName
 
std::shared_ptr< const Gasgas
 
std::shared_ptr< const GasModelInterfacegas_interface
 
- Protected Attributes inherited from Theseus::RHSOperatorBase
mfem::real_t max_char_speed
 
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< Prandtl::PerssonPeraireIndicatorindicator
 
const int num_equations
 
const int dim
 
const int order
 
const int num_elements
 
const int num_dofs_scalar
 
const int Ndofs
 
const mfem::real_t sharpness_fac = 9.21024
 
const mfem::real_t modalThreshold
 
const mfem::real_t alpha_min
 
const mfem::real_t alpha_max
 
std::vector< mfem::Array< int > > bdr_marker
 
mfem::Array< Theseus::BCDescriptorbc_descriptors
 
mfem::Vector bc_vector_data
 
mfem::Vector bc_scalar_data
 
mfem::real_t alpha_dof
 
Theseus::IntegralMeasures diag0
 

Member Typedef Documentation

◆ Base

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::Base = Theseus::RHSOperator<Physics>

◆ DeviceCache

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::DeviceCache = typename Base::DeviceCache

◆ Gas

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::Gas = typename Base::Gas

◆ InviscidFlux

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::InviscidFlux = typename Base::InviscidFlux

◆ OperatorCache

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::OperatorCache = typename Base::OperatorCache

◆ Physics

template<typename PhysicsT >
using Theseus::NSOperator< PhysicsT >::Physics = PhysicsT

Constructor & Destructor Documentation

◆ NSOperator()

template<typename PhysicsT >
Theseus::NSOperator< PhysicsT >::NSOperator ( 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::vector< std::shared_ptr< mfem::ParGridFunction > > &  grad_u_,
std::shared_ptr< Prandtl::PerssonPeraireIndicator indicator_,
std::shared_ptr< const Gas gasModel_,
const std::string &  gasModelName_,
const std::string &  numFluxName_,
const mfem::real_t  alpha_max = 0.5,
const mfem::real_t  alpha_min = 0.001 
)
inline

Member Function Documentation

◆ ComputeEntropyState()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::ComputeEntropyState ( const mfem::Vector &  u,
mfem::Vector &  e 
) const

◆ ComputeGradPrimFromGradEntropy()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::ComputeGradPrimFromGradEntropy ( const mfem::Vector &  u,
std::vector< mfem::Vector * > &  gradEntropy 
) const

◆ FlowMult()

template<typename PhysicsT >
mfem::real_t Theseus::NSOperator< PhysicsT >::FlowMult ( const mfem::Vector &  u,
mfem::Vector &  dudt 
) const
overridevirtual

◆ GradOperator()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::GradOperator ( const mfem::Vector &  u,
std::vector< mfem::Vector * > &  grad_u 
) const

◆ GradOperator_BoundaryFaces()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::GradOperator_BoundaryFaces ( const mfem::Vector &  pu,
std::vector< mfem::Vector * > &  p_grad_u 
) const

◆ GradOperator_InteriorFaces()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::GradOperator_InteriorFaces ( const mfem::Vector &  pu,
std::vector< mfem::Vector * > &  p_grad_u 
) const

◆ GradOperator_Volume()

template<typename PhysicsT >
void Theseus::NSOperator< PhysicsT >::GradOperator_Volume ( const mfem::Vector &  pu,
std::vector< mfem::Vector * > &  p_grad_u 
) const

◆ MultCNS()

template<typename PhysicsT >
mfem::real_t Theseus::NSOperator< PhysicsT >::MultCNS ( const mfem::Vector &  u,
const std::vector< mfem::Vector * > &  grad_prim,
mfem::Vector &  pdudt 
) const

◆ MultCNS_BoundaryFaces()

template<typename PhysicsT >
mfem::real_t Theseus::NSOperator< PhysicsT >::MultCNS_BoundaryFaces ( const mfem::Vector &  pu,
const std::vector< mfem::Vector * > &  p_grad_prim,
mfem::Vector &  pdudt 
) const

◆ MultCNS_InteriorFaces()

template<typename PhysicsT >
mfem::real_t Theseus::NSOperator< PhysicsT >::MultCNS_InteriorFaces ( const mfem::Vector &  pu,
const std::vector< mfem::Vector * > &  p_grad_prim,
mfem::Vector &  pdudt 
) const

◆ MultCNS_Volume()

template<typename PhysicsT >
mfem::real_t Theseus::NSOperator< PhysicsT >::MultCNS_Volume ( const mfem::Vector &  pu,
const std::vector< mfem::Vector * > &  p_grad_prim,
mfem::Vector &  pdudt 
) const

Member Data Documentation

◆ device_cache

template<typename PhysicsT >
DeviceCache Theseus::RHSOperator< PhysicsT >::device_cache
mutableprotected

◆ operator_cache

template<typename PhysicsT >
OperatorCache Theseus::RHSOperator< PhysicsT >::operator_cache
mutableprotected

The documentation for this class was generated from the following files: