DofGradientMixin< dim, ValueType, Derived > Struct Template Reference

Developer Documentation: MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived > Struct Template Reference
Developer Documentation
MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived > Struct Template Reference

#include <state_views_mixins.hpp>

Public Types

using Idx = ConservedVariableIndex< dim >
 

Public Member Functions

decltype(auto) grad_density () const
 
decltype(auto) grad_momentum (const unsigned int component) const
 
decltype(auto) grad_momentum () const
 
decltype(auto) grad_velocity (const unsigned int component, const ValueType &density, const ValueType &velocity_component) const
 
decltype(auto) grad_velocity () const
 
decltype(auto) grad_total_energy () const
 
decltype(auto) grad_specific_total_energy (const ValueType &density, const ValueType &specific_total_energy) const
 

Private Member Functions

decltype(auto) gradient_value () const
 
decltype(auto) value_view () const
 
const Derived & derived () const
 

Detailed Description

template<int dim, ArithmeticType ValueType, typename Derived>
struct MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >

CRTP mixin providing semantic access to gradients of conserved variables.

The derived type must satisfy HasIndexableGradient and provide a gradient_value() member function whose returning an indexable tensor-like container storing the gradients of the conserved variables in the layout defined by TensorStorageIndex<dim>, i.e.,

\[ \nabla U = \left[ \nabla \rho, \nabla (\rho u_0), \dots, \nabla (\rho u_{dim-1}), \nabla (\rho E) \right]. \]

The mixin provides:

  • Direct access to gradients of conserved quantities
  • Gradients of primitive quantities computed on the fly via the chain rule (velocity and specific total energy)

All accessors are thin inline wrappers around the underlying storage. No additional data members are introduced and no quantities are cached. Every derived quantity is computed on demand from the conserved gradients.

Template Parameters
GradientTypeType of a single value in the underlying storage container obtained when using [] twice on gradient_value() of the derived class.

Member Typedef Documentation

◆ Idx

template<int dim, ArithmeticType ValueType, typename Derived >
using MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::Idx = ConservedVariableIndex<dim>

Member Function Documentation

◆ derived()

template<int dim, ArithmeticType ValueType, typename Derived >
const Derived & MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::derived ( ) const
inlineprivate

◆ grad_density()

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_density ( ) const
inline

◆ grad_momentum() [1/2]

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_momentum ( ) const
inline

◆ grad_momentum() [2/2]

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_momentum ( const unsigned int  component) const
inline

◆ grad_specific_total_energy()

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_specific_total_energy ( const ValueType &  density,
const ValueType &  specific_total_energy 
) const
inline

◆ grad_total_energy()

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_total_energy ( ) const
inline

◆ grad_velocity() [1/2]

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_velocity ( ) const
inline

◆ grad_velocity() [2/2]

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::grad_velocity ( const unsigned int  component,
const ValueType &  density,
const ValueType &  velocity_component 
) const
inline

◆ gradient_value()

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::gradient_value ( ) const
inlineprivate

◆ value_view()

template<int dim, ArithmeticType ValueType, typename Derived >
decltype(auto) MeltPoolDG::CompressibleFlow::DofGradientMixin< dim, ValueType, Derived >::value_view ( ) const
inlineprivate

The documentation for this struct was generated from the following file: