fem.lst_preconditioner#
Functions#
|
LST (Loli, Sangalli, Tani) preconditioners [1] are mass matrix preconditioners of the form pc = D_inv_sqrt @ D_log_sqrt @ M_log_kron_solver @ D_log_sqrt @ D_inv_sqrt, where |
Details#
- construct_LST_preconditioner(M, domain_h, fem_space, hom_bc=False, kind=None)[source]#
LST (Loli, Sangalli, Tani) preconditioners [1] are mass matrix preconditioners of the form pc = D_inv_sqrt @ D_log_sqrt @ M_log_kron_solver @ D_log_sqrt @ D_inv_sqrt, where
D_inv_sqrt is the diagonal matrix of the square roots of the inverse diagonal entries of the mass matrix M, D_log_sqrt is the diagonal matrix of the square roots of the diagonal entries of the mass matrix on the logical domain, M_log_kron_solver is the Kronecker Solver of the mass matrix on the logical domain.
These preconditioners work very well even on complex domains as numerical experiments have shown. Upon choosing hom_bc=True, a preconditioner for the modified mass matrix M_0 is returned. M_0 is a mass matrix of the form M_0 = DP @ M @ DP + (I - DP) where DP and I are the corresponding DirichletProjector and IdentityOperator. See examples/vector_potential_3d.
- Parameters:
- Mpsydac.linalg.stencil.StencilMatrix | psydac.linalg.block.BlockLinearOperator
Mass matrix corresponding to fem_space
- domain_hpsydac.cad.geometry.Geometry
discretized physical domain used to discretize fem_space
- fem_spacepsydac.fem.basic.FemSpace
discretized Scalar- or VectorFunctionSpace. M is the corresponding mass matrix
- hom_bcbool
If True, return LST preconditioner for modified M_0 = DP @ M @ DP + (I - DP) mass matrix. The argument M in that case remains the same (M, not M_0). DP and I are DirichletProjector and IdentityOperator. Default: False.
- kindstr | None
Optional. Must be passed if fem_space has no kind. Must match the kind of fem_space if fem_space has a kind. Relevant as we must know whether M is a H1, Hcurl, Hdiv or L2 mass matrix.
- Returns:
- psydac.linalg.stencil.StencilMatrix | psydac.linalg.block.BlockLinearOperator
LST preconditioner for M (hom_bc=False) or M_0 (hom_b=True).
References
- [1] Gabriele Loli, Giancarlo Sangalli, Mattia Tani. “Easy and efficient preconditioning of the isogeometric mass
matrix”. In: Computers & Mathematics with Applications 116 (2022), pp. 245–264