KSPFETIDP#
The FETI-DP method [FLL+01]
Options Database Keys#
-ksp_fetidp_fullyredundant
- use a fully redundant set of Lagrange multipliers-ksp_fetidp_saddlepoint
- activates support for saddle point problems, see [TL15]-ksp_fetidp_saddlepoint_flip
- see note below-ksp_fetidp_pressure_field <- 1> - activates support for saddle point problems, and identifies the pressure field id. If this information is not provided, the pressure field is detected by using
MatFindZeroDiagonals()
.-ksp_fetidp_pressure_all
- if false, uses the interface pressures, as described in [2]. If true, uses the entire pressure field.
Notes#
The matrix for the KSP
must be of type MATIS
.
Usually, an incompressible Stokes problem is written as
| A B^T | | v | = | f |
| B 0 | | p | = | g |
with B representing \( -\int_\Omega \nabla \cdot u q \). If -ksp_fetidp_saddlepoint_flip is true, the code assumes that the user provides it as
| A B^T | | v | = | f |
|-B 0 | | p | = |-g |
The FETI-DP linear system (automatically generated constructing an internal PCBDDC
object) is solved using an internal KSP
object.
Options for the inner KSP
and for the customization of the PCBDDC
object can be specified at command line by using the prefixes -fetidp_
and -fetidp_bddc_
. E.g.,
-fetidp_ksp_type gmres -fetidp_bddc_pc_bddc_symmetric false
will use KSPGMRES
for the solution of the linear system on the Lagrange multipliers, generated using a non-symmetric PCBDDC
.
For saddle point problems with continuous pressures, the preconditioned operator for the pressure solver can be specified with KSPFETIDPSetPressureOperator()
.
Alternatively, the pressure operator is extracted from the precondioned matrix (if it is different from the linear solver matrix).
If none of the above, an identity matrix will be created; the user then needs to scale it through a Richardson solver.
Options for the pressure solver can be prefixed with -fetidp_fielsplit_p_
, E.g.
-fetidp_fielsplit_p_ksp_type preonly -fetidp_fielsplit_p_pc_type lu -fetidp_fielsplit_p_pc_factor_mat_solver_type mumps
In order to use the deluxe version of FETI-DP, you must customize the inner PCBDDC
operator with -fetidp_bddc_pc_bddc_use_deluxe_scaling -fetidp_bddc_pc_bddc_deluxe_singlemat and use
non-redundant multipliers, i.e. -ksp_fetidp_fullyredundant false
. Options for the scaling solver are prefixed by -fetidp_bddelta_
, E.g.
-fetidp_bddelta_pc_factor_mat_solver_type mumps -fetidp_bddelta_pc_type lu
Some of the basic options such as the maximum number of iterations and tolerances are automatically passed from this KSP
to the inner KSP
that actually performs the iterations.
The converged reason and number of iterations computed are passed from the inner KSP
to this KSP
at the end of the solution.
Developer Note#
Even though this method does not directly use any norms, the user is allowed to set the KSPNormType
to any value.
This is so users do not have to change KSPNormType
options when they switch from other KSP
methods to this one.
References#
Charbel Farhat, Michel Lesoinne, Patrick LeTallec, Kendall Pierson, and Daniel Rixen. FETI-DP: a dual–primal unified FETI method—part I: a faster alternative to the two-level FETI method. International journal for numerical methods in engineering, 50(7):1523–1544, 2001.
Xuemin Tu and Jing Li. A FETI-DP type domain decomposition algorithm for three-dimensional incompressible Stokes equations. SIAM Journal on Numerical Analysis, 53(2):720–742, 2015.
See Also#
KSP: Linear System Solvers, MATIS
, PCBDDC
, KSPFETIDPSetInnerBDDC()
, KSPFETIDPGetInnerBDDC()
, KSPFETIDPGetInnerKSP()
Level#
Advanced
Location#
Examples#
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages