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

Retain one evaluated star and its matching inverse for a linear solve. More...

#include <preconditioned_system.hpp>

Collaboration diagram for serif::model::backend::mfem::PreconditionedSystem< System >:
[legend]

Public Member Functions

 PreconditionedSystem (std::shared_ptr< const System > system, solver::preconditioner::backend::mfem::Inverse inverse)
 Establish physical ownership before constructing an adapter in the selected solver coordinates.
 
const std::shared_ptr< const System > & system () const noexcept
 Inspect the residual and Jacobian belonging to this inverse.
 
::mfem::Solver & preconditioner () const noexcept
 Supply MFEM with the matching physical or normalized inverse; unrelated rebinding is rejected.
 
const solver::preconditioner::backend::mfem::Solver & physical_preconditioner () const noexcept
 Apply or inspect the dimensional inverse before the coordinate transformation.
 
solver::preconditioner::ApplicationContract contract () const noexcept
 Tell the outer solver whether the selected inverse has a fixed linear application.
 

Private Member Functions

auto physical_jacobian () const
 Bind the physical inverse to the dimensional root even when the outer solve is normalized.
 
std::shared_ptr<::mfem::Solver > make_solver () const
 Reuse the existing normalization adapter while retaining both of its borrowed owners.
 

Static Private Member Functions

static std::shared_ptr< const System > checked_system (std::shared_ptr< const System > system)
 Report an invalid owner before any adapter borrows an operator from it.
 

Private Attributes

std::shared_ptr< const System > m_system
 
std::shared_ptr< solver::preconditioner::backend::mfem::Solver > m_physical_inverse
 
std::shared_ptr<::mfem::Solver > m_inverse
 

Detailed Description

template<typename System>
requires (std::same_as<System, PhysicalSystem> || std::same_as<System, NormalizedSystem>)
class serif::model::backend::mfem::PreconditionedSystem< System >

Retain one evaluated star and its matching inverse for a linear solve.

Note
Later evaluations cannot change these operators. MFEM adapters reuse scratch storage; applications of the same preparation must not run concurrently.

Constructor & Destructor Documentation

◆ PreconditionedSystem()

template<typename System>
serif::model::backend::mfem::PreconditionedSystem< System >::PreconditionedSystem ( std::shared_ptr< const System > system,
solver::preconditioner::backend::mfem::Inverse inverse )
inline

Establish physical ownership before constructing an adapter in the selected solver coordinates.

Member Function Documentation

◆ checked_system()

template<typename System>
static std::shared_ptr< const System > serif::model::backend::mfem::PreconditionedSystem< System >::checked_system ( std::shared_ptr< const System > system)
inlinestaticnodiscardprivate

Report an invalid owner before any adapter borrows an operator from it.

◆ contract()

template<typename System>
solver::preconditioner::ApplicationContract serif::model::backend::mfem::PreconditionedSystem< System >::contract ( ) const
inlinenodiscardnoexcept

Tell the outer solver whether the selected inverse has a fixed linear application.

◆ make_solver()

template<typename System>
std::shared_ptr<::mfem::Solver > serif::model::backend::mfem::PreconditionedSystem< System >::make_solver ( ) const
inlinenodiscardprivate

Reuse the existing normalization adapter while retaining both of its borrowed owners.

◆ physical_jacobian()

template<typename System>
auto serif::model::backend::mfem::PreconditionedSystem< System >::physical_jacobian ( ) const
inlinenodiscardprivate

Bind the physical inverse to the dimensional root even when the outer solve is normalized.

◆ physical_preconditioner()

template<typename System>
const solver::preconditioner::backend::mfem::Solver & serif::model::backend::mfem::PreconditionedSystem< System >::physical_preconditioner ( ) const
inlinenodiscardnoexcept

Apply or inspect the dimensional inverse before the coordinate transformation.

◆ preconditioner()

template<typename System>
::mfem::Solver & serif::model::backend::mfem::PreconditionedSystem< System >::preconditioner ( ) const
inlinenodiscardnoexcept

Supply MFEM with the matching physical or normalized inverse; unrelated rebinding is rejected.

◆ system()

template<typename System>
const std::shared_ptr< const System > & serif::model::backend::mfem::PreconditionedSystem< System >::system ( ) const
inlinenodiscardnoexcept

Inspect the residual and Jacobian belonging to this inverse.

Member Data Documentation

◆ m_inverse

template<typename System>
std::shared_ptr<::mfem::Solver> serif::model::backend::mfem::PreconditionedSystem< System >::m_inverse
private

◆ m_physical_inverse

template<typename System>
std::shared_ptr<solver::preconditioner::backend::mfem::Solver> serif::model::backend::mfem::PreconditionedSystem< System >::m_physical_inverse
private

◆ m_system

template<typename System>
std::shared_ptr<const System> serif::model::backend::mfem::PreconditionedSystem< System >::m_system
private

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