Api for different sparse matrix solvers
Warning
If WITH_MA48 has been set to true, you are supposed to have the license for the HSL MA48 use. By default the HSL MA48 are not provided here.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=I4), | private, | parameter | :: | MA48 | = | 0 |
code for Ma48 solver type |
integer(kind=I4), | public, | parameter | :: | MUMP | = | 2 |
code for MUMPS solver type |
integer(kind=I4), | public | :: | SOLVER_BS | = | -1 |
solver used for bottom scale grids [not used by the present module] |
|
integer(kind=I4), | public | :: | SOLVER_TS | = | -1 |
solver used for top scale grids [not used by the present module] |
|
integer(kind=I4), | public, | parameter | :: | SULU | = | 1 |
code for SUPER LU solver type |
integer(kind=I4), | public, | parameter | :: | UMFP | = | 3 |
code for UMFPACK solver type |
All the stuff needed by HSL_MA48
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(MA48_AINFO), | public | :: | ainf | ||||
type(MA48_CONTROL), | public | :: | ctrl | ||||
type(MA48_FACTORS), | public | :: | fact | ||||
integer(kind=I4), | public | :: | fast | ||||
type(MA48_FINFO), | public | :: | finf | ||||
real(kind=R8), | public, | dimension(2) | :: | resid | |||
type(MA48_SINFO), | public | :: | sinf | ||||
type(ZD11_TYPE), | public | :: | zmat |
MUSST high level system type
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=R8), | public, | dimension(:), allocatable | :: | a_elt |
unassembled rigidity matrix |
||
logical(kind=I4), | public | :: | ana | = | .false. |
the system is analyzed |
|
real(kind=R8), | public, | dimension(:), allocatable | :: | b |
right hand side vector |
||
integer(kind=I4), | public | :: | code |
error code [not used yet] |
|||
integer(kind=I4), | public, | dimension(:), allocatable | :: | eltptr |
element rows pointer |
||
integer(kind=I4), | public, | dimension(:), allocatable | :: | eltvar |
rows in assembled matrix |
||
logical(kind=I4), | public | :: | end | = | .false. |
the system is closed |
|
real(kind=R8), | public | :: | error |
error value [not used yet] |
|||
logical(kind=I4), | public | :: | fac | = | .false. |
the system is factorized |
|
logical(kind=I4), | public | :: | fre | = | .false. |
the system is freed |
|
logical(kind=I4), | public | :: | ini | = | .false. |
the system is initialized |
|
integer(kind=I4), | public, | dimension(:), allocatable | :: | irow |
line number |
||
integer(kind=I4), | public, | dimension(:), allocatable | :: | jcol |
column number |
||
integer(kind=I4), | public, | dimension(:), allocatable | :: | jptr |
line pointer |
||
type(MAT_MA48), | public | :: | matma48 |
matrices for ma48 solver |
|||
type(MAT_MUMP), | public | :: | matmump |
matrices for mumps solver |
|||
type(MAT_SULU), | public | :: | matsulu |
matrices for SuperLu solver |
|||
type(MAT_UMFP), | public | :: | matumfp |
matrices for Umfpack solver |
|||
character(len=1024), | public | :: | mess |
message [not used yet] |
|||
integer(kind=I4), | public | :: | ne |
number of elements |
|||
integer(kind=I4), | public | :: | nn |
number of nodes |
|||
integer(kind=I4), | public | :: | nt |
number of a priori non-zero terms in the matrix |
|||
integer(kind=I4), | public | :: | nvar |
eltvar length ( if 4-nodes elt -> 2 lines X number of elemental matrices) |
|||
integer(kind=I4), | public | :: | nz |
number of non-zero terms in the matrix |
|||
integer(kind=I4), | public | :: | slv_t |
solver type |
|||
logical(kind=I4), | public | :: | sol | = | .false. |
the system is solved |
|
real(kind=R8), | public, | dimension(:), allocatable | :: | x |
unknwon vector |
All the stuff needed by UMFPACK
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=R8), | public, | dimension(0:UMFPACK_CONTROL-1) | :: | c_control | |||
real(kind=R8), | public, | dimension(0:UMFPACK_INFO -1) | :: | c_info | |||
type(c_ptr), | public | :: | c_numeric | ||||
type(c_ptr), | public | :: | c_symbolic |
Subroutine to analyse, factorize (symbolic) the matrix of the system
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout), | target | :: | mat |
high level system type |
Subroutine to close the solver
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout) | :: | mat |
high level system type |
Compressed Column Storage (CCS) is also called the Harwell-Boeing sparse matrix format.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout), | target | :: | mat |
high level system type |
Subroutine to factorize the matrix of the system
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout) | :: | mat |
high level system type |
Subroutine to free the factors if applicable
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout) | :: | mat |
high level system type |
Subroutine to transform the elemental entries into assembled CC vectors
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout), | target | :: | mat |
high level system type |
Subroutine to initialize the matrices of the solver
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout) | :: | mat |
high level system type |
Subroutine to solve the system (sparse A)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout), | target | :: | mat |
high level system type |
General hat subroutine that handles the resolution steps:
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(MAT_SOLV), | intent(inout) | :: | mat |
high level system type |
||
character(len=*), | intent(in) | :: | step |
‘ini’=initialize, ‘ana’=analyze, ‘fac’=factorize, ‘sol’=solve, ‘fre’=free memory, ‘end’=close solver |