Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
itersolve Module Reference
integer, parameter stack_max =64
 
integer stack_pos =0
 
logical, dimension(stack_maxfirstcall
 
double precision function stopc (x, b, r, ipar, dpar)
 
subroutine pcond_dummy (u, v, ipar)
 
subroutine pcond_dummy_cmplx (u, v, ipar)
 
recursive subroutine itersolver (A, x, b, Solver, ndim, DotF, NormF, MatvecF, PrecF, StopcF)
 

Member Function/Subroutine Documentation

recursive subroutine itersolve::itersolver ( type(matrix_t), target  A,
real(kind=dp), dimension(:)  x,
real(kind=dp), dimension(:)  b,
type(solver_t)  Solver,
integer, optional  ndim,
integer(kind=addrint), optional  DotF,
integer(kind=addrint), optional  NormF,
integer(kind=addrint), optional  MatvecF,
integer(kind=addrint), optional  PrecF,
integer(kind=addrint), optional  StopcF 
)

The routine that decides which linear system solver to call, and calls it. There are two main sources of iterations within Elmer. 1) The old HUTiter C++ library that includes the most classic iterative Krylov methods. 2) The internal MODULE IterativeMethods that includes some classic iterative methods and also some more recent Krylov methods.

References generalutils::allocatematrix(), crsmatrix::crs_blockdiagonal(), crsmatrix::crs_complexdiagprecondition(), crsmatrix::crs_complexilut(), crsmatrix::crs_complexincompletelu(), crsmatrix::crs_complexluprecondition(), crsmatrix::crs_complexmatrixvectorprod(), crsmatrix::crs_diagprecondition(), crsmatrix::crs_ilut(), crsmatrix::crs_incompletelu(), crsmatrix::crs_luprecondition(), crsmatrix::crs_matrixvectorprod(), messages::error(), messages::fatal(), messages::info(), iterativemethods::itermethod_bicgstabl(), iterativemethods::itermethod_gcr(), iterativemethods::itermethod_jacobi(), iterativemethods::itermethod_richardson(), iterativemethods::itermethod_sgs(), iterativemethods::itermethod_z_bicgstabl(), iterativemethods::itermethod_z_gcr(), listmatrix::list_addtomatrixelement(), listmatrix::list_tocrsmatrix(), lists::listgetconstreal(), lists::listgetcreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), multigridprec(), pcond_dummy(), pcond_dummy_cmplx(), solver(), stopc(), vankaprec(), and messages::warn().

Referenced by multigrid::amgsolve(), eigensolve::arpackeigensolve(), eigensolve::arpackeigensolvecomplex(), eigensolve::arpackstabeigensolve(), blocksolve::blockkryloviter(), blocksolve::blockmatrixprec(), multigrid::cmgsolve(), fetisolve::feti(), gebhardtfactors(), modeldescription::getnodalelementsize(), multigrid::gmgsolve(), solverutils::mortarrobinsolver(), multigrid::pmgsolve(), freesurface::poissonsolve(), radiationfactors(), sparitersolve::solve(), and solverutils::solvelinearsystem().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine itersolve::pcond_dummy ( real(kind=dp), dimension(huti_ndim)  u,
real(kind=dp), dimension(huti_ndim)  v,
integer, dimension(*)  ipar 
)

Dummy preconditioner, if linear system scaling is active this corresponds to diagonal preconditioning.

Referenced by itersolver().

Here is the caller graph for this function:

subroutine itersolve::pcond_dummy_cmplx ( complex(kind=dp), dimension(huti_ndim)  u,
complex(kind=dp), dimension(huti_ndim)  v,
integer, dimension(*)  ipar 
)

Complex dummy preconditioner, if linear system scaling is active this corresponds to diagonal preconditioning.

Referenced by itersolver().

Here is the caller graph for this function:

double precision function itersolve::stopc ( double precision, dimension(*)  x,
double precision, dimension(*)  b,
double precision, dimension(*)  r,
integer, dimension(*)  ipar,
double precision, dimension(*)  dpar 
)

We don't use the backward error estimate e = ||Ax-b||/(||A|| ||x|| + ||b||) as stopping criteriation.

References crsmatrix::crs_matrixvectormultiply().

Referenced by itersolver().

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

logical, dimension(stack_max) itersolve::firstcall
integer, parameter itersolve::stack_max =64
integer itersolve::stack_pos =0

The documentation for this module was generated from the following file: