Theseus
Compressible flow solver
Loading...
Searching...
No Matches
Theseus Namespace Reference

Namespaces

namespace  BC
 
namespace  ChandrashekarFlux
 
namespace  DGSEMIntegrator
 
namespace  Flow
 
namespace  HLLFlux
 
namespace  Kernels
 
namespace  LaxFriedrichsFlux
 
namespace  LTETable
 
namespace  NavierStokesFlux
 

Classes

struct  AxisymmetricGeometry
 Coordinate and cached-radius contract for swirl-free (z,r) geometry. More...
 
struct  AxisymmetryConfig
 Foundational state and coordinate contract for swirl-free axisymmetry. More...
 
struct  BCDescriptor
 
struct  CheckpointCompatibility
 
class  CheckpointConfig
 
struct  DGSEMDeviceCacheT
 
struct  DGSEMOperatorCacheT
 
struct  DofStateView
 
class  EulerOperator
 
struct  FieldStateView
 
struct  GasModel
 
class  GasModelInterface
 
class  GasModelInterfaceT
 
struct  IdealSingleGasEOS
 
struct  IntegralMeasures
 
struct  LTEGasEOS
 
struct  LTEGasModel
 
struct  LTETransport
 
class  NSOperator
 
struct  PhysicsConstants
 
struct  PhysicsTraits
 
struct  PointPrimitiveView
 
struct  PointPrimitiveViewRW
 
struct  PointStateView
 
struct  PointStateViewRW
 
class  RHSOperator
 
class  RHSOperatorBase
 
class  ScopedTimer
 
class  Simulation
 
struct  StateLayout
 
struct  Transport
 
class  VisualizationConfig
 
struct  VisualizationFieldSpec
 

Typedefs

using IdealGasModel = GasModel< IdealSingleGasEOS, Transport >
 
using LTEGas = LTEGasModel< LTEGasEOS, LTETransport >
 

Enumerations

enum class  BCType : int {
  Invalid = -1 , SlipWall = 0 , SupersonicInflow = 1 , SupersonicOutflow = 2 ,
  PrescribedState = 3 , Symmetry = 4 , Axis = 5 , NoSlipAdiab = 6 ,
  NoSlipIso = 7 , NumBCTypes = 8
}
 
enum class  BCDataKind : int {
  None = 0 , ScalarConstant = 1 , VectorConstant = 2 , VectorAndScalarConstant = 3 ,
  NumBCDataKinds = 4
}
 
enum class  VisualizationField { density , velocity , pressure , blending_coefficient }
 
enum class  VisualizationMeshMode { vtk_high_order , gll_subcells }
 

Functions

template<typename GasT >
MFEM_HOST_DEVICE bool AddAxisymmetricEulerSourceAwayFromAxis (const GasT &gas, const mfem::real_t *state, mfem::real_t radius, mfem::real_t *state_rate)
 
template<typename GasT >
MFEM_HOST_DEVICE void AddAxisymmetricEulerSourceAtAxis (const GasT &gas, const mfem::real_t *state, mfem::real_t radial_momentum_derivative, mfem::real_t *state_rate)
 
template<typename GasT >
MFEM_HOST_DEVICE bool AddAxisymmetricViscousSourceAwayFromAxis (const GasT &gas, const mfem::real_t *state, const mfem::real_t *dprim_x, const mfem::real_t *dprim_y, const mfem::real_t *dprim_z, mfem::real_t radius, mfem::real_t *state_rate)
 
template<typename ContextT >
MFEM_HOST_DEVICE mfem::real_t RadialViscousFluxDerivative (const ContextT &ctx, const mfem::real_t *element_state, const mfem::real_t *element_gradprim_x, const mfem::real_t *element_gradprim_y, const mfem::real_t *element_gradprim_z, const mfem::real_t *element_radius, const mfem::real_t *element_jacobian, const mfem::real_t *element_metric, int point, int equation)
 
template<typename ContextT >
MFEM_HOST_DEVICE void AddAxisymmetricViscousSourceAtAxis (const ContextT &ctx, const mfem::real_t *element_state, const mfem::real_t *element_gradprim_x, const mfem::real_t *element_gradprim_y, const mfem::real_t *element_gradprim_z, const mfem::real_t *element_radius, const mfem::real_t *element_jacobian, const mfem::real_t *element_metric, int point, mfem::real_t *state_rate)
 
template<typename ContextT >
MFEM_HOST_DEVICE mfem::real_t RadialMomentumDerivative (const ContextT &ctx, const mfem::real_t *element_state, const mfem::real_t *element_jacobian, const mfem::real_t *element_metric, int point)
 
template<typename ContextT >
MFEM_HOST_DEVICE void AddAxisymmetricEulerElementSource (const ContextT &ctx, const mfem::real_t *element_state, const mfem::real_t *element_radius, const mfem::real_t *element_jacobian, const mfem::real_t *element_metric, mfem::real_t *element_rate)
 
template<typename GasT >
MFEM_HOST_DEVICE bool ProjectAxisPrimitiveGradientDirection (const GasT &gas, mfem::real_t radius, int derivative_direction, mfem::real_t *dprim)
 
int AppendBCVectorPayload (mfem::Vector &dst, const mfem::Vector &src)
 
template<typename CacheT >
void GetOperatorCache (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void GetDiscretizationInfo (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void SetupRestrictions (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void SetupGeometricTerms (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void SetupVolumeMarkers (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void BuildBoundaryFacePermutationMap (mfem::ParMesh *pmesh, CacheT *cache)
 
template<typename CacheT >
void BuildBoundaryFaceToMarkerMap (mfem::ParMesh *pmesh, const std::vector< mfem::Array< int > > &bdr_marker_vector, CacheT *cache)
 
void BuildBoundaryFaceToBEMap (mfem::ParMesh *pmesh, mfem::Array< int > &face_to_be)
 
template<typename CacheT >
void AssembleBoundaryFaceGeometryTerms (mfem::FiniteElementSpace *fes, const std::vector< mfem::Array< int > > &bdr_marker_vector, CacheT *cache)
 
template<typename CacheT >
void AssembleElementVolumeGeometricTerms (mfem::ElementTransformation &Tr, CacheT *cache)
 
template<typename CacheT >
void AssembleInteriorFaceGeometryTerms (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void ComputeSubcellMetrics (mfem::FiniteElementSpace *fes, CacheT *cache)
 
template<typename CacheT >
void CacheSubcellMetricData (const mfem::DenseTensor &SubcellMetricXi, const mfem::DenseTensor &SubcellMetricEta, const mfem::DenseTensor &SubcellMetricZeta, CacheT *cache)
 
template<typename CacheT , typename DeviceCacheT >
void GetDeviceCache (CacheT &cache, DeviceCacheT &device_cache)
 
template<typename CacheT >
bool AxisBoundaryGeometryIsValid (const CacheT &cache)
 
template<typename CacheT >
void ValidateAxisBoundaryGeometry (const CacheT &cache)
 
template<typename CacheT >
void BuildPerssonDeviceCache (CacheT &c, Prandtl::ModalBasis &modalBasis)
 
template<typename CacheT >
void OutputCacheContents (const CacheT &cache)
 
int CBE (const mfem::Vector &v)
 
int offset_mass (const Theseus::StateLayout &L)
 
int offset_momentum (const Theseus::StateLayout &L)
 
int offset_energy (const Theseus::StateLayout &L)
 
int offset_scalars (const Theseus::StateLayout &L)
 
bool StepLimitReached (int cycle, int maximum_cycle)
 
std::unique_ptr< Theseus::RHSOperatorBaseMakeRHSOperator (const nlohmann::json &runtime, 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, mfem::real_t alpha_max)
 
template<typename Physics , typename GasModelT >
std::unique_ptr< Theseus::RHSOperatorBaseMakeTypedRHSOperator (bool inviscid, const nlohmann::json &runtime, 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, mfem::real_t alpha_max, std::shared_ptr< const GasModelT > gas_, const std::string &gasModelName, const std::string &numFluxName)
 

Variables

constexpr const int MAXEQ = 5
 
constexpr const int MAXDIM = 3
 
constexpr bool debug_simulation = false
 

Typedef Documentation

◆ IdealGasModel

◆ LTEGas

Enumeration Type Documentation

◆ BCDataKind

enum class Theseus::BCDataKind : int
strong
Enumerator
None 
ScalarConstant 
VectorConstant 
VectorAndScalarConstant 
NumBCDataKinds 

◆ BCType

enum class Theseus::BCType : int
strong
Enumerator
Invalid 
SlipWall 
SupersonicInflow 
SupersonicOutflow 
PrescribedState 
Symmetry 
Axis 
NoSlipAdiab 
NoSlipIso 
NumBCTypes 

◆ VisualizationField

enum class Theseus::VisualizationField
strong
Enumerator
density 
velocity 
pressure 
blending_coefficient 

◆ VisualizationMeshMode

enum class Theseus::VisualizationMeshMode
strong
Enumerator
vtk_high_order 
gll_subcells 

Function Documentation

◆ AddAxisymmetricEulerElementSource()

template<typename ContextT >
MFEM_HOST_DEVICE void Theseus::AddAxisymmetricEulerElementSource ( const ContextT &  ctx,
const mfem::real_t *  element_state,
const mfem::real_t *  element_radius,
const mfem::real_t *  element_jacobian,
const mfem::real_t *  element_metric,
mfem::real_t *  element_rate 
)
inline

◆ AddAxisymmetricEulerSourceAtAxis()

template<typename GasT >
MFEM_HOST_DEVICE void Theseus::AddAxisymmetricEulerSourceAtAxis ( const GasT &  gas,
const mfem::real_t *  state,
mfem::real_t  radial_momentum_derivative,
mfem::real_t *  state_rate 
)
inline

◆ AddAxisymmetricEulerSourceAwayFromAxis()

template<typename GasT >
MFEM_HOST_DEVICE bool Theseus::AddAxisymmetricEulerSourceAwayFromAxis ( const GasT &  gas,
const mfem::real_t *  state,
mfem::real_t  radius,
mfem::real_t *  state_rate 
)
inline

Add the swirl-free Euler geometric source at points strictly off axis. Axis points require parity-based analytic limits and are handled separately.

◆ AddAxisymmetricViscousSourceAtAxis()

template<typename ContextT >
MFEM_HOST_DEVICE void Theseus::AddAxisymmetricViscousSourceAtAxis ( const ContextT &  ctx,
const mfem::real_t *  element_state,
const mfem::real_t *  element_gradprim_x,
const mfem::real_t *  element_gradprim_y,
const mfem::real_t *  element_gradprim_z,
const mfem::real_t *  element_radius,
const mfem::real_t *  element_jacobian,
const mfem::real_t *  element_metric,
int  point,
mfem::real_t *  state_rate 
)
inline

◆ AddAxisymmetricViscousSourceAwayFromAxis()

template<typename GasT >
MFEM_HOST_DEVICE bool Theseus::AddAxisymmetricViscousSourceAwayFromAxis ( const GasT &  gas,
const mfem::real_t *  state,
const mfem::real_t *  dprim_x,
const mfem::real_t *  dprim_y,
const mfem::real_t *  dprim_z,
mfem::real_t  radius,
mfem::real_t *  state_rate 
)
inline

Add the non-divergence viscous terms in the swirl-free cylindrical equations at points strictly off axis.

◆ AppendBCVectorPayload()

int Theseus::AppendBCVectorPayload ( mfem::Vector &  dst,
const mfem::Vector &  src 
)
inline

◆ AssembleBoundaryFaceGeometryTerms()

template<typename CacheT >
void Theseus::AssembleBoundaryFaceGeometryTerms ( mfem::FiniteElementSpace *  fes,
const std::vector< mfem::Array< int > > &  bdr_marker_vector,
CacheT *  cache 
)

◆ AssembleElementVolumeGeometricTerms()

template<typename CacheT >
void Theseus::AssembleElementVolumeGeometricTerms ( mfem::ElementTransformation &  Tr,
CacheT *  cache 
)

◆ AssembleInteriorFaceGeometryTerms()

template<typename CacheT >
void Theseus::AssembleInteriorFaceGeometryTerms ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ AxisBoundaryGeometryIsValid()

template<typename CacheT >
bool Theseus::AxisBoundaryGeometryIsValid ( const CacheT &  cache)

◆ BuildBoundaryFacePermutationMap()

template<typename CacheT >
void Theseus::BuildBoundaryFacePermutationMap ( mfem::ParMesh *  pmesh,
CacheT *  cache 
)

◆ BuildBoundaryFaceToBEMap()

void Theseus::BuildBoundaryFaceToBEMap ( mfem::ParMesh *  pmesh,
mfem::Array< int > &  face_to_be 
)
inline

◆ BuildBoundaryFaceToMarkerMap()

template<typename CacheT >
void Theseus::BuildBoundaryFaceToMarkerMap ( mfem::ParMesh *  pmesh,
const std::vector< mfem::Array< int > > &  bdr_marker_vector,
CacheT *  cache 
)

◆ BuildPerssonDeviceCache()

template<typename CacheT >
void Theseus::BuildPerssonDeviceCache ( CacheT &  c,
Prandtl::ModalBasis modalBasis 
)

◆ CacheSubcellMetricData()

template<typename CacheT >
void Theseus::CacheSubcellMetricData ( const mfem::DenseTensor &  SubcellMetricXi,
const mfem::DenseTensor &  SubcellMetricEta,
const mfem::DenseTensor &  SubcellMetricZeta,
CacheT *  cache 
)

◆ CBE()

int Theseus::CBE ( const mfem::Vector &  v)

◆ ComputeSubcellMetrics()

template<typename CacheT >
void Theseus::ComputeSubcellMetrics ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ GetDeviceCache()

template<typename CacheT , typename DeviceCacheT >
void Theseus::GetDeviceCache ( CacheT &  cache,
DeviceCacheT &  device_cache 
)

◆ GetDiscretizationInfo()

template<typename CacheT >
void Theseus::GetDiscretizationInfo ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ GetOperatorCache()

template<typename CacheT >
void Theseus::GetOperatorCache ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ MakeRHSOperator()

std::unique_ptr< Theseus::RHSOperatorBase > Theseus::MakeRHSOperator ( const nlohmann::json &  runtime,
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,
mfem::real_t  alpha_max 
)

◆ MakeTypedRHSOperator()

template<typename Physics , typename GasModelT >
std::unique_ptr< Theseus::RHSOperatorBase > Theseus::MakeTypedRHSOperator ( bool  inviscid,
const nlohmann::json &  runtime,
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,
mfem::real_t  alpha_max,
std::shared_ptr< const GasModelT >  gas_,
const std::string &  gasModelName,
const std::string &  numFluxName 
)

◆ offset_energy()

int Theseus::offset_energy ( const Theseus::StateLayout L)
inline

◆ offset_mass()

int Theseus::offset_mass ( const Theseus::StateLayout L)
inline

◆ offset_momentum()

int Theseus::offset_momentum ( const Theseus::StateLayout L)
inline

◆ offset_scalars()

int Theseus::offset_scalars ( const Theseus::StateLayout L)
inline

◆ OutputCacheContents()

template<typename CacheT >
void Theseus::OutputCacheContents ( const CacheT &  cache)

◆ ProjectAxisPrimitiveGradientDirection()

template<typename GasT >
MFEM_HOST_DEVICE bool Theseus::ProjectAxisPrimitiveGradientDirection ( const GasT &  gas,
mfem::real_t  radius,
int  derivative_direction,
mfem::real_t *  dprim 
)
inline

Enforce the even/odd primitive-gradient parity required at r=0. Primitive-gradient slots contain (rho, velocity components, p, scalars).

◆ RadialMomentumDerivative()

template<typename ContextT >
MFEM_HOST_DEVICE mfem::real_t Theseus::RadialMomentumDerivative ( const ContextT &  ctx,
const mfem::real_t *  element_state,
const mfem::real_t *  element_jacobian,
const mfem::real_t *  element_metric,
int  point 
)
inline

◆ RadialViscousFluxDerivative()

template<typename ContextT >
MFEM_HOST_DEVICE mfem::real_t Theseus::RadialViscousFluxDerivative ( const ContextT &  ctx,
const mfem::real_t *  element_state,
const mfem::real_t *  element_gradprim_x,
const mfem::real_t *  element_gradprim_y,
const mfem::real_t *  element_gradprim_z,
const mfem::real_t *  element_radius,
const mfem::real_t *  element_jacobian,
const mfem::real_t *  element_metric,
int  point,
int  equation 
)
inline

◆ SetupGeometricTerms()

template<typename CacheT >
void Theseus::SetupGeometricTerms ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ SetupRestrictions()

template<typename CacheT >
void Theseus::SetupRestrictions ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ SetupVolumeMarkers()

template<typename CacheT >
void Theseus::SetupVolumeMarkers ( mfem::FiniteElementSpace *  fes,
CacheT *  cache 
)

◆ StepLimitReached()

bool Theseus::StepLimitReached ( int  cycle,
int  maximum_cycle 
)
inline

◆ ValidateAxisBoundaryGeometry()

template<typename CacheT >
void Theseus::ValidateAxisBoundaryGeometry ( const CacheT &  cache)

Variable Documentation

◆ debug_simulation

constexpr bool Theseus::debug_simulation = false
constexpr

◆ MAXDIM

constexpr const int Theseus::MAXDIM = 3
constexpr

◆ MAXEQ

constexpr const int Theseus::MAXEQ = 5
constexpr