PMD_Solve_Info_1DD - Sets the maximun iteration number and get
the iteration number to convergence.
OldMax=PMD_Solve_Info_1DD(Method=method[, SetMax=MaxIter][, GetIter=NIter] )
<IN> method : PMD handel of type PMD_R4_PCG_Jacobi
or PMD_R8_PCG_Jacobi or PMD_R4_BICG_Jacobi
or PMD_R8_BICG_Jacobi.
This allows the user to point to the PCG (Preconditioned
Conjugate Gradient) or BICG (Bi-CGstab) solver using the Jacobi Preconditionner.
<IN> MaxIter : OPTIONAL parameter. (If specified) INTEGER scalar.
Sets the maximum iteration number.
The default is equal to the global Schur Matrix order
(see PMD_Schur_1DD routine).
<OUT> NIter : OPTIONAL parameter. (If specified) INTEGER scalar.
Returns the number of iterations to convergence. We assume
that convergence is reached when the norm of the residu
is <= than EPSILON(1.0_R[4 or 8]).
<OUT> OldMax : INTEGER. Returns the last saved maximum iteration number.
This function might be useful when parallel iterative solvers are used. Obviously, there is no need to use such a function with direct parallel solvers.
USE PMD
INCLUDE "mpif.h"
TYPE(PMD_Comm_2D) :: comm
TYPE(PMD_R8_Schur) :: schur
TYPE(PMD_R8_PCG_Jacobi) :: method
INTEGER :: Info, OldMax, MaxIter, Niter
...
CALL MPI_INIT( Info )
CALL PMD_Init_1DD( MPI_COMM_WORLD, Comm )
CALL PMD_Schur_1DD( comm, ..., ..., ..., schur )
CALL PMD_Schur_Precond_1DD( comm, schur, method )
...
MaxIter=90
OldMax=PMD_Solve_Info_1DD( Method=method, SetMax=MaxIter )
CALL PMD_Solve_1DD( comm, ..., ..., Schur, method, ..., ... )
OldMax=PMD_Solve_Info_1DD( Method=method, GetIter=Niter )
PRINT *,"PCG iteration number to convergence: ", Niter
...