SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::discretization::backend::mfem::FieldValues< Term > Class Template Referencefinal

Read a field using the same representation and mappings as its equation operators. More...

#include <field_values.hpp>

Collaboration diagram for serif::discretization::backend::mfem::FieldValues< Term >:
[legend]

Public Types

using ValueOperand = forms::Operand<Term>
 
using Value = forms::OperandValue<ValueOperand>
 

Public Member Functions

 FieldValues (const DofMap &binding, const ::mfem::Vector &coefficients)
 Borrow supported physical coefficients, including their hanging-node constraints.
 
template<typename Binding>
requires std::same_as<typename Binding::Term, Term>
 FieldValues (const operators::backend::mfem::CoefficientView< Binding > &field)
 Retain the field identity carried by a typed coefficient view.
 
 FieldValues (const DofMap &, ::mfem::Vector &&)=delete
 
 FieldValues (const DofMap &, const ::mfem::Vector &&)=delete
 
Value value (int element, const ::mfem::IntegrationPoint &point)
 Evaluate at a canonical element point, including the fixed MFEM mesh map.
 
void values (int element, const ::mfem::IntegrationRule &points, ::mfem::Vector &result)
 Sample an element's points together, reusing tensor factors for repeated sampling rules.
 
Value value (int element, const ::mfem::IntegrationPoint &point, const mapping::MappingPointContext &context)
 Evaluate with the additional deformation or compactification map used by the solve.
 
std::array< double, 3 > gradient (int element, const ::mfem::IntegrationPoint &point)
 Return a scalar H1 field's gradient in the fixed computational mesh coordinates.
 
std::array< double, 3 > gradient (int element, const ::mfem::IntegrationPoint &point, const mapping::MappingPointContext &context)
 Return a scalar H1 field's physical gradient after the additional SERiF map.
 

Private Member Functions

template<typename Operation>
auto sample (int element, const ::mfem::IntegrationPoint &point)
 Reuse the equation evaluator so diagnostic samples cannot bypass reconstruction.
 

Private Attributes

const DofMap & m_binding
 
const ::mfem::Vector & m_coefficients
 
DofMap::Elements m_elements
 
::mfem::IntegrationRule m_rule
 
::mfem::Vector m_local
 
::mfem::Vector m_values
 
BasisEvaluation m_basis
 
TensorBasisCache m_cache
 
BasisWorkspace m_workspace
 

Detailed Description

template<blocks::SpatialTerm Term>
class serif::discretization::backend::mfem::FieldValues< Term >

Read a field using the same representation and mappings as its equation operators.

Note
This reader borrows its binding and coefficients. They must outlive it, and the mesh must not change during a sampling traversal. Each reader reuses scratch storage and is not shared between threads. Scalar VALUE fields need no extra map on a moving mesh; gradients require the overload accepting the additional SERiF mapping context.

Member Typedef Documentation

◆ Value

template<blocks::SpatialTerm Term>
using serif::discretization::backend::mfem::FieldValues< Term >::Value = forms::OperandValue<ValueOperand>

◆ ValueOperand

template<blocks::SpatialTerm Term>
using serif::discretization::backend::mfem::FieldValues< Term >::ValueOperand = forms::Operand<Term>

Constructor & Destructor Documentation

◆ FieldValues() [1/4]

template<blocks::SpatialTerm Term>
serif::discretization::backend::mfem::FieldValues< Term >::FieldValues ( const DofMap & binding,
const ::mfem::Vector & coefficients )
inline

Borrow supported physical coefficients, including their hanging-node constraints.

◆ FieldValues() [2/4]

template<blocks::SpatialTerm Term>
template<typename Binding>
requires std::same_as<typename Binding::Term, Term>
serif::discretization::backend::mfem::FieldValues< Term >::FieldValues ( const operators::backend::mfem::CoefficientView< Binding > & field)
inlineexplicit

Retain the field identity carried by a typed coefficient view.

◆ FieldValues() [3/4]

template<blocks::SpatialTerm Term>
serif::discretization::backend::mfem::FieldValues< Term >::FieldValues ( const DofMap & ,
::mfem::Vector &&  )
delete

◆ FieldValues() [4/4]

template<blocks::SpatialTerm Term>
serif::discretization::backend::mfem::FieldValues< Term >::FieldValues ( const DofMap & ,
const ::mfem::Vector &&  )
delete

Member Function Documentation

◆ gradient() [1/2]

template<blocks::SpatialTerm Term>
std::array< double, 3 > serif::discretization::backend::mfem::FieldValues< Term >::gradient ( int element,
const ::mfem::IntegrationPoint & point )
inlinenodiscard

Return a scalar H1 field's gradient in the fixed computational mesh coordinates.

◆ gradient() [2/2]

template<blocks::SpatialTerm Term>
std::array< double, 3 > serif::discretization::backend::mfem::FieldValues< Term >::gradient ( int element,
const ::mfem::IntegrationPoint & point,
const mapping::MappingPointContext & context )
inlinenodiscard

Return a scalar H1 field's physical gradient after the additional SERiF map.

◆ sample()

template<blocks::SpatialTerm Term>
template<typename Operation>
auto serif::discretization::backend::mfem::FieldValues< Term >::sample ( int element,
const ::mfem::IntegrationPoint & point )
inlinenodiscardprivate

Reuse the equation evaluator so diagnostic samples cannot bypass reconstruction.

◆ value() [1/2]

template<blocks::SpatialTerm Term>
Value serif::discretization::backend::mfem::FieldValues< Term >::value ( int element,
const ::mfem::IntegrationPoint & point )
inlinenodiscard

Evaluate at a canonical element point, including the fixed MFEM mesh map.

◆ value() [2/2]

template<blocks::SpatialTerm Term>
Value serif::discretization::backend::mfem::FieldValues< Term >::value ( int element,
const ::mfem::IntegrationPoint & point,
const mapping::MappingPointContext & context )
inlinenodiscard

Evaluate with the additional deformation or compactification map used by the solve.

◆ values()

template<blocks::SpatialTerm Term>
void serif::discretization::backend::mfem::FieldValues< Term >::values ( int element,
const ::mfem::IntegrationRule & points,
::mfem::Vector & result )
inline

Sample an element's points together, reusing tensor factors for repeated sampling rules.

Note
Vector components are consecutive within each point. As for value(), these samples include the fixed MFEM mesh map.

Member Data Documentation

◆ m_basis

template<blocks::SpatialTerm Term>
BasisEvaluation serif::discretization::backend::mfem::FieldValues< Term >::m_basis
private

◆ m_binding

template<blocks::SpatialTerm Term>
const DofMap& serif::discretization::backend::mfem::FieldValues< Term >::m_binding
private

◆ m_cache

template<blocks::SpatialTerm Term>
TensorBasisCache serif::discretization::backend::mfem::FieldValues< Term >::m_cache
private

◆ m_coefficients

template<blocks::SpatialTerm Term>
const ::mfem::Vector& serif::discretization::backend::mfem::FieldValues< Term >::m_coefficients
private

◆ m_elements

template<blocks::SpatialTerm Term>
DofMap::Elements serif::discretization::backend::mfem::FieldValues< Term >::m_elements
private

◆ m_local

template<blocks::SpatialTerm Term>
::mfem::Vector serif::discretization::backend::mfem::FieldValues< Term >::m_local
private

◆ m_rule

template<blocks::SpatialTerm Term>
::mfem::IntegrationRule serif::discretization::backend::mfem::FieldValues< Term >::m_rule
private

◆ m_values

template<blocks::SpatialTerm Term>
::mfem::Vector serif::discretization::backend::mfem::FieldValues< Term >::m_values
private

◆ m_workspace

template<blocks::SpatialTerm Term>
BasisWorkspace serif::discretization::backend::mfem::FieldValues< Term >::m_workspace
private

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