SNES Convergence test

Michel Cancelliere michel.cancelliere at polito.it
Wed Jul 22 06:28:15 CDT 2009


Hi there,

I am having problems with the SNES,  it seems that changing atol or rtol
have no effect on the numbers of Newton Iterations. Do you think that it can
be a problem of settings in snes solver or maybe a problem on the routines
for Jacobian matrix evaluation? The linear solver do converge at each
nonlinear iterations.

*My Code*

 ierr = SNESCreate(PETSC_COMM_WORLD,&snes);CHKERRQ(ierr);

  /********************************************************/
  /*    Creation of the matrix and vector data structures*/
  /********************************************************/
  ierr = VecCreate(PETSC_COMM_WORLD,&x); CHKERRQ(ierr);
  ierr = VecSetSizes(x,PETSC_DECIDE,2*input.grid.N); CHKERRQ(ierr);
  ierr = VecSetFromOptions(x); CHKERRQ(ierr);
  ierr = VecDuplicate(x,&R);CHKERRQ(ierr);

   ierr = MatCreate(PETSC_COMM_WORLD,&J);CHKERRQ(ierr);
  ierr =
MatSetSizes(J,PETSC_DECIDE,PETSC_DECIDE,2*input.grid.N,2*input.grid.N);CHKERRQ(ierr);
  ierr = MatSetFromOptions(J);CHKERRQ(ierr);


  ///Set function evaluation routine and vector

   // Assign global variable which is used in the static wrapper function
  pt2Object  = (void*) &system;
  pt2Object2 = (void*) &system;
  ierr =
SNESSetFunction(snes,R,CSystem::Wrapper_to_FormFunction,&input);CHKERRQ(ierr);

  // Set Jacobian matrix structure and Jacobian evaluation routine
  ierr =
SNESSetJacobian(snes,J,J,CSystem::Wrapper_to_FormJacobian,&input);CHKERRQ(ierr);

 /**      Customizr non linear solver; set runtime options       ***/
/* Set linear solver defaults for this problem. By extracting the KSP,and PC
contexts from
the SNES context, we can then directly call any KSP and PC routines to set
various options*/

  ierr = SNESGetKSP(snes,&ksp);CHKERRQ(ierr);
  ierr = KSPGetPC(ksp,&pc);CHKERRQ(ierr);
  ierr = PCSetType(pc,PCILU);CHKERRQ(ierr);
  ierr =
KSPSetTolerances(ksp,1.e-10,PETSC_DEFAULT,PETSC_DEFAULT,30);CHKERRQ(ierr);
  ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);



  /*
    Set SNES/KSP/PC rountime options, e.g.,
    -snes_view -snes_monitor -ksp_type <ksp> -pc_type <pc>
    These options will override thos specified above as lon as
SNESSetFromOptoons is called _after_ any other customization routines.
  */

  ierr
=SNESSetTolerances(snes,1e-100,1e-8,1e-1000,100,1000);CHKERRQ(ierr);  * No
matter what I put here I am getting the same results (Residual Norm and
number of iterations)*
  ierr = SNESSetFromOptions(snes);CHKERRQ(ierr);

  /*---------------------------------------------------------------
            Evaluate initial guess; then solve nonlinear system
  -----------------------------------------------------------------*/


  ierr = CSystem::Cells2Vec(x,input);CHKERRQ(ierr);


 for (int i=0;i<system.delta_t_V.size();i++){// for (int i=0;i<700;i++)
      system.delta_t = system.delta_t_V[i];
      system.t         = system.t_V[i];
      input.t = system.t;
      input.delta_t = system.delta_t;
     /*\\\\\\\\\\\\\\Boundary conditions\\\\\\\\\\\\\\\\*/
      Rate_tot = input.F_boundary(input.t,input.delta_t);
      input.bc.F(input.interfaces,Rate_tot);

      ierr = SNESSolve(snes,PETSC_NULL,x);CHKERRQ(ierr);
      gauge.push_back(input.cells[0].water.p);
  }







 ierr = VecDestroy(x);CHKERRQ(ierr);
 ierr = VecDestroy(R);CHKERRQ(ierr);
 ierr = MatDestroy(J);CHKERRQ(ierr);
 ierr = SNESDestroy(snes);CHKERRQ(ierr);
  ierr = PetscFinalize();CHKERRQ(ierr);
  return 0;
}


*Output:*
SNES Object:
  type: ls
    line search variant: SNESLineSearchCubic
    alpha=0.0001, maxstep=1e+008, minlambda=1e-012
  maximum iterations=20, maximum function evaluations=1000
  tolerances: relative=1e-008, absolute=1e-100, solution=0
  total number of linear solver iterations=2
  total number of function evaluations=13
  KSP Object:
    type: gmres
      GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
Orthogonalization with no iterative refinement
      GMRES: happy breakdown tolerance 1e-030
    maximum iterations=30, initial guess is zero
    tolerances:  relative=1e-010, absolute=1e-050, divergence=10000
    left preconditioning
  PC Object:
    type: ilu
      ILU: 0 levels of fill
      ILU: factor fill ratio allocated 1
      ILU: tolerance for zero pivot 1e-012
      ILU: using diagonal shift to prevent zero pivot
      ILU: using diagonal shift on blocks to prevent zero pivot
           out-of-place factorization
           matrix ordering: natural
      ILU: factor fill ratio needed 0
           Factored matrix follows
          Matrix Object:
            type=seqbaij, rows=64, cols=64
            package used to perform factorization: petsc
            total: nonzeros=376, allocated nonzeros=920
                block size is 1
    linear system matrix = precond matrix:
    Matrix Object:
      type=seqbaij, rows=64, cols=64
      total: nonzeros=376, allocated nonzeros=920
          block size is 1
************************************************************************************************************************
***             WIDEN YOUR WINDOW TO 120 CHARACTERS.  Use 'enscript -r
-fCourier9' to print this document            ***
************************************************************************************************************************

---------------------------------------------- PETSc Performance Summary:
----------------------------------------------

ex2.exe on a cygwin-c- named IDROCP03 with 1 processor, by Administrator Wed
Jul 22 13:25:47 2009
Using Petsc Release Version 3.0.0, Patch 6, Fri Jun  5 13:31:12 CDT 2009

                         Max       Max/Min        Avg      Total
Time (sec):           4.667e-001      1.00000   4.667e-001
Objects:              2.800e+001      1.00000   2.800e+001
Flops:                1.417e+004      1.00000   1.417e+004  1.417e+004
Flops/sec:            3.037e+004      1.00000   3.037e+004  3.037e+004
Memory:               9.325e+004      1.00000              9.325e+004
MPI Messages:         0.000e+000      0.00000   0.000e+000  0.000e+000
MPI Message Lengths:  0.000e+000      0.00000   0.000e+000  0.000e+000
MPI Reductions:       0.000e+000      0.00000

Flop counting convention: 1 flop = 1 real number operation of type
(multiply/divide/add/subtract)
                            e.g., VecAXPY() for real vectors of length N -->
2N flops
                            and VecAXPY() for complex vectors of length N
--> 8N flops

Summary of Stages:   ----- Time ------  ----- Flops -----  --- Messages ---
-- Message Lengths --  -- Reductions --
                        Avg     %Total     Avg     %Total   counts
%Total     Avg         %Total   counts   %Total
 0:      Main Stage: 4.6669e-001 100.0%  1.4174e+004 100.0%  0.000e+000
0.0%  0.000e+000        0.0%  0.000e+000   0.0%

------------------------------------------------------------------------------------------------------------------------
See the 'Profiling' chapter of the users' manual for details on interpreting
output.
Phase summary info:
   Count: number of times phase was executed
   Time and Flops: Max - maximum over all processors
                   Ratio - ratio of maximum to minimum over all processors
   Mess: number of messages sent
   Avg. len: average message length
   Reduct: number of global reductions
   Global: entire computation
   Stage: stages of a computation. Set stages with PetscLogStagePush() and
PetscLogStagePop().
      %T - percent time in this phase         %F - percent flops in this
phase
      %M - percent messages in this phase     %L - percent message lengths
in this phase
      %R - percent reductions in this phase
   Total Mflop/s: 10e-6 * (sum of flops over all processors)/(max time over
all processors)
------------------------------------------------------------------------------------------------------------------------


      ##########################################################
      #                                                        #
      #                          WARNING!!!                    #
      #                                                        #
      #   This code was compiled with a debugging option,      #
      #   To get timing results run config/configure.py        #
      #   using --with-debugging=no, the performance will      #
      #   be generally two or three times faster.              #
      #                                                        #
      ##########################################################


Event                Count      Time (sec)
Flops                             --- Global ---  --- Stage ---   Total
                   Max Ratio  Max     Ratio   Max  Ratio  Mess   Avg len
Reduct  %T %F %M %L %R  %T %F %M %L %R Mflop/s
------------------------------------------------------------------------------------------------------------------------

--- Event Stage 0: Main Stage

SNESSolve              1 1.0 2.7082e-001 1.0 1.42e+004 1.0 0.0e+000 0.0e+000
0.0e+000 58100  0  0  0  58100  0  0  0     0
SNESLineSearch         2 1.0 2.9807e-002 1.0 4.94e+003 1.0 0.0e+000 0.0e+000
0.0e+000  6 35  0  0  0   6 35  0  0  0     0
SNESFunctionEval      13 1.0 3.2095e-002 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  7  0  0  0  0   7  0  0  0  0     0
SNESJacobianEval       2 1.0 2.5123e-003 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  1  0  0  0  0   1  0  0  0  0     0
VecView                2 1.0 2.3364e-001 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000 50  0  0  0  0  50  0  0  0  0     0
VecDot                 2 1.0 1.2292e-005 1.0 2.54e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  2  0  0  0   0  2  0  0  0    21
VecMDot                2 1.0 1.0337e-005 1.0 2.54e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  2  0  0  0   0  2  0  0  0    25
VecNorm               20 1.0 1.1873e-004 1.0 2.54e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 18  0  0  0   0 18  0  0  0    21
VecScale               4 1.0 1.7321e-005 1.0 2.56e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  2  0  0  0   0  2  0  0  0    15
VecCopy                6 1.0 2.6819e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
VecSet                 5 1.0 1.9835e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
VecAXPY                2 1.0 1.0337e-005 1.0 2.56e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  2  0  0  0   0  2  0  0  0    25
VecWAXPY              12 1.0 5.2521e-005 1.0 1.41e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 10  0  0  0   0 10  0  0  0    27
VecMAXPY               4 1.0 1.7321e-005 1.0 5.12e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  4  0  0  0   0  4  0  0  0    30
VecAssemblyBegin      13 1.0 3.4641e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
VecAssemblyEnd        13 1.0 3.1848e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
VecReduceArith         2 1.0 1.7321e-005 1.0 2.54e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  2  0  0  0   0  2  0  0  0    15
VecReduceComm          1 1.0 3.0730e-006 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
VecNormalize           4 1.0 8.4368e-005 1.0 7.64e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  5  0  0  0   0  5  0  0  0     9
MatMult                4 1.0 4.4978e-005 1.0 2.75e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 19  0  0  0   0 19  0  0  0    61
MatMultTranspose       1 1.0 2.3467e-005 1.0 7.52e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  5  0  0  0   0  5  0  0  0    32
MatSolve               4 1.0 5.6711e-005 1.0 2.75e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 19  0  0  0   0 19  0  0  0    49
MatLUFactorNum         2 1.0 7.7943e-005 1.0 2.06e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 15  0  0  0   0 15  0  0  0    26
MatILUFactorSym        2 1.0 1.9975e-004 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
MatAssemblyBegin       2 1.0 6.7048e-006 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
MatAssemblyEnd         2 1.0 4.1346e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
MatGetRowIJ            2 1.0 1.0895e-005 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
MatGetOrdering         2 1.0 2.0254e-004 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
MatView                2 1.0 5.7549e-004 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
KSPGMRESOrthog         2 1.0 5.6152e-005 1.0 5.10e+002 1.0 0.0e+000 0.0e+000
0.0e+000  0  4  0  0  0   0  4  0  0  0     9
KSPSetup               2 1.0 1.5170e-004 1.0 0.00e+000 0.0 0.0e+000 0.0e+000
0.0e+000  0  0  0  0  0   0  0  0  0  0     0
KSPSolve               2 1.0 1.8486e-003 1.0 7.97e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 56  0  0  0   0 56  0  0  0     4
PCSetUp                2 1.0 1.2032e-003 1.0 2.06e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 15  0  0  0   0 15  0  0  0     2
PCApply                4 1.0 8.7441e-005 1.0 2.75e+003 1.0 0.0e+000 0.0e+000
0.0e+000  0 19  0  0  0   0 19  0  0  0    31
------------------------------------------------------------------------------------------------------------------------

Memory usage is given in bytes:

Object Type          Creations   Destructions   Memory  Descendants' Mem.

--- Event Stage 0: Main Stage

                SNES     1              1        668     0
                 Vec    11             11      13596     0
              Matrix     3              3       7820     0
       Krylov Solver     1              1      17392     0
      Preconditioner     1              1        500     0
              Viewer     2              2        680     0
                Draw     1              1        444     0
                Axis     1              1        308     0
          Line Graph     1              1       1908     0
           Index Set     6              6       3360     0
========================================================================================================================
Average time to get PetscTime(): 2.03937e-006
#PETSc Option Table entries:
-log_summary
-mat_type baij
-snes_max_it 20
-snes_monitor_residual
-snes_view
#End o PETSc Option Table entries
Compiled without FORTRAN kernels
Compiled with full precision matrices (default)
sizeof(short) 2 sizeof(int) 4 sizeof(long) 4 sizeof(void*) 4
sizeof(PetscScalar) 8
Configure run at: Mon Jul  6 16:28:41 2009
Configure options: --with-cc="win32fe cl --nodetect"
--download-c-blas-lapack=1 --with-fc=0 --with-mpi=0 --useThreads=0
--with-shared=0
-----------------------------------------
Libraries compiled on Mon Jul  6 16:39:57     2009 on Idrocp03
Machine characteristics: CYGWIN_NT-5.1 Idrocp03 1.5.25(0.156/4/2) 2008-06-12
19:34 i686 Cygwin
Using PETSc directory: /home/Administrator/petsc
Using PETSc arch: cygwin-c-debug
-----------------------------------------
Using C compiler: /home/Administrator/petsc/bin/win32fe/win32fe cl
--nodetect -MT -wd4996 -Z7
Using Fortran compiler:
-----------------------------------------
Using include paths: -I/home/Administrator/petsc/cygwin-c-debug/include
-I/home/Administrator/petsc/include
-I/home/Administrator/petsc/include/mpiuni
------------------------------------------
Using C linker: /home/Administrator/petsc/bin/win32fe/win32fe cl --nodetect
-MT -wd4996 -Z7
Using Fortran linker:
Using libraries: -L/home/Administrator/petsc/cygwin-c-debug/lib
-L/home/Administrator/petsc/cygwin-c-debug/lib -lpetscts -lpetscsnes
-lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc
-L/home/Administrator/petsc/cygwin-c-debug/lib -lf2clapack -lf2cblas
-lmpiuni Gdi32.lib User32.lib Advapi32.lib Kernel32.lib Ws2_32.lib
------------------------------------------



Thank you in advance for your help,

Michel Cancelliere
Politecnico di Torino
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20090722/93da7165/attachment-0001.htm>


More information about the petsc-users mailing list