|
|
|
@ -201,6 +201,52 @@ Module mld_krylov_mod
|
|
|
|
|
contains
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
|
! File: mld_krylov_mod.f90
|
|
|
|
|
!
|
|
|
|
|
! Subroutine: mld_dkrylov
|
|
|
|
|
!
|
|
|
|
|
! Front-end for the Krylov subspace iterations, real version
|
|
|
|
|
!
|
|
|
|
|
! Arguments:
|
|
|
|
|
!
|
|
|
|
|
! methd - character The specific method; can take the values:
|
|
|
|
|
! CG
|
|
|
|
|
! CGS
|
|
|
|
|
! BICG
|
|
|
|
|
! BICGSTAB
|
|
|
|
|
! BICGSTABL
|
|
|
|
|
! RGMRES
|
|
|
|
|
!
|
|
|
|
|
! a - type(<psb_dspmat_type>) Input: sparse matrix containing A.
|
|
|
|
|
! prec - type(<mld_dprec_type>) Input: preconditioner
|
|
|
|
|
! b - real,dimension(:) Input: vector containing the
|
|
|
|
|
! right hand side B
|
|
|
|
|
! x - real,dimension(:) Input/Output: vector containing the
|
|
|
|
|
! initial guess and final solution X.
|
|
|
|
|
! eps - real Input: Stopping tolerance; the iteration is
|
|
|
|
|
! stopped when the error estimate
|
|
|
|
|
! |err| <= eps
|
|
|
|
|
! desc_a - type(<psb_desc_type>). Input: The communication descriptor.
|
|
|
|
|
! info - integer. Output: Return code
|
|
|
|
|
!
|
|
|
|
|
! itmax - integer(optional) Input: maximum number of iterations to be
|
|
|
|
|
! performed.
|
|
|
|
|
! iter - integer(optional) Output: how many iterations have been
|
|
|
|
|
! performed.
|
|
|
|
|
! err - real (optional) Output: error estimate on exit
|
|
|
|
|
! itrace - integer(optional) Input: print an informational message
|
|
|
|
|
! with the error estimate every itrace
|
|
|
|
|
! iterations
|
|
|
|
|
! irst - integer(optional) Input: restart parameter for RGMRES and
|
|
|
|
|
! BICGSTAB(L) methods
|
|
|
|
|
! istop - integer(optional) Input: stopping criterion, or how
|
|
|
|
|
! to estimate the error.
|
|
|
|
|
! 1: err = |r|/|b|
|
|
|
|
|
! 2: err = |r|/(|a||x|+|b|)
|
|
|
|
|
! where r is the (preconditioned, recursive
|
|
|
|
|
! estimate of) residual
|
|
|
|
|
!
|
|
|
|
|
Subroutine mld_dkrylov(method,a,prec,b,x,eps,desc_a,info,&
|
|
|
|
|
&itmax,iter,err,itrace,irst,istop)
|
|
|
|
|
|
|
|
|
@ -274,6 +320,50 @@ contains
|
|
|
|
|
end subroutine mld_dkrylov
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
|
! File: mld_krylov_mod.f90
|
|
|
|
|
!
|
|
|
|
|
! Subroutine: mld_zkrylov
|
|
|
|
|
!
|
|
|
|
|
! Front-end for the Krylov subspace iterations, complexversion
|
|
|
|
|
!
|
|
|
|
|
! Arguments:
|
|
|
|
|
!
|
|
|
|
|
! methd - character The specific method; can take the values:
|
|
|
|
|
! CGS
|
|
|
|
|
! BICGSTAB
|
|
|
|
|
! RGMRES
|
|
|
|
|
!
|
|
|
|
|
! a - type(<psb_zspmat_type>) Input: sparse matrix containing A.
|
|
|
|
|
! prec - type(<mld_zprec_type>) Input: preconditioner
|
|
|
|
|
! b - complex,dimension(:) Input: vector containing the
|
|
|
|
|
! right hand side B
|
|
|
|
|
! x - complex,dimension(:) Input/Output: vector containing the
|
|
|
|
|
! initial guess and final solution X.
|
|
|
|
|
! eps - real Input: Stopping tolerance; the iteration is
|
|
|
|
|
! stopped when the error estimate
|
|
|
|
|
! |err| <= eps
|
|
|
|
|
! desc_a - type(<psb_desc_type>). Input: The communication descriptor.
|
|
|
|
|
! info - integer. Output: Return code
|
|
|
|
|
!
|
|
|
|
|
! itmax - integer(optional) Input: maximum number of iterations to be
|
|
|
|
|
! performed.
|
|
|
|
|
! iter - integer(optional) Output: how many iterations have been
|
|
|
|
|
! performed.
|
|
|
|
|
! err - real (optional) Output: error estimate on exit
|
|
|
|
|
! itrace - integer(optional) Input: print an informational message
|
|
|
|
|
! with the error estimate every itrace
|
|
|
|
|
! iterations
|
|
|
|
|
! irst - integer(optional) Input: restart parameter for RGMRES and
|
|
|
|
|
! BICGSTAB(L) methods
|
|
|
|
|
! istop - integer(optional) Input: stopping criterion, or how
|
|
|
|
|
! to estimate the error.
|
|
|
|
|
! 1: err = |r|/|b|
|
|
|
|
|
! 2: err = |r|/(|a||x|+|b|)
|
|
|
|
|
! where r is the (preconditioned, recursive
|
|
|
|
|
! estimate of) residual
|
|
|
|
|
!
|
|
|
|
|
Subroutine mld_zkrylov(method,a,prec,b,x,eps,desc_a,info,&
|
|
|
|
|
&itmax,iter,err,itrace,irst,istop)
|
|
|
|
|
use psb_base_mod
|
|
|
|
|