diff --git a/docs/amg4psblas_1.2-guide.pdf b/docs/amg4psblas_1.2-guide.pdf index 93d45fc7..678597b3 100644 Binary files a/docs/amg4psblas_1.2-guide.pdf and b/docs/amg4psblas_1.2-guide.pdf differ diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index a1680b8c..4e98cc70 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -765,7 +765,7 @@ class="small-caps">fault t

cments s






MIN_COARSE_SIZE_PER_PROCESS

Any number

> 0

200

Coarse size threshold per process. The -aggregation stops if the global number of -variables of the computed coarsest matrix -is lower than or equal to this threshold -multiplied by the number of processes -(see Note). +class="td11">

200

Coarse size threshold per process. The +aggregation stops if the global number +of variables of the computed coarsest +matrix is lower than or equal to this +threshold multiplied by the number of +processes (see Note).






Any number

> 0

-1

Coarse size threshold. The aggregation -stops if the global number of variables -of the computed coarsest matrix is lower -than or equal -to this threshold (see Note). If negative, -it is ignored in favour of the default for -MIN_COARSE_SIZE_PER_PROCESS. +class="td11">

-1

Coarse size threshold. The aggregation +stops if the global number of variables +of the computed coarsest matrix +is lower than or equal to this +threshold (see Note). If negative, it is +ignored in favour of the default for +MIN_COARSE_SIZE_PER_PROCESS.






Any number

> 1

1.5

Minimum coarsening -ratio. The aggregation stops if the ratio -between the global matrix dimensions at -two consecutive levels is lower than or -equal to this threshold (see Note). +class="td11">

1.5

Minimum coarsening ratio. The +aggregation stops if the ratio between +the global matrix dimensions at two +consecutive levels is lower than or +equal to this threshold (see Note).






Any integer

number > 1

20

Maximum number of levels. The -aggregation stops if the number of levels -reaches this value (see Note). +class="td11">

20

Maximum number of levels. The +aggregation stops if the number of +levels reaches this value (see Note).






PAR_AGGR_ALG

character(len=*)

’DEC’, +class="cmtt-10x-x-109">’DECOUPLED’, ’SYMDEC’, ’COUPLED’

’DEC’ ’DECOUPLED’

Parallel aggregation algorithm. -

the SYMDEC option applies decoupled -aggregation to the sparsity pattern of +

the SYMDEC option applies decoupled +aggregation to the sparsity pattern of A + AT . +class="cmmi-8">T .






SOC1, SOC2, MATCHBOXP

SOC1

Type of aggregation algorithm: currently, -for the -decoupled aggregation we implement two -measures of strength of connection, the -one by Vaněk, Mandel and Brezina [35], -and the one by Gratton et al [24]. The -coupled aggregation is based on a parallel -version of the half-approximate matching -implemented in the MatchBox-P software -package [9]. +class="td11">

SOC1

Type +of aggregation algorithm: currently, +for the decoupled aggregation we +implement two measures of strength +of connection, the one by Vaněk, +Mandel and Brezina [35], and the one +by Gratton et al [24]. The coupled +aggregation is based on a parallel +version of the half-approximate +matching implemented in the +MatchBox-P software package [9].






aggr_size 2

4

Maximum size of aggregates when the -coupled aggregation based on matching -is applied. For aggressive coarsening -with size of aggregate larger than 8 -we recommend the use of smoothed -prolongators. Used only with ’COUPLED’ -and ’MATCHBOXP’ +class="td11">

4

Maximum size of aggregates when +the coupled aggregation based on +matching is applied. For aggressive +coarsening with size of aggregate +larger than 8 we recommend the use +of smoothed prolongators. Used only +with ’COUPLED’ and ’MATCHBOXP’






character(len=*)

SMOOTHED, UNSMOOTHED

SMOOTHED

Prolongator used by the aggregation -algorithm: smoothed or unsmoothed (i.e., -tentative prolongator). +class="td11">

SMOOTHED

Prolongator used by the aggregation +algorithm: smoothed or unsmoothed +(i.e., tentative prolongator).






Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold,
+class="cmbx-10x-x-109">Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold,
the minimum coarsening ratio, or the maximum number of levels is reached.
+class="td11">
the minimum coarsening ratio, or the maximum number of levels is reached.
Therefore, the actual number of levels may be smaller than the specified maximum number of levels.
+class="td11">
Therefore, the actual number of levels may be smaller than the specified maximum number of levels.





+class="td11"> @@ -1172,16 +1173,17 @@ class="hline">




< class="td11">

COARSE_SUBSOLVE

character(len=*)

ILU -

ILUT -

MILU -

MUMPS -

SLU -

UMF -

INVT -

INVK -

AINV

See Note.

Solver for the diagonal blocks of the coarsest +

ILUT +

MILU +

MUMPS +

SLU +

SLUDIST +

UMF +

INVT +

INVK +

AINV

See Note.

Solver for the diagonal blocks of the coarsest matrix, in case the block Jacobi solver is chosen as coarsest-level solver: ILU(p), ILU(ILU otherwise.






what

what dtype

val

val

deault

cos






COARSE_SWEEPS

integer

Any +class="td11">

COARSE_SWEEPS

integer

Any integer -

number > 0

10

Number of sweeps when JACOBI, GS or BJAC is +class="td11">

10

Number of sweeps when JACOBI, GS or BJAC is chosen as coarsest-level solver.






COARSE_FILLIN

integer

Any +class="td11">

COARSE_FILLIN

integer

Any integer -

number 0

0

Fill-in level

0

Fill-in level p of the ILU factorizations and first fill-in for the approximate inverses.






COARSE_ILUTHRS

real(kind_parameter)

Any real -

number

COARSE_ILUTHRS

real(kind_parameter)

Any real +number 0

0

Drop tolerance

0

Drop tolerance t in the ILU(p,t) factorization and first drop-tolerance for the approximate inverses. @@ -1330,7 +1332,7 @@ class="content">Parameters defining the solver at the coarsest level (continued) -


@@ -1338,7 +1340,7 @@ class="content">Parameters defining the solver at the coarsest level (continued)
-

+

@@ -1352,7 +1354,7 @@ id="TBL-8-4">






what

what dtype

val

val

deault

cots






BJAC_STOP

character(len=*)

FALSE -

TRUE

FALSE

Select whether to use a stopping criterion for +class="td11">

BJAC_STOP

character(len=*)

FALSE +

TRUE

FALSE

Select whether to use a stopping criterion for the Block-Jacobi method used as a coarse solver.






BJAC_TRACE

character(len=*)

FALSE -

TRUE

FALSE

Select whether to print a trace for the +class="td11">

BJAC_TRACE

character(len=*)

FALSE +

TRUE

FALSE

Select whether to print a trace for the calculated residual for the Block-Jacobi method used as a coarse solver.






BJAC_ITRACE

integer

Any integer -

BJAC_ITRACE

integer

Any integer +

> 0

-1

Number of iterations after which a trace is to +class="td11">

-1

Number of iterations after which a trace is to be printed.






BJAC_RESCHECK

integer

Any integer -

BJAC_RESCHECK

integer

Any integer +

> 0

-1

Number of iterations after which a residual is +class="td11">

-1

Number of iterations after which a residual is to be calculated.






BJAC_STOPTOL

real(kind_parameter)

Any real -

BJAC_STOPTOL

real(kind_parameter)

Any real +

< 1

0

Tolerance for the stopping criterion on the +class="td11">

0

Tolerance for the stopping criterion on the residual.






KRM_METHOD

character(len=*)

CG -

FCG -

CGS -

CGR -

BICG -

BICGSTAB -

BICGSTABL -

RGMRES

FCG

A string that defines the iterative method to +class="td11">

KRM_METHOD

character(len=*)

CG +

FCG +

CGS +

CGR +

BICG +

BICGSTAB +

BICGSTABL +

RGMRES

FCG

A string that defines the iterative method to be used when employing a Krylov method KRM as a coarse solver. CG the Conjugate @@ -1480,24 +1482,24 @@ information.






KRM_KPREC

character(len=*)

Table 

KRM_KPREC

character(len=*)

Table 1

BJAC

The one-level +class="td11">

BJAC

The one-level preconditioners from the Table 1 can be used for the coarse Krylov solver.






KRM_SUB_SOLVE

character(len=*)

Table 

KRM_SUB_SOLVE

character(len=*)

Table 5

ILU

Solver for the diagonal blocks of the coarsest +class="td11">

ILU

Solver for the diagonal blocks of the coarsest matrix preconditioner, in case the block Jacobi solver is chosen as KRM_KPREC: ILU(5 applies here.






KRM_GLOBAL

character(len=*)

TRUE, +class="td11">

KRM_GLOBAL

character(len=*)

TRUE, FALSE

FALSE

Choose between a global Krylov solver, all +class="td11">

FALSE

Choose between a global Krylov solver, all unknowns on a single node, or a distributed one. The default choice is the distributed solver.






KRM_EPS

real(kind_parameter)

Real

KRM_EPS

real(kind_parameter)

Real < 1

10

10-6

The stopping tolerance. +class="td11">

The stopping tolerance.






KRM_IRST

integer

Integer -

KRM_IRST

integer

Integer +

1

30

An integer specifying the restart parameter. +class="td11">

30

An integer specifying the restart parameter. This is employed for the BiCGSTABL or RGMRES @@ -1558,12 +1560,12 @@ methods, otherwise it is ignored.






KRM_ISTOPC

integer

Integers +class="td11">

KRM_ISTOPC

integer

Integers 1,2,3

2

If

2

If 1 then the method uses the normwise backward error in the infinity norm; if 2, the @@ -1576,24 +1578,24 @@ for the details.






KRM_ITMAX

integer

Integer -

KRM_ITMAX

integer

Integer +

1

40

The maximum number of iterations to +class="td11">

40

The maximum number of iterations to perform.






KRM_ITRACE

integer

Integer -

KRM_ITRACE

integer

Integer +

0

-1

If

-1

If > 0 print out an informational message about convergence every KRM_ITRACE iterations. If = 0 print a @@ -1601,13 +1603,13 @@ message in case of convergence failure.






KRM_FILLIN

integer

Integer -

KRM_FILLIN

integer

Integer +

0

0

Fill-in level

0

Fill-in level p of the ILU factorizations and first fill-in for the approximate inverses. Additional parameters defining the solver at the coarsest level. -


@@ -1637,7 +1639,7 @@ class="content">Additional parameters defining the solver at the coarsest level.
-

+






what

what

dtype

val

val

deault

cots






SMOOTHER_TYPE

character(len=*)

JACOBI -

GS -

BGS -

BJAC -

AS -

L1-JACOBI -

L1-BJAC -

L1-FBGS -

POLY

FBGS

SMOOTHER_TYPE

character(len=*)

JACOBI +

GS +

BGS +

BJAC +

AS +

L1-JACOBI +

L1-BJAC +

L1-FBGS +

POLY

FBGS

Type of smoother used in the multilevel preconditioner: point-Jacobi, hybrid @@ -1724,26 +1726,26 @@ class="cmr-10">] class="cmr-10">and Remark 3 (p. 21). -

It is ignored by one-level preconditioners.






SUB_SOLVE

character(len=*)

JACOBI +class="td11">

SUB_SOLVE

character(len=*)

JACOBI GS -

BGS -

ILU -

ILUT -

MILU -

MUMPS -

SLU -

UMF -

INVT -

INVK -

AINV

BGS +

ILU +

ILUT +

MILU +

MUMPS +

SLU +

UMF +

INVT +

INVK +

AINV

GS and BGS multilevel class="cmr-10">preconditioners, respectively -

ILU for block-Jacobi and Additive Schwarz class="cmr-10">one-level preconditioners

The local solver to be used with the smoother or one-level preconditioner (see @@ -1821,18 +1823,18 @@ class="cmr-10">Note for details on hybrid Gauss-Seidel.






SMOOTHER_SWEEPS

integer

SMOOTHER_SWEEPS

integer

Any integer -

number 0

1

Number of sweeps of the smoother or one-level preconditioner. In the multilevel @@ -1850,11 +1852,11 @@ class="cmr-10">respectively. Is ignored if the smoother is






POLY_DEGREE

integer

POLY_DEGREE

integer

Any integer -

number and 30

1

Degree of the polynomial accelerator, is equal to the number of matrix-vector @@ -1891,7 +1893,7 @@ preconditioner. -


@@ -1899,7 +1901,7 @@ preconditioner.
-

+






what

what

dtype

val

val

deault

cots






SUB_OVR

integer

SUB_OVR

integer

Any integer -

number 0

1

Number of overlap layers, for Additive Schwarz only.

SUB_RESTR

character(len=*)

HALO -

NONE

HALO

SUB_RESTR

character(len=*)

HALO +

NONE

HALO

Type of restriction operator, for Additive Schwarz only: for taking into account the overlap, NONE for neglecting it. -

Note that HALO must be chosen for the @@ -1985,12 +1987,12 @@ class="cmr-10">its RAS variant.






SUB_PROL

character(len=*)

SUM -

NONE

NONE

SUB_PROL

character(len=*)

SUM +

NONE

NONE

Type of prolongation operator, for Additive Schwarz only: SUM contributions from the overlap, for neglecting them. -

Note that SUM must be chosen for the for its RAS variant.






SUB_FILLIN

integer

SUB_FILLIN

integer

Any integer -

number 0

0

Fill-in level p of the incomplete LU @@ -2030,18 +2032,18 @@ class="cmr-10">factorizations.






SUB_ILUTHRS

real(kind_parameter)

SUB_ILUTHRS

real(kind_parameter)

Any real number 0

0

Drop tolerance t in the ILU(factorization.






MUMPS_LOC_GLOB

character(len=*)

LOCAL_SOLVER -

GLOBAL_SOLVER

GLOBAL_SOLVER

MUMPS_LOC_GLOB

character(len=*)

LOCAL_SOLVER +

GLOBAL_SOLVER

GLOBAL_SOLVER

Whether MUMPS should be used as a distributed solver, or as a serial solver acting @@ -2068,15 +2070,15 @@ class="cmr-10">process.






MUMPS_IPAR_ENTRY

integer

MUMPS_IPAR_ENTRY

integer

Any integer number

0

Set an entry in the MUMPS integer control array, as chosen via the idx argument.






MUMPS_RPAR_ENTRY

real

MUMPS_RPAR_ENTRY

real

Any real number

0

Set an entry in the MUMPS real control array, as chosen via the idx Parameters defining the smoother or the details of the one-level -


@@ -2124,7 +2126,7 @@ class="content">Parameters defining the smoother or the details of the one-level
-

+






what

what

dtype

val

val

deault

cots






POLY_VARIANT

character(len=*)

CHEB_4 -

CHEB_4_OPT -

CHEB_1_OPT

CHEB_4

POLY_VARIANT

character(len=*)

CHEB_4 +

CHEB_4_OPT +

CHEB_1_OPT

CHEB_4

Select the type of polynomial accelerator. @@ -2224,11 +2226,11 @@ class="cmr-10">-kind.






POLY_RHO_ESTIMATE

character(len=*)

POLY_RHO_EST_POWER

POLY_RHO_EST_POWER

POLY_RHO_ESTIMATE

character(len=*)

POLY_RHO_EST_POWER

POLY_RHO_EST_POWER

Algorithm for estimating the spectral @@ -2251,17 +2253,17 @@ class="cmr-10">two following options.






POLY_RHO_ESTIMATE_ITERATIONS

integer

POLY_RHO_ESTIMATE_ITERATIONS

integer

Any integer -

number 1

20

Number of iterations for the spectral radius @@ -2270,19 +2272,19 @@ class="cmr-10">estimate.






POLY_RHO_BA

real(kind_parameter)

POLY_RHO_BA

real(kind_parameter)

Any real -

number (0,1]

1

Sets an estimate of the spectral radius of @@ -2315,10 +2317,10 @@ class="cmr-12">Method hierarchy_build

-

-

call p%hierarchy_build(a,desc_a,info)
+

+

call p%hierarchy_build(a,desc_a,info)

-

This method builds the hierarchy of matrices and restriction/prolongation operators for the multilevel preconditioner p, according to the requirements made by the user class="cmr-12">through the methods init and set. -

Arguments

Arguments id="TBL-12-1">

a

type(psb_

a

type(psb_xspmat_type), intent(in).

The sparse matrix structure containing the local part of the matrix to be preconditioned. Note that ].

desc_a

type(psb_desc_type), intent(in)

desc_a

type(psb_desc_type), intent(in).

The communication descriptor of a. See the PSBLAS User’s Guide ].

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section Method smoothers_build

-

This method builds the smoothers and the coarsest-level solvers for the multilevel preconditioner p 5.3). -

Arguments

Arguments id="TBL-13-1"> @@ -2540,10 +2542,10 @@ class="cmr-12">5.5 Method build
-

-

call p%build(a,desc_a,info[,amold,vmold,imold])
+

+

call p%build(a,desc_a,info[,amold,vmold,imold])

-

This method builds the preconditioner p according to the requirements made by the and class="cmr-12">, whose nomenclature would however be somewhat unnatural when dealing with simple one-level preconditioners. -

Arguments

a

type(psb_

a

type(psb_xspmat_type), intent(in).

The sparse matrix structure containing the local part of the matrix to be preconditioned. Note that ].

desc_a

type(psb_desc_type), intent(in)

desc_a

type(psb_desc_type), intent(in).

The communication descriptor of a. See the PSBLAS User’s Guide ].

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold

class(psb_

amold

class(psb_x_base_sparse_mat), intent(in), optional.

The desired dynamic type for internal matrix components; this allows e.g. running on GPUs; it needs not be the same on all @@ -2505,26 +2507,26 @@ class="cmr-12">].

vmold

class(psb_

vmold

class(psb_x_base_vect_type), intent(in), optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

imold

class(psb_i_base_vect_type), intent(in), optional

imold

class(psb_i_base_vect_type), intent(in), optional.

The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs.

Arguments id="TBL-14-1">

a

type(psb_

a

type(psb_xspmat_type), intent(in).

The sparse matrix structure containing the local part of the matrix to be preconditioned. Note that ].

desc_a

type(psb_desc_type), intent(in)

desc_a

type(psb_desc_type), intent(in).

The communication descriptor of a. See the PSBLAS User’s Guide ].

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold

class(psb_

amold

class(psb_x_base_sparse_mat), intent(in), optional.

The desired dynamic type for internal matrix components; this allows e.g. running on GPUs; it needs not be the same on all @@ -2652,33 +2654,33 @@ class="cmr-12">].

vmold

class(psb_

vmold

class(psb_x_base_vect_type), intent(in), optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

imold

class(psb_i_base_vect_type), intent(in), optional

imold

class(psb_i_base_vect_type), intent(in), optional.

The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs.

-

The method can be used to build multilevel preconditioners too. @@ -2689,10 +2691,10 @@ class="cmr-12">5.6 Method apply

-

This method computes y = and class="cmr-12">hence it is completely transparent to the user, who will almost never invoke it directly. -

Arguments

Arguments id="TBL-15-1"> +class="td11">

trans

x

x

type(kind_parameter), dimension(:), intent(in)—.

The local part of the vector x. Note that , single/double class="cmr-12">precision version of AMG4PSBLAS under use.

y

y

type(kind_parameter), dimension(:), intent(out)—.

The local part of the vector y. Note that , single/double class="cmr-12">precision version of AMG4PSBLAS under use.

desc_a

type(psb_desc_type), intent(in)

desc_a

type(psb_desc_type), intent(in).

The communication descriptor associated to the matrix to be preconditioned.

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

trans

character(len=1), optional, intent(in).

character(len=1), optional, intent(in).

If trans = N,n then 1).

work

work

type(kind_parameter), dimension(:), optional, target—.

Workspace. Its size should be at least 4 * psb_cd_get_local_ cols(desc_a) (see the PSBLAS User’s Guide). Note that 5.7 Method free

-

This method deallocates the preconditioner data structure p. -

Arguments

Arguments id="TBL-16-1">

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 5.8 Method descr

-

This method prints a description of the preconditioner p to the standard output or to a , or b class="cmr-12">, have been called. -

Arguments

Arguments id="TBL-17-1">

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

iout

integer, intent(in), optional

iout

integer, intent(in), optional.

The id of the file where the preconditioner description will be printed; the default is the standard output.

root

integer, intent(in), optional

root

integer, intent(in), optional.

The id of the process where the preconditioner description will be printed; the default is psb_root_.

verbosity

integer, intent(in), optional

verbosity

integer, intent(in), optional.

The verbosity level of the description. Default value is 0. For values higher than 0, it prints out further information, e.g., for @@ -3007,31 +3009,31 @@ class="cmr-12">matrices on every process.

-

+

5.9 Auxiliary Methods

-

Various functionalities are implemented as additional methods of the preconditioner object. -

+

5.9.1 Method: dump
-

-

call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])
+

+

call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])

-

Dump on file. -

Arguments

Arguments id="TBL-18-1">

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

amold

class(psb_

amold

class(psb_x_base_sparse_mat), intent(in), optional.

The desired dynamic type for internal matrix components; this allows e.g. running on GPUs; it needs not be the same on all @@ -3074,19 +3076,19 @@ class="cmr-12">.

-

+

5.9.2 Method: clone
-

-

call p%clone(pout,info)
+

+

call p%clone(pout,info)

-

Create a (deep) copy of the preconditioner object. -

Arguments

Arguments id="TBL-19-1">

pout

type(amg_

pout

type(amg_xprec_type), intent(out).

The copy of the preconditioner data structure. Note that x must @@ -3113,13 +3115,13 @@ class="cmr-12">, single/double precision class="cmr-12">version of AMG4PSBLAS under use.

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section for details.

-

+

5.9.3 Method: sizeof
-

-

sz = p%sizeof([global])
+

+

sz = p%sizeof([global])

Method: sizeof id="TBL-20-1">

global

logical, optional

global

logical, optional.

Whether the global or local preconditioner memory occupation is desired. Default: .false.Return memory footprint in bytes. -

+

5.9.4 Method: allocate_wrk
-

-

call p%allocate_wrk(info[, vmold])
+

+

call p%allocate_wrk(info[, vmold])

-

Allocate internal work vectors. Each application of the preconditioner uses a number of work vectors which are allocated internally as necessary; therefore allocation and @@ -3200,7 +3202,7 @@ class="cmr-12">taken care of based on the dynamic type of the argument to the apply method. -

Arguments

Arguments id="TBL-21-1">

info

integer, intent(out)

info

integer, intent(out).

Error code. If no error, 0 is returned. See Section 7 for details.

vmold

class(psb_

vmold

class(psb_x_base_vect_type), intent(in), optional.

The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

-

+

5.9.5 Method: deallocate_wrk
-

-

call p%deallocate_wrk(info)
+

+

call p%deallocate_wrk(info)
call p%free_wrk(info)

-

Deallocate internal work vectors. -

Arguments