SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse > Class Template Referencefinal

Common algebra for a Jacobian L J S^-1 and an inverse S M^-1 L^-1. More...

#include <operators.hpp>

Inheritance diagram for serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >:
[legend]
Collaboration diagram for serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >:
[legend]

Public Member Functions

 ScaledOperator (const ::mfem::Operator &physical_operator, DiagonalNormalization normalization)
 Borrow a physical operator and own its validated coordinate transformation.
 
 ScaledOperator (::mfem::Operator &&, DiagonalNormalization)=delete
 A temporary operator cannot outlive the borrowed physical action.
 
 ScaledOperator (const ::mfem::Operator &&, DiagonalNormalization)=delete
 A temporary const operator cannot outlive the borrowed physical action.
 
void Mult (const ::mfem::Vector &input, ::mfem::Vector &output) const override
 Apply the exact two-sided coordinate transformation.
 
void MultTranspose (const ::mfem::Vector &input, ::mfem::Vector &output) const override
 Apply the transpose with the left and right factors in reversed order.
 
const ::mfem::Operator & physical_operator () const noexcept
 Expose the dimensional operator for compatible physical preconditioner binding.
 
const DiagonalNormalization & normalization () const noexcept
 Inspect the frozen coordinate transformation owned by this operator.
 

Private Member Functions

std::span< const double > input_factors () const noexcept
 Factors belonging to the input physical coordinate.
 
std::span< const double > output_factors () const noexcept
 Factors belonging to the output physical coordinate.
 

Private Attributes

const ::mfem::Operator *const m_physical_operator
 
const DiagonalNormalization m_normalization
 
mutable::mfem::Vector m_physical_input
 
mutable::mfem::Vector m_physical_output
 

Detailed Description

template<bool Inverse>
class serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >

Common algebra for a Jacobian L J S^-1 and an inverse S M^-1 L^-1.

Note
Factor ownership freezes the coordinate system even if a dependency cache is refreshed. Recreate the adapter explicitly when adopting refreshed normalization factors. Scratch vectors are reused; an instance must not be applied concurrently.

Constructor & Destructor Documentation

◆ ScaledOperator() [1/3]

template<bool Inverse>
serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::ScaledOperator ( const ::mfem::Operator & physical_operator,
DiagonalNormalization normalization )

Borrow a physical operator and own its validated coordinate transformation.

◆ ScaledOperator() [2/3]

template<bool Inverse>
serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::ScaledOperator ( ::mfem::Operator && ,
DiagonalNormalization  )
delete

A temporary operator cannot outlive the borrowed physical action.

◆ ScaledOperator() [3/3]

template<bool Inverse>
serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::ScaledOperator ( const ::mfem::Operator && ,
DiagonalNormalization  )
delete

A temporary const operator cannot outlive the borrowed physical action.

Member Function Documentation

◆ input_factors()

template<bool Inverse>
std::span< const double > serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::input_factors ( ) const
inlinenodiscardprivatenoexcept

Factors belonging to the input physical coordinate.

◆ Mult()

template<bool Inverse>
void serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::Mult ( const ::mfem::Vector & input,
::mfem::Vector & output ) const
override

Apply the exact two-sided coordinate transformation.

◆ MultTranspose()

template<bool Inverse>
void serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::MultTranspose ( const ::mfem::Vector & input,
::mfem::Vector & output ) const
override

Apply the transpose with the left and right factors in reversed order.

◆ normalization()

template<bool Inverse>
const DiagonalNormalization & serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::normalization ( ) const
inlinenodiscardnoexcept

Inspect the frozen coordinate transformation owned by this operator.

◆ output_factors()

template<bool Inverse>
std::span< const double > serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::output_factors ( ) const
inlinenodiscardprivatenoexcept

Factors belonging to the output physical coordinate.

◆ physical_operator()

template<bool Inverse>
const ::mfem::Operator & serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::physical_operator ( ) const
inlinenodiscardnoexcept

Expose the dimensional operator for compatible physical preconditioner binding.

Member Data Documentation

◆ m_normalization

template<bool Inverse>
const DiagonalNormalization serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::m_normalization
private

◆ m_physical_input

template<bool Inverse>
mutable::mfem::Vector serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::m_physical_input
private

◆ m_physical_operator

template<bool Inverse>
const ::mfem::Operator* const serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::m_physical_operator
private

◆ m_physical_output

template<bool Inverse>
mutable::mfem::Vector serif::solver::normalization::backend::mfem::detail::ScaledOperator< Inverse >::m_physical_output
private

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