[petsc-users] MINRES accuracy for a SPD matrix

Mohammad Gohardoust gohardoust at gmail.com
Wed Jul 31 08:30:25 CDT 2019


Thanks Jed,

In the code I have it took five (Picard) iterations for single time-step
and here are the outputs from "ksp_monitor_true_residual -ksp_view" for one
iteration:

CG with bjacobi:

  0 KSP preconditioned resid norm 1.084140086188e+03 true resid norm
7.471524858215e-01 ||r(i)||/||b|| 1.114656457671e-37
  1 KSP preconditioned resid norm 6.296985199017e+02 true resid norm
6.804895514298e-01 ||r(i)||/||b|| 1.015203840277e-37
  2 KSP preconditioned resid norm 2.107325578297e+02 true resid norm
3.137762047326e-01 ||r(i)||/||b|| 4.681141795093e-38
  3 KSP preconditioned resid norm 4.225436610327e+01 true resid norm
1.732061654699e-01 ||r(i)||/||b|| 2.584015639554e-38
  4 KSP preconditioned resid norm 3.812640492590e+01 true resid norm
1.011864685639e-01 ||r(i)||/||b|| 1.509573383666e-38
  5 KSP preconditioned resid norm 1.883814249049e+01 true resid norm
5.398301531955e-02 ||r(i)||/||b|| 8.053579125059e-39
  6 KSP preconditioned resid norm 6.625289830879e+00 true resid norm
3.680797942761e-02 ||r(i)||/||b|| 5.491282267192e-39
  7 KSP preconditioned resid norm 7.791516954461e+00 true resid norm
2.236588077783e-02 ||r(i)||/||b|| 3.336704878000e-39
  8 KSP preconditioned resid norm 2.968740859730e+00 true resid norm
1.501379468210e-02 ||r(i)||/||b|| 2.239867164217e-39
  9 KSP preconditioned resid norm 3.027103876686e+00 true resid norm
1.041339881198e-02 ||r(i)||/||b|| 1.553546625669e-39
 10 KSP preconditioned resid norm 1.702923094998e+00 true resid norm
5.758722184966e-03 ||r(i)||/||b|| 8.591280887390e-40
 11 KSP preconditioned resid norm 6.959360907334e-01 true resid norm
3.209679120577e-03 ||r(i)||/||b|| 4.788432919244e-40
 12 KSP preconditioned resid norm 5.947063495977e-01 true resid norm
1.792219139479e-03 ||r(i)||/||b|| 2.673762953736e-40
 13 KSP preconditioned resid norm 1.638992222627e-01 true resid norm
9.582599930477e-04 ||r(i)||/||b|| 1.429602001797e-40
 14 KSP preconditioned resid norm 1.619641126005e-01 true resid norm
5.129340629231e-04 ||r(i)||/||b|| 7.652323674838e-41
 15 KSP preconditioned resid norm 6.298555854405e-02 true resid norm
2.630662976191e-04 ||r(i)||/||b|| 3.924614493042e-41
 16 KSP preconditioned resid norm 3.381480328186e-02 true resid norm
1.405167435648e-04 ||r(i)||/||b|| 2.096331051529e-41
 17 KSP preconditioned resid norm 2.188634069174e-02 true resid norm
7.170524515175e-05 ||r(i)||/||b|| 1.069751035753e-41
 18 KSP preconditioned resid norm 6.591386695704e-03 true resid norm
3.789193478287e-05 ||r(i)||/||b|| 5.652994616344e-42
 19 KSP preconditioned resid norm 5.988963507321e-03 true resid norm
1.922304552896e-05 ||r(i)||/||b|| 2.867833841361e-42
 20 KSP preconditioned resid norm 1.890309986311e-03 true resid norm
9.615814496304e-06 ||r(i)||/||b|| 1.434557192470e-42
 21 KSP preconditioned resid norm 1.322603958495e-03 true resid norm
4.933661540922e-06 ||r(i)||/||b|| 7.360395368965e-43
 22 KSP preconditioned resid norm 6.147516465031e-04 true resid norm
2.434568419681e-06 ||r(i)||/||b|| 3.632066361467e-43
 23 KSP preconditioned resid norm 2.443285908381e-04 true resid norm
1.258673156233e-06 ||r(i)||/||b|| 1.877780223336e-43
 24 KSP preconditioned resid norm 1.903790820937e-04 true resid norm
6.814992942512e-07 ||r(i)||/||b|| 1.016710248109e-43
 25 KSP preconditioned resid norm 5.897463754127e-05 true resid norm
3.612787156069e-07 ||r(i)||/||b|| 5.389818825638e-44
KSP Object: 1 MPI processes
  type: cg
  maximum iterations=10000, nonzero initial guess
  tolerances:  relative=1e-10, absolute=1e-10, divergence=1e+300
  left preconditioning
  using PRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
  type: bjacobi
    number of blocks = 1
    Local solve is same for all blocks, in the following KSP and PC objects:
    KSP Object: (sub_) 1 MPI processes
      type: preonly
      maximum iterations=10000, initial guess is zero
      tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
      left preconditioning
      using NONE norm type for convergence test
    PC Object: (sub_) 1 MPI processes
      type: ilu
        out-of-place factorization
        0 levels of fill
        tolerance for zero pivot 2.22045e-14
        matrix ordering: natural
        factor fill ratio given 1., needed 1.
          Factored matrix follows:
            Mat Object: 1 MPI processes
              type: seqaij
              rows=408848, cols=408848
              package used to perform factorization: petsc
              total: nonzeros=5918082, allocated nonzeros=5918082
              total number of mallocs used during MatSetValues calls =0
                not using I-node routines
      linear system matrix = precond matrix:
      Mat Object: 1 MPI processes
        type: seqaij
        rows=408848, cols=408848
        total: nonzeros=5918082, allocated nonzeros=5918082
        total number of mallocs used during MatSetValues calls =0
          not using I-node routines
  linear system matrix = precond matrix:
  Mat Object: 1 MPI processes
    type: seqaij
    rows=408848, cols=408848
    total: nonzeros=5918082, allocated nonzeros=5918082
    total number of mallocs used during MatSetValues calls =0
      not using I-node routines



MINRES with bjacobi:

  0 KSP preconditioned resid norm 1.400513201683e+03 true resid norm
7.911033287257e+31 ||r(i)||/||b|| 1.181672927444e-05
  1 KSP preconditioned resid norm 2.320798481784e-13 true resid norm
5.094603145770e-03 ||r(i)||/||b|| 7.609820860095e-40
KSP Object: 1 MPI processes
  type: minres
  maximum iterations=10000, nonzero initial guess
  tolerances:  relative=1e-10, absolute=1e-10, divergence=1e+300
  left preconditioning
  using PRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
  type: bjacobi
    number of blocks = 1
    Local solve is same for all blocks, in the following KSP and PC objects:
    KSP Object: (sub_) 1 MPI processes
      type: preonly
      maximum iterations=10000, initial guess is zero
      tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
      left preconditioning
      using NONE norm type for convergence test
    PC Object: (sub_) 1 MPI processes
      type: ilu
        out-of-place factorization
        0 levels of fill
        tolerance for zero pivot 2.22045e-14
        matrix ordering: natural
        factor fill ratio given 1., needed 1.
          Factored matrix follows:
            Mat Object: 1 MPI processes
              type: seqaij
              rows=408848, cols=408848
              package used to perform factorization: petsc
              total: nonzeros=5918082, allocated nonzeros=5918082
              total number of mallocs used during MatSetValues calls =0
                not using I-node routines
      linear system matrix = precond matrix:
      Mat Object: 1 MPI processes
        type: seqaij
        rows=408848, cols=408848
        total: nonzeros=5918082, allocated nonzeros=5918082
        total number of mallocs used during MatSetValues calls =0
          not using I-node routines
  linear system matrix = precond matrix:
  Mat Object: 1 MPI processes
    type: seqaij
    rows=408848, cols=408848
    total: nonzeros=5918082, allocated nonzeros=5918082
    total number of mallocs used during MatSetValues calls =0
      not using I-node routines



On Wed, Jul 31, 2019 at 3:19 AM Jed Brown <jed at jedbrown.org> wrote:

> Are you saying that the MINRES error is larger than CG error?  In which
> norm?  And which norm are you using for CG?  (Output from
> -ksp_monitor_true_residual -ksp_view would be useful.)
>
> CG does find a solution that is optimal in a different inner product,
> though this is usually pretty benign unless you have a poor
> preconditioner.
>
> Mohammad Gohardoust via petsc-users <petsc-users at mcs.anl.gov> writes:
>
> > Hi,
> >
> > I am trying to evaluate different solver/preconditioner combinations for
> > solving Richards' equation in porous media. The coefficient matrix is
> > symmetric positive definite and is usually solved by CG solver. I tried
> > MINRES with various preconditioners. The solution is acceptable but with
> > somehow considerable errors (compared to other solvers) which requires me
> > to decrease the tolerance threshold in my Picard iteration leading to
> > larger computation time. I would like to know if this is common for
> MINRES
> > and how to possibly overcome this?
> >
> > Thanks,
> > Mohammad
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190731/1bad1f48/attachment.html>


More information about the petsc-users mailing list