[petsc-users] Problems about Picard and NolinearGS
Smith, Barry F.
bsmith at mcs.anl.gov
Wed Dec 26 15:23:24 CST 2018
Try with -snes_mf_operator from the manual page of SNESSetPicard() this indicates that with Newton's method using A(x^{n}) to construct the preconditioner.
> On Dec 26, 2018, at 7:48 AM, Yingjie Wu via petsc-users <petsc-users at mcs.anl.gov> wrote:
>
> Dear Petsc developers:
> Hi,
> 1. I tried to use the Picard solver in Petsc, but the program didn't converge. My program is still a thermal program that contains multiple physical fields, and is a PDEs' problem. The error message is as follows. The reason I use Picard is that it can guarantee convergence(though slow and expensive). I follow the ex15.c, but I don't use DM to organize the solution vector. So I try the SNESSetPicard().
> 0 SNES Function norm 2.91302e+08
> 0 KSP Residual norm 5.79907e+08
> 1 KSP Residual norm 1.46843e-05
> Linear solve converged due to CONVERGED_RTOL iterations 1
> 1 SNES Function norm 2.891e+08
> 0 KSP Residual norm 5.5989e+08
> 1 KSP Residual norm 4.21314e-06
> Linear solve converged due to CONVERGED_RTOL iterations 1
> 2 SNES Function norm 2.78289e+08
> 0 KSP Residual norm 5.53553e+08
> 1 KSP Residual norm 2.04076e-05
> Linear solve converged due to CONVERGED_RTOL iterations 1
> 3 SNES Function norm 2.77833e+08
> 0 KSP Residual norm 5.52907e+08
> 1 KSP Residual norm 2.09919e-05
> Linear solve converged due to CONVERGED_RTOL iterations 1
> 4 SNES Function norm 2.77821e+08
> 0 KSP Residual norm 5.52708e+08
> 1 KSP Residual norm 2.08677e-05
> Linear solve converged due to CONVERGED_RTOL iterations 1
> Nonlinear solve did not converge due to DIVERGED_LINE_SEARCH iterations 4
> SNES Object: 1 MPI processes
> type: newtonls
> maximum iterations=50, maximum function evaluations=10000
> tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
> total number of linear solver iterations=5
> total number of function evaluations=34
> norm schedule ALWAYS
> SNESLineSearch Object: 1 MPI processes
> type: bt
> interpolation: cubic
> alpha=1.000000e-04
> maxstep=1.000000e+08, minlambda=1.000000e-12
> tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08
> maximum iterations=40
> KSP Object: 1 MPI processes
> type: gmres
> restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
> happy breakdown tolerance 1e-30
> maximum iterations=10000, initial guess is zero
> tolerances: relative=1e-05, absolute=1e-50, divergence=10000.
> left preconditioning
> using PRECONDITIONED norm type for convergence test
> PC Object: 1 MPI processes
> type: lu
> out-of-place factorization
> tolerance for zero pivot 2.22045e-14
> matrix ordering: nd
> factor fill ratio given 5., needed 5.48356
> Factored matrix follows:
> Mat Object: 1 MPI processes
> type: seqaij
> rows=11368, cols=11368
> package used to perform factorization: petsc
> total: nonzeros=234554, allocated nonzeros=234554
> 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=11368, cols=11368
> total: nonzeros=42774, allocated nonzeros=56840
> total number of mallocs used during MatSetValues calls =0
> not using I-node routines
> Are there any other examples of Picard methods? I'm very interested in this method.
>
> 2. I found that in ex15.c and ex19.c use the NonlinearGS. I know it's a iterative method. I don't know how to use this method in above examples. As for as I know, NonlinearGS is an iterative method parallel to subspace method. NonlinearGS should not be required if subspace methods are used.
>
> Thanks,
> Yingjie
>
>
More information about the petsc-users
mailing list