Sparse linear solver parameters

The sparselinsolverparams field has the following general syntax:
[lstype$ ^M$ #(in)]
[smtype #(in)]
solverParams$ ^M$ #(string)

where parameter lstype allows to select solver for linear system of equations. Currently supported values are 0 (default) for direct solver (ST_Direct), 1 for Iterative Method Library (IML) solver (ST_IML), 2 for Spooles direct solver, 3 for Petsc library family of solvers, and 4 for DirectSparseSolver (ST_DSS). Parameter smtype allows to select sparse matrix storage scheme. The scheme should be compatible with solver type. Currently supported values (marked as ``id'') are summarized in table (5.1). The 0 value is default and selects the symmetric skyline (SMT_Skyline). Ther possible storage formats include unsymmetric skyline (SMT_SkylineU), compressed column (SMT_CompCol), dynamically growing compressed column (SMT_DynCompCol), symmetric compressed column (SMT_SymCompCol), spooles library storage format (SMT_SpoolesMtrx), PETSc library matrix representation (SMT_PetscMtrx, a sparse serial/parallel matrix in AIJ format), and DSS compatible matrix representations (SMT_DSS_*). The allowed lstype and smtype combinations are summarized in the table (5.1), together with solver parameters related to specific solver.


Table 5.1: Solver and storage scheme compatibility.
Storage format id Sparse solver, lstype    
  smtype Direct (0) IML (1) Spooles (2) Petsc (3) DSS (4) MKLPardiso (6) SuperLU_MT (7)
              Pardiso.org(8)  
SMT_Skyline 0 + +          
SMT_SkylineU 1 + +          
SMT_CompCol 2   +       + +
SMT_DynCompCol 3   +          
SMT_SymCompCol 4   +          
SMT_DynCompRow 5   +          
SMT_SpoolesMtrx 6     +        
SMT_PetscMtrx 7       +      
SMT_DSS_sym_LDL 8         +    
SMT_DSS_sym_LL 9         +    
SMT_DSS_unsym_LU 10         +    


The solver parameters in solverParams depend on the solver type and are summarized in table (5.2).


Table 5.2: Solver parameters.
Solver type id Solver parameters/notes
ST_Direct 0  
ST_IML 1 [stype #(in)] lstol #(rn) lsiter #(in)lsprecond #(in)
    [precondattributes #(string)]
    Included in OOFEM, requires to compile with USE_IML
ST_Spooles 2 [msglvl #(in)] [msgfile #(s)]
    http://www.netlib.org/linalg/spooles/spooles.2.2.html
ST_Petsc 3 See Petsc manual, for details5.1
ST_DSS 4 Sparse direct solver, included in OOFEM
    Requires to compile with USE_DSS
ST_MKLPardiso 6 Requires Intel MKL Pardiso
ST_SuperLU_MT 7 SuperLU for shared memory machines
    http://crd-legacy.lbl.gov/ xiaoye/SuperLU/
ST_PardisoProjectOrg 8 Requires Pardiso solver(http://www.pardiso-project.org/)


The stype allows to select particular iterative solver from IML library, currently supported values are 0 (default) for Conjugate-Gradient solver, 1 for GMRES solver. Parameter lstol represents the maximum value of residual after the final iteration and the lsiter is maximum number of iteration for iterative solver. The precondattributes parameters contains the optional preconditioner parameters. The lsprecond parameter determines the type of preconditioner to be used. The possible values of lsprecond together with supported storage schemes and their descriptions are summarized in table (5.3).


Table 5.3: Preconditioning summary.
Precond type id Compatible storage Description and parameters
IML_VoidPrec 0 all No preconditioning
IML_DiagPrec 1 all Diagonal preconditioning
IML_ILUPrec 2 SMT_CompCol Incomplete LU Decomposition
    SMT_DynCompCol with no fill up
IML_ILUPrec 3 SMT_DynCompRow Incomplete LU (ILUT) with
      fillup.
      The precondattributes are:
      [droptol #(rn)] [partfill #(in)].
      droptol dropping tolerance
      partfill level of fill-up
IML_ICPrec 4 SMT_SymCompCol Incomplete Cholesky
    SMT_CompCol with no fill up


Borek Patzak
2018-01-02