|
| template<typename Row, typename Field> |
| auto | physical_block (operators::backend::mfem::LinearizedBlock block) |
| | Name a single accepted physical coupling as an ordinary dependency source.
|
| |
| template<typename Recipe> |
| auto | make_preconditioner_computations (const Recipe &choice) |
| | Declare a recipe's numerical stages for composition into one model dependency graph.
|
| |
| template<typename Recipe> |
| auto | make_preconditioner_graph (const Recipe &choice) |
| | Construct the complete preconditioner graph in one place, without preparing any numerical data.
|
| |
| template<typename Recipe, discretization::blocks::SystemLayoutType Layout, utils::dependencies::IsComputation... Additional> |
| auto | make_preconditioner_computations (const Recipe &choice, const Layout &, Additional... additional) |
| | Expand a recipe and its coordinate ordering for composition into an existing physical graph.
|
| |
| template<typename Recipe, discretization::blocks::SystemLayoutType Layout, utils::dependencies::IsComputation... Additional> |
| auto | 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.
|
| |
| template<PrimalPreconditionerLayout Layout, typename PotentialInverse = strategies::inverse::FixedAMG> |
| auto | 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.
|
| |
| template<typename Field, typename Row = Field, typename Strategy> |
| auto | make_preconditioner (Strategy inverse) |
| | Describe an inverse without preparing matrices or binding runtime state.
|
| |
template<typename Constraints, typename Fields>
requires DisjointSubsystems<Fields, Constraints> |
| auto | with_constraints (Fields fields, strategies::inverse::DenseDirect inverse={}) |
| | Attach constraints without a registry of built-in mass, rotation, or central-density providers.
|
| |
template<typename First, typename Second, typename Policy>
requires DisjointSubsystems<First, Second> |
| auto | couple (First first, Second second, Policy coupling) |
| | Choose the physical subsystem ordering explicitly; the same algebra serves material/surface and material/gravity.
|
| |
template<PrimalPreconditionerLayout Layout, typename PotentialInverse = strategies::inverse::FixedAMG>
| auto serif::solver::preconditioner::make_primal_preconditioner |
( |
const Layout & | , |
|
|
PotentialInverse | potential_inverse = strategies::inverse::FixedAMG{.cycles = 3} ) |
|
nodiscard |
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.
- Note
- 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.
- Parameters
-
| 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. |