Elmer FEM solver Elmer is an open source finite element software for multiphysical problems
itersolve Module Reference
 integer, parameter stack_max =64 integer stack_pos =0 logical, dimension(stack_max) firstcall 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.

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: