![]() |
FSAIPACK Documentation
vers. 1.0
|
Module collecting all the FSAIPACK methods to compute sparse approximate inverses in factored form. More...
Public Member Functions | |
| integer function | MK_patt (tau_in, mu_min_in, kpow_in, mu_max_in, parDTSTR, A, PATTERN_OUT, PATTERN_IN) |
| Pattern construction for static FSAI computation. | |
| integer function | CPT_static_FSAI (parDTSTR, A, PATTERN_IN, FSAI) |
| Computes the FSAI coefficients for a statically given input pattern. | |
| integer function | CPT_adapt_FSAI (n_step_in, step_size_in, tau_in, eps_in, parDTSTR, A, FSAI) |
| Computes a FSAI preconditioner by an adaptive procedure optionally starting from an input factor. | |
| integer function | CPT_projection_FSAI (n_iter_in, nt_ret_in, tau_in, eps_in, parDTSTR, A, FSAI, F, FT) |
| Computes the FSAI preconditioner through a projective strategy. In the present version a dropped Steepest Descent is used. | |
| integer function | FILTER_FSAI (nnzr_max_in, tau_in, parDTSTR, A, FSAI) |
| Filters a given FSAI preconditioner neglecting smallest elements. | |
| integer function | CPT_preconditioned_Matix (nnzr_max_in, tau_in, parDTSTR, A, G, GT, B) |
| Computes a dropped preconditioned matrix B = drop{[G][A][G]T}, where G is a previously computed FSAI preconditioner for A. | |
| integer function | TRANSPOSE_FSAI (parDTSTR, FSAI, FSAI_T) |
| Transposes a given FSAI preconditioner. | |
| subroutine | ERRCHK_FSAIPACK (ounit, method_name, ierr) |
| Error interpreter for the FSAIPACK methods. | |
Module collecting all the FSAIPACK methods to compute sparse approximate inverses in factored form.
This module contains all the methods used to compute sparse approximate inverses in factored form. All the algorithms presented in [1] are available.
[1] 'FSAIPACK: a software package for high performance FSAI preconditioning', C. Janna et al., ACM Transactions on Mathematical Software, submitted.
| integer function class_FSAIPACK::CPT_adapt_FSAI | ( | integer, intent(in) | n_step_in, |
| integer, intent(in) | step_size_in, | ||
| real(kind=double), intent(in) | tau_in, | ||
| real(kind=double), intent(in) | eps_in, | ||
| type(OMPDTSTR), intent(in) | parDTSTR, | ||
| type(CSRMAT), intent(in) | A, | ||
| type(CSRMAT), intent(inout) | FSAI | ||
| ) |
Computes a FSAI preconditioner by an adaptive procedure optionally starting from an input factor.
Computes a FSAI preconditioner by an adaptive procedure optionally starting from an input factor. If the FSAI variable is already allocated on entry, it is used as starting point for the adaptive procedure.
| integer function class_FSAIPACK::CPT_preconditioned_Matix | ( | integer, intent(in) | nnzr_max_in, |
| real(kind=double), intent(in) | tau_in, | ||
| type(OMPDTSTR), intent(in) | parDTSTR, | ||
| type(CSRMAT), intent(in) | A, | ||
| type(CSRMAT), intent(in) | G, | ||
| type(CSRMAT), intent(in) | GT, | ||
| type(CSRMAT), intent(inout) | B | ||
| ) |
Computes a dropped preconditioned matrix B = drop{[G][A][G]T}, where G is a previously computed FSAI preconditioner for A.
Computes a dropped preconditioned matrix B = drop{[G][A][G]T}, where G is a previously computed FSAI preconditioner for A.
| integer function class_FSAIPACK::CPT_projection_FSAI | ( | integer, intent(in) | n_iter_in, |
| integer, intent(in) | nt_ret_in, | ||
| real(kind=double), intent(in) | tau_in, | ||
| real(kind=double), intent(in) | eps_in, | ||
| type(OMPDTSTR), intent(in) | parDTSTR, | ||
| type(CSRMAT), intent(in) | A, | ||
| type(CSRMAT), intent(inout) | FSAI, | ||
| type(CSRMAT), intent(in), optional | F, | ||
| type(CSRMAT), intent(in), optional | FT | ||
| ) |
Computes the FSAI preconditioner through a projective strategy. In the present version a dropped Steepest Descent is used.
Computes the FSAI preconditioner through a projective strategy. In the present version a dropped Steepest Descent is used. It is possible to start from a tentative FSAI preconditione given as optional input as well as using an input FSAI to precondition the Steepest Descent. If the FSAI variable is already allocated on entry, it is used as starting point for the iterative procedure.
Note: the program will work correctly even if F and FT are not lower and upper triangular, they only need to represent a proper preconditioner for A.
| integer function class_FSAIPACK::CPT_static_FSAI | ( | type(OMPDTSTR), intent(in) | parDTSTR, |
| type(CSRMAT), intent(in) | A, | ||
| type(Pattern), intent(in) | PATTERN_IN, | ||
| type(CSRMAT), intent(inout) | FSAI | ||
| ) |
Computes the FSAI coefficients for a statically given input pattern.
This function computes the coefficients of FSAI corresponding to previously computed pattern given as Input. The content of the variable used as Input pattern becomes part of the preconditioner variable. If the variable for the preconditioner contains some data on entry, it is deleted before computation.
| subroutine class_FSAIPACK::ERRCHK_FSAIPACK | ( | integer, intent(in) | ounit, |
| character(len=*), intent(in) | method_name, | ||
| integer, intent(in) | ierr | ||
| ) |
Error interpreter for the FSAIPACK methods.
Interprets and prints to an output unit the error messages from the FSAIPACK methods.
| integer function class_FSAIPACK::FILTER_FSAI | ( | integer, intent(in) | nnzr_max_in, |
| real(kind=double), intent(in) | tau_in, | ||
| type(OMPDTSTR), intent(in) | parDTSTR, | ||
| type(CSRMAT), intent(in) | A, | ||
| type(CSRMAT), intent(inout) | FSAI | ||
| ) |
Filters a given FSAI preconditioner neglecting smallest elements.
Filters a given FSAI preconditioner neglecting smallest elements with a dual drop strategy. The input preconditioner is replaced by a sparser one in the same variable.
| integer function class_FSAIPACK::MK_patt | ( | real(kind=double), intent(in) | tau_in, |
| real(kind=double), intent(in) | mu_min_in, | ||
| integer, intent(in) | kpow_in, | ||
| real(kind=double), intent(in) | mu_max_in, | ||
| type(OMPDTSTR), intent(in) | parDTSTR, | ||
| type(CSRMAT), intent(in) | A, | ||
| type(Pattern), intent(inout) | PATTERN_OUT, | ||
| type(Pattern), intent(in), optional | PATTERN_IN | ||
| ) |
Pattern construction for static FSAI computation.
This function creates a pattern for static FSAI computation. First a prefiltration of the input matrix A is applied. If the density of {A} (A after prefiltration) is lower then mu_min, then the prefiltration tolerance is reduced. Then it computes kpow-th times power_PATT: {A}*LOW( {A}*LOW( {A}*LOW( {A}*LOW({A} )))) where LOW(*) is a matrix function that returns the lower part of a matrix. This procedure terminates also if the density mu_max is reached. If the optional parameter PATTERN_IN is present, the function skips prefiltration and only the kpow computation is executed.
| integer function class_FSAIPACK::TRANSPOSE_FSAI | ( | type(OMPDTSTR), intent(in) | parDTSTR, |
| type(CSRMAT), intent(in) | FSAI, | ||
| type(CSRMAT), intent(inout) | FSAI_T | ||
| ) |
Transposes a given FSAI preconditioner.
Transposes a given FSAI preconditioner.