SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > > Class Template Referencefinal

Borrow an owning state's fields for one synchronous equation evaluation. More...

#include <state.hpp>

Collaboration diagram for serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >:
[legend]

Public Types

using Keys = utils::dependencies::CombinedKeyList<utils::dependencies::KeyList<Fields...>, typename Prescribed::Keys>
 

Public Member Functions

 StateCoefficients (const Discretization &discretization, const StellarState< Layout > &state, const Prescribed &prescribed)
 Create backend views without copying the state's physical coefficients.
 
auto context () const &
 Reuse ordinary dependency contexts while the temporary MFEM wrappers remain alive.
 
auto context () const &&=delete
 A coefficient context cannot borrow a temporary set of backend wrappers.
 

Static Private Member Functions

static ::mfem::Vector field_view (std::span< const double > values)
 Check MFEM's index range before constructing a read-only use of its mutable-pointer view.
 

Private Attributes

const Discretization & m_discretization
 
const Prescribed & m_prescribed
 
std::array<::mfem::Vector, sizeof...(Fields)> m_fields
 

Detailed Description

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
class serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >

Borrow an owning state's fields for one synchronous equation evaluation.

Note
MFEM requires mutable pointers to construct its vector views, but these wrappers are only exposed through const coefficient views. Keep this adapter alive until graph evaluation returns. Recreate it for each call so copies and moves of StellarState never leave persistent self-references.

Member Typedef Documentation

◆ Keys

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
using serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::Keys = utils::dependencies::CombinedKeyList<utils::dependencies::KeyList<Fields...>, typename Prescribed::Keys>

Constructor & Destructor Documentation

◆ StateCoefficients()

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::StateCoefficients ( const Discretization & discretization,
const StellarState< Layout > & state,
const Prescribed & prescribed )
inline

Create backend views without copying the state's physical coefficients.

Member Function Documentation

◆ context() [1/2]

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
auto serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::context ( ) const &
inlinenodiscard

Reuse ordinary dependency contexts while the temporary MFEM wrappers remain alive.

◆ context() [2/2]

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
auto serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::context ( ) const &&
delete

A coefficient context cannot borrow a temporary set of backend wrappers.

◆ field_view()

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
static ::mfem::Vector serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::field_view ( std::span< const double > values)
inlinestaticnodiscardprivate

Check MFEM's index range before constructing a read-only use of its mutable-pointer view.

Member Data Documentation

◆ m_discretization

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
const Discretization& serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::m_discretization
private

◆ m_fields

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
std::array<::mfem::Vector, sizeof...(Fields)> serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::m_fields
private

◆ m_prescribed

template<typename Discretization, typename Layout, typename Prescribed, typename... Fields>
const Prescribed& serif::model::backend::mfem::detail::StateCoefficients< Discretization, Layout, Prescribed, utils::dependencies::KeyList< Fields... > >::m_prescribed
private

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