[1] C. R. Dohrmann. "An approximate BDDC preconditioner", Numerical Linear Algebra with Applications Volume 14, Issue 2, pages 149-168, March 2007 [2] A. Klawonn and O. B. Widlund. "Dual-Primal FETI Methods for Linear Elasticity", http://cs.nyu.edu/csweb/Research/TechReports/TR2004-855/TR2004-855.pdf [3] J. Mandel, B. Sousedik, C. R. Dohrmann. "Multispace and Multilevel BDDC", http://arxiv.org/abs/0712.3977
The matrix to be preconditioned (Pmat) must be of type MATIS.
Currently works with MATIS matrices with local Neumann matrices of type MATSEQAIJ, MATSEQBAIJ or MATSEQSBAIJ, either with real or complex numbers.
It also works with unsymmetric and indefinite problems.
Unlike 'conventional' interface preconditioners, PCBDDC iterates over all degrees of freedom, not just those on the interface. This allows the use of approximate solvers on the subdomains.
Approximate local solvers are automatically adapted for singular linear problems (see [1]) if the user has provided the nullspace using PCBDDCSetNullSpace
Boundary nodes are split in vertices, edges and faces using information from the local to global mapping of dofs and the local connectivity graph of nodes. The latter can be customized by using PCBDDCSetLocalAdjacencyGraph()
Constraints can be customized by attaching a MatNullSpace object to the MATIS matrix via MatSetNearNullSpace().
Change of basis is performed similarly to [2] when requested. When more the one constraint is present on a single connected component (i.e. an edge or a face), a robust method based on local QR factorizations is used.
The PETSc implementation also supports multilevel BDDC [3]. Coarse grids are partitioned using MatPartitioning object.
Options for Dirichlet, Neumann or coarse solver can be set with
-pc_bddc_dirichlet_ -pc_bddc_neumann_ -pc_bddc_coarse_e.g -pc_bddc_dirichlet_ksp_type richardson -pc_bddc_dirichlet_pc_type gamg
When using a multilevel approach, solvers' options at the N-th level can be specified as
-pc_bddc_dirichlet_lN_ -pc_bddc_neumann_lN_ -pc_bddc_coarse_lN_Note that level number ranges from the finest 0 to the coarsest N.
New deluxe scaling operator will be available soon.
Contributed by Stefano Zampini
Level:intermediate
Location:src/ksp/pc/impls/bddc/bddc.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages