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