Good point, this is indeed linear elasticity.  Following your suggestion I 
first got the following error since I now use MATBAIJ:

[0]PCSetData_AGG bs=3 MM=30441
[0]PETSC ERROR: --------------------- Error Message 
------------------------------------
[0]PETSC ERROR: Arguments are incompatible!
[0]PETSC ERROR: MatMatMult requires A, mpibaij, to be compatible with B, mpiaij!
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Release Version 3.3.0, Patch 6, Mon Feb 11 12:26:34 CST 
2013 
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: /Users/hugo/Documents/jetstream/jetstream_x86_64 on a arch-darw 
named user204-27.wireless.utoronto.ca by hugo Mon Apr 15 17:31:55 2013
[0]PETSC ERROR: Libraries linked from 
/Users/hugo/Documents/petsc-3.3-p6/arch-darwin-c-opt/lib
[0]PETSC ERROR: Configure run at Mon Feb 18 15:08:07 2013
[0]PETSC ERROR: Configure options --with-debugging=0
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: MatMatMult() line 8617 in src/mat/interface/matrix.c
[0]PETSC ERROR: PCGAMGOptprol_AGG() line 1358 in src/ksp/pc/impls/gamg/agg.c
[0]PETSC ERROR: PCSetUp_GAMG() line 673 in src/ksp/pc/impls/gamg/gamg.c
[0]PETSC ERROR: PCSetUp() line 832 in src/ksp/pc/interface/precon.c
[0]PETSC ERROR: PCApply() line 380 in src/ksp/pc/interface/precon.c
[0]PETSC ERROR: KSPSolve_CG() line 139 in src/ksp/ksp/impls/cg/cg.c
[0]PETSC ERROR: KSPSolve() line 446 in src/ksp/ksp/interface/itfunc.c

I tried converting the matrix to MATAIJ with:

call MatConvert(Paa,MATAIJ,MAT_INITIAL_MATRIX,Paa2,Pierr)

and now I have this error (with ksp_view):

[0]PCSetData_AGG bs=1 MM=30441
   KSPCG resid. tolerance target  =   1.000E-10
   KSPCG initial residual |res0|  =   8.981E-02
   KSPCG iter =    0: |res|/|res0| =  1.000E+00
   KSPCG iter =    1: |res|/|res0| =  4.949E-01
KSP Object: 2 MPI processes
  type: cg
  maximum iterations=4000
  tolerances:  relative=1e-10, absolute=1e-50, divergence=10000
  left preconditioning
  using nonzero initial guess
  using PRECONDITIONED norm type for convergence test
PC Object: 2 MPI processes
  type: gamg
    MG: type is MULTIPLICATIVE, levels=2 cycles=v
      Cycles per PCApply=1
      Using Galerkin computed coarse grid matrices
  Coarse grid solver -- level -------------------------------
    KSP Object:    (mg_coarse_)     2 MPI processes
      type: gmres
        GMRES: restart=30, using Classical (unmodified) Gram-Schmidt 
Orthogonalization with no iterative refinement
        GMRES: happy breakdown tolerance 1e-30
      maximum iterations=1, initial guess is zero
      tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
      left preconditioning
      using NONE norm type for convergence test
    PC Object:    (mg_coarse_)     2 MPI processes
      type: bjacobi
        block Jacobi: number of blocks = 2
        Local solve info for each block is in the following KSP and PC objects:
      [0] number of local blocks = 1, first local block number = 0
        [0] local block number 0
        KSP Object:        (mg_coarse_sub_)         1 MPI processes
          type: preonly
              KSP Object:        (mg_coarse_sub_)        maximum 
iterations=10000, initial guess is zero
          tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
     1 MPI processes
          type: preonly
            left preconditioning
              maximum iterations=10000, initial guess is zero
            using NONE norm type for convergence test
        PC Object:        (mg_coarse_sub_)         1 MPI processes
  tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
          left preconditioning
          using NONE norm type for convergence test
        PC Object:        (mg_coarse_sub_)            type: lu
            LU: out-of-place factorization
       1 MPI processes
          type: lu
            tolerance for zero pivot 2.22045e-14
                  LU: out-of-place factorization
            matrix ordering: nd
            factor fill ratio given 5, needed 5.06305
      tolerance for zero pivot 2.22045e-14
                      Factored matrix follows:
                matrix ordering: nd
            factor fill ratio given 5, needed 0
          Matrix Object:                        Factored matrix follows:
                 1 MPI processes
                  type: seqaij
Matrix Object:                 1 MPI processes
                    rows=552, cols=552
                type: seqaij
                          package used to perform factorization: petsc
              rows=0, cols=0
                        total: nonzeros=106962, allocated nonzeros=106962
            package used to perform factorization: petsc
                          total number of mallocs used during MatSetValues 
calls =0
                    not using I-node routines
          linear system matrix = precond matrix:
          Matrix Object:           1 MPI processes
        total: nonzeros=1, allocated nonzeros=1
                  total number of mallocs used during MatSetValues calls =0
                    not using I-node routines
          linear system matrix = precond matrix:
                  type: seqaij
        Matrix Object:                rows=552, cols=552
       1 MPI processes
            type: seqaij
        total: nonzeros=21126, allocated nonzeros=21126
                  rows=0, cols=0
      total number of mallocs used during MatSetValues calls =0
                  total: nonzeros=0, allocated nonzeros=0
          not using I-node routines
                total number of mallocs used during MatSetValues calls =0
            - - - - - - - - - - - - - - - - - -
  not using I-node routines
      [1] number of local blocks = 1, first local block number = 1
        [1] local block number 0
        - - - - - - - - - - - - - - - - - -
      linear system matrix = precond matrix:
      Matrix Object:       2 MPI processes
        type: mpiaij
        rows=552, cols=552
        total: nonzeros=21126, allocated nonzeros=21126
        total number of mallocs used during MatSetValues calls =0
          not using I-node (on process 0) routines
  Down solver (pre-smoother) on level 1 -------------------------------
    KSP Object:    (mg_levels_1_)     2 MPI processes
      type: chebyshev
        Chebyshev: eigenvalue estimates:  min = 0.0508405, max = 5.88746
      maximum iterations=2
      tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
      left preconditioning
      using nonzero initial guess
      using NONE norm type for convergence test
    PC Object:    (mg_levels_1_)     2 MPI processes
      type: jacobi
      linear system matrix = precond matrix:
      Matrix Object:       2 MPI processes
        type: mpiaij
        rows=60879, cols=60879
        total: nonzeros=4509729, allocated nonzeros=4509729
        total number of mallocs used during MatSetValues calls =0
          using I-node (on process 0) routines: found 10147 nodes, limit used 
is 5
  Up solver (post-smoother) same as down solver (pre-smoother)
  linear system matrix = precond matrix:
  Matrix Object:   2 MPI processes
    type: mpiaij
    rows=60879, cols=60879
    total: nonzeros=4509729, allocated nonzeros=4509729
    total number of mallocs used during MatSetValues calls =0
      using I-node (on process 0) routines: found 10147 nodes, limit used is 5
 Error in FEMesh_Mod::moveFEMeshPETSc() : KSP returned with error code =        
   -8

--
  Hugo Gagnon

On 2013-04-15, at 5:26 PM, Mark F. Adams <mark.adams at columbia.edu> wrote:

> Its probably not worth trying to verify the code with ILU(3) because the 
> space of algorithms is large as Jed points out (e.g., ILU(3) does not fully 
> define the solver unless they use the same node ordering, shifting strategies 
> and whatever else your ILU is doing to make ILU not suck).  It looks like you 
> are doing 3D elasticity. Try
> 
> -pc_type gamg
> -pc_gamg_agg_nsmooths 1
> 
> assuming you have v3.3 or higher.
> 
> 
> On Apr 15, 2013, at 5:15 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> 
>> Hugo Gagnon <opensource.petsc at user.fastmail.fm> writes:
>> 
>>> For the problem I'm describing my serial in-house solver does not work
>>> with ILU(0) but works with ILU(3).  I have no option to run Jacobi.
>>> When I apply the same problem to PETSc's PC solver with ILU(3) in
>>> serial I get KSP_DIVERGED_INDEFINITE_PC
>> 
>> Does your in-house ILU(3) use a different ordering?  What shift scheme
>> does it use?
>> 
>>> on the first iteration (in MPI the solution somewhat converges but
>>> very slowly).
>>> 
>>> call KSPGetPC(Pksp,Ppc,Pierr)
>>> call PCSetType(Ppc,PCILU,Pierr)
>>> call PCFactorSetLevels(Ppc,3,Pierr)
>>> 
>>> This effectively changes the fill level from 0 to 3, right?
>> 
>> This only works in serial.  Check the -ksp_view output to see what is
>> done.  You should just call KSPSetFromOptions() and use run-time options
>> to configure the solver.  You can do it from code later, but writing
>> code is slow to figure out what works.
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130415/ba1624ea/attachment.html>

Reply via email to