Michele :<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu"><br>
      I have some problems with the block jacobi preconditioner.<br>
      I am solving a 3D  Poisson equation with periodic BCs, discretized
      by using finite differences (7-points stencil).<br>
      Thus the problem is singular and the nullspace has to be removed.<br></font></div></blockquote><div><br></div><div>For  <span class="Apple-style-span" style="font-family:Ubuntu">Poisson equations, multigrid precondition should be the method of</span></div>
<div><span class="Apple-style-span" style="font-family:Ubuntu">choice. </span></div><div><span class="Apple-style-span" style="font-family:Ubuntu"><br></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu">
      If I solve with the PCG method + JACOBI preconditioner the results
      are fine.<br>
      If I use PCG + Block Jacobi preconditioner + ICC on each block the
      results are fine on the majority of the processors,<br>
      but on few of them the error is very large.  <br></font></div></blockquote><div> </div><div>How do you know "<span class="Apple-style-span" style="font-family:Ubuntu"> few of them"? </span></div><div><font class="Apple-style-span" face="Ubuntu"><br>
</font></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu">
      Do you have any idea/suggestions on how to fix this problem? <br>
      This is the fragment of code I am using ( petsc 3.1 and Fortran
      90):<br></font></div></blockquote><div> </div><div>Please update to petsc-3.3. petsc-3.1 is too old.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<font face="Ubuntu">
      <br>
          PetscErrorCode                petsc_err     <br>
          Mat                                         A<br>
          PC                                           pc, subpc<br>
          KSP                                         ksp<br>
          KSP                                         subksp(1)<br>
          :<br>
          :<br>
          :<br>
          call KSPCreate(PETSC_COMM_WORLD,ksp,petsc_err)<br>
          call
      KSPSetOperators(ksp,A,A,DIFFERENT_NONZERO_PATTERN,petsc_err)<br></font></div></blockquote><div> </div><div>call KSPSetType(ksp,KSPCG, ) !the default type is gmres. I guess you want CG</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu">
          call KSPGetPC(ksp,pc,petsc_err)<br>
          call PCSetType(pc,PCBJACOBI,petsc_err)<br>!    call KSPSetUp(ksp,petsc_err)    call this at the end<br>
          <br>
          ! KSP context for each single block<br>
          call
      PCBJacobiGetSubKSP(pc,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,subksp(1),petsc_err)
      <br>
          call KSPGetPC(subksp(1),subpc,petsc_err)<br>
          call PCSetType(subpc,PCICC,petsc_err)<br></font></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<font face="Ubuntu">
          call KSPSetType(subksp(1),KSPPREONLY petsc_err)<br></font></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
<font face="Ubuntu">
          call KSPSetTolerances(subksp(1),tol
      ,PETSC_DEFAULT_DOUBLE_PRECISION,&<br>
               &
      PETSC_DEFAULT_DOUBLE_PRECISION,PETSC_DEFAULT_INTEGER,petsc_err)<br>
      <br>
         ! Remove nullspace from the singular system (Check PETSC_NULL)<br>
          call
MatNullSpaceCreate(MPI_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL,nullspace,petsc_err)<br>
          call KSPSetNullSpace(ksp, nullspace, petsc_err)<br>
          call MatNullSpaceRemove(nullspace, b, PETSC_NULL,petsc_err)   
      <br>
      <br>
          call KSPSolve(ksp,b,x,petsc_err)<br></font></div></blockquote><div><br></div><div>I modified your code slightly. All these options can be provided at runtime:</div><div>'-ksp_type cg -pc_type bjacobi -sub_pc_type icc'</div>
<div><br></div><div>Hong</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu">
      <br><br>
      <br>
      <br>
      <br>
      <br>
    </font><div class="im"><font face="Ubuntu"><br>
      <br>
      <br>
    </font>
    <div>On 07/13/2012 12:14 PM, Hong Zhang
      wrote:<br>
    </div>
    </div><div><div class="h5"><blockquote type="cite">Michele :
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div text="#000000" bgcolor="#FFFFFF"><font face="Ubuntu"> <br>
              I need to use the ICC factorization as preconditioner, but
              I noticed that no parallel version is supported.<br>
              Is that correct?<br>
            </font></div>
        </blockquote>
        <div>Correct.</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div text="#000000" bgcolor="#FFFFFF"> <font face="Ubuntu">
              If so, is there a work around, like building  the
              preconditioner "by hand" by using PETSc functions?<br>
            </font></div>
        </blockquote>
        <div>You may try block jacobi with icc in the blocks  '-ksp_type
          cg -pc_type bjacobi -sub_pc_type icc'</div>
        <div><br>
        </div>
        <div>Hong </div>
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div text="#000000" bgcolor="#FFFFFF"> </div>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
    <br>
  </div></div></div>

</blockquote></div><br>