This README file describes the parameters mechanism for controlling the
linear solver underlying the finite element interface.
In general, the parameters mechanism accepts a collection of strings
in the style of the "argc" and "argv" parameters for C programs.
The ISIS++ fei implementation currently accepts the following
parameter-names, and corresponding values:
parameter-name value
---------------------------------
solver cg
cgs
bicgstab
qmr
gmres
fgmres
defgmres
preconditioner identity (no preconditioning)
diagonal (point-wise diagonal scaling)
polynomial (neumann or least-squares polynomial)
bj (block-jacobi)
rowScale true (turns on row-wise scaling of the matrix)
false ( off )
colScale true (turns on column-wise scaling of the matrix)
false ( off )
When the FEI function iterateToSolve is called to launch the iterative
solver, the user-supplied parameters are also passed on to the solver
and preconditioner being used. The valid values vary to some extent
from one solver to another, but all ISIS++ solvers accept the
parameters:
maxIterations (value should be some integer)
tolerance (some floating-point number, like 1.e-10)
Parameters to particular preconditioners and solvers in ISIS++ include the
following:
*************************
Polynomial preconditioner
parameter-name value
------------------------
polyType 1 (Neumann polynomial)
polyType 2 (Least Squares polynomial)
polyOrder <n> (Order or degree of the polynomial)
***************************
Block Jacobi preconditioner
parameter-name value
------------------------
blockSize <n> (Size of diagonal blocks to be inverted)
blockType 1 (Non-overlapping blocks)
blockType 2 (Overlapping blocks, but not across
processor boundaries.)
*************************
All GMRES solver variants
parameter-name value
------------------------
restart <n> (Size of the Krylov subspace between restarts)
Note: additional ISIS++ solvers and preconditioners to be added:
Other ISIS++ solvers and preconditioners which are not yet supported
through the FEI include:
Krylov solvers:
CGNE
CGNR
Preconditioners:
CGNE_Diagonal
CGNE_BlockJacobi
CGNE_Polynomial
CGNR_Polynomial
SPAI (Sparse Approximate Inverse)
(SPAI accepts several control parameters, to be
documented here later.)
These will be enabled in an upcoming fei-isis code relese.
Additionally, if preconditioners from CASC (LLNL) are (separately)
installed, we will be able to turn on recognition of these preconditioners:
SAILS
PILUT
AMGe
(the SAILS preconditioner is actually installed as part of the ISIS++
distribution, and can be enabled any time.)
(I'm putting together some actual FEI usage documentation, but it isn't
available yet.)
Alan Williams (william@ca.sandia.gov)