<div dir="ltr">On Sun, Sep 8, 2013 at 4:23 AM, Umut Tabak <span dir="ltr"><<a href="mailto:u.tabak@tudelft.nl" target="_blank">u.tabak@tudelft.nl</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Your splits were both the same, so the preconditioner was applied twice<br>
to the first block and zero to the second block.  That made the<br>
preconditioner singular.<br>
</blockquote>
<br></div>
Dear Jed,<br>
<br>
Thanks a lot for your time and help, attached you can find a very challenging ill-conditioned problem:<br>
<br>
The first block comes from a structural problem and its size is 1490. The second block results from a fluid discretization and its size is 2432. So in total the coupled system is of size 3922. I created the blocks as given in the simple problem. However, with<br>

<br>
./ex3 -pc_type fieldsplit -pc_fieldsplit_type schur -fieldsplit_1_pc_type icc -fieldsplit_1_ksp_type cg -fieldsplit_1_pc_type icc -fieldsplit_1_ksp_type minres -pc_fieldsplit_schur_<u></u>factorization_type upper -ksp_monitor_true_residual<br>

<br>
The solver just hangs.<br></blockquote><div><br></div><div>If you want to solve hard systems, you must learn to debug a solver yourself. What does "just hangs" mean? Start with a full</div><div>Schur complement factorization with LU on block 1 and a tiny tolerance on block 2. This will converge in 1 iterate. Then</div>
<div>start slowly making the preconditioner weaker.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The system is a symmetric system in this case given as<br>
<br>
A =<br>
A11 C<br>
C^T A22<br>
<br>
C is of size 1490X2432<br>
<br>
Could you please comment on this point for me, do I still have an error on the problem setup or on the usage of the options?<br>
<br>
BR,<br>
Umut<div class="HOEnZb"><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
   ISCreateBlock(PETSC_COMM_SELF,<u></u>bs,n1,inputindices,PETSC_COPY_<u></u>VALUES,&is_row1);<br>
   ISCreateBlock(PETSC_COMM_SELF,<u></u>bs,n2,inputindices,PETSC_COPY_<u></u>VALUES,&is_row2);<br>
<br>
We could check for this case, but it would require a little code and<br>
isn't currently done.  This is probably what you wanted:<br>
<br>
diff --git i/ex2.c w/ex2.c<br>
index 94cea2c..0cce3e6 100644<br>
--- i/ex2.c<br>
+++ w/ex2.c<br>
@@ -45,7 +45,7 @@ int main(int argc,char **args)<br>
    PetscInt bs = 2, n1=1, n2=1, inputindices[]={0,1}; /* block size is 2 */<br>
          ISCreateBlock(PETSC_COMM_SELF,<u></u>bs,n1,inputindices,PETSC_COPY_<u></u>VALUES,&is_row1);<br>
-  ISCreateBlock(PETSC_COMM_SELF,<u></u>bs,n2,inputindices,PETSC_COPY_<u></u>VALUES,&is_row2);<br>
+  ISCreateBlock(PETSC_COMM_SELF,<u></u>bs,n2,inputindices+n1,PETSC_<u></u>COPY_VALUES,&is_row2);<br>
      ISView(is_row1,PETSC_VIEWER_<u></u>STDOUT_SELF);<br>
    ISView(is_row2,PETSC_VIEWER_<u></u>STDOUT_SELF);<br>
</blockquote>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>