Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
133 lines
7.2 KiB
Groff
133 lines
7.2 KiB
Groff
.TH "serif::solver::preconditioner::computations" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
serif::solver::preconditioner::computations
|
|
.SH SYNOPSIS
|
|
.br
|
|
.PP
|
|
.SS "Namespaces"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "namespace \fBdetail\fP"
|
|
.br
|
|
.in -1c
|
|
.SS "Functions"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "template<typename First, typename Second, typename Policy> auto \fBcoupling\fP (const \fBCoupledPreconditioner\fP< First, Second, Policy > &)"
|
|
.br
|
|
.RI "Couple child results through the authoritative physical cross blocks\&. "
|
|
.ti -1c
|
|
.RI "template<typename Fields, typename Constraints> auto \fBborder\fP (const \fBBorderedPreconditioner\fP< Fields, Constraints > &choice)"
|
|
.br
|
|
.RI "Rebuild the constraint Schur system whenever either its physical couplings or its child inverse change\&. "
|
|
.ti -1c
|
|
.RI "template<typename Strategy> std::expected< \fBbackend::mfem::Inverse\fP, \fBFailure\fP > \fBinvert_matrix\fP (std::shared_ptr< const ::mfem::SparseMatrix > matrix, const Strategy &strategy)"
|
|
.br
|
|
.RI "Invert an assembled selected matrix with the chosen dense, sparse direct or AMG backend\&. "
|
|
.ti -1c
|
|
.RI "template<typename Row, typename Field, typename Strategy> auto \fBinverse\fP (const \fBBlockPreconditioner\fP< Row, Field, Strategy > &choice)"
|
|
.br
|
|
.RI "Declare only the numerical inputs required by this chosen inverse\&. "
|
|
.ti -1c
|
|
.RI "template<\fBdiscretization::blocks::RepresentedValueKind\fP Kind, typename Layout, typename\&.\&.\&. Coordinates> std::size_t \fBselected_size\fP (const Layout &layout, \fButils::dependencies::KeyList\fP< Coordinates\&.\&.\&. >)"
|
|
.br
|
|
.RI "Count the declared coordinates of a selected physical block\&. "
|
|
.ti -1c
|
|
.RI "template<typename Key, typename Layout> std::expected< void, \fBFailure\fP > \fBvalidate_physical_layout\fP (const Layout &layout, const \fBoperators::backend::mfem::LinearizedBlock\fP &block)"
|
|
.br
|
|
.RI "Detect incorrect per-field sizes even when the total packed dimensions happen to agree\&. "
|
|
.ti -1c
|
|
.RI "template<\fBdiscretization::blocks::RepresentedValueKind\fP Kind, typename Layout, typename\&.\&.\&. Coordinates> std::expected< std::vector< int >, \fBFailure\fP > \fBordered_indices\fP (const Layout &layout, \fButils::dependencies::KeyList\fP< Coordinates\&.\&.\&. >)"
|
|
.br
|
|
.RI "Map each root coefficient to the recipe's explicit subsystem ordering\&. "
|
|
.ti -1c
|
|
.RI "template<typename Recipe, typename Layout, typename\&.\&.\&. PhysicalKeys> auto \fBordering\fP (\fButils::dependencies::KeyList\fP< PhysicalKeys\&.\&.\&. >)"
|
|
.br
|
|
.RI "Bind one inverse to independently ordered state and residual vectors through the common layout\&. "
|
|
.ti -1c
|
|
.RI "template<typename Rows, typename Values> auto \fBphysical_diagonal\fP ()"
|
|
.br
|
|
.RI "Make physical diagonal extraction visible as its own graph operation\&. "
|
|
.ti -1c
|
|
.RI "template<typename Rows, typename Values> auto \fBphysical_matrix\fP ()"
|
|
.br
|
|
.RI "Assemble a selected sparse block only for strategies that actually need it\&. "
|
|
.in -1c
|
|
.SS "Variables"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "template<typename Strategy> constexpr bool \fBneeds_diagonal\fP = std::same_as<Strategy, \fBstrategies::inverse::Diagonal\fP>"
|
|
.br
|
|
.RI "Identify the inverse strategies whose setup consumes a physical diagonal\&. "
|
|
.ti -1c
|
|
.RI "template<typename Strategy> constexpr bool \fBneeds_matrix\fP"
|
|
.br
|
|
.RI "Identify strategies requiring an explicitly assembled selected matrix\&. "
|
|
.in -1c
|
|
.SH "Function Documentation"
|
|
.PP
|
|
.SS "template<typename Fields, typename Constraints> auto serif::solver::preconditioner::computations::border (const \fBBorderedPreconditioner\fP< Fields, Constraints > & choice)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Rebuild the constraint Schur system whenever either its physical couplings or its child inverse change\&.
|
|
.SS "template<typename First, typename Second, typename Policy> auto serif::solver::preconditioner::computations::coupling (const \fBCoupledPreconditioner\fP< First, Second, Policy > & )\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Couple child results through the authoritative physical cross blocks\&.
|
|
.SS "template<typename Row, typename Field, typename Strategy> auto serif::solver::preconditioner::computations::inverse (const \fBBlockPreconditioner\fP< Row, Field, Strategy > & choice)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Declare only the numerical inputs required by this chosen inverse\&.
|
|
.SS "template<typename Strategy> std::expected< \fBbackend::mfem::Inverse\fP, \fBFailure\fP > serif::solver::preconditioner::computations::invert_matrix (std::shared_ptr< const ::mfem::SparseMatrix > matrix, const Strategy & strategy)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Invert an assembled selected matrix with the chosen dense, sparse direct or AMG backend\&.
|
|
.SS "template<\fBdiscretization::blocks::RepresentedValueKind\fP Kind, typename Layout, typename\&.\&.\&. Coordinates> std::expected< std::vector< int >, \fBFailure\fP > serif::solver::preconditioner::computations::ordered_indices (const Layout & layout, \fButils::dependencies::KeyList\fP< Coordinates\&.\&.\&. > )\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Map each root coefficient to the recipe's explicit subsystem ordering\&.
|
|
.SS "template<typename Recipe, typename Layout, typename\&.\&.\&. PhysicalKeys> auto serif::solver::preconditioner::computations::ordering (\fButils::dependencies::KeyList\fP< PhysicalKeys\&.\&.\&. > )\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Bind one inverse to independently ordered state and residual vectors through the common layout\&.
|
|
.SS "template<typename Rows, typename Values> auto serif::solver::preconditioner::computations::physical_diagonal ()\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Make physical diagonal extraction visible as its own graph operation\&.
|
|
.SS "template<typename Rows, typename Values> auto serif::solver::preconditioner::computations::physical_matrix ()\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Assemble a selected sparse block only for strategies that actually need it\&.
|
|
.SS "template<\fBdiscretization::blocks::RepresentedValueKind\fP Kind, typename Layout, typename\&.\&.\&. Coordinates> std::size_t serif::solver::preconditioner::computations::selected_size (const Layout & layout, \fButils::dependencies::KeyList\fP< Coordinates\&.\&.\&. > )\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Count the declared coordinates of a selected physical block\&.
|
|
.SS "template<typename Key, typename Layout> std::expected< void, \fBFailure\fP > serif::solver::preconditioner::computations::validate_physical_layout (const Layout & layout, const \fBoperators::backend::mfem::LinearizedBlock\fP & block)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Detect incorrect per-field sizes even when the total packed dimensions happen to agree\&.
|
|
.SH "Variable Documentation"
|
|
.PP
|
|
.SS "template<typename Strategy> bool serif::solver::preconditioner::computations::needs_diagonal = std::same_as<Strategy, \fBstrategies::inverse::Diagonal\fP>\fR [inline]\fP, \fR [constexpr]\fP"
|
|
|
|
.PP
|
|
Identify the inverse strategies whose setup consumes a physical diagonal\&.
|
|
.SS "template<typename Strategy> bool serif::solver::preconditioner::computations::needs_matrix\fR [inline]\fP, \fR [constexpr]\fP"
|
|
\fBInitial value:\fP
|
|
.nf
|
|
= std::same_as<Strategy, strategies::inverse::DenseDirect> || std::same_as<Strategy, strategies::inverse::FixedAMG> ||
|
|
std::same_as<Strategy, strategies::inverse::SparseDirect>
|
|
.PP
|
|
.fi
|
|
|
|
.PP
|
|
Identify strategies requiring an explicitly assembled selected matrix\&.
|
|
.SH "Author"
|
|
.PP
|
|
Generated automatically by Doxygen for SERiF from the source code\&.
|