1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2 EN">
<HTML>
<HEAD> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCBDDC.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>PCBDDC</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<div id="version" align=right><b>petsc-3.7.5 2017-01-01</b></div>
<div id="bugreport" align=right><a href="mailto:petsc-maint@mcs.anl.gov?subject=Typo or Error in Documentation &body=Please describe the typo or error in the documentation: petsc-3.7.5 v3.7.5 docs/manualpages/PC/PCBDDC.html "><small>Report Typos and Errors</small></a></div>
<A NAME="PCBDDC"><H1>PCBDDC</H1></A>
Balancing Domain Decomposition by Constraints. An implementation of the BDDC preconditioner based on
<P>
<PRE>
[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
[4] C. Pechstein and C. R. Dohrmann. "Modern domain decomposition methods BDDC, deluxe scaling, and an algebraic approach", Seminar talk, Linz, December 2013, http://people.ricam.oeaw.ac.at/c.pechstein/pechstein-bddc2013.pdf
</PRE>
<P>
The matrix to be preconditioned (Pmat) must be of type <A HREF="../Mat/MATIS.html#MATIS">MATIS</A>.
<P>
Currently works with <A HREF="../Mat/MATIS.html#MATIS">MATIS</A> matrices with local matrices of type <A HREF="../Mat/MATSEQAIJ.html#MATSEQAIJ">MATSEQAIJ</A>, <A HREF="../Mat/MATSEQBAIJ.html#MATSEQBAIJ">MATSEQBAIJ</A> or <A HREF="../Mat/MATSEQSBAIJ.html#MATSEQSBAIJ">MATSEQSBAIJ</A>, either with real or complex numbers.
<P>
It also works with unsymmetric and indefinite problems.
<P>
Unlike 'conventional' interface preconditioners, <A HREF="../PC/PCBDDC.html#PCBDDC">PCBDDC</A> iterates over all degrees of freedom, not just those on the interface. This allows the use of approximate solvers on the subdomains.
<P>
Approximate local solvers are automatically adapted for singular linear problems (see [1]) if the user has provided the nullspace using <A HREF="../PC/PCBDDCSetNullSpace.html#PCBDDCSetNullSpace">PCBDDCSetNullSpace</A>()
<P>
Boundary nodes are split in vertices, edges and faces classes using information from the local to global mapping of dofs and the local connectivity graph of nodes. The latter can be customized by using <A HREF="../PC/PCBDDCSetLocalAdjacencyGraph.html#PCBDDCSetLocalAdjacencyGraph">PCBDDCSetLocalAdjacencyGraph</A>()
Additional information on dofs can be provided by using <A HREF="../PC/PCBDDCSetDofsSplitting.html#PCBDDCSetDofsSplitting">PCBDDCSetDofsSplitting</A>(), <A HREF="../PC/PCBDDCSetDirichletBoundaries.html#PCBDDCSetDirichletBoundaries">PCBDDCSetDirichletBoundaries</A>(), <A HREF="../PC/PCBDDCSetNeumannBoundaries.html#PCBDDCSetNeumannBoundaries">PCBDDCSetNeumannBoundaries</A>(), and <A HREF="../PC/PCBDDCSetPrimalVerticesLocalIS.html#PCBDDCSetPrimalVerticesLocalIS">PCBDDCSetPrimalVerticesLocalIS</A>()
<P>
Constraints can be customized by attaching a <A HREF="../Mat/MatNullSpace.html#MatNullSpace">MatNullSpace</A> object to the <A HREF="../Mat/MATIS.html#MATIS">MATIS</A> matrix via <A HREF="../Mat/MatSetNearNullSpace.html#MatSetNearNullSpace">MatSetNearNullSpace</A>(). Non-singular modes are retained via SVD.
<P>
Change of basis is performed similarly to [2] when requested. When more than 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.
User defined change of basis can be passed to <A HREF="../PC/PCBDDC.html#PCBDDC">PCBDDC</A> by using <A HREF="../PC/PCBDDCSetChangeOfBasisMat.html#PCBDDCSetChangeOfBasisMat">PCBDDCSetChangeOfBasisMat</A>()
<P>
The PETSc implementation also supports multilevel BDDC [3]. Coarse grids are partitioned using a <A HREF="../Mat/MatPartitioning.html#MatPartitioning">MatPartitioning</A> object.
<P>
Adaptive selection of primal constraints [4] is supported for SPD systems with high-contrast in the coefficients if MUMPS is present. Future versions of the code will also consider using MKL_PARDISO or PASTIX.
<P>
An experimental interface to the FETI-DP method is available. FETI-DP operators could be created using <A HREF="../PC/PCBDDCCreateFETIDPOperators.html#PCBDDCCreateFETIDPOperators">PCBDDCCreateFETIDPOperators</A>(). A stand-alone class for the FETI-DP method will be provided in the next releases.
Deluxe scaling is not supported yet for FETI-DP.
<P>
<H3><FONT COLOR="#CC3333">Options Database Keys (some of them, run with -h for a complete list)</FONT></H3>
<P>
<DT><B>-pc_bddc_use_vertices <true> </B> -use or not vertices in primal space
<br>
<DT><B>-pc_bddc_use_edges <true> </B> -use or not edges in primal space
<br>
<DT><B>-pc_bddc_use_faces <false> </B> -use or not faces in primal space
<br>
<DT><B>-pc_bddc_symmetric <true> </B> -symmetric computation of primal basis functions. Specify false for unsymmetric problems
<br>
<DT><B>-pc_bddc_use_change_of_basis <false> </B> -use change of basis approach (on edges only)
<br>
<DT><B>-pc_bddc_use_change_on_faces <false> </B> -use change of basis approach on faces if change of basis has been requested
<br>
<DT><B>-pc_bddc_switch_static <false> </B> -switches from M_2 (default) to M_3 operator (see reference article [1])
<br>
<DT><B>-pc_bddc_levels <0> </B> -maximum number of levels for multilevel
<br>
<DT><B>-pc_bddc_coarsening_ratio <8> </B> -number of subdomains which will be aggregated together at the coarser level (e.g. H/h ratio at the coarser level, significative only in the multilevel case)
<br>
<DT><B>-pc_bddc_redistribute <0> </B> -size of a subset of processors where the coarse problem will be remapped (the value is ignored if not at the coarsest level)
<br>
<DT><B>-pc_bddc_use_deluxe_scaling <false> </B> -use deluxe scaling
<br>
<DT><B>-pc_bddc_schur_layers <</B> -1> - select the economic version of deluxe scaling by specifying the number of layers (-1 corresponds to the original deluxe scaling)
<br>
<DT><B>-pc_bddc_adaptive_threshold <0.0> </B> -when a value greater than one is specified, adaptive selection of constraints is performed on edges and faces (requires deluxe scaling and MUMPS installed)
<br>
<DT><B>-pc_bddc_check_level <0> </B> -set verbosity level of debugging output
<br>
</TABLE>
<P>
Options for Dirichlet, Neumann or coarse solver can be set with
<PRE>
-pc_bddc_dirichlet_
-pc_bddc_neumann_
-pc_bddc_coarse_
</PRE>
e.g -pc_bddc_dirichlet_ksp_type richardson -pc_bddc_dirichlet_pc_type gamg. <A HREF="../PC/PCBDDC.html#PCBDDC">PCBDDC</A> uses by default KPSPREONLY and <A HREF="../PC/PCLU.html#PCLU">PCLU</A>.
<P>
When using a multilevel approach, solvers' options at the N-th level (N > 1) can be specified as
<PRE>
-pc_bddc_dirichlet_lN_
-pc_bddc_neumann_lN_
-pc_bddc_coarse_lN_
</PRE>
Note that level number ranges from the finest (0) to the coarsest (N).
In order to specify options for the BDDC operators at the coarser levels (and not for the solvers), prepend -pc_bddc_coarse_ or -pc_bddc_coarse_l to the option, e.g.
<PRE>
-pc_bddc_coarse_pc_bddc_adaptive_threshold 5 -pc_bddc_coarse_l1_pc_bddc_redistribute 3
</PRE>
will use a threshold of 5 for constraints' selection at the first coarse level and will redistribute the coarse problem of the first coarse level on 3 processors
<P>
<P>
<H3><FONT COLOR="#CC3333">Developer notes</FONT></H3>
<P>
Contributed by Stefano Zampini
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
<A HREF="../PC/PCCreate.html#PCCreate">PCCreate</A>(), <A HREF="../PC/PCSetType.html#PCSetType">PCSetType</A>(), <A HREF="../PC/PCType.html#PCType">PCType</A> (for list of available types), <A HREF="../PC/PC.html#PC">PC</A>, <A HREF="../Mat/MATIS.html#MATIS">MATIS</A>
<BR><P><B><P><B><FONT COLOR="#CC3333">Level:</FONT></B>intermediate
<BR><FONT COLOR="#CC3333">Location:</FONT></B><A HREF="../../../src/ksp/pc/impls/bddc/bddc.c.html#PCBDDC">src/ksp/pc/impls/bddc/bddc.c</A>
<BR><A HREF="./index.html">Index of all PC routines</A>
<BR><A HREF="../../index.html">Table of Contents for all manual pages</A>
<BR><A HREF="../singleindex.html">Index of all manual pages</A>
</BODY></HTML>
|