SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::solver::preconditioner::detail Namespace Reference

Classes

struct  PrimalCoordinates
 Separate the primal fields from scalar constraints and optional shape coordinates. More...
 
struct  PrimalCoordinates< utils::dependencies::KeyList< Coordinates... >, Shape >
 

Typedefs

using PrimalFields = utils::dependencies::KeyList<discretization::blocks::density::mass, discretization::blocks::gravity::potential>
 
template<typename Layout>
using PrimalValues = PrimalCoordinates<typename std::remove_cvref_t<Layout>::Values, discretization::blocks::surface_deformation::coefficients>
 
template<typename Layout>
using PrimalRows = PrimalCoordinates<typename std::remove_cvref_t<Layout>::Residuals, discretization::blocks::surface_deformation::shape_equilibrium>
 

Functions

template<typename Row, typename Field, typename Strategy>
auto preconditioner_computations (const BlockPreconditioner< Row, Field, Strategy > &choice)
 Declare recursive recipe expansion before its composed overloads are defined.
 
template<typename First, typename Second, typename Policy>
auto preconditioner_computations (const CoupledPreconditioner< First, Second, Policy > &choice)
 Declare the composed recipe overload for recursive graph expansion.
 
template<typename Fields, typename Constraints>
auto preconditioner_computations (const BorderedPreconditioner< Fields, Constraints > &choice)
 Declare the composed recipe overload for recursive graph expansion.
 

Typedef Documentation

◆ PrimalFields

◆ PrimalRows

template<typename Layout>
using serif::solver::preconditioner::detail::PrimalRows = PrimalCoordinates<typename std::remove_cvref_t<Layout>::Residuals, discretization::blocks::surface_deformation::shape_equilibrium>

◆ PrimalValues

template<typename Layout>
using serif::solver::preconditioner::detail::PrimalValues = PrimalCoordinates<typename std::remove_cvref_t<Layout>::Values, discretization::blocks::surface_deformation::coefficients>

Function Documentation

◆ preconditioner_computations() [1/3]

template<typename Row, typename Field, typename Strategy>
auto serif::solver::preconditioner::detail::preconditioner_computations ( const BlockPreconditioner< Row, Field, Strategy > & choice)
nodiscard

Declare recursive recipe expansion before its composed overloads are defined.

Assemble exactly the physical representation required by the leaf inverse strategy.

◆ preconditioner_computations() [2/3]

template<typename Fields, typename Constraints>
auto serif::solver::preconditioner::detail::preconditioner_computations ( const BorderedPreconditioner< Fields, Constraints > & choice)
nodiscard

Declare the composed recipe overload for recursive graph expansion.

The constraint stage depends explicitly on its field inverse, so changing that inverse refreshes Schur setup.

◆ preconditioner_computations() [3/3]

template<typename First, typename Second, typename Policy>
auto serif::solver::preconditioner::detail::preconditioner_computations ( const CoupledPreconditioner< First, Second, Policy > & choice)
nodiscard

Declare the composed recipe overload for recursive graph expansion.

The first and second physical branches meet only in their declared coupling computation.