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
|
<!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/PCHPDDMShellApply.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>PCHPDDMShellApply</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<div id="version" align=right><b>petsc-3.14.5 2021-03-03</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.14.5 v3.14.5 docs/manualpages/PC/PCHPDDMShellApply.html "><small>Report Typos and Errors</small></a></div>
<A NAME="PCHPDDMShellApply"><H1>PCHPDDMShellApply</H1></A>
Applies a (2) deflated, (1) additive, or (3) balanced coarse correction. In what follows, E = Z Pmat Z^T and Q = Z^T E^-1 Z.
<H3><FONT COLOR="#CC3333">Synopsis</FONT></H3>
<PRE>
#include "petscpc.h"
static <A HREF="../Sys/PetscErrorCode.html#PetscErrorCode">PetscErrorCode</A> <A HREF="../PC/PCHPDDMShellApply.html#PCHPDDMShellApply">PCHPDDMShellApply</A>(<A HREF="../PC/PC.html#PC">PC</A> pc, <A HREF="../Vec/Vec.html#Vec">Vec</A> x, <A HREF="../Vec/Vec.html#Vec">Vec</A> y)
</PRE>
<PRE>
(1) y = Pmat^-1 x + Q x,
(2) y = Pmat^-1 (I - Amat Q) x + Q x (default),
(3) y = (I - Q Amat^T) Pmat^-1 (I - Amat Q) x + Q x.
</PRE>
<P>
<H3><FONT COLOR="#CC3333">Input Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>pc </B></TD><TD>- preconditioner context
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>x </B></TD><TD>- input vector
</TD></TR></TABLE>
<P>
<H3><FONT COLOR="#CC3333">Output Parameter</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>y </B></TD><TD>- output vector
</TD></TR></TABLE>
<P>
Application Interface Routine: <A HREF="../PC/PCApply.html#PCApply">PCApply</A>()
<P>
<H3><FONT COLOR="#CC3333">Notes</FONT></H3>
The options of Pmat^1 = pc(Pmat) are prefixed by -pc_hpddm_levels_1_pc_. Z is a tall-and-skiny matrix assembled by HPDDM. The number of processes on which (Z Pmat Z^T) is aggregated is set via -pc_hpddm_coarse_p.
The options of (Z Pmat Z^T)^-1 = ksp(Z Pmat Z^T) are prefixed by -pc_hpddm_coarse_ (<A HREF="../KSP/KSPPREONLY.html#KSPPREONLY">KSPPREONLY</A> and <A HREF="../PC/PCCHOLESKY.html#PCCHOLESKY">PCCHOLESKY</A> by default), unless a multilevel correction is turned on, in which case, this function is called recursively at each level except the coarsest one.
(1) and (2) visit the "next" level (in terms of coarsening) once per application, while (3) visits it twice, so it is asymptotically twice costlier. (2) is not symmetric even if both Amat and Pmat are symmetric.
<P>
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
<A HREF="../PC/PCHPDDM.html#PCHPDDM">PCHPDDM</A>, <A HREF="../PC/PCHPDDMCoarseCorrectionType.html#PCHPDDMCoarseCorrectionType">PCHPDDMCoarseCorrectionType</A>
<BR><P><B></B><H3><FONT COLOR="#CC3333">Level</FONT></H3>advanced<BR>
<H3><FONT COLOR="#CC3333">Location</FONT></H3>
</B><A HREF="../../../src/ksp/pc/impls/hpddm/hpddm.cxx.html#PCHPDDMShellApply">src/ksp/pc/impls/hpddm/hpddm.cxx</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>
|