<html dir="ltr" adlesseunifierdata="["{\"w\":false,\"id\":\"com.kwizzu.fastesttube\",\"name\":\"FastestTube\",\"isComponentMode\":true}"]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style><style type="text/css"></style><style type="text/css"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<div>Dear all,</div>
<div><br>
</div>
<div>I'm trying to use PCFIELDSPLIT as a preconditioner on a block matrix A,</div>
<div><br>
</div>
[A_{00} A_{01}]
<div>[A_{10} A_{11}]</div>
<div><br>
</div>
<div>where the diagonal blocks (A_{00} and A_{11}) are diagonally dominant. I would like to use either one of the block preconditioners (not even based on the Schur complement, simply either one of the Jacobi/Gauss-Seidel ones).</div>
<div><br>
</div>
<div>The issue I'm running into concerns the formats I would like to use, so I'll start with that:</div>
<div>
<ol>
<li><span style="font-size: 10pt;">A_{00} and A_{11} are both in MATMPIAIJ format (created using DMCreateMatrix on 2D DMDAs of different sizes),</span></li><li><span style="font-size: 10pt;">A_{10} and A_{01} are both in MATSHELL format (created using DMCreateShell). T</span><span style="font-size: 10pt;">he reason why I used this format is that it seemed convenient, since the 2D DMDAs are of different sizes and
I assumed I had to provide the MATOP_MULT operation only,</span></li><li><span style="font-size: 10pt;">Finally the blocks are stored in MATNEST format (MatCreateNest).</span></li></ol>
</div>
<div><span style="font-size: 10pt;">With this choice, matrix-vector multiplications work fine (the DMDAs being packed in a DMComposite), which makes me think that so far the code is ok. Also, w</span><span style="font-size: 10pt;">hen I attempt to invert the
matrix without preconditioner, I get the correct result.</span></div>
<div><span style="font-size: 10pt;"><br>
</span></div>
<div><span style="font-size: 10pt;">Now here is where things do not work: </span><span style="font-size: 10pt;">if I try to use a preconditioner, I get the error pasted below (for a simple PCJACOBI)</span></div>
<div><br>
</div>
<div>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: No support for this operation for this object type</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: Mat type shell</p>
</div>
<div>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #1 MatGetDiagonal() line 4306 in petsc/3.6.3_dbg/src/mat/interface/matrix.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #2 PCSetUp_Jacobi() line 180 in petsc/3.6.3_dbg/src/ksp/pc/impls/jacobi/jacobi.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #3 PCSetUp_Jacobi_NonSymmetric() line 261 in petsc/3.6.3_dbg/src/ksp/pc/impls/jacobi/jacobi.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #4 PCApply_Jacobi() line 286 in petsc/3.6.3_dbg/src/ksp/pc/impls/jacobi/jacobi.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #5 PCApply() line 483 in petsc/3.6.3_dbg/src/ksp/pc/interface/precon.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #6 KSP_PCApply() line 242 in petsc/3.6.3_dbg/include/petsc/private/kspimpl.h</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #7 KSPSolve_CG() line 139 in petsc/3.6.3_dbg/src/ksp/ksp/impls/cg/cg.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #8 KSPSolve() line 604 in petsc/3.6.3_dbg/src/ksp/ksp/interface/itfunc.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #9 PCApply_FieldSplit() line 988 in petsc/3.6.3_dbg/src/ksp/pc/impls/fieldsplit/fieldsplit.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #10 PCApply() line 483 in petsc/3.6.3_dbg/src/ksp/pc/interface/precon.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #11 KSP_PCApply() line 242 in petsc/3.6.3_dbg/include/petsc/private/kspimpl.h</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #12 KSPSolve_CG() line 139 in petsc/3.6.3_dbg/src/ksp/ksp/impls/cg/cg.c</p>
<p style="margin-right: 0px; margin-left: 0px; font-size: 12px; line-height: normal; font-family: Menlo;">
[0]PETSC ERROR: #13 KSPSolve() line 604 in petsc/3.6.3_dbg/src/ksp/ksp/interface/itfunc.c</p>
</div>
<div><br>
</div>
<div>I may not be calling the appropriate routines, h<span style="font-size: 10pt;">ere is what</span><span style="font-size: 10pt;"> I'm basically doing:</span></div>
<div>
<div>
<ol>
<li><span style="font-size: 10pt;">KSP type set to KSPCG (A is symmetric),</span><span style="font-size: 10pt;"> PC type to PCFIELDSPLIT,</span></li><li><span style="font-size: 10pt;">I then use MatNestGetISs on A to supply the ISs to PCFieldSplitSetIS,</span></li><li><span style="font-size: 10pt;">Finally I use PCFieldSplitGetSubKSP to use set the subKSP for each diagonal block.</span></li></ol>
</div>
<div><span style="font-size: 10pt;">As I mentioned, as long as the subKSPs don't have any preconditioning (PCNONE), KSPSolve does not complain, only when I try to using one (even PCJACOBI) do I get similar errors). That </span><span style="font-size: 10pt;">makes
me suspect that I'm doing something wrong, </span><span style="font-size: 10pt;">but I could not find an example that was doing the same thing...</span></div>
<div><span style="font-size: 10pt;"><br>
</span></div>
<div><span style="font-size: 10pt;">Any pointers would be much appreciated!</span></div>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Vincent</div>
</div>
</body>
</html>