SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema > Class Template Referencefinal

Retain accepted data while applying a single field coupling with reusable contraction scratch. More...

#include <volume_field_block.hpp>

Inheritance diagram for serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >:
[legend]
Collaboration diagram for serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >:
[legend]

Classes

struct  Scratch
 One worker's element scratch. More...
 

Public Member Functions

 VolumeFieldOperator (std::shared_ptr< const VolumeData< Equation, Schema > > data)
 Borrowed discretization resources still follow the accepted volume result's validity contract.
 
void Mult (const ::mfem::Vector &input, ::mfem::Vector &output) const override
 Apply selected field derivatives without evaluating zero geometry variations.
 
void MultTranspose (const ::mfem::Vector &input, ::mfem::Vector &output) const override
 Apply the exact coefficient transpose of the selected physical field coupling (concurrent elements, ordered sums, as Mult).
 

Private Member Functions

void run_actions () const
 Run the collected element actions concurrently, each into its own result.
 

Private Attributes

std::shared_ptr< const VolumeData< Equation, Schema > > m_data
 
mutable::mfem::Vector m_input
 
mutable::mfem::Vector m_full
 
mutable::mfem::Vector m_dual
 
mutable::mfem::Vector m_full_transpose
 
std::vector< std::function< void(Scratch &, ::mfem::Vector &)> > m_actions
 
std::vector< int > m_elements
 
std::vector<::mfem::Vector > m_results
 
std::vector< Scratch > m_scratch
 

Detailed Description

template<typename Field, VolumeEquation Equation, typename Schema>
class serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >

Retain accepted data while applying a single field coupling with reusable contraction scratch.

Constructor & Destructor Documentation

◆ VolumeFieldOperator()

template<typename Field, VolumeEquation Equation, typename Schema>
serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::VolumeFieldOperator ( std::shared_ptr< const VolumeData< Equation, Schema > > data)
inlineexplicit

Borrowed discretization resources still follow the accepted volume result's validity contract.

Member Function Documentation

◆ Mult()

template<typename Field, VolumeEquation Equation, typename Schema>
void serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::Mult ( const ::mfem::Vector & input,
::mfem::Vector & output ) const
inlineoverride

Apply selected field derivatives without evaluating zero geometry variations.

Note
Element results are computed concurrently, each into its own vector, then added into the residual one by one in the original element order, so every sum is unchanged.

◆ MultTranspose()

template<typename Field, VolumeEquation Equation, typename Schema>
void serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::MultTranspose ( const ::mfem::Vector & input,
::mfem::Vector & output ) const
inlineoverride

Apply the exact coefficient transpose of the selected physical field coupling (concurrent elements, ordered sums, as Mult).

◆ run_actions()

template<typename Field, VolumeEquation Equation, typename Schema>
void serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::run_actions ( ) const
inlineprivate

Run the collected element actions concurrently, each into its own result.

Member Data Documentation

◆ m_actions

template<typename Field, VolumeEquation Equation, typename Schema>
std::vector<std::function<void(Scratch&, ::mfem::Vector&)> > serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_actions
mutableprivate

◆ m_data

template<typename Field, VolumeEquation Equation, typename Schema>
std::shared_ptr<const VolumeData<Equation, Schema> > serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_data
private

◆ m_dual

template<typename Field, VolumeEquation Equation, typename Schema>
mutable::mfem::Vector serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_dual
private

◆ m_elements

template<typename Field, VolumeEquation Equation, typename Schema>
std::vector<int> serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_elements
mutableprivate

◆ m_full

template<typename Field, VolumeEquation Equation, typename Schema>
mutable::mfem::Vector serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_full
private

◆ m_full_transpose

template<typename Field, VolumeEquation Equation, typename Schema>
mutable::mfem::Vector serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_full_transpose
private

◆ m_input

template<typename Field, VolumeEquation Equation, typename Schema>
mutable::mfem::Vector serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_input
private

◆ m_results

template<typename Field, VolumeEquation Equation, typename Schema>
std::vector<::mfem::Vector> serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_results
mutableprivate

◆ m_scratch

template<typename Field, VolumeEquation Equation, typename Schema>
std::vector<Scratch> serif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::m_scratch
mutableprivate

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