serif::solver::preconditioner serif::solver::preconditioner::BlockPreconditioner serif::solver::preconditioner::BorderedPreconditioner serif::solver::preconditioner::ConstraintCoordinates serif::solver::preconditioner::CoupledPreconditioner serif::solver::preconditioner::Failure serif::solver::preconditioner::Solver serif::solver::preconditioner::backend serif::solver::preconditioner::checks serif::solver::preconditioner::computations serif::solver::preconditioner::detail serif::solver::preconditioner::keys serif::solver::preconditioner::strategies ApplicationContract serif::solver::preconditioner::ApplicationContract fixed_linear variable Whether repeated applications represent one fixed linear map or a variable inner solve. typename Row typename Field auto auto serif::solver::preconditioner::physical_block (operators::backend::mfem::LinearizedBlock block) physical_block serif::solver::preconditioner::physical_block operators::backend::mfem::LinearizedBlock block Name a single accepted physical coupling as an ordinary dependency source. typename Recipe auto auto serif::solver::preconditioner::make_preconditioner_computations (const Recipe &choice) make_preconditioner_computations serif::solver::preconditioner::make_preconditioner_computations const Recipe & choice Declare a recipe's numerical stages for composition into one model dependency graph. typename Recipe auto auto serif::solver::preconditioner::make_preconditioner_graph (const Recipe &choice) make_preconditioner_graph serif::solver::preconditioner::make_preconditioner_graph const Recipe & choice Construct the complete preconditioner graph in one place, without preparing any numerical data. Recipes choose physical branches; computation declarations name all edges. The dependency engine orders execution. typename Recipe discretization::blocks::SystemLayoutType Layout Layout utils::dependencies::IsComputation... Additional Additional auto auto serif::solver::preconditioner::make_preconditioner_computations (const Recipe &choice, const Layout &, Additional... additional) make_preconditioner_computations serif::solver::preconditioner::make_preconditioner_computations const Recipe & choice const Layout & Additional... additional Expand a recipe and its coordinate ordering for composition into an existing physical graph. typename Recipe discretization::blocks::SystemLayoutType Layout Layout utils::dependencies::IsComputation... Additional Additional auto auto serif::solver::preconditioner::make_preconditioner_graph (const Recipe &choice, const Layout &layout, Additional... additional) make_preconditioner_graph serif::solver::preconditioner::make_preconditioner_graph const Recipe & choice const Layout & layout Additional... additional Order the inverse in system coordinates, optionally including explicit upstream computations such as reference surface assembly. Supply keys::Layout in the preparation context. Additional computations must have unique result keys. PrimalPreconditionerLayout Layout Layout typename PotentialInverse strategies::inverse::FixedAMG auto auto serif::solver::preconditioner::make_primal_preconditioner (const Layout &, PotentialInverse potential_inverse=strategies::inverse::FixedAMG{.cycles=3}) make_primal_preconditioner serif::solver::preconditioner::make_primal_preconditioner const Layout & PotentialInverse potential_inverse strategies::inverse::FixedAMG{.cycles=3} Couple scalar density and potential responses, then correct every shape and global constraint together. Potential responds first and its force contribution then adjusts density. The existing dense border retains surface-to-field and field-to-surface responses, including the mean radius mode; shape has no separate mass inverse. Density uses its diagonal without regularization because its pressure-force Jacobian includes drift and need not satisfy the positive-diagonal contract of the elliptic AMG strategy used for potential. The dense border stores one field response per shape/global coordinate and a square border matrix. This default targets bounded surface catalogs; large nodal surfaces require an explicitly chosen scalable recipe. This is an approximate inverse, not a guarantee that the physical constraint Schur system is nonsingular. potential_inverse Inverse of the potential block: three fixed AMG cycles by default, or for example strategies::inverse::SparseDirect for an exact factorization of moderate-size blocks. typename Field typename Row Field typename Strategy auto auto serif::solver::preconditioner::make_preconditioner (Strategy inverse) make_preconditioner serif::solver::preconditioner::make_preconditioner Strategy inverse Describe an inverse without preparing matrices or binding runtime state. typename Constraints typename Fields auto auto serif::solver::preconditioner::with_constraints (Fields fields, strategies::inverse::DenseDirect inverse={}) with_constraints serif::solver::preconditioner::with_constraints Fields fields strategies::inverse::DenseDirect inverse {} DisjointSubsystems<Fields, Constraints> Attach constraints without a registry of built-in mass, rotation, or central-density providers. typename First typename Second typename Policy auto auto serif::solver::preconditioner::couple (First first, Second second, Policy coupling) couple serif::solver::preconditioner::couple First first Second second Policy coupling DisjointSubsystems<First, Second> Choose the physical subsystem ordering explicitly; the same algebra serves material/surface and material/gravity.