Compare commits

...
25 Commits
Author SHA1 Message Date
sfilippone 1aef82023c Merge branch 'repackage' of github.com:sfilippone/amg4psblas into repackage 2025-02-09 16:32:40 +01:00
sfilippone 161b93da64 Fix interface issues of clone_settings 2025-02-09 16:02:00 +01:00
Salvatore Filippone 8d4af1ba9f Fix output formatting bug 2025-01-19 11:15:44 +01:00
sfilippone cd87bdb0c1 Add call to clean_zeros() 2025-01-08 17:19:58 +01:00
Cirdans-Home 53afa87814 Added row-preserving filtering 2024-12-13 17:19:04 +00:00
sfilippone 13c99a0c3f Cleanup use of RICHARDSON 2024-11-18 16:20:35 +01:00
sfilippone 1aa7c8db59 Fix release version of UG 2024-11-18 15:53:52 +01:00
sfilippone 36b57eec24 Define 1.2 as name of UG 2024-11-18 15:51:16 +01:00
fdurastante 417f8beaf9 Added remark on polynomial smoothers 2024-11-18 14:42:31 +01:00
fdurastante d66bf1e2f8 Added remark on polynomial smoothers 2024-11-18 14:41:59 +01:00
sfilippone c590a4088a Merge branch 'repackage' of github.com:sfilippone/amg4psblas into repackage 2024-11-18 12:52:39 +01:00
sfilippone 80dfd1ad3b Modified README 2024-11-18 12:47:39 +01:00
Pasqua D'Ambra 857844474a Update README.md 2024-11-18 10:56:46 +01:00
fdurastante a85997926c Update README.md 2024-11-18 10:08:29 +01:00
fdurastante 70fb39ae55 Added Polynomial Smoother infos 2024-11-18 10:03:21 +01:00
sfilippone 82de529c54 Makefile in amg4psblas/docs 2024-11-18 09:17:11 +01:00
sfilippone db9757a45e Update README Fortran 2003 to 2008 2024-11-15 17:28:14 +01:00
fdurastante 5b654cc221 Update README.md 2024-11-15 17:13:17 +01:00
sfilippone d518f5eac7 Merge branch 'l1-and-0-aggr' into repackage 2024-11-12 10:07:44 +01:00
sfilippone 053d5c4bc0 Changed sample input file 2024-11-11 18:10:34 +01:00
sfilippone 032543d625 Adjusted CBIND test program. 2024-11-11 13:06:48 +01:00
sfilippone 07149a02ad Fixes for krylov->linsolve. Test program to be completed. 2024-11-11 09:11:07 +01:00
sfilippone 08a0c744b1 Switch from KRYLOV to LINSOLVE 2024-11-10 14:00:51 +01:00
sfilippone 60324084d8 New Richardson solver. 2024-11-08 18:25:13 +01:00
Salvatore Filippone aec5a52c7f Missing CBIND clean target 2024-10-16 10:56:53 +02:00
139 changed files with 13425 additions and 6598 deletions
+2
View File
@@ -20,3 +20,5 @@ autom4te.cache
# the executable from tests
runs
# Documentation temporary files
docs/src/userguide.pdf
+1 -1
View File
@@ -49,7 +49,7 @@ PSBLAS_INCLUDES=@PSBLAS_INCLUDES@
PSBLAS_LIBS=@PSBLAS_LIBS@
PSBBASEMODNAME=psb_base_mod
PSBPRECMODNAME=psb_prec_mod
PSBMETHDMODNAME=psb_krylov_mod
PSBMETHDMODNAME=psb_linsolve_mod
PSBUTILMODNAME=psb_util_mod
+2
View File
@@ -46,6 +46,7 @@ cleanlib:
veryclean: cleanlib
(cd amgprec && $(MAKE) veryclean)
(cd cbind && $(MAKE) veryclean)
(cd samples/simple/fileread && $(MAKE) clean)
(cd samples/simple/pdegen && $(MAKE) clean)
(cd samples/advanced/fileread && $(MAKE) clean)
@@ -56,3 +57,4 @@ check: all
clean:
(cd amgprec && $(MAKE) clean)
(cd cbind && $(MAKE) clean)
+57 -35
View File
@@ -1,54 +1,76 @@
AMG4PSBLAS
Algebraic Multigrid Package based on PSBLAS (Parallel Sparse BLAS version 3.8)
Salvatore Filippone (University of Rome Tor Vergata and IAC-CNR)
Pasqua D'Ambra (IAC-CNR, Naples, IT)
Fabio Durastante (IAC-CNR, Naples, IT)
# AMG4PSBLAS v1.2
Algebraic Multigrid Package based on [PSBLAS](https://github.com/sfilippone/psblas3) (Parallel Sparse BLAS version 3.9)
---------------------------------------------------------------------
AMG4PSBLAS is a package of parallel algebraic multilevel preconditioners included in the PSCToolkit (Parallel Sparse Computation Toolkit) software framework.
AMG4PSBLAS is a package of Algebraic MultiGrid (AMG)
preconditioners for the iterative solution of large and sparse linear systems.
It is a progress of a software development project started in 2007, named MLD2P4, which originally implemented a multilevel version of some domain decomposition preconditioners of additive-Schwarz type and was based on a parallel decoupled version of the well known smoothed aggregation method to generate the multilevel hierarchy of coarser matrices.
It is an evolution of MLD2P4 (see LICENSE.MLD2P4), but it has been
thoroughly reworked, and it is sufficiently different to warrant a new
project name.
In the last years the package was extended for including new algorithms and functionalities for the setup and application new AMG preconditioners with the final aims of improving efficiency and scalability when tens of thousands cores are used and of boosting reliability in dealing with general symmetric positive definite linear systems.
It is an evolution of MLD2P4 (see [LICENSE.MLD2P4](LICENSE.MLD2P4)), but due to the significant number of changes and the increase in scope, we decided to rename the package as AMG4PSBLAS.
MAIN REFERENCES:
AMG4PSBLAS has been designed to provide scalable and easy-to-use preconditioners in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms) computational framework and can be used in conjuction with the Krylov solvers available in this framework. Our package is based on a completely algebraic approach; therefore users level interfaces assume that the system matrix and preconditioners are represented as PSBLAS distributed sparse matrices.
AMG4PSBLAS enables the user to easily specify different features of an algebraic multilevel preconditioner, thus allowing to experiment with different preconditioners for the problem and parallel computers at hand.
P. D'Ambra, D. di Serafino, S. Filippone,
MLD2P4: a Package of Parallel Algebraic Multilevel Domain Decomposition
Preconditioners in Fortran 95,
ACM Transactions on Mathematical Software, 37 (3), 2010, art. 30,
doi: 10.1145/1824801.1824808.
The package employs object-oriented design techniques in Fortran 2008, with interfaces to additional third party libraries such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which can be exploited in building multilevel preconditioners. The parallel implementation is based on a Single Program Multiple Data (SPMD) paradigm; the inter-process communication is based on MPI and is managed mainly through PSBLAS.
## Main Refrerences:
TO COMPILE
The main reference for this project is
> D'Ambra, P., Durastante, F., & Filippone, S. (2021). AMG preconditioners for linear solvers towards extreme scale. SIAM Journal on Scientific Computing, 43(5), S679-S703.
AMG4PSBLAS is the suite of preconditioners for the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper:
> D’Ambra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463.
The main reference for features inherited from MLD2P4 is
> P. D'Ambra, D. di Serafino, S. Filippone,
> MLD2P4: a Package of Parallel Algebraic Multilevel Domain Decomposition
> Preconditioners in Fortran 95,
> ACM Transactions on Mathematical Software, 37 (3), 2010, art. 30,
> doi: 10.1145/1824801.1824808.
## Installing
Installation requires having a working version of the [PSBLAS](https://github.com/sfilippone/psblas3) library installed.
AMG4PSBLAS has several interfaces to third-party libraries that can be used in the construction and application phases of preconditioners.
In particular, it is possible to link AMG4PSBLAS with the libraries: MUMPS, SuperLU, SuperLU_Dist, UMFPACK. This is _not mandatory_ and the library can run
in isolation and without these features.
0. Unpack the tar file in a directory of your choice (preferrably
outside the main PSBLAS directory).
1. run configure --with-psblas=<ABSOLUTE path of the PSBLAS install directory>
1. run configure `--with-psblas=<ABSOLUTE path of the PSBLAS install directory>`
adding the options for MUMPS, SuperLU, SuperLU_Dist, UMFPACK as desired.
See MLD2P4 User's and Reference Guide (Section 3) for details.
2. Tweak Make.inc if you are not satisfied.
3. make;
See [AMG4PSBLAS User's and Reference Guide](docs/amg4psblas_1.0-guide.pdf) (Section 3) for details.
2. Tweak `Make.inc` if you are not satisfied.
3. run `make`;
4. Go into the test subdirectory and build the examples of your choice.
5. (if desired): make install
5. (if desired): `make install`
>[!CAUTION]
>The single precision version is supported only by MUMPS and SuperLU;
>thus, even if you specify at configure time to use UMFPACK or SuperLU_Dist,
>the corresponding preconditioner options will be available only from
>the double precision version.
NOTES
### CUDA, OpeMP, OpenACC
- The single precision version is supported only by MUMPS and SuperLU;
thus, even if you specify at configure time to use UMFPACK or SuperLU_Dist,
the corresponding preconditioner options will be available only from
the double precision version.
CUDA, OpenMP and OpenACC features are transparently inherited by PSBLAS installation. If PSBLAS has been configured (and installed) with these supports then AMG4PSBLAS will transparently inherit them. It will then be possible to move the computation to GPU accelerator simply by selecting the appropriate variable types. If these have not been activated or installed for PSBLAS then they will not be available for AMG4PSBLAS either and the operation will be purely on CPU/MPI.
### EoCoE - Software as service portal
In the European project “Energy oriented Center of Excellence: toward exascale for energy” we made available a software as service portal: [https://eocoe.psnc.pl/](https://eocoe.psnc.pl/). This permits to test several cutting-edge computational methods for accelerating the transition to the production, storage and management of clean, decarbonized energy. Among them you have the possibility of running PSBLAS+AMG4PSBLAS on some test problems to become familiar with using the software.
## TODO and bugs
- [X] Fix all reamining bugs. Bugs? We dont' have any ! 🤓
> [!NOTE]
> To report bugs 🐛 or issues ❓ please use the [GitHub issue system](https://github.com/sfilippone/amg4psblas/issues).
## The AMG4PSBLAS team.
- Pasqua D'Ambra (IAC-CNR, Naples, IT)
- Fabio Durastante (University of Pisa and IAC-CNR, IT)
- Salvatore Filippone (University of Rome Tor Vergata and IAC-CNR, IT)
The AMG4PSBLAS team.
---------------
Salvatore Filippone
Pasqua D'Ambra
Fabio Durastante
+8 -4
View File
@@ -297,9 +297,10 @@ module amg_base_prec_type
!
! Legal values for entry: amg_aggr_filter_
!
integer(psb_ipk_), parameter :: amg_no_filter_mat_ = 0
integer(psb_ipk_), parameter :: amg_filter_mat_ = 1
integer(psb_ipk_), parameter :: amg_max_filter_mat_ = amg_filter_mat_
integer(psb_ipk_), parameter :: amg_no_filter_mat_ = 0
integer(psb_ipk_), parameter :: amg_filter_mat_ = 1
integer(psb_ipk_), parameter :: amg_filter_prow_mat_ = 2
integer(psb_ipk_), parameter :: amg_max_filter_mat_ = amg_filter_prow_mat_
!
! Legal values for entry: amg_aggr_ord_
!
@@ -380,7 +381,8 @@ module amg_base_prec_type
& aggr_prols(0:4)=(/'unsmoothed ','smoothed ',&
& 'l1-smoothed ','min energy ','bizr. smoothed'/)
character(len=15), parameter, private :: &
& aggr_filters(0:1)=(/'no filtering ','filtering '/)
& aggr_filters(0:2)=(/'no filtering ','filtering ',&
& 'filtering rsum'/)
character(len=15), parameter, private :: &
& matrix_names(0:1)=(/'distributed ','replicated '/)
character(len=18), parameter, private :: &
@@ -591,6 +593,8 @@ contains
val = amg_eig_est_
case('FILTER')
val = amg_filter_mat_
case('FILTERROWSUM')
val = amg_filter_prow_mat_
case('NOFILTER','NO_FILTER')
val = amg_no_filter_mat_
case('OUTER_SWEEPS')
+3 -3
View File
@@ -91,9 +91,9 @@ module amg_c_ainv_solver
import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, &
& amg_c_base_solver_type, psb_dpk_, amg_c_ainv_solver_type, psb_ipk_
Implicit None
class(amg_c_ainv_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_c_ainv_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_c_ainv_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_c_invk_solver
import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, &
& amg_c_base_solver_type, psb_spk_, amg_c_invk_solver_type, psb_ipk_
Implicit None
class(amg_c_invk_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_c_invk_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_c_invk_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_c_invt_solver
import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, &
& amg_c_base_solver_type, psb_spk_, amg_c_invt_solver_type, psb_ipk_
Implicit None
class(amg_c_invt_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_c_invt_solver_type), intent(inout) :: sv
class(amg_c_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_c_invt_solver_clone_settings
end interface
+2 -2
View File
@@ -203,8 +203,8 @@ module amg_c_jac_smoother
subroutine amg_c_jac_smoother_clone_settings(sm,smout,info)
import :: amg_c_jac_smoother_type, psb_spk_, &
& amg_c_base_smoother_type, psb_ipk_
class(amg_c_jac_smoother_type), intent(inout) :: sm
class(amg_c_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_c_jac_smoother_type), intent(inout) :: sm
class(amg_c_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_c_jac_smoother_clone_settings
end interface
+3 -3
View File
@@ -91,9 +91,9 @@ module amg_d_ainv_solver
import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, &
& amg_d_base_solver_type, psb_dpk_, amg_d_ainv_solver_type, psb_ipk_
Implicit None
class(amg_d_ainv_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_d_ainv_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_d_ainv_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_d_invk_solver
import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, &
& amg_d_base_solver_type, psb_dpk_, amg_d_invk_solver_type, psb_ipk_
Implicit None
class(amg_d_invk_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_d_invk_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_d_invk_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_d_invt_solver
import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, &
& amg_d_base_solver_type, psb_dpk_, amg_d_invt_solver_type, psb_ipk_
Implicit None
class(amg_d_invt_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_d_invt_solver_type), intent(inout) :: sv
class(amg_d_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_d_invt_solver_clone_settings
end interface
+2 -2
View File
@@ -203,8 +203,8 @@ module amg_d_jac_smoother
subroutine amg_d_jac_smoother_clone_settings(sm,smout,info)
import :: amg_d_jac_smoother_type, psb_dpk_, &
& amg_d_base_smoother_type, psb_ipk_
class(amg_d_jac_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_d_jac_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_d_jac_smoother_clone_settings
end interface
+2 -2
View File
@@ -192,8 +192,8 @@ module amg_d_poly_smoother
subroutine amg_d_poly_smoother_clone_settings(sm,smout,info)
import :: amg_d_poly_smoother_type, psb_dpk_, &
& amg_d_base_smoother_type, psb_ipk_
class(amg_d_poly_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_d_poly_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_d_poly_smoother_clone_settings
end interface
+3 -3
View File
@@ -91,9 +91,9 @@ module amg_s_ainv_solver
import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, &
& amg_s_base_solver_type, psb_dpk_, amg_s_ainv_solver_type, psb_ipk_
Implicit None
class(amg_s_ainv_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_s_ainv_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_s_ainv_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_s_invk_solver
import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, &
& amg_s_base_solver_type, psb_spk_, amg_s_invk_solver_type, psb_ipk_
Implicit None
class(amg_s_invk_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_s_invk_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_s_invk_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_s_invt_solver
import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, &
& amg_s_base_solver_type, psb_spk_, amg_s_invt_solver_type, psb_ipk_
Implicit None
class(amg_s_invt_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_s_invt_solver_type), intent(inout) :: sv
class(amg_s_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_s_invt_solver_clone_settings
end interface
+2 -2
View File
@@ -203,8 +203,8 @@ module amg_s_jac_smoother
subroutine amg_s_jac_smoother_clone_settings(sm,smout,info)
import :: amg_s_jac_smoother_type, psb_spk_, &
& amg_s_base_smoother_type, psb_ipk_
class(amg_s_jac_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_s_jac_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_s_jac_smoother_clone_settings
end interface
+2 -2
View File
@@ -192,8 +192,8 @@ module amg_s_poly_smoother
subroutine amg_s_poly_smoother_clone_settings(sm,smout,info)
import :: amg_s_poly_smoother_type, psb_spk_, &
& amg_s_base_smoother_type, psb_ipk_
class(amg_s_poly_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_s_poly_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_s_poly_smoother_clone_settings
end interface
+3 -3
View File
@@ -91,9 +91,9 @@ module amg_z_ainv_solver
import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, &
& amg_z_base_solver_type, psb_dpk_, amg_z_ainv_solver_type, psb_ipk_
Implicit None
class(amg_z_ainv_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_z_ainv_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_z_ainv_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_z_invk_solver
import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, &
& amg_z_base_solver_type, psb_dpk_, amg_z_invk_solver_type, psb_ipk_
Implicit None
class(amg_z_invk_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_z_invk_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_z_invk_solver_clone_settings
end interface
+3 -3
View File
@@ -79,9 +79,9 @@ module amg_z_invt_solver
import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, &
& amg_z_base_solver_type, psb_dpk_, amg_z_invt_solver_type, psb_ipk_
Implicit None
class(amg_z_invt_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), allocatable, intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
class(amg_z_invt_solver_type), intent(inout) :: sv
class(amg_z_base_solver_type), intent(inout) :: svout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_z_invt_solver_clone_settings
end interface
+2 -2
View File
@@ -203,8 +203,8 @@ module amg_z_jac_smoother
subroutine amg_z_jac_smoother_clone_settings(sm,smout,info)
import :: amg_z_jac_smoother_type, psb_dpk_, &
& amg_z_base_smoother_type, psb_ipk_
class(amg_z_jac_smoother_type), intent(inout) :: sm
class(amg_z_base_smoother_type), allocatable, intent(inout) :: smout
class(amg_z_jac_smoother_type), intent(inout) :: sm
class(amg_z_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
end subroutine amg_z_jac_smoother_clone_settings
end interface
@@ -216,6 +216,7 @@ subroutine amg_c_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -420,6 +421,7 @@ subroutine amg_c_lc_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -629,6 +631,7 @@ subroutine amg_lc_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
+1
View File
@@ -142,6 +142,7 @@ subroutine amg_c_rap(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -110,6 +110,7 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_c_inner_mod, amg_protect_name => amg_caggrmat_smth_bld
use amg_c_base_aggregator_mod
! use, intrinsic :: ieee_arithmetic
implicit none
@@ -192,7 +193,7 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
filter_mat = (parms%aggr_filter == amg_filter_mat_)
filter_mat = (parms%aggr_filter == amg_filter_mat_).or.(parms%aggr_filter == amg_filter_prow_mat_)
!
! naggr: number of local aggregates
@@ -220,7 +221,7 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
! \tilde{D}_{i,i} = \sum_{j \ne i} |a_{i,j}|
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
end do
!$OMP end parallel do
end if
@@ -257,8 +258,13 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
if (jd == -1) then
! if (.not.do_l1correction)
write(0,*) 'Wrong input: we need the diagonal!!!!', i
else
else if (parms%aggr_filter == amg_filter_mat_) then
! We perform filtering in the standard way assuming that A is an M-matrix
acsrf%val(jd)=acsrf%val(jd)-tmp
else if (parms%aggr_filter == amg_filter_prow_mat_) then
! We are probably doing l1-correction, hence we want to preserve the
! row sum of the matrix: note the change in sign
acsrf%val(jd)=acsrf%val(jd)+tmp
end if
enddo
!$OMP end parallel do
@@ -266,7 +272,6 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
call acsrf%clean_zeros(info)
end if
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
if (adiag(i) /= czero) then
@@ -278,11 +283,11 @@ subroutine amg_caggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
!$OMP end parallel do
if (parms%aggr_omega_alg == amg_eig_est_) then
!if (do_l1correction) then
! ! For l1-Jacobi this can be estimated with 1
! parms%aggr_omega_val = done
!
if (parms%aggr_eig == amg_max_norm_) then
if ( (parms%aggr_filter == amg_filter_prow_mat_).and.(do_l1correction) ) then
! For l1-Jacobi this can be estimated with 1:
! this makes sense only if we are preserving the row-sum!
parms%aggr_omega_val = done
else if (parms%aggr_eig == amg_max_norm_) then
allocate(arwsum(nrow))
call acsr%arwsum(arwsum)
anorm = maxval(abs(adiag(1:nrow)*arwsum(1:nrow)))
@@ -216,6 +216,7 @@ subroutine amg_d_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -420,6 +421,7 @@ subroutine amg_d_ld_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -629,6 +631,7 @@ subroutine amg_ld_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
+1
View File
@@ -142,6 +142,7 @@ subroutine amg_d_rap(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -110,6 +110,7 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_d_inner_mod, amg_protect_name => amg_daggrmat_smth_bld
use amg_d_base_aggregator_mod
! use, intrinsic :: ieee_arithmetic
implicit none
@@ -192,7 +193,7 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
filter_mat = (parms%aggr_filter == amg_filter_mat_)
filter_mat = (parms%aggr_filter == amg_filter_mat_).or.(parms%aggr_filter == amg_filter_prow_mat_)
!
! naggr: number of local aggregates
@@ -220,7 +221,7 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
! \tilde{D}_{i,i} = \sum_{j \ne i} |a_{i,j}|
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
end do
!$OMP end parallel do
end if
@@ -257,8 +258,13 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
if (jd == -1) then
! if (.not.do_l1correction)
write(0,*) 'Wrong input: we need the diagonal!!!!', i
else
else if (parms%aggr_filter == amg_filter_mat_) then
! We perform filtering in the standard way assuming that A is an M-matrix
acsrf%val(jd)=acsrf%val(jd)-tmp
else if (parms%aggr_filter == amg_filter_prow_mat_) then
! We are probably doing l1-correction, hence we want to preserve the
! row sum of the matrix: note the change in sign
acsrf%val(jd)=acsrf%val(jd)+tmp
end if
enddo
!$OMP end parallel do
@@ -266,7 +272,6 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
call acsrf%clean_zeros(info)
end if
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
if (adiag(i) /= dzero) then
@@ -278,11 +283,11 @@ subroutine amg_daggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
!$OMP end parallel do
if (parms%aggr_omega_alg == amg_eig_est_) then
!if (do_l1correction) then
! ! For l1-Jacobi this can be estimated with 1
! parms%aggr_omega_val = done
!
if (parms%aggr_eig == amg_max_norm_) then
if ( (parms%aggr_filter == amg_filter_prow_mat_).and.(do_l1correction) ) then
! For l1-Jacobi this can be estimated with 1:
! this makes sense only if we are preserving the row-sum!
parms%aggr_omega_val = done
else if (parms%aggr_eig == amg_max_norm_) then
allocate(arwsum(nrow))
call acsr%arwsum(arwsum)
anorm = maxval(abs(adiag(1:nrow)*arwsum(1:nrow)))
@@ -216,6 +216,7 @@ subroutine amg_s_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -420,6 +421,7 @@ subroutine amg_s_ls_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -629,6 +631,7 @@ subroutine amg_ls_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
+1
View File
@@ -142,6 +142,7 @@ subroutine amg_s_rap(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -110,6 +110,7 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_s_inner_mod, amg_protect_name => amg_saggrmat_smth_bld
use amg_s_base_aggregator_mod
! use, intrinsic :: ieee_arithmetic
implicit none
@@ -192,7 +193,7 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
filter_mat = (parms%aggr_filter == amg_filter_mat_)
filter_mat = (parms%aggr_filter == amg_filter_mat_).or.(parms%aggr_filter == amg_filter_prow_mat_)
!
! naggr: number of local aggregates
@@ -220,7 +221,7 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
! \tilde{D}_{i,i} = \sum_{j \ne i} |a_{i,j}|
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
end do
!$OMP end parallel do
end if
@@ -257,8 +258,13 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
if (jd == -1) then
! if (.not.do_l1correction)
write(0,*) 'Wrong input: we need the diagonal!!!!', i
else
else if (parms%aggr_filter == amg_filter_mat_) then
! We perform filtering in the standard way assuming that A is an M-matrix
acsrf%val(jd)=acsrf%val(jd)-tmp
else if (parms%aggr_filter == amg_filter_prow_mat_) then
! We are probably doing l1-correction, hence we want to preserve the
! row sum of the matrix: note the change in sign
acsrf%val(jd)=acsrf%val(jd)+tmp
end if
enddo
!$OMP end parallel do
@@ -266,7 +272,6 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
call acsrf%clean_zeros(info)
end if
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
if (adiag(i) /= szero) then
@@ -278,11 +283,11 @@ subroutine amg_saggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
!$OMP end parallel do
if (parms%aggr_omega_alg == amg_eig_est_) then
!if (do_l1correction) then
! ! For l1-Jacobi this can be estimated with 1
! parms%aggr_omega_val = done
!
if (parms%aggr_eig == amg_max_norm_) then
if ( (parms%aggr_filter == amg_filter_prow_mat_).and.(do_l1correction) ) then
! For l1-Jacobi this can be estimated with 1:
! this makes sense only if we are preserving the row-sum!
parms%aggr_omega_val = done
else if (parms%aggr_eig == amg_max_norm_) then
allocate(arwsum(nrow))
call acsr%arwsum(arwsum)
anorm = maxval(abs(adiag(1:nrow)*arwsum(1:nrow)))
@@ -216,6 +216,7 @@ subroutine amg_z_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -420,6 +421,7 @@ subroutine amg_z_lz_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -629,6 +631,7 @@ subroutine amg_lz_ptap_bld(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
+1
View File
@@ -142,6 +142,7 @@ subroutine amg_z_rap(a_csr,desc_a,nlaggr,parms,ac,&
call ac_csr%set_nrows(desc_ac%get_local_rows())
call ac_csr%set_ncols(desc_ac%get_local_cols())
call ac_csr%clean_zeros(info)
call ac%mv_from(ac_csr)
call ac%set_asb()
@@ -110,6 +110,7 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_z_inner_mod, amg_protect_name => amg_zaggrmat_smth_bld
use amg_z_base_aggregator_mod
! use, intrinsic :: ieee_arithmetic
implicit none
@@ -192,7 +193,7 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
filter_mat = (parms%aggr_filter == amg_filter_mat_)
filter_mat = (parms%aggr_filter == amg_filter_mat_).or.(parms%aggr_filter == amg_filter_prow_mat_)
!
! naggr: number of local aggregates
@@ -220,7 +221,7 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
! \tilde{D}_{i,i} = \sum_{j \ne i} |a_{i,j}|
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
adiag(i) = adiag(i) + l1rwsum(i) - abs(adiag(i))
end do
!$OMP end parallel do
end if
@@ -257,8 +258,13 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
if (jd == -1) then
! if (.not.do_l1correction)
write(0,*) 'Wrong input: we need the diagonal!!!!', i
else
else if (parms%aggr_filter == amg_filter_mat_) then
! We perform filtering in the standard way assuming that A is an M-matrix
acsrf%val(jd)=acsrf%val(jd)-tmp
else if (parms%aggr_filter == amg_filter_prow_mat_) then
! We are probably doing l1-correction, hence we want to preserve the
! row sum of the matrix: note the change in sign
acsrf%val(jd)=acsrf%val(jd)+tmp
end if
enddo
!$OMP end parallel do
@@ -266,7 +272,6 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
call acsrf%clean_zeros(info)
end if
!$OMP parallel do private(i) schedule(static)
do i=1,size(adiag)
if (adiag(i) /= zzero) then
@@ -278,11 +283,11 @@ subroutine amg_zaggrmat_smth_bld(dol1smoothing,a,desc_a,ilaggr,nlaggr,&
!$OMP end parallel do
if (parms%aggr_omega_alg == amg_eig_est_) then
!if (do_l1correction) then
! ! For l1-Jacobi this can be estimated with 1
! parms%aggr_omega_val = done
!
if (parms%aggr_eig == amg_max_norm_) then
if ( (parms%aggr_filter == amg_filter_prow_mat_).and.(do_l1correction) ) then
! For l1-Jacobi this can be estimated with 1:
! this makes sense only if we are preserving the row-sum!
parms%aggr_omega_val = done
else if (parms%aggr_eig == amg_max_norm_) then
allocate(arwsum(nrow))
call acsr%arwsum(arwsum)
anorm = maxval(abs(adiag(1:nrow)*arwsum(1:nrow)))
@@ -129,7 +129,7 @@ subroutine amg_c_base_onelev_descr(lv,il,nl,ilmin,info,iout,verbosity,prefix)
& ' avg:', &
& lv%linmap%nagavg
end if
write(iout_,'(a,1xa,1x,f14.2)') trim(prefix_),&
write(iout_,'(a,1x,a,1x,f14.2)') trim(prefix_),&
& ' Aggregation ratio: ', &
& lv%szratio
end if
@@ -129,7 +129,7 @@ subroutine amg_d_base_onelev_descr(lv,il,nl,ilmin,info,iout,verbosity,prefix)
& ' avg:', &
& lv%linmap%nagavg
end if
write(iout_,'(a,1xa,1x,f14.2)') trim(prefix_),&
write(iout_,'(a,1x,a,1x,f14.2)') trim(prefix_),&
& ' Aggregation ratio: ', &
& lv%szratio
end if
@@ -129,7 +129,7 @@ subroutine amg_s_base_onelev_descr(lv,il,nl,ilmin,info,iout,verbosity,prefix)
& ' avg:', &
& lv%linmap%nagavg
end if
write(iout_,'(a,1xa,1x,f14.2)') trim(prefix_),&
write(iout_,'(a,1x,a,1x,f14.2)') trim(prefix_),&
& ' Aggregation ratio: ', &
& lv%szratio
end if
@@ -129,7 +129,7 @@ subroutine amg_z_base_onelev_descr(lv,il,nl,ilmin,info,iout,verbosity,prefix)
& ' avg:', &
& lv%linmap%nagavg
end if
write(iout_,'(a,1xa,1x,f14.2)') trim(prefix_),&
write(iout_,'(a,1x,a,1x,f14.2)') trim(prefix_),&
& ' Aggregation ratio: ', &
& lv%szratio
end if
@@ -40,7 +40,7 @@ subroutine amg_c_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_c_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_c_jac_smoother, amg_protect_name => amg_c_jac_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_c_jac_smoother_clone_settings(sm,smout,info)
use amg_c_jac_smoother, amg_protect_name => amg_c_jac_smoother_clone_settings
Implicit None
! Arguments
class(amg_c_jac_smoother_type), intent(inout) :: sm
class(amg_c_jac_smoother_type), intent(inout) :: sm
class(amg_c_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_d_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_d_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_d_jac_smoother, amg_protect_name => amg_d_jac_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_d_jac_smoother_clone_settings(sm,smout,info)
use amg_d_jac_smoother, amg_protect_name => amg_d_jac_smoother_clone_settings
Implicit None
! Arguments
class(amg_d_jac_smoother_type), intent(inout) :: sm
class(amg_d_jac_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_d_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_d_poly_smoother, amg_protect_name => amg_d_poly_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_d_poly_smoother_clone_settings(sm,smout,info)
use amg_d_poly_smoother, amg_protect_name => amg_d_poly_smoother_clone_settings
Implicit None
! Arguments
class(amg_d_poly_smoother_type), intent(inout) :: sm
class(amg_d_poly_smoother_type), intent(inout) :: sm
class(amg_d_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_s_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_s_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_s_jac_smoother, amg_protect_name => amg_s_jac_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_s_jac_smoother_clone_settings(sm,smout,info)
use amg_s_jac_smoother, amg_protect_name => amg_s_jac_smoother_clone_settings
Implicit None
! Arguments
class(amg_s_jac_smoother_type), intent(inout) :: sm
class(amg_s_jac_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_s_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_s_poly_smoother, amg_protect_name => amg_s_poly_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_s_poly_smoother_clone_settings(sm,smout,info)
use amg_s_poly_smoother, amg_protect_name => amg_s_poly_smoother_clone_settings
Implicit None
! Arguments
class(amg_s_poly_smoother_type), intent(inout) :: sm
class(amg_s_poly_smoother_type), intent(inout) :: sm
class(amg_s_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_z_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_z_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_z_jac_smoother, amg_protect_name => amg_z_jac_smoother_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -41,7 +41,7 @@ subroutine amg_z_jac_smoother_clone_settings(sm,smout,info)
use amg_z_jac_smoother, amg_protect_name => amg_z_jac_smoother_clone_settings
Implicit None
! Arguments
class(amg_z_jac_smoother_type), intent(inout) :: sm
class(amg_z_jac_smoother_type), intent(inout) :: sm
class(amg_z_base_smoother_type), intent(inout) :: smout
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_) :: err_act
@@ -40,7 +40,7 @@ subroutine amg_c_jac_solver_apply(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_c_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_c_jac_solver, amg_protect_name => amg_c_jac_solver_apply
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -40,7 +40,7 @@ subroutine amg_c_jac_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_c_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_c_jac_solver, amg_protect_name => amg_c_jac_solver_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -169,7 +169,7 @@ subroutine amg_c_krm_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
& trans,work,wv,info,init,initu)
use psb_base_mod
use psb_krylov_mod
use psb_linsolve_mod
use amg_c_krm_solver, amg_protect_name => amg_c_krm_solver_apply_vect
Implicit None
@@ -40,7 +40,7 @@ subroutine amg_d_jac_solver_apply(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_d_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_d_jac_solver, amg_protect_name => amg_d_jac_solver_apply
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -40,7 +40,7 @@ subroutine amg_d_jac_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_d_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_d_jac_solver, amg_protect_name => amg_d_jac_solver_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -169,7 +169,7 @@ subroutine amg_d_krm_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
& trans,work,wv,info,init,initu)
use psb_base_mod
use psb_krylov_mod
use psb_linsolve_mod
use amg_d_krm_solver, amg_protect_name => amg_d_krm_solver_apply_vect
Implicit None
@@ -40,7 +40,7 @@ subroutine amg_s_jac_solver_apply(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_s_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_s_jac_solver, amg_protect_name => amg_s_jac_solver_apply
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -40,7 +40,7 @@ subroutine amg_s_jac_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_s_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_s_jac_solver, amg_protect_name => amg_s_jac_solver_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -169,7 +169,7 @@ subroutine amg_s_krm_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
& trans,work,wv,info,init,initu)
use psb_base_mod
use psb_krylov_mod
use psb_linsolve_mod
use amg_s_krm_solver, amg_protect_name => amg_s_krm_solver_apply_vect
Implicit None
@@ -40,7 +40,7 @@ subroutine amg_z_jac_solver_apply(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_z_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_z_jac_solver, amg_protect_name => amg_z_jac_solver_apply
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -40,7 +40,7 @@ subroutine amg_z_jac_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,&
use psb_base_mod
use amg_z_diag_solver
use psb_base_krylov_conv_mod, only : log_conv
use psb_base_linsolve_conv_mod, only : log_conv
use amg_z_jac_solver, amg_protect_name => amg_z_jac_solver_apply_vect
implicit none
type(psb_desc_type), intent(in) :: desc_data
@@ -169,7 +169,7 @@ subroutine amg_z_krm_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
& trans,work,wv,info,init,initu)
use psb_base_mod
use psb_krylov_mod
use psb_linsolve_mod
use amg_z_krm_solver, amg_protect_name => amg_z_krm_solver_apply_vect
Implicit None
+2 -2
View File
@@ -264,7 +264,7 @@ contains
& ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_krylov_mod
use psb_linsolve_mod
use psb_prec_cbind_mod
use psb_dkrylov_cbind_mod
implicit none
@@ -285,7 +285,7 @@ contains
& ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_krylov_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
+2 -2
View File
@@ -264,7 +264,7 @@ contains
& ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_krylov_mod
use psb_linsolve_mod
use psb_prec_cbind_mod
use psb_zkrylov_cbind_mod
implicit none
@@ -285,7 +285,7 @@ contains
& ah,ph,bh,xh,eps,cdh,itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_krylov_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
+8 -8
View File
@@ -9,8 +9,8 @@ HERE=.
FINCLUDES=$(FMFLAG). $(FMFLAG)$(LIBDIR) $(FMFLAG)$(PSBLAS_INCDIR)
#PSBLAS_LIBS= -L$(PSBLAS_LIBDIR) -L$(LIBDIR) $(CPSBLAS_LIB) $(PSBLAS_LIB)
# -lpsb_krylov_cbind -lpsb_prec_cbind -lpsb_base_cbind
PSBC_LIBS= -L$(PSBLAS_LIBDIR) -lpsb_cbind -lpsb_krylov -lpsb_prec
MLDC_LIBS=-L$(LIBDIR) -lmld_cbind -lmld_prec
PSBC_LIBS= -L$(PSBLAS_LIBDIR) -lpsb_cbind -lpsb_linsolve -lpsb_prec
AMGC_LIBS=-L$(LIBDIR) -lamg_cbind -lamg_prec
#
# Compilers and such
#
@@ -23,15 +23,15 @@ EXEDIR=./runs
#UMFLIBS=-lumfpack -lamd -lcholmod -lcolamd -lcamd -lccolamd -L/usr/include/suitesparse
#UMFFLAGS=-DHave_UMF_ -I/usr/include/suitesparse
all: mldec
all: amgec
mldec: mldec.o
$(MPFC) mldec.o -o mldec $(MLDC_LIBS) $(PSBC_LIBS) $(PSBCLDLIBS) $(PSBLAS_LIBS) \
amgec: amgec.o
$(MPFC) amgec.o -o amgec $(AMGC_LIBS) $(PSBC_LIBS) $(PSBCLDLIBS) $(PSBLAS_LIBS) \
$(UMFLIBS) $(PSBLDLIBS) $(LDLIBS) -lm -lgfortran
# \
# -lifcore -lifcoremt -lguide -limf -lirc -lintlc -lcxaguard -L/opt/intel/fc/10.0.023/lib/ -lm
/bin/mv mldec $(EXEDIR)
/bin/mv amgec $(EXEDIR)
.f90.o:
$(MPFC) $(F90COPT) $(FINCLUDES) $(FDEFINES) -c $<
@@ -40,13 +40,13 @@ mldec: mldec.o
clean:
/bin/rm -f mldec.o $(EXEDIR)/mldec
/bin/rm -f amgec.o $(EXEDIR)/amgec
verycleanlib:
(cd ../..; make veryclean)
lib:
(cd ../../; make library)
tests: all
cd runs ; ./mldec < mlde.inp
cd runs ; ./amgec < amge.inp
+44 -41
View File
@@ -77,7 +77,7 @@
#include <math.h>
#include "psb_base_cbind.h"
#include "mld_cbind.h"
#include "amg_cbind.h"
double a1(double x, double y, double z)
@@ -123,7 +123,7 @@ double g(double x, double y, double z)
#define NBMAX 20
psb_i_t matgen(psb_i_t ictxt, psb_i_t nl, psb_i_t idim, psb_l_t vl[],
psb_i_t matgen(psb_c_ctxt cctxt, psb_i_t nl, psb_i_t idim, psb_l_t vl[],
psb_c_dspmat *ah,psb_c_descriptor *cdh,
psb_c_dvector *xh, psb_c_dvector *bh, psb_c_dvector *rh)
{
@@ -135,7 +135,7 @@ psb_i_t matgen(psb_i_t ictxt, psb_i_t nl, psb_i_t idim, psb_l_t vl[],
psb_l_t irow[10*NBMAX], icol[10*NBMAX];
info = 0;
psb_c_info(ictxt,&iam,&np);
psb_c_info(cctxt,&iam,&np);
deltah = (double) 1.0/(idim+1);
sqdeltah = deltah*deltah;
deltah2 = 2.0* deltah;
@@ -253,11 +253,12 @@ void get_hparm(FILE *fp, char *val)
int main(int argc, char *argv[])
{
psb_i_t ictxt, iam, np;
psb_c_ctxt *cctxt;
psb_i_t iam, np;
char methd[40], ptype[40], afmt[8];
psb_i_t nparms;
psb_i_t idim,info,istop,itmax,itrace,irst,iter,ret;
mld_c_dprec *ph;
amg_c_dprec *ph;
psb_c_dspmat *ah;
psb_c_dvector *bh, *xh, *rh;
psb_i_t nb,nlr, nl;
@@ -269,12 +270,13 @@ int main(int argc, char *argv[])
psb_c_descriptor *cdh;
FILE *vectfile;
ictxt = psb_c_init();
psb_c_info(ictxt,&iam,&np);
cctxt = psb_c_new_ctxt();
psb_c_init(cctxt);
psb_c_info(*cctxt,&iam,&np);
fprintf(stdout,"Initialization: am %d of %d\n",iam,np);
fflush(stdout);
psb_c_barrier(ictxt);
psb_c_barrier(*cctxt);
if (iam == 0) {
get_iparm(stdin,&nparms);
get_hparm(stdin,methd);
@@ -287,17 +289,17 @@ int main(int argc, char *argv[])
get_iparm(stdin,&irst);
}
/* Now broadcast the values, and check they're OK */
psb_c_ibcast(ictxt,1,&nparms,0);
psb_c_hbcast(ictxt,methd,0);
psb_c_hbcast(ictxt,ptype,0);
psb_c_hbcast(ictxt,afmt,0);
psb_c_ibcast(ictxt,1,&idim,0);
psb_c_ibcast(ictxt,1,&istop,0);
psb_c_ibcast(ictxt,1,&itmax,0);
psb_c_ibcast(ictxt,1,&itrace,0);
psb_c_ibcast(ictxt,1,&irst,0);
psb_c_ibcast(*cctxt,1,&nparms,0);
psb_c_hbcast(*cctxt,methd,0);
psb_c_hbcast(*cctxt,ptype,0);
psb_c_hbcast(*cctxt,afmt,0);
psb_c_ibcast(*cctxt,1,&idim,0);
psb_c_ibcast(*cctxt,1,&istop,0);
psb_c_ibcast(*cctxt,1,&itmax,0);
psb_c_ibcast(*cctxt,1,&itrace,0);
psb_c_ibcast(*cctxt,1,&irst,0);
psb_c_barrier(ictxt);
psb_c_barrier(*cctxt);
cdh=psb_c_new_descriptor();
psb_c_set_index_base(0);
@@ -310,15 +312,15 @@ int main(int argc, char *argv[])
fprintf(stderr,"%d: Input data %d %ld %d %d\n",iam,idim,ng,nb, nl);
if ((vl=malloc(nb*sizeof(psb_l_t)))==NULL) {
fprintf(stderr,"On %d: malloc failure\n",iam);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
i = ((psb_l_t)iam) * nb;
for (k=0; k<nl; k++)
vl[k] = i+k;
if ((info=psb_c_cdall_vl(nl,vl,ictxt,cdh))!=0) {
if ((info=psb_c_cdall_vl(nl,vl,*cctxt,cdh))!=0) {
fprintf(stderr,"From cdall: %d\nBailing out\n",info);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
bh = psb_c_new_dvector();
@@ -337,25 +339,25 @@ int main(int argc, char *argv[])
/* Matrix generation */
if (matgen(ictxt,nl,idim,vl,ah,cdh,xh,bh,rh) != 0) {
if (matgen(*cctxt,nl,idim,vl,ah,cdh,xh,bh,rh) != 0) {
fprintf(stderr,"Error during matrix build loop\n");
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
psb_c_barrier(ictxt);
psb_c_barrier(*cctxt);
/* Set up the preconditioner */
ph = mld_c_dprec_new();
mld_c_dprecinit(ictxt,ph,ptype);
mld_c_dprecseti(ph,"SMOOTHER_SWEEPS",2);
mld_c_dprecseti(ph,"SUB_FILLIN",1);
mld_c_dprecsetc(ph,"COARSE_SOLVE","BJAC");
mld_c_dprecsetc(ph,"COARSE_SUBSOLVE","ILU");
mld_c_dprecseti(ph,"COARSE_FILLIN",0);
if ((ret=mld_c_dhierarchy_build(ah,cdh,ph))!=0)
ph = amg_c_dprec_new();
amg_c_dprecinit(*cctxt,ph,ptype);
amg_c_dprecseti(ph,"SMOOTHER_SWEEPS",2);
amg_c_dprecseti(ph,"SUB_FILLIN",1);
amg_c_dprecsetc(ph,"COARSE_SOLVE","BJAC");
amg_c_dprecsetc(ph,"COARSE_SUBSOLVE","ILU");
amg_c_dprecseti(ph,"COARSE_FILLIN",0);
if ((ret=amg_c_dhierarchy_build(ah,cdh,ph))!=0)
fprintf(stderr,"From hierarchy_build: %d\n",ret);
if ((ret=mld_c_dsmoothers_build(ah,cdh,ph))!=0)
if ((ret=amg_c_dsmoothers_build(ah,cdh,ph))!=0)
fprintf(stderr,"From smoothers_build: %d\n",ret);
psb_c_barrier(ictxt);
psb_c_barrier(*cctxt);
/* Set up the solver options */
psb_c_DefaultSolverOptions(&options);
options.eps = 1.e-6;
@@ -365,7 +367,7 @@ int main(int argc, char *argv[])
options.istop = istop;
psb_c_seterraction_ret();
t1=psb_c_wtime();
ret=mld_c_dkrylov(methd,ah,ph,bh,xh,cdh,&options);
ret=amg_c_dkrylov(methd,ah,ph,bh,xh,cdh,&options);
t2=psb_c_wtime();
iter = options.iter;
err = options.err;
@@ -413,20 +415,20 @@ int main(int argc, char *argv[])
/* Clean up memory */
if ((info=psb_c_dgefree(xh,cdh))!=0) {
fprintf(stderr,"From dgefree: %d\nBailing out\n",info);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
if ((info=psb_c_dgefree(bh,cdh))!=0) {
fprintf(stderr,"From dgefree: %d\nBailing out\n",info);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
if ((info=psb_c_dgefree(rh,cdh))!=0) {
fprintf(stderr,"From dgefree: %d\nBailing out\n",info);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
if ((info=psb_c_cdfree(cdh))!=0) {
fprintf(stderr,"From cdfree: %d\nBailing out\n",info);
psb_c_abort(ictxt);
psb_c_abort(*cctxt);
}
//fprintf(stderr,"pointer from cdfree: %p\n",cdh->descriptor);
@@ -440,6 +442,7 @@ int main(int argc, char *argv[])
if (iam == 0) fprintf(stderr,"program completed successfully\n");
psb_c_barrier(ictxt);
psb_c_exit(ictxt);
psb_c_barrier(*cctxt);
psb_c_exit(*cctxt);
free(cctxt);
}
+2 -2
View File
@@ -409,7 +409,7 @@ save_LDFLAGS=$LDFLAGS;
## dnl AC_MSG_NOTICE([psblas dir $pac_cv_psblas_dir])
## PSBLAS_LIBS="-L$pac_cv_psblas_dir/lib"
## fi
PSBLAS_LIBS="-lpsb_krylov -lpsb_prec -lpsb_util -lpsb_base -L$PSBLAS_LIBDIR"
PSBLAS_LIBS="-lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base -L$PSBLAS_LIBDIR"
LDFLAGS=" $PSBLAS_LIBS $save_LDFLAGS"
dnl ac_compile='${MPIFC-$FC} -c -o conftest${ac_objext} $FMFLAG$PSBLAS_DIR/include $FMFLAG$PSBLAS_DIR/lib conftest.$ac_ext 1>&5'
@@ -484,7 +484,7 @@ dnl AC_MSG_NOTICE([psblas dir $pac_cv_psblas_dir])
PSBLAS_INCLUDES="$FMFLAG$pac_cv_psblas_dir/modules $PSBLAS_INCLUDES"
fi
FCFLAGS=" $PSBLAS_INCLUDES $save_FCFLAGS"
PSBLAS_LIBS="-lpsb_krylov -lpsb_prec -lpsb_util -lpsb_base $PSBLAS_LIBS"
PSBLAS_LIBS="-lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base $PSBLAS_LIBS"
LDFLAGS=" $PSBLAS_LIBS $save_LDFLAGS"
dnl ac_compile='${MPIFC-$FC} -c -o conftest${ac_objext} $FMFLAG$PSBLAS_DIR/include $FMFLAG$PSBLAS_DIR/lib conftest.$ac_ext 1>&5'
Vendored
+4 -4
View File
@@ -7417,7 +7417,7 @@ then
FIFLAG="-I"
BASEMODNAME=PSB_BASE_MOD
PRECMODNAME=PSB_PREC_MOD
METHDMODNAME=PSB_KRYLOV_MOD
METHDMODNAME=PSB_LINSOLVE_MOD
UTILMODNAME=PSB_UTIL_MOD
else
@@ -7550,7 +7550,7 @@ printf "%s\n" "$ax_cv_f90_modflag" >&6; }
FIFLAG=-I
BASEMODNAME=psb_base_mod
PRECMODNAME=psb_prec_mod
METHDMODNAME=psb_krylov_mod
METHDMODNAME=psb_linsolve_mod
UTILMODNAME=psb_util_mod
fi
@@ -7683,7 +7683,7 @@ save_LDFLAGS=$LDFLAGS;
## dnl AC_MSG_NOTICE([psblas dir $pac_cv_psblas_dir])
## PSBLAS_LIBS="-L$pac_cv_psblas_dir/lib"
## fi
PSBLAS_LIBS="-lpsb_krylov -lpsb_prec -lpsb_util -lpsb_base -L$PSBLAS_LIBDIR"
PSBLAS_LIBS="-lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base -L$PSBLAS_LIBDIR"
LDFLAGS=" $PSBLAS_LIBS $save_LDFLAGS"
ac_link='${MPIFC-$FC} -o conftest${ac_exeext} $FCFLAGS conftest.$ac_ext $LDFLAGS $LIBS 1>&5'
@@ -7787,7 +7787,7 @@ elif test "x$pac_cv_psblas_dir" != "x"; then
PSBLAS_INCLUDES="$FMFLAG$pac_cv_psblas_dir/modules $PSBLAS_INCLUDES"
fi
FCFLAGS=" $PSBLAS_INCLUDES $save_FCFLAGS"
PSBLAS_LIBS="-lpsb_krylov -lpsb_prec -lpsb_util -lpsb_base $PSBLAS_LIBS"
PSBLAS_LIBS="-lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base $PSBLAS_LIBS"
LDFLAGS=" $PSBLAS_LIBS $save_LDFLAGS"
+2 -2
View File
@@ -525,7 +525,7 @@ then
FIFLAG="-I"
BASEMODNAME=PSB_BASE_MOD
PRECMODNAME=PSB_PREC_MOD
METHDMODNAME=PSB_KRYLOV_MOD
METHDMODNAME=PSB_LINSOLVE_MOD
UTILMODNAME=PSB_UTIL_MOD
else
@@ -536,7 +536,7 @@ else
FIFLAG=-I
BASEMODNAME=psb_base_mod
PRECMODNAME=psb_prec_mod
METHDMODNAME=psb_krylov_mod
METHDMODNAME=psb_linsolve_mod
UTILMODNAME=psb_util_mod
fi
+7
View File
@@ -0,0 +1,7 @@
all: guide
guide:
cd src && $(MAKE) clean all
doxy:
doxygen doxypsb
+33 -108
View File
@@ -29,9 +29,9 @@ class="cmbx-12">Salvatore Filippone </span><br
class="newline" /><span
class="cmr-12">University of Rome Tor-Vergata and IAC-CNR</span><br
class="newline" /> <span
class="cmr-12">Software version: 1.0</span><br
class="cmr-12">Software version: 1.2</span><br
class="newline" /><span
class="cmr-12">May 11th, 2021</span>
class="cmr-12">December 31st, 2024</span>
@@ -45,140 +45,62 @@ class="newline" />
<div class="tableofcontents">
<span class="likesectionToc" ><a
<span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli1.html#x2-1000" id="QQ2-2-1"><span
class="cmr-12">Abstract</span></a></span>
<br /> <span class="likesectionToc" ><a
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli2.html#x3-2000" id="QQ2-3-2"><span
class="cmr-12">Contents</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">1 </span><a
href="userhtmlse1.html#x4-30001" id="QQ2-4-3"><span
class="cmr-12">General Overview</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">2 </span><a
href="userhtmlse2.html#x5-40002" id="QQ2-5-4"><span
class="cmr-12">Code Distribution</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002" id="QQ2-6-5"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002" id="QQ2-7-6"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003" id="QQ2-8-7"><span
href="userhtmlse3.html#x6-70003" id="QQ2-6-7"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1" id="QQ2-9-8"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2" id="QQ2-10-9"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3" id="QQ2-11-10"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4" id="QQ2-12-12"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5" id="QQ2-13-13"><span
class="cmr-12">Example and test programs</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004" id="QQ2-14-14"><span
href="userhtmlse4.html#x7-130004" id="QQ2-7-14"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
class="cmr-12">GPU example</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
href="userhtmlse5.html#x8-160005" id="QQ2-8-25"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">6 </span><a
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
href="userhtmlse6.html#x9-310006" id="QQ2-9-48"><span
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">7 </span><a
href="userhtmlse7.html#x28-320007" id="QQ2-28-48"><span
href="userhtmlse7.html#x10-320007" id="QQ2-10-49"><span
class="cmr-12">Error Handling</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">A </span><a
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
href="userhtmlse8.html#x11-33000A" id="QQ2-11-50"><span
class="cmr-12">License</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">B </span><a
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
href="userhtmlse9.html#x12-34000B" id="QQ2-12-51"><span
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli3.html#x13-39000" id="QQ2-13-56"><span
class="cmr-12">References</span></a></span>
</div>
@@ -189,6 +111,9 @@ class="cmr-12">References</span></a></span>
+83 -100
View File
@@ -22,6 +22,9 @@
.cmmi-8{font-size:72%;font-style: italic;}
.cmsy-10x-x-120{font-size:109%;}
.cmsy-8{font-size:72%;}
.cmtt-10{font-size:90%;font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.tctt-1200{font-size:109%;font-family: monospace,monospace;}
.cmmi-10x-x-109{font-style: italic;}
.cmsy-10x-x-109{}
@@ -29,9 +32,6 @@
.cmtt-10x-x-109{font-family: monospace,monospace;}
.cmtt-10x-x-109{font-family: monospace,monospace;}
.cmcsc-10x-x-109{}
.cmtt-10{font-size:90%;font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmbx-10x-x-109{ font-weight: bold;}
.cmbx-10x-x-109{ font-weight: bold;}
.cmbx-10x-x-109{ font-weight: bold;}
@@ -42,21 +42,26 @@ p.indent{text-indent:0;}
p + p{margin-top:1em;}
p + div, p + pre {margin-top:1em;}
div + p, pre + p {margin-top:1em;}
a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; }
@media print {div.crosslinks {visibility:hidden;}}
table.tabular{border-collapse: collapse; border-spacing: 0;}
a img { border-top: 0; border-left: 0; border-right: 0; }
center { margin-top:1em; margin-bottom:1em; }
td center { margin-top:0em; margin-bottom:0em; }
.Canvas { position:relative; }
img.math{vertical-align:middle;}
div.par-math-display, div.math-display{text-align:center;}
li p.indent { text-indent: 0em }
li p:first-child{ margin-top:0em; }
li p:last-child, li div:last-child { margin-bottom:0.5em; }
li p:first-child{ margin-bottom:0; }
li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
.enumerate1 {list-style-type:decimal;}
.enumerate2 {list-style-type:lower-alpha;}
.enumerate3 {list-style-type:lower-roman;}
.enumerate4 {list-style-type:upper-alpha;}
div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
div.newtheorem .head{font-weight: bold;}
.obeylines-h,.obeylines-v {white-space: nowrap; }
div.obeylines-v p { margin-top:0; margin-bottom:0; }
.overline{ text-decoration:overline; }
@@ -100,6 +105,9 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{ height : 0px; margin:0px; }
.hline td, .cline td{ padding: 0; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
.hline:first-child{border-bottom:1px solid black;border-top:none;}
.tabbing-right {text-align:right;}
div.float, div.figure {margin-left: auto; margin-right: auto;}
div.float img {text-align:center;}
@@ -124,15 +132,16 @@ table.pmatrix {width:100%;}
span.bar-css {text-decoration:overline;}
img.cdots{vertical-align:middle;}
.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
.index-item, .index-subitem, .index-subsubitem {display:block}
div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
div.caption span.id{font-weight: bold; white-space: nowrap; }
h1.partHead{text-align: center}
p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
.subsubsectionHead, .likesubsubsectionHead { font-size: 1em; }
.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
.verse{white-space:nowrap; margin-left:2em}
div.maketitle {text-align:center;}
h2.titleHead{text-align:center;}
@@ -140,121 +149,95 @@ div.maketitle{ margin-bottom: 2em; }
div.author, div.date {text-align:center;}
div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
div.author{white-space: nowrap;}
.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
.abstract p {margin-left:5%; margin-right:5%;}
div.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
.abstracttitle{text-align:center;margin-bottom:1em;}
.subsectionToc, .likesubsectionToc {margin-left:2em;}
.subsubsectionToc, .likesubsubsectionToc {margin-left:4em;}
.paragraphToc, .likeparagraphToc {margin-left:6em;}
.subparagraphToc, .likesubparagraphToc {margin-left:8em;}
.ovalbox { padding-left:3pt; padding-right:3pt; border:solid thin; }
.Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; }
.shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; }
.doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; }
.rotatebox{display: inline-block;}
code.lstinline{font-family:monospace,monospace;}
pre.listings{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; }
.lstlisting .label{margin-right:0.5em; }
div.lstlisting{font-family: monospace,monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; }
div.lstinputlisting{ font-family: monospace,monospace; white-space: nowrap; }
pre.lstlisting{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; }
pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; }
.lstinputlisting .label{margin-right:0.5em;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-1-1{border-left: 1px solid black;}
#TBL-1-1{border-right:1px solid black;}
#TBL-1-2{border-right:1px solid black;}
#TBL-1-3{border-right:1px solid black;}
#TBL-4-1{border-left: 1px solid black;}
#TBL-4-1{border-right:1px solid black;}
#TBL-4-2{border-right:1px solid black;}
#TBL-4-3{border-right:1px solid black;}
#TBL-4-4{border-right:1px solid black;}
#TBL-4-5{border-right:1px solid black;}
#TBL-5-1{border-left: 1px solid black;}
#TBL-5-1{border-right:1px solid black;}
#TBL-5-2{border-right:1px solid black;}
#TBL-5-3{border-right:1px solid black;}
#TBL-5-4{border-right:1px solid black;}
#TBL-5-5{border-right:1px solid black;}
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6-1{border-left: 1px solid black;}
#TBL-6-1{border-right:1px solid black;}
#TBL-6-2{border-right:1px solid black;}
#TBL-6-3{border-right:1px solid black;}
#TBL-6-4{border-right:1px solid black;}
#TBL-6-5{border-right:1px solid black;}
td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7-1{border-left: 1px solid black;}
#TBL-7-1{border-right:1px solid black;}
#TBL-7-2{border-right:1px solid black;}
#TBL-7-3{border-right:1px solid black;}
#TBL-7-4{border-right:1px solid black;}
#TBL-7-5{border-right:1px solid black;}
td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-10{border-collapse:collapse;}
td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-8-1{border-left: 1px solid black;}
#TBL-8-1{border-right:1px solid black;}
#TBL-8-2{border-right:1px solid black;}
#TBL-8-3{border-right:1px solid black;}
#TBL-8-4{border-right:1px solid black;}
#TBL-8-5{border-right:1px solid black;}
#TBL-9-1{border-left: 1px solid black;}
#TBL-9-1{border-right:1px solid black;}
#TBL-9-2{border-right:1px solid black;}
#TBL-9-3{border-right:1px solid black;}
#TBL-9-4{border-right:1px solid black;}
#TBL-9-5{border-right:1px solid black;}
#TBL-10-1{border-left: 1px solid black;}
#TBL-10-1{border-right:1px solid black;}
#TBL-10-2{border-right:1px solid black;}
#TBL-10-3{border-right:1px solid black;}
#TBL-10-4{border-right:1px solid black;}
#TBL-10-5{border-right:1px solid black;}
#TBL-11-1{border-left: 1px solid black;}
#TBL-11-1{border-right:1px solid black;}
#TBL-11-2{border-right:1px solid black;}
#TBL-11-3{border-right:1px solid black;}
#TBL-11-4{border-right:1px solid black;}
#TBL-11-5{border-right:1px solid black;}
/* end css.sty */
+33 -108
View File
@@ -29,9 +29,9 @@ class="cmbx-12">Salvatore Filippone </span><br
class="newline" /><span
class="cmr-12">University of Rome Tor-Vergata and IAC-CNR</span><br
class="newline" /> <span
class="cmr-12">Software version: 1.0</span><br
class="cmr-12">Software version: 1.2</span><br
class="newline" /><span
class="cmr-12">May 11th, 2021</span>
class="cmr-12">December 31st, 2024</span>
@@ -45,140 +45,62 @@ class="newline" />
<div class="tableofcontents">
<span class="likesectionToc" ><a
<span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli1.html#x2-1000" id="QQ2-2-1"><span
class="cmr-12">Abstract</span></a></span>
<br /> <span class="likesectionToc" ><a
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli2.html#x3-2000" id="QQ2-3-2"><span
class="cmr-12">Contents</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">1 </span><a
href="userhtmlse1.html#x4-30001" id="QQ2-4-3"><span
class="cmr-12">General Overview</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">2 </span><a
href="userhtmlse2.html#x5-40002" id="QQ2-5-4"><span
class="cmr-12">Code Distribution</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002" id="QQ2-6-5"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002" id="QQ2-7-6"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003" id="QQ2-8-7"><span
href="userhtmlse3.html#x6-70003" id="QQ2-6-7"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1" id="QQ2-9-8"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2" id="QQ2-10-9"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3" id="QQ2-11-10"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4" id="QQ2-12-12"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5" id="QQ2-13-13"><span
class="cmr-12">Example and test programs</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004" id="QQ2-14-14"><span
href="userhtmlse4.html#x7-130004" id="QQ2-7-14"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
class="cmr-12">GPU example</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
href="userhtmlse5.html#x8-160005" id="QQ2-8-25"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">6 </span><a
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
href="userhtmlse6.html#x9-310006" id="QQ2-9-48"><span
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">7 </span><a
href="userhtmlse7.html#x28-320007" id="QQ2-28-48"><span
href="userhtmlse7.html#x10-320007" id="QQ2-10-49"><span
class="cmr-12">Error Handling</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">A </span><a
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
href="userhtmlse8.html#x11-33000A" id="QQ2-11-50"><span
class="cmr-12">License</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">B </span><a
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
href="userhtmlse9.html#x12-34000B" id="QQ2-12-51"><span
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesectionToc" ><a
href="userhtmlli3.html#x13-39000" id="QQ2-13-56"><span
class="cmr-12">References</span></a></span>
</div>
@@ -189,6 +111,9 @@ class="cmr-12">References</span></a></span>
+10 -3
View File
@@ -77,9 +77,6 @@ class="cmr-12">PSCToolkit (Parallel Sparse Computation Toolkit) software framewo
class="cmr-12">of a software development project started in 2007, named MLD2P4, which originally</span>
<span
class="cmr-12">implemented a multilevel version of some domain decomposition preconditioners of</span>
<span
class="cmr-12">additive-Schwarz type, and was based on a parallel decoupled version of the well known</span>
<span
@@ -116,6 +113,9 @@ class="cmr-12">and preconditioners are represented as PSBLAS distributed sparse
class="cmr-12">AMG4PSBLAS enables the user to easily specify different features of an algebraic</span>
<span
class="cmr-12">multilevel preconditioner, thus allowing to experiment with different preconditioners for</span>
<span
class="cmr-12">the problem and parallel computers at hand.</span>
<!--l. 27--><p class="indent" > <span
@@ -145,6 +145,13 @@ class="cmr-12">of AMG4PSBLAS.</span>
<!--l. 127--><p class="indent" >
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli2.html" ><span
+67 -37
View File
@@ -31,155 +31,185 @@ class="cmr-12">] </span></p></div>
id="x3-2000"></a><span
class="cmr-12">Contents</span></h3>
<div class="tableofcontents">
<span class="sectionToc" ><span
<span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">1 </span><a
href="userhtmlse1.html#x4-30001"><span
class="cmr-12">General Overview</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">2 </span><a
href="userhtmlse2.html#x5-40002"><span
class="cmr-12">Code Distribution</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003"><span
href="userhtmlse3.html#x6-70003"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1"><span
href="userhtmlse3.html#x6-80003.1" id="QQ2-6-8"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2"><span
href="userhtmlse3.html#x6-90003.2" id="QQ2-6-9"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3"><span
href="userhtmlse3.html#x6-100003.3" id="QQ2-6-10"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4"><span
href="userhtmlse3.html#x6-110003.4" id="QQ2-6-12"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5"><span
href="userhtmlse3.html#x6-120003.5" id="QQ2-6-13"><span
class="cmr-12">Example and test programs</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004"><span
href="userhtmlse4.html#x7-130004"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1"><span
href="userhtmlse4.html#x7-140004.1" id="QQ2-7-16"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2"><span
href="userhtmlse4.html#x7-150004.2" id="QQ2-7-21"><span
class="cmr-12">GPU example</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005"><span
href="userhtmlse5.html#x8-160005"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1"><span
href="userhtmlse5.html#x8-170005.1" id="QQ2-8-26"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2"><span
href="userhtmlse5.html#x8-180005.2" id="QQ2-8-27"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3"><span
href="userhtmlse5.html#x8-190005.3" id="QQ2-8-36"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4"><span
href="userhtmlse5.html#x8-200005.4" id="QQ2-8-37"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5"><span
href="userhtmlse5.html#x8-210005.5" id="QQ2-8-38"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6"><span
href="userhtmlse5.html#x8-220005.6" id="QQ2-8-39"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7"><span
href="userhtmlse5.html#x8-230005.7" id="QQ2-8-40"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8"><span
href="userhtmlse5.html#x8-240005.8" id="QQ2-8-41"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9"><span
href="userhtmlse5.html#x8-250005.9" id="QQ2-8-42"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">5.9.1 </span><a
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-42"><span
href="userhtmlse5.html#x8-260005.9.1" id="QQ2-8-43"><span
class="cmr-12">Method: dump</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">5.9.2 </span><a
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-43"><span
href="userhtmlse5.html#x8-270005.9.2" id="QQ2-8-44"><span
class="cmr-12">Method: clone</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">5.9.3 </span><a
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-44"><span
href="userhtmlse5.html#x8-280005.9.3" id="QQ2-8-45"><span
class="cmr-12">Method: sizeof</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">5.9.4 </span><a
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-45"><span
href="userhtmlse5.html#x8-290005.9.4" id="QQ2-8-46"><span
class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">5.9.5 </span><a
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-46"><span
href="userhtmlse5.html#x8-300005.9.5" id="QQ2-8-47"><span
class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">6 </span><a
href="userhtmlse6.html#x27-310006"><span
href="userhtmlse6.html#x9-310006"><span
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">7 </span><a
href="userhtmlse7.html#x28-320007"><span
href="userhtmlse7.html#x10-320007"><span
class="cmr-12">Error Handling</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">A </span><a
href="userhtmlse8.html#x29-33000A"><span
href="userhtmlse8.html#x11-33000A"><span
class="cmr-12">License</span></a></span>
<br /> <span class="sectionToc" ><span
<br /> <span
class="cmr-12">&#x00A0;</span><span class="sectionToc" ><span
class="cmr-12">B </span><a
href="userhtmlse9.html#x30-34000B"><span
href="userhtmlse9.html#x12-34000B"><span
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
</div>
+715 -22
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Contributors</title>
<head><title>References</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
@@ -10,46 +10,739 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 23--><div class="crosslinks"><p class="noindent"><span
<!--l. 2--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli4.html" ><span
class="cmr-12">next</span></a><span
href="userhtmlse9.html" ><span
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse9.html#tailuserhtmlse9.html" ><span
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlli3.html"><span
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse2.html#userhtmlli3.html" ><span
href="userhtml.html#userhtmlli3.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="likesubsectionHead"><a
id="x6-50002"></a><span
class="cmr-12">Contributors</span></h4>
<ul class="itemize1">
<li class="itemize"><span
class="cmr-12">Pasqua D&#8217;Ambra, IAC-CNR, IT;</span>
</li>
<li class="itemize"><span
class="cmr-12">Fabio Durastante, University of Pisa and IAC-CNR, IT;</span>
<h3 class="likesectionHead"><a
id="x13-39000"></a><span
class="cmr-12">References</span></h3>
<!--l. 2--><p class="noindent" >
<div class="thebibliography">
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[1]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XPCFD2006"></a><span
class="cmr-12">A. Aprovitola, P. D&#8217;Ambra, F. Denaro, D. di Serafino, S. Filippone,</span>
<span
class="cmti-12">Scalable algebraic multilevel preconditioners with application to CFD</span><span
class="cmr-12">, in Proc.</span>
<span
class="cmr-12">of CFD 2008, LNCSE, 74, (2010), 15&#8211;27.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[2]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMUMPS"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;R.</span><span
class="cmr-12">&#x00A0;Amestoy, C.</span><span
class="cmr-12">&#x00A0;Ashcraft, O.</span><span
class="cmr-12">&#x00A0;Boiteau, A.</span><span
class="cmr-12">&#x00A0;Buttari, J.</span><span
class="cmr-12">&#x00A0;L&#8217;Excellent,</span>
<span
class="cmr-12">C.</span><span
class="cmr-12">&#x00A0;Weisbecker, </span><span
class="cmti-12">Improving multifrontal methods by means of block low-rank</span>
<span
class="cmti-12">representations</span><span
class="cmr-12">, SIAM Journal on Scientific Computing, volume 37 (3), 2015,</span>
<span
class="cmr-12">A1452&#8211;A1474. See also </span><span
class="cmtt-12">http://mumps.enseeiht.fr</span><span
class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[3]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XBERTACCINIFILIPPONE"></a><span
class="cmr-12">D. Bertaccini</span><span
class="cmr-12">&#x00A0;and</span><span
class="cmr-12">&#x00A0;S. Filippone, </span><span
class="cmti-12">Sparse approximate inverse</span>
<span
class="cmti-12">preconditioners on high performance GPU platforms</span><span
class="cmr-12">, Comput. Math. Appl.,</span>
<span
class="cmr-12">71, (2016), no.</span><span
class="cmr-12">&#x00A0;3, 693&#8211;711.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[4]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XBREZINA_VANEK"></a><span
class="cmr-12">M.</span><span
class="cmr-12">&#x00A0;Brezina, P.</span><span
class="cmr-12">&#x00A0;Van</span><span
class="cmr-12">&#x011B;k, </span><span
class="cmti-12">A Black-Box Iterative Solver Based on a</span>
<span
class="cmti-12">Two-Level Schwarz Method</span><span
class="cmr-12">, Computing, 63, 1999, 233&#8211;263.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[5]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XBriggs2000"></a><span
class="cmr-12">W.</span><span
class="cmr-12">&#x00A0;L.</span><span
class="cmr-12">&#x00A0;Briggs, V.</span><span
class="cmr-12">&#x00A0;E.</span><span
class="cmr-12">&#x00A0;Henson, S.</span><span
class="cmr-12">&#x00A0;F.</span><span
class="cmr-12">&#x00A0;McCormick, </span><span
class="cmti-12">A Multigrid Tutorial,</span>
<span
class="cmti-12">Second Edition</span><span
class="cmr-12">, SIAM, 2000.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[6]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xpara_04"></a><span
class="cmr-12">A.</span><span
class="cmr-12">&#x00A0;Buttari, P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, D.</span><span
class="cmr-12">&#x00A0;di Serafino, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">Extending</span>
<span
class="cmti-12">PSBLAS to Build Parallel Schwarz Preconditioners</span><span
class="cmr-12">, in J.</span><span
class="cmr-12">&#x00A0;Dongarra,</span>
</li>
<li class="itemize"><span
class="cmr-12">Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;</span></li></ul>
<span
class="cmr-12">K.</span><span
class="cmr-12">&#x00A0;Madsen, J.</span><span
class="cmr-12">&#x00A0;Wasniewski, editors, Proceedings of PARA</span><span
class="cmr-12">&#x00A0;04 Workshop on</span>
<span
class="cmr-12">State of the Art in Scientific Computing, Lecture Notes in Computer Science,</span>
<span
class="cmr-12">Springer, 2005, 593&#8211;602.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[7]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xaaecc_07"></a><span
class="cmr-12">A.</span><span
class="cmr-12">&#x00A0;Buttari, P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, D.</span><span
class="cmr-12">&#x00A0;di</span><span
class="cmr-12">&#x00A0;Serafino, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">2LEV-D2P4: a</span>
<span
class="cmti-12">package of high-performance preconditioners for scientific and engineering</span>
<span
class="cmti-12">applications</span><span
class="cmr-12">, Applicable Algebra in Engineering, Communications and</span>
<span
class="cmr-12">Computing, 18 (3) 2007, 223&#8211;239.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[8]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XCAI_SARKIS"></a><span
class="cmr-12">X.</span><span
class="cmr-12">&#x00A0;C.</span><span
class="cmr-12">&#x00A0;Cai, M.</span><span
class="cmr-12">&#x00A0;Sarkis, </span><span
class="cmti-12">A Restricted Additive Schwarz Preconditioner for</span>
<span
class="cmti-12">General Sparse Linear Systems</span><span
class="cmr-12">, SIAM Journal on Scientific Computing, 21</span>
<span
class="cmr-12">(2), 1999, 792&#8211;797.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[9]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMatchBoxP"></a><span
class="cmr-12">U..</span><span
class="cmr-12">&#x00A0;V.</span><span
class="cmr-12">&#x00A0;Catalyurek, F.</span><span
class="cmr-12">&#x00A0;Dobrian, A.</span><span
class="cmr-12">&#x00A0;Gebremedhin, M.</span><span
class="cmr-12">&#x00A0;Halappanavar,</span>
<span
class="cmr-12">and A.</span><span
class="cmr-12">&#x00A0;Pothen, </span><span
class="cmti-12">Distributed-memory parallel algorithms for matching and</span>
<span
class="cmti-12">coloring</span><span
class="cmr-12">, in PCO&#8217;11 New Trends in Parallel Computing and Optimization,</span>
<span
class="cmr-12">IEEE International Symposium on Parallel and Distributed Processing</span>
<span
class="cmr-12">Workshops, IEEE CS, 2011.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[10]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xapnum_07"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, S.</span><span
class="cmr-12">&#x00A0;Filippone,</span>
<span
class="cmr-12">D.</span><span
class="cmr-12">&#x00A0;di</span><span
class="cmr-12">&#x00A0;Serafino, </span><span
class="cmti-12">On the Development of PSBLAS-based Parallel Two-level</span>
<span
class="cmti-12">Schwarz Preconditioners</span><span
class="cmr-12">, Applied Numerical Mathematics, Elsevier Science,</span>
<span
class="cmr-12">57 (11-12), 2007, 1181-1196.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[11]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMLD2P4_TOMS"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, D.</span><span
class="cmr-12">&#x00A0;di</span><span
class="cmr-12">&#x00A0;Serafino, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">MLD2P4: a Package of</span>
<span
class="cmti-12">Parallel Multilevel Algebraic Domain Decomposition Preconditioners in</span>
<span
class="cmti-12">Fortran 95</span><span
class="cmr-12">, ACM Trans. Math. Softw., 37(3), 2010, art. 30.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[12]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDV2013"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra and P. S.</span><span
class="cmr-12">&#x00A0;Vassilevski, </span><span
class="cmti-12">Adaptive AMG with coarsening based</span>
<span
class="cmti-12">on compatible weighted matching</span><span
class="cmr-12">, Computing and Visualization in Science,</span>
<span
class="cmr-12">16, (2013) 59&#8211;76.</span>
<!--l. 30--><div class="crosslinks"><p class="noindent"><span
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[13]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDFV2018"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, S.</span><span
class="cmr-12">&#x00A0;Filippone and P. S.</span><span
class="cmr-12">&#x00A0;Vassilevski, </span><span
class="cmti-12">BootCMatch: a software</span>
<span
class="cmti-12">package for bootstrap AMG based on graph weighted matching</span><span
class="cmr-12">, ACM</span>
<span
class="cmr-12">Transactions on Mathematical Software, 44, (2018) 39:1&#8211;39:25.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[14]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDF2020"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">AMG preconditioners for</span>
<span
class="cmti-12">Linear Solvers towards Extreme Scale</span><span
class="cmr-12">, SIAM Journal on Scientific Computing</span>
<span
class="cmr-12">43, no. 5 (2021): S679-S703.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[15]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDFMT2024"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, S.</span><span
class="cmr-12">&#x00A0;Massei, S.</span><span
class="cmr-12">&#x00A0;Thomas</span>
<span
class="cmti-12">Optimal Polynomial Smoothers for Parallel AMG</span><span
class="cmr-12">, 2024, </span><a
href="https://arxiv.org/abs/2407.09848" ><span
class="cmr-12">arXiv:2407.09848</span></a><span
class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XUMFPACK"></a><span
class="cmr-12">T.</span><span
class="cmr-12">&#x00A0;A.</span><span
class="cmr-12">&#x00A0;Davis, </span><span
class="cmti-12">Algorithm 832: UMFPACK</span>
<span
class="cmti-12">- an Unsymmetric-pattern Multifrontal Method with a Column Pre-ordering</span>
<span
class="cmti-12">Strategy</span><span
class="cmr-12">, ACM Transactions on Mathematical Software, 30, 2004, 196&#8211;199.</span>
<span
class="cmr-12">(See also </span><span
class="cmtt-12">http://www.cise.ufl.edu/~davis/</span><span
class="cmr-12">)</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[17]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XSUPERLU"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;W.</span><span
class="cmr-12">&#x00A0;Demmel, S.</span><span
class="cmr-12">&#x00A0;C.</span><span
class="cmr-12">&#x00A0;Eisenstat, J.</span><span
class="cmr-12">&#x00A0;R.</span><span
class="cmr-12">&#x00A0;Gilbert,</span>
<span
class="cmr-12">X.</span><span
class="cmr-12">&#x00A0;S.</span><span
class="cmr-12">&#x00A0;Li, J.</span><span
class="cmr-12">&#x00A0;W.</span><span
class="cmr-12">&#x00A0;H.</span><span
class="cmr-12">&#x00A0;Liu, </span><span
class="cmti-12">A supernodal approach to sparse partial pivoting</span><span
class="cmr-12">,</span>
<span
class="cmr-12">SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720&#8211;755.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xblas3"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;J.</span><span
class="cmr-12">&#x00A0;Dongarra, J.</span><span
class="cmr-12">&#x00A0;Du Croz, I.</span><span
class="cmr-12">&#x00A0;S.</span><span
class="cmr-12">&#x00A0;Duff, S.</span><span
class="cmr-12">&#x00A0;Hammarling, </span><span
class="cmti-12">A set of Level</span>
<span
class="cmti-12">3 Basic Linear Algebra Subprograms</span><span
class="cmr-12">, ACM Transactions on Mathematical</span>
<span
class="cmr-12">Software, 16 (1) 1990, 1&#8211;17.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[19]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xblas2"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;J.</span><span
class="cmr-12">&#x00A0;Dongarra, J.</span><span
class="cmr-12">&#x00A0;Du Croz, S.</span><span
class="cmr-12">&#x00A0;Hammarling, R.</span><span
class="cmr-12">&#x00A0;J.</span><span
class="cmr-12">&#x00A0;Hanson, </span><span
class="cmti-12">An</span>
<span
class="cmti-12">extended set of FORTRAN Basic Linear Algebra Subprograms</span><span
class="cmr-12">, ACM</span>
<span
class="cmr-12">Transactions on Mathematical Software, 14 (1) 1988, 1&#8211;17.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[20]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XPARCO2001"></a><span
class="cmr-12">S.</span><span
class="cmr-12">&#x00A0;Filippone, P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, M.</span><span
class="cmr-12">&#x00A0;Colajanni, </span><span
class="cmti-12">Using a Parallel Library of</span>
<span
class="cmti-12">Sparse Linear Algebra in a Fluid Dynamics Application Code on Linux</span>
<span
class="cmti-12">Clusters</span><span
class="cmr-12">, in Proc. of ParCo 2001, Parallel Computing, Advances and Current</span>
<span
class="cmr-12">Issues, 2002.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[21]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XPSBLASGUIDE"></a><span
class="cmr-12">S.</span><span
class="cmr-12">&#x00A0;Filippone, A.</span><span
class="cmr-12">&#x00A0;Buttari, </span><span
class="cmti-12">PSBLAS 3.5.0 User&#8217;s Guide. A Reference</span>
<span
class="cmti-12">Guide for the Parallel Sparse BLAS Library</span><span
class="cmr-12">, 2012, available from</span>
<span
class="cmtt-12">https://github.com/sfilippone/psblas3/tree/master/docs</span><span
class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[22]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XPSBLAS3"></a><span
class="cmr-12">S.</span><span
class="cmr-12">&#x00A0;Filippone, A.</span><span
class="cmr-12">&#x00A0;Buttari, </span><span
class="cmti-12">Object-Oriented Techniques for Sparse Matrix</span>
<span
class="cmti-12">Computations in Fortran 2003</span><span
class="cmr-12">. ACM Transactions on on Mathematical</span>
<span
class="cmr-12">Software, 38 (4), 2012, art.</span><span
class="cmr-12">&#x00A0;23.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[23]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xpsblas_00"></a><span
class="cmr-12">S.</span><span
class="cmr-12">&#x00A0;Filippone, M.</span><span
class="cmr-12">&#x00A0;Colajanni, </span><span
class="cmti-12">PSBLAS: A</span>
<span
class="cmti-12">Library for Parallel Linear Algebra Computation on Sparse Matrices</span><span
class="cmr-12">, ACM</span>
<span
class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527&#8211;550.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[24]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XGrHeJi:16"></a><span
class="cmr-12">S. Gratton, P. Henon, P. Jiranek and X. Vasseur, </span><span
class="cmti-12">Reducing complexity of</span>
<span
class="cmti-12">algebraic multigrid by aggregation</span><span
class="cmr-12">, Numerical Lin. Algebra with Applications,</span>
<span
class="cmr-12">2016, 23:501-518</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[25]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMPI2"></a><span
class="cmr-12">W.</span><span
class="cmr-12">&#x00A0;Gropp, S.</span><span
class="cmr-12">&#x00A0;Huss-Lederman, A.</span><span
class="cmr-12">&#x00A0;Lumsdaine, E.</span><span
class="cmr-12">&#x00A0;Lusk, B.</span><span
class="cmr-12">&#x00A0;Nitzberg,</span>
<span
class="cmr-12">W.</span><span
class="cmr-12">&#x00A0;Saphir, M.</span><span
class="cmr-12">&#x00A0;Snir, </span><span
class="cmti-12">MPI: The Complete Reference. Volume 2 - The MPI-2</span>
<span
class="cmti-12">Extensions</span><span
class="cmr-12">, MIT Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[26]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xblas1"></a><span
class="cmr-12">C.</span><span
class="cmr-12">&#x00A0;L.</span><span
class="cmr-12">&#x00A0;Lawson, R.</span><span
class="cmr-12">&#x00A0;J.</span><span
class="cmr-12">&#x00A0;Hanson, D.</span><span
class="cmr-12">&#x00A0;Kincaid, F.</span><span
class="cmr-12">&#x00A0;T.</span><span
class="cmr-12">&#x00A0;Krogh, </span><span
class="cmti-12">Basic Linear</span>
<span
class="cmti-12">Algebra Subprograms for FORTRAN usage</span><span
class="cmr-12">, ACM Transactions on</span>
<span
class="cmr-12">Mathematical Software, 5 (3), 1979, 308&#8211;323.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XLOTTES"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;Lottes, </span><span
class="cmti-12">Optimal polynomial smoothers for multigrid V-cycles</span><span
class="cmr-12">,</span>
<span
class="cmr-12">Numerical Linear Algebra with Applications 30.6 (2023): e2518.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XSUPERLUDIST"></a><span
class="cmr-12">X.</span><span
class="cmr-12">&#x00A0;S.</span><span
class="cmr-12">&#x00A0;Li, J.</span><span
class="cmr-12">&#x00A0;W.</span><span
class="cmr-12">&#x00A0;Demmel, </span><span
class="cmti-12">SuperLU</span><span
class="cmti-12">_DIST: A Scalable</span>
<span
class="cmti-12">Distributed-memory Sparse Direct Solver for Unsymmetric Linear Systems</span><span
class="cmr-12">,</span>
<span
class="cmr-12">ACM Transactions on Mathematical Software, 29 (2), 2003, 110&#8211;140.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XNotay2008"></a><span
class="cmr-12">Y.</span><span
class="cmr-12">&#x00A0;Notay, P.</span><span
class="cmr-12">&#x00A0;S.</span><span
class="cmr-12">&#x00A0;Vassilevski, </span><span
class="cmti-12">Recursive Krylov-based multigrid cycles</span><span
class="cmr-12">,</span>
<span
class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473&#8211;487.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XSaad_book"></a><span
class="cmr-12">Y.</span><span
class="cmr-12">&#x00A0;Saad, </span><span
class="cmti-12">Iterative methods for sparse linear systems</span><span
class="cmr-12">, 2nd edition, SIAM,</span>
<span
class="cmr-12">2003.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="Xdd2_96"></a><span
class="cmr-12">B.</span><span
class="cmr-12">&#x00A0;Smith, P.</span><span
class="cmr-12">&#x00A0;Bjorstad, W.</span><span
class="cmr-12">&#x00A0;Gropp, </span><span
class="cmti-12">Domain Decomposition: Parallel</span>
<span
class="cmti-12">Multilevel Methods for Elliptic Partial Differential Equations</span><span
class="cmr-12">, Cambridge</span>
<span
class="cmr-12">University Press, 1996.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[32]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XMPI1"></a><span
class="cmr-12">M.</span><span
class="cmr-12">&#x00A0;Snir, S.</span><span
class="cmr-12">&#x00A0;Otto, S.</span><span
class="cmr-12">&#x00A0;Huss-Lederman, D.</span><span
class="cmr-12">&#x00A0;Walker, J.</span><span
class="cmr-12">&#x00A0;Dongarra, </span><span
class="cmti-12">MPI:</span>
<span
class="cmti-12">The Complete Reference. Volume 1 - The MPI Core</span><span
class="cmr-12">, second edition, MIT</span>
<span
class="cmr-12">Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[33]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XStuben_01"></a><span
class="cmr-12">K.</span><span
class="cmr-12">&#x00A0;St</span><span
class="cmr-12">üben, </span><span
class="cmti-12">An Introduction to Algebraic Multigrid</span><span
class="cmr-12">, in A.</span><span
class="cmr-12">&#x00A0;Sch</span><span
class="cmr-12">üller,</span>
<span
class="cmr-12">U.</span><span
class="cmr-12">&#x00A0;Trottenberg, C.</span><span
class="cmr-12">&#x00A0;Oosterlee, Multigrid, Academic Press, 2001.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[34]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XTUMINARO_TONG"></a><span
class="cmr-12">R.</span><span
class="cmr-12">&#x00A0;S.</span><span
class="cmr-12">&#x00A0;Tuminaro, C.</span><span
class="cmr-12">&#x00A0;Tong, </span><span
class="cmti-12">Parallel Smoothed Aggregation Multigrid:</span>
<span
class="cmti-12">Aggregation Strategies on Massively Parallel Machines</span><span
class="cmr-12">, in J. Donnelley,</span>
<span
class="cmr-12">editor, Proceedings of SuperComputing 2000, Dallas, 2000.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[35]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XVANEK_MANDEL_BREZINA"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;Van</span><span
class="cmr-12">&#x011B;k, J.</span><span
class="cmr-12">&#x00A0;Mandel, M.</span><span
class="cmr-12">&#x00A0;Brezina, </span><span
class="cmti-12">Algebraic Multigrid by Smoothed</span>
<span
class="cmti-12">Aggregation for Second and Fourth Order Elliptic Problems</span><span
class="cmr-12">, Computing, 56</span>
<span
class="cmr-12">(3) 1996, 179&#8211;196.</span></p></div>
<!--l. 156--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli4.html" ><span
class="cmr-12">next</span></a><span
href="userhtmlse9.html" ><span
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse9.html#tailuserhtmlse9.html" ><span
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlli3.html" ><span
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse2.html#userhtmlli3.html" ><span
href="userhtml.html#userhtmlli3.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 30--><p class="indent" > <a
<!--l. 156--><p class="indent" > <a
id="tailuserhtmlli3.html"></a>
</body></html>
+5 -1
View File
@@ -25,7 +25,7 @@ href="userhtmlse2.html#userhtmlli4.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="likesubsectionHead"><a
id="x7-60002"></a><span
id="x7-6000"></a><span
class="cmr-12">Citing AMG4PSBLAS</span></h4>
<!--l. 31--><p class="noindent" ><span
class="cmr-12">When use the library, please cite the following:</span>
@@ -41,6 +41,7 @@ class="cmr-12">When use the library, please cite the following:</span>
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;archivePrefix&#x00A0;=&#x00A0;{arXiv},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;year={2021}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
@Misc{psctoolkit-web-page,
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;author&#x00A0;=&#x00A0;{D&#8217;Ambra,&#x00A0;Pasqua&#x00A0;and&#x00A0;Durastante,&#x00A0;Fabio&#x00A0;and&#x00A0;Filippone,&#x00A0;Salvatore},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;title&#x00A0;=&#x00A0;&#x00A0;{{PSCToolkit}&#x00A0;{W}eb&#x00A0;page},
@@ -56,6 +57,9 @@ class="cmr-12">When use the library, please cite the following:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli3.html" ><span
+69 -30
View File
@@ -25,7 +25,7 @@ href="userhtml.html#userhtmlli5.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="likesectionHead"><a
id="x31-39000B"></a><span
id="x31-39000"></a><span
class="cmr-12">References</span></h3>
<!--l. 2--><p class="noindent" >
<div class="thebibliography">
@@ -303,22 +303,41 @@ class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDF2020"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">AMG preconditioners for</span>
<span
class="cmti-12">Linear Solvers towards Extreme Scale</span><span
class="cmr-12">, 2020, </span><a
href="https://arxiv.org/abs/2006.16147v3arXiv:2006.16147v2" ><span
class="cmr-12">arXiv:2006.16147v3</span></a><span
class="cmr-12">.</span>
class="cmr-12">, SIAM Journal on Scientific Computing</span>
<span
class="cmr-12">43, no. 5 (2021): S679-S703.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[15]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDFMT2024"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, S.</span><span
class="cmr-12">&#x00A0;Massei, S.</span><span
class="cmr-12">&#x00A0;Thomas</span>
<span
class="cmti-12">Optimal Polynomial Smoothers for Parallel AMG</span><span
class="cmr-12">, 2024, </span><a
href="https://arxiv.org/abs/2407.09848" ><span
class="cmr-12">arXiv:2407.09848</span></a><span
class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XUMFPACK"></a><span
class="cmr-12">T.</span><span
@@ -337,7 +356,7 @@ class="cmr-12">)</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">[17]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -363,7 +382,7 @@ class="cmr-12">SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 7
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[17]</span><span class="bibsp"><span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -384,7 +403,7 @@ class="cmr-12">Software, 16 (1) 1990, 1&#8211;17.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">[19]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -402,10 +421,13 @@ class="cmti-12">extended set of FORTRAN Basic Linear Algebra Subprograms<
class="cmr-12">, ACM</span>
<span
class="cmr-12">Transactions on Mathematical Software, 14 (1) 1988, 1&#8211;17.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[19]</span><span class="bibsp"><span
class="cmr-12">[20]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -422,13 +444,10 @@ class="cmti-12">Clusters</span><span
class="cmr-12">, in Proc. of ParCo 2001, Parallel Computing, Advances and Current</span>
<span
class="cmr-12">Issues, 2002.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[20]</span><span class="bibsp"><span
class="cmr-12">[21]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -446,7 +465,7 @@ class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[21]</span><span class="bibsp"><span
class="cmr-12">[22]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -464,7 +483,7 @@ class="cmr-12">&#x00A0;23.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[22]</span><span class="bibsp"><span
class="cmr-12">[23]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -481,7 +500,7 @@ class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527&#8211;55
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[23]</span><span class="bibsp"><span
class="cmr-12">[24]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -496,7 +515,7 @@ class="cmr-12">2016, 23:501-518</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[24]</span><span class="bibsp"><span
class="cmr-12">[25]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -518,7 +537,7 @@ class="cmr-12">, MIT Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[25]</span><span class="bibsp"><span
class="cmr-12">[26]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -537,10 +556,27 @@ class="cmti-12">Algebra Subprograms for FORTRAN usage</span><span
class="cmr-12">, ACM Transactions on</span>
<span
class="cmr-12">Mathematical Software, 5 (3), 1979, 308&#8211;323.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[26]</span><span class="bibsp"><span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XLOTTES"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;Lottes, </span><span
class="cmti-12">Optimal polynomial smoothers for multigrid V-cycles</span><span
class="cmr-12">,</span>
<span
class="cmr-12">Numerical Linear Algebra with Applications 30.6 (2023): e2518.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -557,13 +593,10 @@ class="cmti-12">Distributed-memory Sparse Direct Solver for Unsymmetric Linear S
class="cmr-12">,</span>
<span
class="cmr-12">ACM Transactions on Mathematical Software, 29 (2), 2003, 110&#8211;140.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -579,7 +612,7 @@ class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473&#82
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -593,7 +626,7 @@ class="cmr-12">2003.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -611,7 +644,7 @@ class="cmr-12">University Press, 1996.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">[32]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -631,7 +664,7 @@ class="cmr-12">Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">[33]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -650,7 +683,7 @@ class="cmr-12">&#x00A0;Oosterlee, Multigrid, Academic Press, 2001.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[32]</span><span class="bibsp"><span
class="cmr-12">[34]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -665,10 +698,13 @@ class="cmti-12">Aggregation Strategies on Massively Parallel Machines</span
class="cmr-12">, in J. Donnelley,</span>
<span
class="cmr-12">editor, Proceedings of SuperComputing 2000, Dallas, 2000.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[33]</span><span class="bibsp"><span
class="cmr-12">[35]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@@ -690,6 +726,9 @@ class="cmr-12">(3) 1996, 179&#8211;196.</span></p></div>
<!--l. 156--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse9.html" ><span
+39 -34
View File
@@ -83,24 +83,24 @@ class="cmr-12">) provides parallel Algebraic MultiGrid (AMG) preconditioners (se
<span
class="cmr-12">e.g., </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XBriggs2000"><span
href="userhtmlli3.html#XBriggs2000"><span
class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XStuben_01"><span
class="cmr-12">31</span></a><span
href="userhtmlli3.html#XStuben_01"><span
class="cmr-12">33</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">), to be used in the iterative solution of linear systems,</span>
<table
class="equation"><tr><td>
<center class="math-display" >
<div class="math-display" >
<img
src="userhtml0x.png" alt="Ax = b,
" class="math-display" ><a
id="x4-3001r1"></a></center></td><td class="equation-label"><span
id="x4-3001r1"></a></div>
</td><td class="equation-label"><span
class="cmr-12">(1)</span></td></tr></table>
<!--l. 11--><p class="nopar" >
<span
<!--l. 11--><p class="nopar" ><span
class="cmr-12">where </span><span
class="cmmi-12">A </span><span
class="cmr-12">is a square, real or complex, sparse symmetric positive definite (s.p.d)</span>
@@ -116,12 +116,12 @@ class="cmr-12">multigrid cycles include the V-, W-, and a version of a Krylov-ty
class="cmr-12">(K-cycle)</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XBriggs2000"><span
href="userhtmlli3.html#XBriggs2000"><span
class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XNotay2008"><span
class="cmr-12">27</span></a><span
href="userhtmlli3.html#XNotay2008"><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">; they can be combined with Jacobi, hybrid forward/backward</span>
<span
@@ -136,7 +136,7 @@ class="cmr-8">1</span></sub>
class="cmr-12">version</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XDDF2020"><span
href="userhtmlli3.html#XDDF2020"><span
class="cmr-12">14</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
@@ -149,26 +149,27 @@ class="cmr-12">problem, e.g., the discretization of a PDE. To this end, two diff
<span
class="cmr-12">strategies, based on aggregation, are available:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 35--><p class="noindent" ><span
class="cmr-12">a decoupled version of the smoothed aggregation procedure proposed in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XBREZINA_VANEK"><span
href="userhtmlli3.html#XBREZINA_VANEK"><span
class="cmr-12">4</span></a><span
class="cmr-12">,</span>
<span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">33</span></a><span
href="userhtmlli3.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">35</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">, and already included in the previous versions of the package</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#Xaaecc_07"><span
href="userhtmlli3.html#Xaaecc_07"><span
class="cmr-12">7</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XMLD2P4_TOMS"><span
href="userhtmlli3.html#XMLD2P4_TOMS"><span
class="cmr-12">11</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span>
@@ -176,23 +177,24 @@ class="cmr-12">;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 39--><p class="noindent" ><span
class="cmr-12">a coupled, parallel implementation of the Coarsening based on Compatible</span>
<span
class="cmr-12">Weighted Matching introduced in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XDV2013"><span
href="userhtmlli3.html#XDV2013"><span
class="cmr-12">12</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XDFV2018"><span
href="userhtmlli3.html#XDFV2018"><span
class="cmr-12">13</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">and described in detail in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XDDF2020"><span
href="userhtmlli3.html#XDDF2020"><span
class="cmr-12">14</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span></li></ul>
@@ -231,12 +233,12 @@ class="cmr-12">multilevel preconditioners in the context of the PSBLAS (Parallel
class="cmr-12">computational framework</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#Xpsblas_00"><span
class="cmr-12">22</span></a><span
href="userhtmlli3.html#Xpsblas_00"><span
class="cmr-12">23</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XPSBLAS3"><span
class="cmr-12">21</span></a><span
href="userhtmlli3.html#XPSBLAS3"><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. PSBLAS provides basic linear algebra operators</span>
<span
@@ -283,11 +285,11 @@ class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where
class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</span>
<span
class="cmr-12">one implements the construction and application phases of the preconditioners, and the</span>
<span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span
class="cmr-12">allows for different levels of use of the package: few black-box routines at the upper</span>
<span
@@ -299,7 +301,7 @@ class="cmr-12">smoothers and solvers for building new versions of the preconditi
<span
class="cmr-12">Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x27-310006"><span
href="userhtmlse6.html#x9-310006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">).</span>
<!--l. 96--><p class="indent" > <span
@@ -313,7 +315,7 @@ class="cmr-12">, while details on the configuration and installation</span>
<span
class="cmr-12">of the package are given in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse3.html#x8-70003"><span
href="userhtmlse3.html#x6-70003"><span
class="cmr-12">3</span><!--tex4ht:ref: sec:building --></a><span
class="cmr-12">. The basics for building and applying the</span>
<span
@@ -322,13 +324,13 @@ class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are
class="cmr-12">in</span><span
class="cmr-12">&#x00A0;Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x14-130004"><span
href="userhtmlse4.html#x7-130004"><span
class="cmr-12">4</span><!--tex4ht:ref: sec:started --></a><span
class="cmr-12">, where the Fortran codes of a few sample programs are also shown.</span>
<span
class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160005"><span
href="userhtmlse5.html#x8-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">.</span>
<span
@@ -336,13 +338,13 @@ class="cmr-12">Information on the extension of the package through the addition
<span
class="cmr-12">smoothers and solvers is reported in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x27-310006"><span
href="userhtmlse6.html#x9-310006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">. The error handling mechanism</span>
<span
class="cmr-12">used by the package is briefly described in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
href="userhtmlse7.html#x10-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a><span
class="cmr-12">. The copyright terms</span>
<span
@@ -350,7 +352,7 @@ class="cmr-12">concerning the distribution and modification of AMG4PSBLAS are re
<span
class="cmr-12">Appendix</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x29-33000A"><span
href="userhtmlse8.html#x11-33000A"><span
class="cmr-12">A</span><!--tex4ht:ref: sec:license --></a><span
class="cmr-12">.</span>
@@ -362,6 +364,9 @@ class="cmr-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse2.html" ><span
+60 -16
View File
@@ -33,16 +33,16 @@ class="cmr-12">2 </span></span> <a
class="cmr-12">Code Distribution</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmr-12">AMG4PSBLAS is available from the web site</span>
<div class="quotation">
<blockquote class="quotation">
<!--l. 8--><p class="indent" > <a
href="https://psctoolkit.github.io/products/amg4psblas/" ><span
class="cmr-12">https://psctoolkit.github.io/products/amg4psblas/</span></a></div>
class="cmr-12">https://psctoolkit.github.io/products/amg4psblas/</span></a></blockquote>
<!--l. 10--><p class="noindent" ><span
class="cmr-12">where contact points for further information can be also found.</span>
<!--l. 12--><p class="indent" > <span
class="cmr-12">The software is available under a modified BSD license, as specified in Appendix</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x29-33000A"><span
href="userhtmlse8.html#x11-33000A"><span
class="cmr-12">A</span><!--tex4ht:ref: sec:license --></a><span
class="cmr-12">;</span>
<span
@@ -53,27 +53,71 @@ class="cmr-12">different and more stringent license, most notably the GPL, and t
class="cmr-12">into account when treating derived works.</span>
<!--l. 18--><p class="indent" > <span
class="cmr-12">The library defines a version string with the constant</span>
<center class="math-display" >
<div class="math-display" >
<img
src="userhtml1x.png" alt="amg_version_string_
" class="math-display" ></center>
" class="math-display" ></div>
<!--l. 20--><p class="nopar" > <span
class="cmr-12">whose current value is </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">1.0</span></span></span><span
class="cmr-12">.</span>
<!--l. 23--><p class="noindent" >
<div class="likesubsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
</div>
<h4 class="likesubsectionHead"><a
id="x5-5000"></a><span
class="cmr-12">Contributors</span></h4>
<ul class="itemize1">
<li class="itemize">
<!--l. 25--><p class="noindent" ><span
class="cmr-12">Pasqua D&#8217;Ambra, IAC-CNR, IT;</span>
</li>
<li class="itemize">
<!--l. 26--><p class="noindent" ><span
class="cmr-12">Fabio Durastante, University of Pisa and IAC-CNR, IT;</span>
</li>
<li class="itemize">
<!--l. 27--><p class="noindent" ><span
class="cmr-12">Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;</span></li></ul>
<!--l. 30--><p class="noindent" >
<h4 class="likesubsectionHead"><a
id="x5-6000"></a><span
class="cmr-12">Citing AMG4PSBLAS</span></h4>
<!--l. 31--><p class="noindent" ><span
class="cmr-12">When use the library, please cite the following:</span>
<pre class="verbatim" id="verbatim-1">
@article{DDF2021,
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;author&#x00A0;=&#x00A0;{D&#8217;Ambra,&#x00A0;Pasqua&#x00A0;and&#x00A0;Durastante,&#x00A0;Fabio&#x00A0;and&#x00A0;Filippone,&#x00A0;Salvatore},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;title&#x00A0;=&#x00A0;{{{AMG&#x00A0;Preconditioners&#x00A0;for&#x00A0;Linear&#x00A0;Solvers&#x00A0;towards&#x00A0;Extreme&#x00A0;Scale}},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;journal&#x00A0;=&#x00A0;{arXiv&#x00A0;e-preprints},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;eprint&#x00A0;=&#x00A0;{2006.16147v3},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;archivePrefix&#x00A0;=&#x00A0;{arXiv},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;year={2021}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
@Misc{psctoolkit-web-page,
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;author&#x00A0;=&#x00A0;{D&#8217;Ambra,&#x00A0;Pasqua&#x00A0;and&#x00A0;Durastante,&#x00A0;Fabio&#x00A0;and&#x00A0;Filippone,&#x00A0;Salvatore},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;title&#x00A0;=&#x00A0;&#x00A0;{{PSCToolkit}&#x00A0;{W}eb&#x00A0;page},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;url&#x00A0;=&#x00A0;&#x00A0;&#x00A0;&#x00A0;{https://psctoolkit.github.io/},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;howpublished&#x00A0;=&#x00A0;{\url{https://psctoolkit.github.io/}},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;year&#x00A0;=&#x00A0;{2021}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
</pre>
<!--l. 70--><p class="nopar" >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
@@ -94,5 +138,5 @@ href="userhtml.html#userhtmlse2.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse2.html"></a>
id="tailuserhtmlse2.html"></a>
</body></html>
+3978 -32
View File
File diff suppressed because it is too large Load Diff
+614 -133
View File
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">4 </span></span> <a
id="x14-130004"></a><span
id="x7-130004"></a><span
class="cmr-12">Getting Started</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmr-12">This section describes the basics for building and applying AMG4PSBLAS one-level</span>
@@ -39,15 +39,16 @@ class="cmr-12">and multilevel (i.e., AMG) preconditioners with the Krylov solver
class="cmr-12">PSBLAS</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
href="userhtmlli3.html#XPSBLASGUIDE"><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 9--><p class="indent" > <span
class="cmr-12">The following steps are required:</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x14-13002x1"><span
<li
class="enumerate" id="x7-13002x1">
<!--l. 11--><p class="noindent" ><span
class="cmti-12">Declare the preconditioner data structure</span><span
class="cmr-12">. It is a derived data type,</span>
<span class="obeylines-h"><span class="verb"><span
@@ -82,48 +83,46 @@ class="cmr-12">structure is accessed by the user only through the AMG4PSBLAS rou
<span
class="cmr-12">following an object-oriented approach.</span>
</li>
<li
class="enumerate" id="x14-13004x2"><span
<li
class="enumerate" id="x7-13004x2">
<!--l. 19--><p class="noindent" ><span
class="cmti-12">Allocate and initialize the preconditioner data structure, according to a</span>
<span
class="cmti-12">preconditioner type chosen by the user</span><span
class="cmr-12">. This is performed by the routine</span>
<span class="lstinline"></span><span
class="cmtt-12">init</span><span
<code class="lstinline"><span style="color:#000000">init</span></code><span
class="cmr-12">, which also sets defaults for each preconditioner type selected by</span>
<span
class="cmr-12">the user. The preconditioner types and the defaults associated with them</span>
<span
class="cmr-12">are given in Table</span><span
class="cmr-12">&#x00A0;</span><a
href="#x14-13015r1"><span
href="#x7-13015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">, where the strings used by </span><span class="lstinline"></span><span
class="cmtt-12">init</span> <span
class="cmr-12">, where the strings used by </span><code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">to identify the</span>
<span
class="cmr-12">preconditioner types are also given. Note that these strings are valid also if</span>
<span
class="cmr-12">uppercase letters are substituted by corresponding lowercase ones.</span>
</li>
<li
class="enumerate" id="x14-13006x3"><span
<li
class="enumerate" id="x7-13006x3">
<!--l. 29--><p class="noindent" ><span
class="cmti-12">Modify the selected preconditioner type, by properly setting preconditioner</span>
<span
class="cmti-12">parameters. </span><span
class="cmr-12">This is performed by the routine </span><span class="lstinline"></span><span
class="cmtt-12">set</span><span
class="cmr-12">This is performed by the routine </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">. This routine must be</span>
<span
class="cmr-12">called if the user wants to modify the default values of the parameters</span>
<span
class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span>
<span
class="cmr-12">preconditioner. Examples of use of </span><span class="lstinline"></span><span
class="cmtt-12">set</span> <span
class="cmr-12">preconditioner. Examples of use of </span><code class="lstinline"><span style="color:#000000">set</span></code> <span
class="cmr-12">are given in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x15-140004.1"><span
href="#x7-140004.1"><span
class="cmr-12">4.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">; a complete</span>
<span
@@ -131,73 +130,71 @@ class="cmr-12">list of all the preconditioner parameters and their allowed and d
<span
class="cmr-12">is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160005"><span
href="userhtmlse5.html#x8-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">, Tables</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x19-18009r2"><span
href="userhtmlse5.html#x8-18009r2"><span
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
class="cmr-12">-</span><a
href="userhtmlsu9.html#x19-18015r8"><span
href="userhtmlse5.html#x8-18015r8"><span
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13008x4"><span
<li
class="enumerate" id="x7-13008x4">
<!--l. 40--><p class="noindent" ><span
class="cmti-12">Build the preconditioner for a given matrix</span><span
class="cmr-12">. If the selected preconditioner is</span>
<span
class="cmr-12">multilevel, then two steps must be performed, as specified next.</span>
<ol class="enumerate2" >
<li
class="enumerate" id="x14-13009x0"><span
<li
class="enumerate" id="x7-13009x0">
<!--l. 43--><p class="noindent" ><span
class="cmti-12">Build the AMG hierarchy for a given matrix. </span><span
class="cmr-12">This is performed by the</span>
<span
class="cmr-12">routine </span><span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span><span
class="cmr-12">routine </span><code class="lstinline"><span style="color:#000000">hierarchy_build</span></code><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13010x0"><span
<li
class="enumerate" id="x7-13010x0">
<!--l. 45--><p class="noindent" ><span
class="cmti-12">Build the preconditioner for a given matrix. </span><span
class="cmr-12">This is performed by the</span>
<span
class="cmr-12">routine </span><span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span><span
class="cmr-12">routine </span><code class="lstinline"><span style="color:#000000">smoothers_build</span></code><span
class="cmr-12">.</span></li></ol>
<!--l. 48--><p class="noindent" ><span
class="cmr-12">If the selected preconditioner is one-level, it is built in a single step, performed by</span>
<span
class="cmr-12">the routine </span><span class="lstinline"></span><span
class="cmtt-12">bld</span><span
class="cmr-12">the routine </span><code class="lstinline"><span style="color:#000000">bld</span></code><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13012x5"><span
<li
class="enumerate" id="x7-13012x5">
<!--l. 50--><p class="noindent" ><span
class="cmti-12">Apply the preconditioner at each iteration of a Krylov solver. </span><span
class="cmr-12">This is performed by</span>
<span
class="cmr-12">the method </span><span class="lstinline"></span><span
class="cmtt-12">apply</span><span
class="cmr-12">the method </span><code class="lstinline"><span style="color:#000000">apply</span></code><span
class="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span>
<span
class="cmr-12">completely transparent to the user, since </span><span class="lstinline"></span><span
class="cmtt-12">apply</span> <span
class="cmr-12">completely transparent to the user, since </span><code class="lstinline"><span style="color:#000000">apply</span></code> <span
class="cmr-12">is called by the PSBLAS routine</span>
<span
class="cmr-12">implementing the Krylov solver (</span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov</span><span
class="cmr-12">implementing the Krylov solver (</span><code class="lstinline"><span style="color:#000000">psb_krylov</span></code><span
class="cmr-12">).</span>
</li>
<li
class="enumerate" id="x14-13014x6"><span
<li
class="enumerate" id="x7-13014x6">
<!--l. 54--><p class="noindent" ><span
class="cmti-12">Free the preconditioner data structure</span><span
class="cmr-12">. This is performed by the routine </span><span class="lstinline"></span><span
class="cmtt-12">free</span><span
class="cmr-12">. This is performed by the routine </span><code class="lstinline"><span style="color:#000000">free</span></code><span
class="cmr-12">.</span>
<span
class="cmr-12">This step is complementary to step 1 and should be performed when the</span>
@@ -208,13 +205,13 @@ class="cmr-12">All the previous routines are available as methods of the precond
<span
class="cmr-12">detailed description of them is given in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160005"><span
href="userhtmlse5.html#x8-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">. Examples showing the basic use of</span>
<span
class="cmr-12">AMG4PSBLAS are reported in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x15-140004.1"><span
href="#x7-140004.1"><span
class="cmr-12">4.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">.</span>
<div class="table">
@@ -222,7 +219,7 @@ class="cmr-12">.</span>
<!--l. 63--><p class="indent" > <a
id="x14-13015r1"></a><hr class="float"><div class="float"
id="x7-13015r1"></a><hr class="float"><div class="float"
>
@@ -231,7 +228,7 @@ class="cmr-12">.</span>
>
<!--l. 64--><p class="noindent" >
<div class="tabular"> <table id="TBL-1" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-1-1g"><col
id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col
id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col
@@ -278,30 +275,16 @@ class="small-caps">r</span></span> </td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"
class="td11">No preconditioner </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-2"
class="td11"><!--l. 69--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">NONE</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
class="td11"><!--l. 69--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">NONE</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
class="td11"><!--l. 69--><p class="noindent" >Considered to use the PSBLAS Krylov
solvers with no preconditioner. </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"
class="td11">Diagonal </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-2"
class="td11"><!--l. 71--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">DIAG</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">JACOBI</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">L1</span><span
class="cmtt-10x-x-109">-</span><span
class="cmtt-10x-x-109">JACOBI</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
class="td11"><!--l. 71--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">DIAG</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">JACOBI</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">JACOBI</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
class="td11"><!--l. 71--><p class="noindent" >Diagonal preconditioner. For any zero
diagonal entry of the matrix to be
preconditioned, the corresponding entry
@@ -310,16 +293,8 @@ of the preconditioner is set to&#x00A0;1. </td>
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"
class="td11">Gauss-Seidel </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-2"
class="td11"><!--l. 74--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">GS</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">L1</span><span
class="cmtt-10x-x-109">-</span><span
class="cmtt-10x-x-109">GS</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
class="td11"><!--l. 74--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">GS</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">GS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
class="td11"><!--l. 74--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is,
global block Jacobi with Gauss-Seidel as
local solver. </td>
@@ -327,16 +302,8 @@ local solver. </td>
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"
class="td11">Symmetrized Gauss-Seidel</td><td style="white-space:normal; text-align:left;" id="TBL-1-5-2"
class="td11"><!--l. 77--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">FBGS</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">L1</span><span
class="cmtt-10x-x-109">-</span><span
class="cmtt-10x-x-109">FBGS</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
class="td11"><!--l. 77--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">FBGS</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">FBGS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
class="td11"><!--l. 77--><p class="noindent" >Symmetrized hybrid Gauss-Seidel, that
is, forward Gauss-Seidel followed by
backward Gauss-Seidel. </td>
@@ -344,36 +311,22 @@ backward Gauss-Seidel. </td>
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"
class="td11">Block Jacobi </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-2"
class="td11"><!--l. 80--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">BJAC</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">L1</span><span
class="cmtt-10x-x-109">-</span><span
class="cmtt-10x-x-109">BJAC</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
class="td11"><!--l. 80--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">BJAC</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">BJAC</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
class="td11"><!--l. 80--><p class="noindent" >Block-Jacobi with ILU(0) on the local
blocks. </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"
class="td11">Additive Schwarz </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-2"
class="td11"><!--l. 81--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">AS</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
class="td11"><!--l. 81--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">AS</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
class="td11"><!--l. 81--><p class="noindent" >Additive Schwarz (AS), with overlap&#x00A0;1
and ILU(0) on the local blocks. </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"
class="td11">Multilevel </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-2"
class="td11"><!--l. 83--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">ML</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
class="td11"><!--l. 83--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ML</span><span style="color:#000000">&#8217;</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
class="td11"><!--l. 83--><p class="noindent" >V-cycle with one hybrid
forward Gauss-Seidel (GS) sweep as
pre-smoother and one hybrid backward
@@ -382,16 +335,16 @@ smoothed aggregation as coarsening
algorithm, and LU (plus triangular solve)
as coarsest-level solver. See the default
values in Tables&#x00A0;<a
href="userhtmlsu9.html#x19-18009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
href="userhtmlsu9.html#x19-18015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
href="userhtmlse5.html#x8-18009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
href="userhtmlse5.html#x8-18015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
the preconditioner. </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-1"
class="td11"> </td></tr></table></div>
class="td11"> </td></tr></table> </div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;1: </span><span
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x14-13015r1 -->
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x7-13015r1 -->
</div>
@@ -399,23 +352,20 @@ class="content">Preconditioner types, corresponding strings and default choices.
</div><hr class="endfloat" />
</div>
<!--l. 98--><p class="indent" > <span
class="cmr-12">Note that the module </span><span class="lstinline"></span><span
class="cmtt-12">amg_prec_mod</span><span
class="cmr-12">Note that the module </span><code class="lstinline"><span style="color:#000000">amg_prec_mod</span></code><span
class="cmr-12">, containing the definition of the preconditioner</span>
<span
class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
<span
class="cmr-12">in any program calling such routines. The modules </span><span class="lstinline"></span><span
class="cmtt-12">psb_base_mod</span><span
class="cmr-12">in any program calling such routines. The modules </span><code class="lstinline"><span style="color:#000000">psb_base_mod</span></code><span
class="cmr-12">, for the</span>
<span
class="cmr-12">sparse matrix and communication descriptor data types, and </span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov_mod</span><span
class="cmr-12">sparse matrix and communication descriptor data types, and </span><code class="lstinline"><span style="color:#000000">psb_krylov_mod</span></code><span
class="cmr-12">,</span>
<span
class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x15-140004.1"><span
href="#x7-140004.1"><span
class="cmr-12">4.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">).</span>
<br
@@ -435,20 +385,551 @@ class="cmr-12">problems. However, this does not necessarily correspond to the sh
<span
class="cmr-12">on parallel</span><span
class="cmr-12">&#x00A0;computers.</span>
<div class="subsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2"><span
class="cmr-12">GPU example</span></a></span>
</div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">4.1 </span></span> <a
id="x7-140004.1"></a><span
class="cmr-12">Examples</span></h4>
<!--l. 116--><p class="noindent" ><span
class="cmr-12">The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-14001r1"><span
class="cmr-12">1</span><!--tex4ht:ref: fig:ex1 --></a> <span
class="cmr-12">shows how to set and apply the default multilevel</span>
<span
class="cmr-12">preconditioner available in the real double precision version of AMG4PSBLAS</span>
<span
class="cmr-12">(see Table</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-13015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">). This preconditioner is chosen by simply specifying </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ML</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">as the</span>
<span
class="cmr-12">second argument of </span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">init</span></code> <span
class="cmr-12">(a call to </span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">set</span></code> <span
class="cmr-12">is not needed) and is applied</span>
<span
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
<span
class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
<code class="lstinline"><span style="color:#000000">psb_base_mod</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">amg_prec_mod</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">psb_krylov_mod</span></code> <span
class="cmr-12">must be used by the example</span>
<span
class="cmr-12">program.</span>
<!--l. 126--><p class="indent" > <span
class="cmr-12">The part of the code dealing with reading and assembling the sparse matrix and the</span>
<span
class="cmr-12">right-hand side vector and the deallocation of the relevant data structures, performed</span>
<span
class="cmr-12">through the PSBLAS routines for sparse matrix and vector management,</span>
<span
class="cmr-12">is not reported here for the sake of conciseness. The complete code can be</span>
<span
class="cmr-12">found in the example program file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span><span
class="cmr-12">, in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/file</span></span></span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">read</span></span></span> <span
class="cmr-12">of the AMG4PSBLAS implementation (see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse3.html#x6-120003.5"><span
class="cmr-12">3.5</span><!--tex4ht:ref: sec:ex_and_test --></a><span
class="cmr-12">). A</span>
<span
class="cmr-12">sample test problem along with the relevant input data is available in</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/fileread/runs</span></span></span><span
class="cmr-12">. For details on the use of the PSBLAS routines, see</span>
<span
class="cmr-12">the PSBLAS User&#8217;s Guide</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli3.html#XPSBLASGUIDE"><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 138--><p class="indent" > <span
class="cmr-12">The setup and application of the default multilevel preconditioner for the real single</span>
<span
class="cmr-12">precision and the complex, single and double precision, versions are obtained</span>
<span
class="cmr-12">with straightforward modifications of the previous example (see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x8-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a> <span
class="cmr-12">for</span>
<span
class="cmr-12">details). If these versions are installed, the corresponding codes are available in</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/file</span></span></span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">read</span></span></span><span
class="cmr-12">.</span>
<!--l. 144--><p class="indent" > <a
id="x7-14001r1"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 145--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-7">
&#x00A0;&#x00A0;use&#x00A0;psb_base_mod
&#x00A0;&#x00A0;use&#x00A0;amg_prec_mod
&#x00A0;&#x00A0;use&#x00A0;psb_krylov_mod
...&#x00A0;...
!
!&#x00A0;sparse&#x00A0;matrix
&#x00A0;&#x00A0;type(psb_dspmat_type)&#x00A0;::&#x00A0;A
!&#x00A0;sparse&#x00A0;matrix&#x00A0;descriptor
&#x00A0;&#x00A0;type(psb_desc_type)&#x00A0;&#x00A0;&#x00A0;::&#x00A0;desc_A
!&#x00A0;preconditioner
&#x00A0;&#x00A0;type(amg_dprec_type)&#x00A0;&#x00A0;::&#x00A0;P
!&#x00A0;right-hand&#x00A0;side&#x00A0;and&#x00A0;solution&#x00A0;vectors
&#x00A0;&#x00A0;type(psb_d_vect_type)&#x00A0;::&#x00A0;b,&#x00A0;x
...&#x00A0;...
!
!&#x00A0;initialize&#x00A0;the&#x00A0;parallel&#x00A0;environment
&#x00A0;&#x00A0;call&#x00A0;psb_init(ctxt)
&#x00A0;&#x00A0;call&#x00A0;psb_info(ctxt,iam,np)
...&#x00A0;...
!
!&#x00A0;read&#x00A0;and&#x00A0;assemble&#x00A0;the&#x00A0;spd&#x00A0;matrix&#x00A0;A&#x00A0;and&#x00A0;the&#x00A0;right-hand&#x00A0;side&#x00A0;b
!&#x00A0;using&#x00A0;PSBLAS&#x00A0;routines&#x00A0;for&#x00A0;sparse&#x00A0;matrix&#x00A0;/&#x00A0;vector&#x00A0;management
...&#x00A0;...
!
!&#x00A0;initialize&#x00A0;the&#x00A0;default&#x00A0;multilevel&#x00A0;preconditioner,&#x00A0;i.e.&#x00A0;V-cycle
!&#x00A0;with&#x00A0;basic&#x00A0;smoothed&#x00A0;aggregation,&#x00A0;1&#x00A0;hybrid&#x00A0;forward/backward
!&#x00A0;GS&#x00A0;sweep&#x00A0;as&#x00A0;pre/post-smoother&#x00A0;and&#x00A0;UMFPACK&#x00A0;as&#x00A0;coarsest-level
!&#x00A0;solver
&#x00A0;&#x00A0;call&#x00A0;P%init(ctxt,&#8217;ML&#8217;,info)
!
!&#x00A0;build&#x00A0;the&#x00A0;preconditioner
&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info)
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
!
!&#x00A0;set&#x00A0;the&#x00A0;solver&#x00A0;parameters&#x00A0;and&#x00A0;the&#x00A0;initial&#x00A0;guess
&#x00A0;&#x00A0;...&#x00A0;...
!
!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;FCG
&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;FCG&#8217;,A,P,b,x,tol,desc_A,info)
&#x00A0;&#x00A0;...&#x00A0;...
!
!&#x00A0;deallocate&#x00A0;the&#x00A0;preconditioner
&#x00A0;&#x00A0;call&#x00A0;P%free(info)
!
!&#x00A0;deallocate&#x00A0;other&#x00A0;data&#x00A0;structures
&#x00A0;&#x00A0;...&#x00A0;...
!
!&#x00A0;exit&#x00A0;the&#x00A0;parallel&#x00A0;environment
&#x00A0;&#x00A0;call&#x00A0;psb_exit(ctxt)
&#x00A0;&#x00A0;stop
</pre>
<!--l. 255--><p class="nopar" > </div>
<br /> <div class="caption"
><span class="id">Listing 1: </span><span
class="content">setup and application of the default multilevel preconditioner (example 1).
</span></div><!--tex4ht:label?: x7-14001r1 -->
</div>
</div><hr class="endfloat" />
<!--l. 264--><p class="indent" > <span
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
<span
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-14002r2"><span
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">shows</span>
<span
class="cmr-12">how to set a V-cycle preconditioner which applies 1 block-Jacobi sweep as pre-</span>
<span
class="cmr-12">and post-smoother, and solves the coarsest-level system with 8 block-Jacobi</span>
<span
class="cmr-12">sweeps. Note that the ILU(0) factorization (plus triangular solve) is used as</span>
<span
class="cmr-12">local solver for the block-Jacobi sweeps, since this is the default associated</span>
<span
class="cmr-12">with block-Jacobi and set by</span><span
class="cmr-12">&#x00A0;</span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">init</span></code><span
class="cmr-12">. Furthermore, specifying block-Jacobi as</span>
<span
class="cmr-12">coarsest-level solver implies that the coarsest-level matrix is distributed among</span>
<span
class="cmr-12">the processes. Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-14003r3"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">shows how to set a W-cycle preconditioner using the</span>
<span
class="cmr-12">Coarsening based on Compatible Weighted Matching, aggregates of size at</span>
<span
class="cmr-12">most 8 and smoothed prolongators. It applies 2 hybrid Gauss-Seidel sweeps as</span>
<span
class="cmr-12">pre- and post-smoother, and solves the coarsest-level system with the parallel</span>
<span
class="cmr-12">flexible Conjugate Gradient method (KRM) coupled with the block-Jacobi</span>
<span
class="cmr-12">preconditioner having ILU(0) on the blocks. Default parameters are used for stopping</span>
<span
class="cmr-12">criterion of the coarsest solver. Note that, also in this case, specifying KRM as</span>
<span
class="cmr-12">coarsest-level solver implies that the coarsest-level matrix is distributed among the</span>
<span
class="cmr-12">processes.</span>
<!--l. 291--><p class="indent" > <span
class="cmr-12">The code fragments shown in Figures</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-14002r2"><span
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">and </span><a
href="#x7-14003r3"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">are included in the example program</span>
<span
class="cmr-12">file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span
class="cmr-12">too.</span>
<!--l. 294--><p class="indent" > <span
class="cmr-12">Finally, Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x7-14004r4"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex4 --></a> <span
class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span>
<span
class="cmr-12">i.e., RAS with overlap 2. Note also that a Krylov method different from CG</span>
<span
class="cmr-12">must be used to solve the preconditioned system, since the preconditione in</span>
<span
class="cmr-12">nonsymmetric. The corresponding example program is available in the file</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
class="cmr-12">.</span>
<!--l. 301--><p class="indent" > <span
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
<span
class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
<span
class="cmr-12">boundary conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/pdegen</span></span></span><span
class="cmr-12">.</span>
<!--l. 304--><p class="indent" > <a
id="x7-14002r2"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 318--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-8">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with
!&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;and&#x00A0;8&#x00A0;&#x00A0;block-Jacobi
!&#x00A0;sweeps&#x00A0;(with&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;coarsest-level&#x00A0;solver
&#x00A0;&#x00A0;call&#x00A0;P%init(ctxt,&#8217;ML&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_TYPE&#8217;,&#8217;BJAC&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SOLVE&#8217;,&#8217;BJAC&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SWEEPS&#8217;,8,info)
&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info)
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 333--><p class="nopar" > </div></div>
<br /><div class="caption"
><span class="id">Listing 2: </span><span
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x7-14002r2 -->
</div><hr class="endfloat" />
<!--l. 340--><p class="indent" > <a
id="x7-14003r3"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 362--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-9">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps
!&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;a&#x00A0;distributed&#x00A0;coarsest
!&#x00A0;matrix,&#x00A0;and&#x00A0;MUMPS&#x00A0;as&#x00A0;coarsest-level&#x00A0;solver
&#x00A0;&#x00A0;call&#x00A0;P%init(ctxt,&#8217;ML&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;PAR_AGGR_ALG&#8217;,&#8217;COUPLED&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;AGGR_TYPE&#8217;,&#8217;MATCHBOXP&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;AGGR_SIZE&#8217;,8,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;ML_CYCLE&#8217;,&#8217;WCYCLE&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_TYPE&#8217;,&#8217;FBGS&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_SWEEPS&#8217;,2,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SOLVE&#8217;,&#8217;KRM&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_MAT&#8217;,&#8217;DIST&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;KRM_METHOD&#8217;,&#8217;FCG&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info)
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 383--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 3: </span><span
class="content">setup of a multilevel preconditioner based on the coupled coarsening using
weighted matching</span></div><!--tex4ht:label?: x7-14003r3 -->
</div><hr class="endfloat" />
<!--l. 390--><p class="indent" > <a
id="x7-14004r4"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 402--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-10">
...&#x00A0;...
!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks
&#x00A0;&#x00A0;call&#x00A0;P%init(ctxt,&#8217;AS&#8217;,info)
&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SUB_OVR&#8217;,2,info)
&#x00A0;&#x00A0;call&#x00A0;P%bld(A,desc_A,info)
...&#x00A0;...
!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB
&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info)
</pre>
<!--l. 414--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 4: </span><span
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x7-14004r4 -->
</div><hr class="endfloat" />
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">4.2 </span></span> <a
id="x7-150004.2"></a><span
class="cmr-12">GPU example</span></h4>
<!--l. 426--><p class="noindent" ><span
class="cmr-12">The code discussed here shows how to set up a program exploiting the combined GPU</span>
<span
class="cmr-12">capabilities of PSBLAS and AMG4PSBLAS. The code example is available in the</span>
<span
class="cmr-12">source distribution directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg4psblas/examples/gpu</span></span></span><span
class="cmr-12">.</span>
<!--l. 431--><p class="indent" > <span
class="cmr-12">First of all, we need to include the appropriate modules and declare some auxiliary</span>
<span
class="cmr-12">variables:</span>
<!--l. 433--><p class="indent" > <a
id="x7-15001r5"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 452--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-11">
program&#x00A0;amg_dexample_gpu
&#x00A0;&#x00A0;use&#x00A0;psb_base_mod
&#x00A0;&#x00A0;use&#x00A0;amg_prec_mod
&#x00A0;&#x00A0;use&#x00A0;psb_krylov_mod
&#x00A0;&#x00A0;use&#x00A0;psb_util_mod
&#x00A0;&#x00A0;use&#x00A0;psb_gpu_mod
&#x00A0;&#x00A0;use&#x00A0;data_input
&#x00A0;&#x00A0;use&#x00A0;amg_d_pde_mod
&#x00A0;&#x00A0;implicit&#x00A0;none
&#x00A0;&#x00A0;.......
&#x00A0;&#x00A0;!&#x00A0;GPU&#x00A0;variables
&#x00A0;&#x00A0;type(psb_d_hlg_sparse_mat)&#x00A0;::&#x00A0;agmold
&#x00A0;&#x00A0;type(psb_d_vect_gpu)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;::&#x00A0;vgmold
&#x00A0;&#x00A0;type(psb_i_vect_gpu)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;::&#x00A0;igmold
&#x00A0;
</pre>
<!--l. 471--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 5: </span><span
class="content">setup of a GPU-enabled test program part one.</span></div><!--tex4ht:label?: x7-15001r5 -->
</div><hr class="endfloat" />
<!--l. 478--><p class="indent" > <span
class="cmr-12">In this particular example we are choosing to employ a </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">HLG</span></span></span> <span
class="cmr-12">data structure for</span>
<span
class="cmr-12">sparse matrices on GPUs; for more information please refer to the PSBLAS-EXT users&#8217;</span>
<span
class="cmr-12">guide.</span>
<!--l. 482--><p class="indent" > <span
class="cmr-12">We then have to initialize the GPU environment, and pass the appropriate MOLD</span>
<span
class="cmr-12">variables to the build methods (see also the PSBLAS and PSBLAS-EXT users&#8217;</span>
<span
class="cmr-12">guides).</span>
<!--l. 485--><p class="indent" > <a
id="x7-15002r6"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 501--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-12">
&#x00A0;&#x00A0;call&#x00A0;psb_init(ctxt)
&#x00A0;&#x00A0;call&#x00A0;psb_info(ctxt,iam,np)
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;!&#x00A0;BEWARE:&#x00A0;if&#x00A0;you&#x00A0;have&#x00A0;NGPUS&#x00A0;&#x00A0;per&#x00A0;node,&#x00A0;the&#x00A0;default&#x00A0;is&#x00A0;to
&#x00A0;&#x00A0;!&#x00A0;attach&#x00A0;to&#x00A0;mod(IAM,NGPUS)
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;call&#x00A0;psb_gpu_init(ictxt)
&#x00A0;&#x00A0;......
&#x00A0;&#x00A0;t1&#x00A0;=&#x00A0;psb_wtime()
&#x00A0;&#x00A0;call&#x00A0;prec%smoothers_build(a,desc_a,info,&#x00A0;amold=agmold,&#x00A0;vmold=vgmold,&#x00A0;imold=igmold)
&#x00A0;
</pre>
<!--l. 516--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 6: </span><span
class="content">setup of a GPU-enabled test program part two.</span></div><!--tex4ht:label?: x7-15002r6 -->
</div><hr class="endfloat" />
<!--l. 523--><p class="indent" > <span
class="cmr-12">Finally, we convert the input matrix, the descriptor and the vectors to use a</span>
<span
class="cmr-12">GPU-enabled internal storage format. We then preallocate the preconditioner</span>
<span
class="cmr-12">workspace before entering the Krylov method. At the end of the code, we close the</span>
<span
class="cmr-12">GPU environment</span>
<!--l. 527--><p class="indent" > <a
id="x7-15003r7"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 557--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-13">
&#x00A0;&#x00A0;call&#x00A0;desc_a%cnv(mold=igmold)
&#x00A0;&#x00A0;call&#x00A0;a%cscnv(info,mold=agmold)
&#x00A0;&#x00A0;call&#x00A0;psb_geasb(x,desc_a,info,mold=vgmold)
&#x00A0;&#x00A0;call&#x00A0;psb_geasb(b,desc_a,info,mold=vgmold)
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;!&#x00A0;iterative&#x00A0;method&#x00A0;parameters
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;call&#x00A0;psb_barrier(ctxt)
&#x00A0;&#x00A0;call&#x00A0;prec%allocate_wrk(info)
&#x00A0;&#x00A0;t1&#x00A0;=&#x00A0;psb_wtime()
&#x00A0;&#x00A0;call&#x00A0;psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,&amp;
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,&amp;
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;istop=s_choice%istopc,irst=s_choice%irst)
&#x00A0;&#x00A0;call&#x00A0;prec%deallocate_wrk(info)
&#x00A0;&#x00A0;call&#x00A0;psb_barrier(ctxt)
&#x00A0;&#x00A0;tslv&#x00A0;=&#x00A0;psb_wtime()&#x00A0;-&#x00A0;t1
&#x00A0;&#x00A0;......
&#x00A0;&#x00A0;call&#x00A0;psb_gpu_exit()
&#x00A0;&#x00A0;call&#x00A0;psb_exit(ctxt)
&#x00A0;&#x00A0;stop
&#x00A0;
</pre>
<!--l. 584--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 7: </span><span
class="content">setup of a GPU-enabled test program part three.</span></div><!--tex4ht:label?: x7-15003r7 -->
</div><hr class="endfloat" />
<!--l. 592--><p class="indent" > <span
class="cmr-12">It is very important to employ smoothers and coarsest solvers that are suited to the</span>
<span
class="cmr-12">GPU, i.e. methods that do NOT employ triangular system solve kernels. Methods that</span>
<span
class="cmr-12">satisfy this constraint include:</span>
<ul class="itemize1">
<li class="itemize">
<!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">JACOBI</span></span></span>
</li>
<li class="itemize">
<!--l. 597--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">BJAC</span></span></span> <span
class="cmr-12">with the following methods on the local blocks:</span>
<ul class="itemize2">
<li class="itemize">
<!--l. 599--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">INVK</span></span></span>
</li>
<li class="itemize">
<!--l. 600--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">INVT</span></span></span>
</li>
<li class="itemize">
<!--l. 601--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">AINV</span></span></span></li></ul>
</li></ul>
<!--l. 604--><p class="noindent" ><span
class="cmr-12">and their </span><span
class="cmmi-12">&#x2113;</span><sub><span
class="cmr-8">1</span></sub> <span
class="cmr-12">variants.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
@@ -469,5 +950,5 @@ href="userhtml.html#userhtmlse4.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse4.html"></a>
id="tailuserhtmlse4.html"></a>
</body></html>
+3140 -103
View File
File diff suppressed because it is too large Load Diff
+37 -72
View File
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">6 </span></span> <a
id="x27-310006"></a><span
id="x9-310006"></a><span
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></h3>
<!--l. 6--><p class="noindent" ><span
class="cmr-12">Developers can add completely new smoother and/or solver classes derived from the</span>
@@ -37,7 +37,7 @@ class="cmr-12">Developers can add completely new smoother and/or solver classes
class="cmr-12">base objects in the library (see Remark</span><span
class="cmr-12">&#x00A0;2 in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x19-180005.2"><span
href="userhtmlse5.html#x8-180005.2"><span
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">), without recompiling the</span>
<span
@@ -63,57 +63,29 @@ class="cmr-12">Once the new smoother/solver class has been developed, to use it
<span
class="cmr-12">the multilevel preconditioners it is necessary to:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 23--><p class="noindent" ><span
class="cmr-12">declare in the application program a variable of the new type;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 24--><p class="noindent" ><span
class="cmr-12">pass that variable as the argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
class="cmr-12">routine as in the following:</span>
<div class="center"
>
<!--l. 26--><p class="noindent" >
<!--l. 27--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">set</span><span
class="cmtt-12">(</span><span
class="cmtt-12">smoother</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">ilev</span><span
class="cmtt-12">,</span><span
class="cmtt-12">ilmax</span><span
class="cmtt-12">,</span><span
class="cmtt-12">pos</span><span
class="cmtt-12">])</span><br />
<span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">set</span><span
class="cmtt-12">(</span><span
class="cmtt-12">solver</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">ilev</span><span
class="cmtt-12">,</span><span
class="cmtt-12">ilmax</span><span
class="cmtt-12">,</span><span
class="cmtt-12">pos</span><span
class="cmtt-12">])</span></div>
<!--l. 27--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">smoother</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">ilev</span><span style="color:#000000">,</span><span style="color:#000000">ilmax</span><span style="color:#000000">,</span><span style="color:#000000">pos</span><span style="color:#000000">])</span></code><br />
<code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">solver</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">ilev</span><span style="color:#000000">,</span><span style="color:#000000">ilmax</span><span style="color:#000000">,</span><span style="color:#000000">pos</span><span style="color:#000000">])</span></code></div>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 30--><p class="noindent" ><span
class="cmr-12">link the code implementing the various methods into the application</span>
<span
class="cmr-12">executable.</span></li></ul>
<!--l. 32--><p class="noindent" ><span
class="cmr-12">The new solver object is then dynamically included in the preconditioner structure,</span>
<span
@@ -124,9 +96,6 @@ class="cmr-12">to which the preconditioner will conform, even though</span>
class="cmr-12">the AMG4PSBLAS library has not been modified to account for this new</span>
<span
class="cmr-12">development.</span>
<!--l. 37--><p class="indent" > <span
class="cmr-12">It is possible to define new values for the keyword </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">WHAT</span></span></span> <span
@@ -165,44 +134,34 @@ class="cmr-12">The interfaces for the calls shown above are defined using</span>
<div class="center"
>
<!--l. 56--><p class="noindent" >
<div class="tabular"> <table id="TBL-22" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-22-1g"><col
id="TBL-22-1"><col
id="TBL-22-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:normal; text-align:left;" id="TBL-22-1-1"
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">smoother</span> </td><td style="white-space:normal; text-align:left;" id="TBL-22-1-2"
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">amg_x_base_smoother_type</span><span
class="cmtt-12">)</span> </td>
<div class="tabular"> <table id="TBL-23" class="tabular"
><colgroup id="TBL-23-1g"><col
id="TBL-23-1"><col
id="TBL-23-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:normal; text-align:left;" id="TBL-23-1-1"
class="td11"><!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">smoother</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-1-2"
class="td11"><!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">amg_x_base_smoother_type</span><span style="color:#000000">)</span></code> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:normal; text-align:left;" id="TBL-22-2-1"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-2-2"
style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:normal; text-align:left;" id="TBL-23-2-1"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-2-2"
class="td11"><!--l. 59--><p class="noindent" ><span
class="cmr-12">The user-defined new smoother to be employed in the</span>
<span
class="cmr-12">preconditioner.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:normal; text-align:left;" id="TBL-22-3-1"
class="td11"><!--l. 61--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">solver</span> </td><td style="white-space:normal; text-align:left;" id="TBL-22-3-2"
class="td11"><!--l. 61--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">amg_x_base_solver_type</span><span
class="cmtt-12">)</span> </td>
style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:normal; text-align:left;" id="TBL-23-3-1"
class="td11"><!--l. 61--><p class="noindent" ><code class="lstinline"><span style="color:#000000">solver</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-3-2"
class="td11"><!--l. 61--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">amg_x_base_solver_type</span><span style="color:#000000">)</span></code> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:normal; text-align:left;" id="TBL-22-4-1"
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-4-2"
style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:normal; text-align:left;" id="TBL-23-4-1"
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-4-2"
class="td11"><!--l. 62--><p class="noindent" ><span
class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table></div></div>
class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table> </div></div>
<!--l. 66--><p class="noindent" ><span
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x19-180005.2"><span
href="userhtmlse5.html#x8-180005.2"><span
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">. As an example, in the</span>
<span class="obeylines-h"><span class="verb"><span
@@ -215,11 +174,13 @@ class="cmr-12">pass it as follows:</span>
<pre class="verbatim" id="verbatim-13">
<pre class="verbatim" id="verbatim-14">
&#x00A0;&#x00A0;!&#x00A0;sparse&#x00A0;matrix&#x00A0;and&#x00A0;preconditioner
&#x00A0;&#x00A0;type(psb_dspmat_type)&#x00A0;::&#x00A0;a
&#x00A0;&#x00A0;type(amg_dprec_type)&#x00A0;&#x00A0;::&#x00A0;prec
&#x00A0;&#x00A0;type(amg_d_tlu_solver_type)&#x00A0;::&#x00A0;tlusv
......
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;!&#x00A0;&#x00A0;prepare&#x00A0;the&#x00A0;preconditioner:&#x00A0;an&#x00A0;ML&#x00A0;with&#x00A0;defaults,&#x00A0;but&#x00A0;with&#x00A0;TLU&#x00A0;solver&#x00A0;at
@@ -230,6 +191,7 @@ class="cmr-12">pass it as follows:</span>
&#x00A0;&#x00A0;nlv&#x00A0;=&#x00A0;prec%get_nlevs()
&#x00A0;&#x00A0;call&#x00A0;prec%set(tlusv,&#x00A0;&#x00A0;&#x00A0;info,ilev=1,ilmax=max(1,nlv-1))
&#x00A0;&#x00A0;call&#x00A0;prec%smoothers_build(a,desc_a,info)
</pre>
<!--l. 107--><p class="nopar" >
@@ -241,6 +203,9 @@ class="cmr-12">pass it as follows:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse7.html" ><span
+5 -5
View File
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">7 </span></span> <a
id="x28-320007"></a><span
id="x10-320007"></a><span
class="cmr-12">Error Handling</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmr-12">The error handling in AMG4PSBLAS is based on the PSBLAS error handling. Error</span>
@@ -51,8 +51,8 @@ class="cmr-12">an error message should be printed. These options may be set by u
class="cmr-12">PSBLAS error handling routines; for further details see the PSBLAS User&#8217;s Guide</span>
<span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
href="userhtmlli3.html#XPSBLASGUIDE"><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
@@ -67,7 +67,7 @@ class="cmr-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
<!--l. 149--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse8.html" ><span
class="cmr-12">next</span></a><span
@@ -84,6 +84,6 @@ class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
<!--l. 149--><p class="indent" > <a
id="tailuserhtmlse7.html"></a>
</body></html>
+22 -5
View File
@@ -29,21 +29,25 @@ class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">A </span></span> <a
id="x29-33000A"></a><span
id="x11-33000A"></a><span
class="cmr-12">License</span></h3>
<!--l. 6--><p class="noindent" ><span
class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright terms:</span>
<pre class="verbatim" id="verbatim-14">
<pre class="verbatim" id="verbatim-15">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;AMG4PSBLAS&#x00A0;&#x00A0;version&#x00A0;1.0
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Algebraic&#x00A0;MultiGrid&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.7)
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2021
&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Fabio&#x00A0;Durastante&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Pisa&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Rome&#x00A0;Tor-Vergata&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;are&#x00A0;met:
@@ -55,6 +59,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
&#x00A0;&#x00A0;&#x00A0;&#x00A0;3.&#x00A0;The&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;MLD2P4&#x00A0;group&#x00A0;or&#x00A0;the&#x00A0;names&#x00A0;of&#x00A0;its&#x00A0;contributors&#x00A0;may
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;not&#x00A0;be&#x00A0;used&#x00A0;to&#x00A0;endorse&#x00A0;or&#x00A0;promote&#x00A0;products&#x00A0;derived&#x00A0;from&#x00A0;this
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;software&#x00A0;without&#x00A0;specific&#x00A0;written&#x00A0;permission.
&#x00A0;&#x00A0;THIS&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;BY&#x00A0;THE&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;AND&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#8216;&#8216;AS&#x00A0;IS&#8217;&#8217;&#x00A0;AND&#x00A0;ANY&#x00A0;EXPRESS&#x00A0;OR&#x00A0;IMPLIED&#x00A0;WARRANTIES,&#x00A0;INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED
&#x00A0;&#x00A0;TO,&#x00A0;THE&#x00A0;IMPLIED&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY&#x00A0;AND&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR
@@ -66,6 +71,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
&#x00A0;&#x00A0;CONTRACT,&#x00A0;STRICT&#x00A0;LIABILITY,&#x00A0;OR&#x00A0;TORT&#x00A0;(INCLUDING&#x00A0;NEGLIGENCE&#x00A0;OR&#x00A0;OTHERWISE)
&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 44--><p class="nopar" >
@@ -78,14 +84,20 @@ class="cmr-12">abide by its terms:</span>
<pre class="verbatim" id="verbatim-15">
<pre class="verbatim" id="verbatim-16">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MLD2P4&#x00A0;&#x00A0;version&#x00A0;2.2
&#x00A0;&#x00A0;MultiLevel&#x00A0;Domain&#x00A0;Decomposition&#x00A0;Parallel&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.5)
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008-2018
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Daniela&#x00A0;di&#x00A0;Serafino
&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;are&#x00A0;met:
@@ -97,6 +109,7 @@ class="cmr-12">abide by its terms:</span>
&#x00A0;&#x00A0;&#x00A0;&#x00A0;3.&#x00A0;The&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;MLD2P4&#x00A0;group&#x00A0;or&#x00A0;the&#x00A0;names&#x00A0;of&#x00A0;its&#x00A0;contributors&#x00A0;may
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;not&#x00A0;be&#x00A0;used&#x00A0;to&#x00A0;endorse&#x00A0;or&#x00A0;promote&#x00A0;products&#x00A0;derived&#x00A0;from&#x00A0;this
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;software&#x00A0;without&#x00A0;specific&#x00A0;written&#x00A0;permission.
&#x00A0;&#x00A0;THIS&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;BY&#x00A0;THE&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;AND&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#8216;&#8216;AS&#x00A0;IS&#8217;&#8217;&#x00A0;AND&#x00A0;ANY&#x00A0;EXPRESS&#x00A0;OR&#x00A0;IMPLIED&#x00A0;WARRANTIES,&#x00A0;INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED
&#x00A0;&#x00A0;TO,&#x00A0;THE&#x00A0;IMPLIED&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY&#x00A0;AND&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR
@@ -108,6 +121,7 @@ class="cmr-12">abide by its terms:</span>
&#x00A0;&#x00A0;CONTRACT,&#x00A0;STRICT&#x00A0;LIABILITY,&#x00A0;OR&#x00A0;TORT&#x00A0;(INCLUDING&#x00A0;NEGLIGENCE&#x00A0;OR&#x00A0;OTHERWISE)
&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 87--><p class="nopar" > <span
class="cmr-12">AMG4PSBLAS is distributed together with (a small part of) the graph-matching</span>
@@ -118,7 +132,7 @@ class="cmr-12">AMG4PSBLAS is distributed together with (a small part of) the gra
class="cmr-12">library MatchBox-P</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XMatchBoxP"><span
href="userhtmlli3.html#XMatchBoxP"><span
class="cmr-12">9</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. Per the license requirements, we reproduce the relevant part</span>
@@ -127,7 +141,7 @@ class="cmr-12">here.</span>
<pre class="verbatim" id="verbatim-16">
<pre class="verbatim" id="verbatim-17">
//&#x00A0;***********************************************************************
//
//&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MatchboxP:&#x00A0;A&#x00A0;C++&#x00A0;library&#x00A0;for&#x00A0;approximate&#x00A0;weighted&#x00A0;matching
@@ -179,6 +193,9 @@ class="cmr-12">here.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse9.html" ><span
+56 -34
View File
@@ -12,7 +12,7 @@
>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli5.html" ><span
href="userhtmlli3.html" ><span
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span
@@ -29,12 +29,10 @@ class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">B </span></span> <a
id="x30-34000B"></a><span
id="x12-34000B"></a><span
class="cmr-12">Contributor Covenant Code of Conduct</span></h3>
<div class="paragraphTOCS">
</div>
<!--l. 5--><p class="noindent" ><span class="paragraphHead"><a
id="x30-35000B"></a><span
id="x12-35000"></a><span
class="cmbx-12">Our Pledge</span></span>
<span
class="cmr-12">We as members, contributors, and leaders pledge to make participation in</span>
@@ -55,52 +53,62 @@ class="cmr-12">of behavior that contributes to a positive environment for our co
<span
class="cmr-12">include:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 18--><p class="noindent" ><span
class="cmr-12">Demonstrating empathy and kindness toward other people</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 19--><p class="noindent" ><span
class="cmr-12">Being respectful of differing opinions, viewpoints, and experiences</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 20--><p class="noindent" ><span
class="cmr-12">Giving and gracefully accepting constructive feedback</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 21--><p class="noindent" ><span
class="cmr-12">Accepting responsibility and apologizing to those affected by our mistakes,</span>
<span
class="cmr-12">and learning from the experience</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 23--><p class="noindent" ><span
class="cmr-12">Focusing on what is best not just for us as individuals, but for the overall</span>
<span
class="cmr-12">community</span></li></ul>
<!--l. 26--><p class="noindent" ><span
class="cmr-12">Examples of unacceptable behavior include:</span>
<ul class="itemize1">
<li class="itemize"><span
class="cmr-12">The use of sexualized language or imagery, and sexual attention or advances</span>
<span
class="cmr-12">of any kind</span>
<ul class="itemize1">
<li class="itemize">
<!--l. 28--><p class="noindent" ><span
class="cmr-12">The use of sexualized language or imagery, and sexual attention or advances</span>
<span
class="cmr-12">of any kind</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 30--><p class="noindent" ><span
class="cmr-12">Trolling, insulting or derogatory comments, and personal or political attacks</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 31--><p class="noindent" ><span
class="cmr-12">Public or private harassment</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 32--><p class="noindent" ><span
class="cmr-12">Publishing others&#8217; private information, such as a physical or email address,</span>
<span
class="cmr-12">without their explicit permission</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 34--><p class="noindent" ><span
class="cmr-12">Other conduct which could reasonably be considered inappropriate in a</span>
<span
class="cmr-12">professional setting</span></li></ul>
<!--l. 38--><p class="noindent" ><span class="paragraphHead"><a
id="x30-36000B"></a><span
id="x12-36000"></a><span
class="cmbx-12">Enforcement Responsibilities</span></span>
<span
class="cmr-12">Community leaders are responsible for clarifying and enforcing our standards of</span>
@@ -137,8 +145,11 @@ class="cmr-12">complaints will be reviewed and investigated promptly and fairly.
class="cmr-12">leaders are obligated to respect the privacy and security of the reporter of any</span>
<span
class="cmr-12">incident.</span>
<!--l. 61--><p class="noindent" ><span class="paragraphHead"><a
id="x30-37000B"></a><span
id="x12-37000"></a><span
class="cmbx-12">Enforcement Guidelines</span></span>
<span
class="cmr-12">Community leaders will follow these Community Impact Guidelines in</span>
@@ -147,17 +158,15 @@ class="cmr-12">determining the consequences for any action they deem in violatio
<span
class="cmr-12">Conduct:</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x30-37002x1"><span
<li
class="enumerate" id="x12-37002x1">
<!--l. 65--><p class="noindent" ><span
class="cmr-12">Correction</span>
<!--l. 67--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
class="cmr-12">Use of inappropriate language or other behavior deemed</span>
<span
class="cmr-12">unprofessional or unwelcome in the community.</span>
<!--l. 70--><p class="noindent" ><span
class="cmti-12">Consequence: </span><span
class="cmr-12">A private, written warning from community leaders, providing</span>
@@ -166,8 +175,9 @@ class="cmr-12">clarity around the nature of the violation and an explanation of
<span
class="cmr-12">behavior was inappropriate. A public apology may be requested.</span>
</li>
<li
class="enumerate" id="x30-37004x2"><span
<li
class="enumerate" id="x12-37004x2">
<!--l. 73--><p class="noindent" ><span
class="cmr-12">Warning</span>
<!--l. 75--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@@ -186,8 +196,9 @@ class="cmr-12">channels like social media. Violating these terms may lead to a t
<span
class="cmr-12">or permanent ban.</span>
</li>
<li
class="enumerate" id="x30-37006x3"><span
<li
class="enumerate" id="x12-37006x3">
<!--l. 84--><p class="noindent" ><span
class="cmr-12">Temporary Ban</span>
<!--l. 86--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@@ -206,8 +217,12 @@ class="cmr-12">interaction with those enforcing the Code of Conduct, is allowed
<span
class="cmr-12">period. Violating these terms may lead to a permanent ban.</span>
</li>
<li
class="enumerate" id="x30-37008x4"><span
<li
class="enumerate" id="x12-37008x4">
<!--l. 94--><p class="noindent" ><span
class="cmr-12">Permanent Ban</span>
<!--l. 96--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@@ -222,7 +237,7 @@ class="cmr-12">A permanent ban from any sort of public interaction within</span>
<span
class="cmr-12">the community.</span></li></ol>
<!--l. 104--><p class="noindent" ><span class="paragraphHead"><a
id="x30-38000B"></a><span
id="x12-38000"></a><span
class="cmbx-12">Attribution</span></span>
<span
class="cmr-12">This Code of Conduct is adapted from the Contributor Covenant, version 2.0,</span>
@@ -255,12 +270,19 @@ class="cmr-12">.</span>
<!--l. 152--><p class="indent" >
<!--l. 2--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli5.html" ><span
href="userhtmlli3.html" ><span
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span
+49 -45
View File
@@ -33,29 +33,29 @@ class="cmr-12">The following base libraries are needed:</span>
<dl class="description"><dt class="description">
<span
class="cmbx-12">BLAS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 34--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#Xblas3"><span
class="cmr-12">17</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xblas2"><span
class="cmr-12">18</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xblas2"><span
class="cmr-12">19</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xblas1"><span
class="cmr-12">25</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
class="cmr-12">26</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
<span
class="cmr-12">vendor version is available for a given platform, the ATLAS software</span>
<span
class="cmr-12">(</span><a
class="cmr-12">vendor version is available for a given platform, the ATLAS software (</span>
<a
href="http://math-atlas.sourceforge.net" ><span
class="cmr-12">math-atlas.sourceforge .net</span></a><span
class="cmr-12">) may be employed. The reference BLAS from</span>
<span
class="cmr-12">Netlib (</span><a
class="cmr-12">Netlib ( </span><a
href="http://www.netlib.org/blas" ><span
class="cmr-12">www.netlib.org/blas</span></a><span
class="cmr-12">) are meant to define the standard behaviour of</span>
@@ -74,7 +74,7 @@ class="cmr-12">our experience is that configuring ATLAS for building full LAPACK
<span
class="cmr-12">not always work in the expected way. Our advice is first to download the</span>
<span
class="cmr-12">LAPACK tarfile from </span><a
class="cmr-12">LAPACK tarfile from </span><a
href="http://www.netlib.org/lapack" ><span
class="cmr-12">www.netlib.org/lapack</span></a> <span
class="cmr-12">and install it independently of</span>
@@ -87,14 +87,15 @@ class="cmr-12">library.</span>
</dd><dt class="description">
<span
class="cmbx-12">MPI</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 51--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XMPI2"><span
class="cmr-12">24</span></a><span
class="cmr-12">25</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XMPI1"><span
class="cmr-12">30</span></a><span
class="cmr-12">32</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A version of MPI is available on most high-performance computing</span>
<span
@@ -102,22 +103,26 @@ class="cmr-12">systems.</span>
</dd><dt class="description">
<span
class="cmbx-12">PSBLAS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 53--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xpsblas_00"><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
<a
class="cmr-12">23</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse</span>
<span
class="cmr-12">BLAS (PSBLAS) is available from </span><a
href="https://psctoolkit.github.io/products/psblas/" ><span
class="cmr-12">psctoolkit.github.io/ products/psblas/</span></a><span
class="cmr-12">; version 3.7.0 (or later) is required.</span>
class="cmr-12">;</span>
<span
class="cmr-12">Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS.</span></dd></dl>
class="cmr-12">version 3.7.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
<span
class="cmr-12">are also prerequisites of PSBLAS.</span></dd></dl>
<!--l. 60--><p class="noindent" ><span
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span>
<span
@@ -127,27 +132,26 @@ class="cmr-12">compiler being used for AMG4PSBLAS.</span>
<!--l. 64--><p class="indent" > <span
class="cmr-12">If you want to use the PSBLAS support for NVIDIA GPUs, you will also</span>
<span
class="cmr-12">need:</span>
<dl class="description"><dt class="description">
class="cmr-12">need a working version of the CUDA Toolkit that is compatible with the</span>
<span
class="cmbx-12">PSBLAS-EXT</span> </dt><dd
class="description"><span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) Extensions, available from</span>
<a
href="https://psctoolkit.github.io/products/psblasext/" ><span
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
class="cmr-12">; version 1.3.0 (or later).</span>
</dd><dt class="description">
class="cmr-12">compiler choice made to compile PSBLAS and AMG4PSBLAS. After that</span>
<span
class="cmr-12">you will need to have configured and compiled the PSBLAS library with the</span>
<span
class="cmr-12">options:</span>
<pre class="verbatim" id="verbatim-2">
./configure&#x00A0;--enable-cuda&#x00A0;--with-cudadir=${CUDA_HOME}&#x00A0;--with-cudacc=xx,yy,zz&#x00A0;&#x00A0;
</pre>
<!--l. 89--><p class="nopar" > <span
class="cmr-12">Previous versions required you to have the auxiliary libraries SPGPU and</span>
<span
class="cmr-12">PSBLAS-EXT compiled, this is no longer necessary because they have been integrated</span>
<span
class="cmr-12">into PSBLAS and are compiled by activating the previous flags during configuration.</span>
<span
class="cmbx-12">SPGPU</span> </dt><dd
class="description"><span
class="cmr-12">Sparse CUDA kernels for NVIDIA GPUs; available from GitHub, see</span>
<span
class="cmr-12">also </span><a
href="https://psctoolkit.github.io/products/psblasext/" ><span
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
class="cmr-12">.</span></dd></dl>
<!--l. 76--><p class="noindent" ><span
class="cmr-12">See also Sec</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu7.html#x16-150004.2"><span
@@ -156,7 +160,7 @@ class="cmr-12">.</span>
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
<!--l. 96--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu2.html" ><span
class="cmr-12">next</span></a><span
@@ -167,6 +171,6 @@ class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu1.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 79--><p class="indent" > <a
<!--l. 96--><p class="indent" > <a
id="tailuserhtmlsu1.html"></a>
</body></html>
+51 -98
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Method hierarchy_build</title>
<head><title>Method hierarchy_uild</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 685--><div class="crosslinks"><p class="noindent"><span
<!--l. 717--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span
@@ -34,138 +34,91 @@ class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 687--><p class="noindent" >
<!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">hierarchy_build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
<!--l. 719--><p class="noindent" >
<!--l. 720--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">hierarchy_build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 691--><p class="noindent" ><span
<!--l. 723--><p class="noindent" ><span
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
<span
class="cmr-12">the multilevel preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">the multilevel preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, according to the requirements made by the user</span>
<span
class="cmr-12">through the methods </span><span class="lstinline"></span><span
class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span><span
class="cmr-12">through the methods </span><code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">.</span>
<!--l. 696--><p class="noindent" ><span
<!--l. 728--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-11" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-11-1g"><col
id="TBL-11-1"><col
id="TBL-11-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
class="td11"><!--l. 699--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
class="td11"><!--l. 699--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-12" class="tabular"
><colgroup id="TBL-12-1g"><col
id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
class="td11"> <!--l. 731--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
class="td11"> <!--l. 731--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
class="td11"><!--l. 700--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
class="td11"><!--l. 700--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
class="td11"> <!--l. 732--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"> <!--l. 732--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
<span
class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span>
<span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
class="td11"><!--l. 705--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
class="td11"><!--l. 705--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
class="td11"> <!--l. 737--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
class="td11"> <!--l. 737--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
class="td11"><!--l. 706--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 706--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span><span
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
class="td11"> <!--l. 738--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"> <!--l. 738--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
class="td11"><!--l. 708--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
class="td11"><!--l. 708--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
class="td11"> <!--l. 740--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
class="td11"> <!--l. 740--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
class="td11"><!--l. 709--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 709--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
class="td11"> <!--l. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"> <!--l. 741--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
class="td11"> </td> </tr></table> </div>
<!--l. 715--><div class="crosslinks"><p class="noindent"><span
<!--l. 747--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span
@@ -182,6 +135,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu10.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 715--><p class="indent" > <a
<!--l. 747--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a>
</body></html>
+83 -177
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Method smoothers_build</title>
<head><title>Method smoothers_uild</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 715--><div class="crosslinks"><p class="noindent"><span
<!--l. 747--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span
@@ -34,235 +34,141 @@ class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 718--><p class="noindent" >
<!--l. 719--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">smoothers_build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">p</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">amold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">imold</span><span
class="cmtt-12">])</span><br />
<!--l. 750--><p class="noindent" >
<!--l. 751--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">smoothers_build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">p</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">amold</span><span style="color:#000000">,</span><span style="color:#000000">vmold</span><span style="color:#000000">,</span><span style="color:#000000">imold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 722--><p class="noindent" ><span
<!--l. 754--><p class="noindent" ><span
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
<span
class="cmr-12">preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, according to the requirements made by the user through the methods</span>
<span class="lstinline"></span><span
class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span><span
<code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
<span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span> <span
<code class="lstinline"><span style="color:#000000">hierarchy_build</span></code> <span
class="cmr-12">(see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu10.html#x20-190005.3"><span
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span>
<!--l. 729--><p class="noindent" ><span
<!--l. 761--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-12-1g"><col
id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
class="td11"><!--l. 732--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
class="td11"><!--l. 732--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-13" class="tabular"
><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
class="td11"> <!--l. 764--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
class="td11"> <!--l. 764--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
class="td11"><!--l. 733--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 733--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
class="td11"> <!--l. 765--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"> <!--l. 765--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
<span
class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span>
<span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
class="td11"><!--l. 737--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
class="td11"><!--l. 737--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
class="td11"> <!--l. 769--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
class="td11"> <!--l. 769--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
class="td11"><!--l. 738--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 738--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span><span
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
class="td11"> <!--l. 770--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"> <!--l. 770--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
class="td11"> <!--l. 772--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
class="td11"> <!--l. 772--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
class="td11"><!--l. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 741--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
class="td11"> <!--l. 773--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"> <!--l. 773--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
class="td11"><!--l. 742--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
class="td11"><!--l. 742--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
class="td11"> <!--l. 774--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
class="td11"> <!--l. 774--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
class="td11"><!--l. 743--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 743--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
class="td11"> <!--l. 775--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"> <!--l. 775--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
class="td11"><!--l. 747--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
class="td11"><!--l. 747--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
class="td11"> <!--l. 779--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
class="td11"> <!--l. 779--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
class="td11"><!--l. 748--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 748--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
class="td11"> <!--l. 780--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"> <!--l. 780--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
class="td11"><!--l. 750--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
class="td11"><!--l. 750--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_i_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
class="td11"> <!--l. 782--><p class="noindent" ><code class="lstinline"><span style="color:#000000">imold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
class="td11"> <!--l. 782--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_i_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
class="td11"><!--l. 751--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 751--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
class="td11"> <!--l. 783--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"> <!--l. 783--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
class="td11"> </td> </tr></table> </div>
<!--l. 757--><div class="crosslinks"><p class="noindent"><span
<!--l. 789--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span
@@ -279,6 +185,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu11.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 757--><p class="indent" > <a
<!--l. 789--><p class="indent" > <a
id="tailuserhtmlsu11.html"></a>
</body></html>
+84 -177
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 757--><div class="crosslinks"><p class="noindent"><span
<!--l. 789--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span
@@ -33,36 +33,15 @@ class="cmr-12">5.5 </span></span> <a
class="cmr-12">Method build</span></h4>
<div class="center"
>
<!--l. 759--><p class="noindent" >
<!--l. 760--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">amold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">imold</span><span
class="cmtt-12">])</span><br />
<!--l. 791--><p class="noindent" >
<!--l. 792--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">amold</span><span style="color:#000000">,</span><span style="color:#000000">vmold</span><span style="color:#000000">,</span><span style="color:#000000">imold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 763--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span> <span
<!--l. 795--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code> <span
class="cmr-12">according to the requirements made by the</span>
<span
class="cmr-12">user through the methods </span><span class="lstinline"></span><span
class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span> <span
class="cmr-12">user through the methods </span><code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code> <span
class="cmr-12">(see Sections</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu10.html#x20-190005.3"><span
@@ -75,196 +54,124 @@ class="cmr-12">for multilevel</span>
<span
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
<span
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span> <span
class="cmr-12">internally implemented by invoking the two previous methods </span><code class="lstinline"><span style="color:#000000">hierarchy_build</span></code> <span
class="cmr-12">and</span>
<span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span><span
<code class="lstinline"><span style="color:#000000">smoothers_build</span></code><span
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
<span
class="cmr-12">dealing with simple one-level preconditioners.</span>
<!--l. 773--><p class="noindent" ><span
<!--l. 805--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
class="td11"><!--l. 776--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
class="td11"><!--l. 776--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-14" class="tabular"
><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
class="td11"> <!--l. 808--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
class="td11"> <!--l. 808--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
class="td11"><!--l. 777--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 777--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
class="td11"> <!--l. 809--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"> <!--l. 809--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
<span
class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span>
<span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
class="td11"><!--l. 781--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
class="td11"><!--l. 781--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
class="td11"> <!--l. 813--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
class="td11"> <!--l. 813--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
class="td11"><!--l. 782--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 782--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span><span
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
class="td11"> <!--l. 814--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"> <!--l. 814--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
class="td11"><!--l. 784--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
class="td11"><!--l. 784--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
class="td11"> <!--l. 816--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
class="td11"> <!--l. 816--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
class="td11"><!--l. 785--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 785--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
class="td11"> <!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"> <!--l. 817--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
class="td11"><!--l. 786--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
class="td11"><!--l. 786--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
class="td11"> <!--l. 818--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
class="td11"> <!--l. 818--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
class="td11"><!--l. 787--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 787--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
class="td11"> <!--l. 819--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"> <!--l. 819--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
class="td11"><!--l. 791--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
class="td11"><!--l. 791--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
class="td11"> <!--l. 823--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
class="td11"> <!--l. 823--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
class="td11"><!--l. 792--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 792--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
class="td11"> <!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"> <!--l. 824--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
class="td11"><!--l. 794--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
class="td11"><!--l. 794--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_i_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
class="td11"> <!--l. 826--><p class="noindent" ><code class="lstinline"><span style="color:#000000">imold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
class="td11"> <!--l. 826--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_i_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
class="td11"><!--l. 795--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 795--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
class="td11"> <!--l. 827--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"> <!--l. 827--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
<span
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
class="td11"> </td> </tr></table></div>
<!--l. 800--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
class="td11"> </td> </tr></table> </div>
<!--l. 832--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
@@ -272,7 +179,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
<!--l. 837--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span
@@ -289,6 +196,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu12.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 805--><p class="indent" > <a
<!--l. 837--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a>
</body></html>
+91 -201
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
<!--l. 837--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@@ -33,29 +33,10 @@ class="cmr-12">5.6 </span></span> <a
class="cmr-12">Method apply</span></h4>
<div class="center"
>
<!--l. 807--><p class="noindent" >
<!--l. 808--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">apply</span><span
class="cmtt-12">(</span><span
class="cmtt-12">x</span><span
class="cmtt-12">,</span><span
class="cmtt-12">y</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">trans</span><span
class="cmtt-12">,</span><span
class="cmtt-12">work</span><span
class="cmtt-12">])</span><br />
<!--l. 839--><p class="noindent" >
<!--l. 840--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">apply</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">trans</span><span style="color:#000000">,</span><span style="color:#000000">work</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 811--><p class="noindent" ><span
<!--l. 843--><p class="noindent" ><span
class="cmr-12">This method computes </span><span
class="cmmi-12">y </span><span
class="cmr-12">= </span><span
@@ -70,45 +51,35 @@ class="cmr-12">, where </span><span
class="cmmi-12">B </span><span
class="cmr-12">is a previously built preconditioner,</span>
<span
class="cmr-12">stored into </span><span class="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">stored into </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, and </span><span
class="cmmi-12">op </span><span
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
<span
class="cmr-12">value of </span><span class="lstinline"></span><span
class="cmtt-12">trans</span><span
class="cmr-12">value of </span><code class="lstinline"><span style="color:#000000">trans</span></code><span
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
<span
class="cmr-12">PSBLAS, </span><span class="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">apply</span> <span
class="cmr-12">is called within the PSBLAS method </span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov</span> <span
class="cmr-12">PSBLAS, </span><code class="lstinline"><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">apply</span></code> <span
class="cmr-12">is called within the PSBLAS method </span><code class="lstinline"><span style="color:#000000">psb_krylov</span></code> <span
class="cmr-12">and hence it is</span>
<span
class="cmr-12">completely transparent to the user.</span>
<!--l. 820--><p class="noindent" ><span
<!--l. 852--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
class="td11"><!--l. 823--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), intent(in)&#8212;.</span> </td>
<div class="tabular"> <table id="TBL-15" class="tabular"
><colgroup id="TBL-15-1g"><col
id="TBL-15-1"><col
id="TBL-15-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
class="td11"> <!--l. 855--><p class="noindent" ><code class="lstinline"><span style="color:#000000">x</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
class="td11"> <!--l. 855--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), intent(in)&#8212;.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 824--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
class="td11"> <!--l. 856--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"> <!--l. 856--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">x</span><span
class="cmr-12">. Note that </span><span
@@ -116,28 +87,22 @@ class="cmti-12">type </span><span
class="cmr-12">and </span><span
class="cmti-12">kind</span><span
class="cmti-12">_parameter</span>
<span
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<span
class="cmr-12">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double</span>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
class="td11"><!--l. 827--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
class="td11"><!--l. 827--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), intent(out)&#8212;.</span> </td>
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
class="td11"> <!--l. 859--><p class="noindent" ><code class="lstinline"><span style="color:#000000">y</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-3-2"
class="td11"> <!--l. 859--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), intent(out)&#8212;.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
class="td11"><!--l. 828--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 828--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:normal; text-align:left;" id="TBL-15-4-1"
class="td11"> <!--l. 860--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-4-2"
class="td11"> <!--l. 860--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">y</span><span
class="cmr-12">. Note that </span><span
@@ -145,89 +110,48 @@ class="cmti-12">type </span><span
class="cmr-12">and </span><span
class="cmti-12">kind</span><span
class="cmti-12">_parameter</span>
<span
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<span
class="cmr-12">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double</span>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
class="td11"><!--l. 831--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
class="td11"><!--l. 831--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:normal; text-align:left;" id="TBL-15-5-1"
class="td11"> <!--l. 863--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-5-2"
class="td11"> <!--l. 863--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
class="td11"><!--l. 832--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 832--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:normal; text-align:left;" id="TBL-15-6-1"
class="td11"> <!--l. 864--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-6-2"
class="td11"> <!--l. 864--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span
class="cmr-12">preconditioned.</span> </td>
<span
class="cmr-12">preconditioned.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
class="td11"><!--l. 834--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
class="td11"><!--l. 834--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:normal; text-align:left;" id="TBL-15-7-1"
class="td11"> <!--l. 866--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-7-2"
class="td11"> <!--l. 866--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
class="td11"><!--l. 835--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 835--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-8-"><td style="white-space:normal; text-align:left;" id="TBL-15-8-1"
class="td11"> <!--l. 867--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-8-2"
class="td11"> <!--l. 867--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
class="td11"><!--l. 836--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
class="td11"><!--l. 836--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">character</span><span
class="cmtt-12">(</span><span
class="cmtt-12">len</span><span
class="cmtt-12">=1),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">).</span> </td>
style="vertical-align:baseline;" id="TBL-15-9-"><td style="white-space:normal; text-align:left;" id="TBL-15-9-1"
class="td11"> <!--l. 868--><p class="noindent" ><code class="lstinline"><span style="color:#000000">trans</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-9-2"
class="td11"> <!--l. 868--><p class="noindent" ><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=1),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">).</span></code> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
class="td11"><!--l. 837--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 837--><p class="noindent" ><span
class="cmr-12">If </span><span class="lstinline"></span><span
class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">N</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">n</span><span
class="cmtt-12">&#8217;</span> <span
style="vertical-align:baseline;" id="TBL-15-10-"><td style="white-space:normal; text-align:left;" id="TBL-15-10-1"
class="td11"> <!--l. 869--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-10-2"
class="td11"> <!--l. 869--><p class="noindent" ><span
class="cmr-12">If </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">N</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">n</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">then </span><span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
@@ -238,17 +162,9 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span
class="cmr-12">; if </span><span class="lstinline"></span><span
class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">T</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">t</span><span
class="cmtt-12">&#8217;</span>
<span
class="cmr-12">; if </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">T</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">t</span><span style="color:#000000">&#8217;</span></code>
<span
class="cmr-12">then </span><span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
@@ -263,18 +179,10 @@ class="cmr-12">(transpose of </span><span
class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span
class="cmr-12">); if </span><span class="lstinline"></span><span
class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">C</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">c</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-12">); if </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">C</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">c</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">then</span>
<span
<span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span
@@ -288,58 +196,40 @@ class="cmr-12">(conjugate transpose of </span><span
class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span
class="cmr-12">).</span> </td>
class="cmr-12">).</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
class="td11"><!--l. 841--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
class="td11"><!--l. 841--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), optional, target&#8212;.</span> </td>
style="vertical-align:baseline;" id="TBL-15-11-"><td style="white-space:normal; text-align:left;" id="TBL-15-11-1"
class="td11"> <!--l. 873--><p class="noindent" ><code class="lstinline"><span style="color:#000000">work</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-11-2"
class="td11"> <!--l. 873--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), optional, target&#8212;.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
class="td11"><!--l. 842--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 842--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">*</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">psb_cd_get_local_</span>
<span class="lstinline"></span><span
class="cmtt-12">cols</span><span
class="cmtt-12">(</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">)</span> <span
style="vertical-align:baseline;" id="TBL-15-12-"><td style="white-space:normal; text-align:left;" id="TBL-15-12-1"
class="td11"> <!--l. 874--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-12-2"
class="td11"> <!--l. 874--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><code class="lstinline"><span style="color:#000000">4</span><span style="color:#000000"> </span><span style="color:#000000">*</span><span style="color:#000000"> </span><span style="color:#000000">psb_cd_get_local_</span></code>
<code class="lstinline"><span style="color:#000000">cols</span><span style="color:#000000">(</span><span style="color:#000000">desc_a</span><span style="color:#000000">)</span></code> <span
class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span
class="cmti-12">type </span><span
class="cmr-12">and</span>
<span
<span
class="cmti-12">kind</span><span
class="cmti-12">_parameter </span><span
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">,</span>
<span
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
<span
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-15-13-"><td style="white-space:normal; text-align:left;" id="TBL-15-13-1"
class="td11"> </td> </tr></table> </div>
<!--l. 851--><div class="crosslinks"><p class="noindent"><span
<!--l. 883--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@@ -356,6 +246,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu13.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 851--><p class="indent" > <a
<!--l. 883--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a>
</body></html>
+24 -43
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 851--><div class="crosslinks"><p class="noindent"><span
<!--l. 883--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@@ -33,63 +33,44 @@ class="cmr-12">5.7 </span></span> <a
class="cmr-12">Method free</span></h4>
<div class="center"
>
<!--l. 853--><p class="noindent" >
<!--l. 854--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">free</span><span
class="cmtt-12">(</span><span
class="cmtt-12">p</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
<!--l. 885--><p class="noindent" >
<!--l. 886--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">free</span><span style="color:#000000">(</span><span style="color:#000000">p</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 857--><p class="noindent" ><span
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="lstinline"></span><span
class="cmtt-12">p</span><span
<!--l. 889--><p class="noindent" ><span
class="cmr-12">This method deallocates the preconditioner data structure </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">.</span>
<!--l. 860--><p class="noindent" ><span
<!--l. 892--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-15-1g"><col
id="TBL-15-1"><col
id="TBL-15-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
class="td11"><!--l. 863--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
class="td11"><!--l. 863--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-16" class="tabular"
><colgroup id="TBL-16-1g"><col
id="TBL-16-1"><col
id="TBL-16-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
class="td11"> <!--l. 895--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
class="td11"> <!--l. 895--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
class="td11"><!--l. 864--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 864--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
class="td11"> <!--l. 896--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"> <!--l. 896--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for</span>
<span
class="cmr-12">details.</span> </td>
<span
class="cmr-12">details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
class="td11"> </td> </tr></table> </div>
<!--l. 870--><div class="crosslinks"><p class="noindent"><span
<!--l. 902--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@@ -106,6 +87,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu14.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 870--><p class="indent" > <a
<!--l. 902--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a>
</body></html>
+56 -117
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 870--><div class="crosslinks"><p class="noindent"><span
<!--l. 902--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@@ -33,148 +33,87 @@ class="cmr-12">5.8 </span></span> <a
class="cmr-12">Method descr</span></h4>
<div class="center"
>
<!--l. 872--><p class="noindent" >
<!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">descr</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[</span><span
class="cmtt-12">iout</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">root</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">verbosity</span><span
class="cmtt-12">])</span><br />
<!--l. 904--><p class="noindent" >
<!--l. 905--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">descr</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">[</span><span style="color:#000000">iout</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">root</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">verbosity</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 876--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span> <span
<!--l. 908--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code> <span
class="cmr-12">to the standard output or to a</span>
<span
class="cmr-12">file. It must be called after </span><span class="lstinline"></span><span
class="cmtt-12">hierachy_build</span> <span
class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span><span
class="cmr-12">, or </span><span class="lstinline"></span><span
class="cmtt-12">build</span><span
class="cmr-12">file. It must be called after </span><code class="lstinline"><span style="color:#000000">hierachy_build</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">smoothers_build</span></code><span
class="cmr-12">, or </span><code class="lstinline"><span style="color:#000000">build</span></code><span
class="cmr-12">, have</span>
<span
class="cmr-12">been called.</span>
<!--l. 881--><p class="noindent" ><span
<!--l. 913--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-16-1g"><col
id="TBL-16-1"><col
id="TBL-16-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
class="td11"><!--l. 884--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
class="td11"><!--l. 884--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-17" class="tabular"
><colgroup id="TBL-17-1g"><col
id="TBL-17-1"><col
id="TBL-17-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
class="td11"> <!--l. 916--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
class="td11"> <!--l. 916--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
class="td11"><!--l. 885--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 885--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
class="td11"> <!--l. 917--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"> <!--l. 917--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span></td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
class="td11"><!--l. 886--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
class="td11"><!--l. 886--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
class="td11"> <!--l. 918--><p class="noindent" ><code class="lstinline"><span style="color:#000000">iout</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
class="td11"> <!--l. 918--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
class="td11"><!--l. 887--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 887--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
class="td11"> <!--l. 919--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"> <!--l. 919--><p class="noindent" ><span
class="cmr-12">The id of the file where the preconditioner description will be</span>
<span
class="cmr-12">printed; the default is the standard output.</span> </td>
<span
class="cmr-12">printed; the default is the standard output.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
class="td11"><!--l. 889--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-5-2"
class="td11"><!--l. 889--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
class="td11"> <!--l. 921--><p class="noindent" ><code class="lstinline"><span style="color:#000000">root</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-5-2"
class="td11"> <!--l. 921--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:normal; text-align:left;" id="TBL-16-6-1"
class="td11"><!--l. 890--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
class="td11"><!--l. 890--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:normal; text-align:left;" id="TBL-17-6-1"
class="td11"> <!--l. 922--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-6-2"
class="td11"> <!--l. 922--><p class="noindent" ><span
class="cmr-12">The id of the process where the preconditioner description</span>
<span
class="cmr-12">will be printed; the default is </span><span class="lstinline"></span><span
class="cmtt-12">psb_root_</span><span
class="cmr-12">.</span> </td>
<span
class="cmr-12">will be printed; the default is </span><code class="lstinline"><span style="color:#000000">psb_root_</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:normal; text-align:left;" id="TBL-16-7-1"
class="td11"><!--l. 892--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-7-2"
class="td11"><!--l. 892--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:normal; text-align:left;" id="TBL-17-7-1"
class="td11"> <!--l. 924--><p class="noindent" ><code class="lstinline"><span style="color:#000000">verbosity</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-7-2"
class="td11"> <!--l. 924--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:normal; text-align:left;" id="TBL-16-8-1"
class="td11"><!--l. 893--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
class="td11"><!--l. 893--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-8-"><td style="white-space:normal; text-align:left;" id="TBL-17-8-1"
class="td11"> <!--l. 925--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-8-2"
class="td11"> <!--l. 925--><p class="noindent" ><span
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
<span
<span
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
<span
<span
class="cmr-12">a distributed multilevel preconditioner the size of the coarse</span>
<span
class="cmr-12">matrices on every process.</span> </td>
<span
class="cmr-12">matrices on every process.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-17-9-"><td style="white-space:normal; text-align:left;" id="TBL-17-9-1"
class="td11"> </td> </tr></table> </div>
<!--l. 900--><div class="crosslinks"><p class="noindent"><span
<!--l. 932--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@@ -191,6 +130,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu15.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 900--><p class="indent" > <a
<!--l. 932--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a>
</body></html>
+146 -290
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 900--><div class="crosslinks"><p class="noindent"><span
<!--l. 932--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">prev</span></a><span
@@ -28,251 +28,155 @@ class="cmr-12">] </span></p></div>
class="cmr-12">5.9 </span></span> <a
id="x26-250005.9"></a><span
class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 901--><p class="noindent" ><span
<!--l. 933--><p class="noindent" ><span
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
<span
class="cmr-12">object.</span>
<!--l. 904--><p class="noindent" >
<!--l. 936--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.1 </span></span> <a
id="x26-260005.9.1"></a><span
class="cmr-12">Method: dump</span></h5>
<div class="center"
>
<!--l. 906--><p class="noindent" >
<!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">dump</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">istart</span><span
class="cmtt-12">,</span><span
class="cmtt-12">iend</span><span
class="cmtt-12">,</span><span
class="cmtt-12">prefix</span><span
class="cmtt-12">,</span><span
class="cmtt-12">head</span><span
class="cmtt-12">,</span><span
class="cmtt-12">ac</span><span
class="cmtt-12">,</span><span
class="cmtt-12">rp</span><span
class="cmtt-12">,</span><span
class="cmtt-12">smoother</span><span
class="cmtt-12">,</span><span
class="cmtt-12">solver</span><span
class="cmtt-12">,</span><span
class="cmtt-12">global_num</span><span
class="cmtt-12">])</span><br />
<!--l. 938--><p class="noindent" >
<!--l. 939--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">dump</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">istart</span><span style="color:#000000">,</span><span style="color:#000000">iend</span><span style="color:#000000">,</span><span style="color:#000000">prefix</span><span style="color:#000000">,</span><span style="color:#000000">head</span><span style="color:#000000">,</span><span style="color:#000000">ac</span><span style="color:#000000">,</span><span style="color:#000000">rp</span><span style="color:#000000">,</span><span style="color:#000000">smoother</span><span style="color:#000000">,</span><span style="color:#000000">solver</span><span style="color:#000000">,</span><span style="color:#000000">global_num</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 910--><p class="noindent" ><span
<!--l. 942--><p class="noindent" ><span
class="cmr-12">Dump on file.</span>
<!--l. 913--><p class="noindent" ><span
<!--l. 945--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-17-1g"><col
id="TBL-17-1"><col
id="TBL-17-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
class="td11"><!--l. 916--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
class="td11"><!--l. 916--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-18" class="tabular"
><colgroup id="TBL-18-1g"><col
id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
class="td11"> <!--l. 948--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
class="td11"> <!--l. 948--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
class="td11"><!--l. 917--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 917--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
class="td11"> <!--l. 949--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"> <!--l. 949--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
class="td11"><!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
class="td11"><!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
class="td11"> <!--l. 950--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
class="td11"> <!--l. 950--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
class="td11"><!--l. 919--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 919--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
class="td11"> <!--l. 951--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"> <!--l. 951--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 926--><p class="noindent" >
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table> </div>
<!--l. 958--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.2 </span></span> <a
id="x26-270005.9.2"></a><span
class="cmr-12">Method: clone</span></h5>
<div class="center"
>
<!--l. 928--><p class="noindent" >
<!--l. 929--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">clone</span><span
class="cmtt-12">(</span><span
class="cmtt-12">pout</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
<!--l. 960--><p class="noindent" >
<!--l. 961--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">clone</span><span style="color:#000000">(</span><span style="color:#000000">pout</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 932--><p class="noindent" ><span
<!--l. 964--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 935--><p class="noindent" ><span
<!--l. 967--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-18-1g"><col
id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
class="td11"><!--l. 938--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
class="td11"><!--l. 938--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type</span><span
class="cmtt-12">(</span><span
class="cmtt-12">amg_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">prec_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-19" class="tabular"
><colgroup id="TBL-19-1g"><col
id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
class="td11"> <!--l. 970--><p class="noindent" ><code class="lstinline"><span style="color:#000000">pout</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
class="td11"> <!--l. 970--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">amg_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">prec_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
class="td11"><!--l. 939--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 939--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
class="td11"> <!--l. 971--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"> <!--l. 971--><p class="noindent" ><span
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
class="cmti-12">x </span><span
class="cmr-12">must</span>
<span
class="cmr-12">be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<span
class="cmr-12">be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision</span>
<span
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
<span
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
class="td11"><!--l. 942--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
class="td11"><!--l. 942--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
class="td11"> <!--l. 974--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-19-3-2"
class="td11"> <!--l. 974--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
class="td11"><!--l. 943--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 943--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:normal; text-align:left;" id="TBL-19-4-1"
class="td11"> <!--l. 975--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-4-2"
class="td11"> <!--l. 975--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 948--><p class="noindent" >
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:normal; text-align:left;" id="TBL-19-5-1"
class="td11"> </td> </tr></table> </div>
<!--l. 980--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.3 </span></span> <a
id="x26-280005.9.3"></a><span
class="cmr-12">Method: sizeof</span></h5>
<div class="center"
>
<!--l. 950--><p class="noindent" >
<!--l. 951--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">=</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">sizeof</span><span
class="cmtt-12">([</span><span
class="cmtt-12">global</span><span
class="cmtt-12">])</span><br />
<!--l. 982--><p class="noindent" >
<!--l. 983--><p class="noindent" ><code class="lstinline"><span style="color:#000000">sz</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">sizeof</span><span style="color:#000000">([</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code><br />
</div>
<div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-19-1g"><col
id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
class="td11"><!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
class="td11"><!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">logical</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-20" class="tabular"
><colgroup id="TBL-20-1g"><col
id="TBL-20-1"><col
id="TBL-20-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
class="td11"> <!--l. 987--><p class="noindent" ><code class="lstinline"><span style="color:#000000">global</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
class="td11"> <!--l. 987--><p class="noindent" ><code class="lstinline"><span style="color:#000000">logical</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
class="td11"><!--l. 956--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 956--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
class="td11"> <!--l. 988--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"> <!--l. 988--><p class="noindent" ><span
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
<span
class="cmr-12">desired. Default: </span><span class="lstinline"></span><span
class="cmtt-12">.</span><span
class="cmtt-12">false</span><span
class="cmtt-12">.</span><span
class="cmr-12">.</span> </td>
<span
class="cmr-12">desired. Default: </span><code class="lstinline"><span style="color:#000000">.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
class="td11"> </td> </tr></table>
</div> <span
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
class="td11"> </td> </tr></table> </div>
<span
class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 963--><p class="noindent" >
<!--l. 995--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.4 </span></span> <a
id="x26-290005.9.4"></a><span
@@ -280,21 +184,10 @@ class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 965--><p class="noindent" >
<!--l. 966--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">allocate_wrk</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">])</span><br />
<!--l. 997--><p class="noindent" >
<!--l. 998--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">allocate_wrk</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000"> </span><span style="color:#000000">vmold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 969--><p class="noindent" ><span
<!--l. 1001--><p class="noindent" ><span
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
<span
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
@@ -308,82 +201,58 @@ class="cmr-12">notably GPUs, memory allocation is a slow operation, and the defa
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span>
<span
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span>
<span
class="cmr-12">using GPUs or other specialized devices, the </span><code class="lstinline"><span style="color:#000000">vmold</span></code> <span
class="cmr-12">argument is also necessary</span>
<span
class="cmr-12">using GPUs or other specialized devices, the </span><span class="lstinline"></span><span
class="cmtt-12">vmold</span> <span
class="cmr-12">argument is also necessary</span>
<span
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
<span
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
<span
class="cmr-12">taken care of based on the dynamic type of the </span><span class="lstinline"></span><span
class="cmtt-12">x</span> <span
class="cmr-12">argument to the </span><span class="lstinline"></span><span
class="cmtt-12">apply</span>
class="cmr-12">taken care of based on the dynamic type of the </span><code class="lstinline"><span style="color:#000000">x</span></code> <span
class="cmr-12">argument to the </span><code class="lstinline"><span style="color:#000000">apply</span></code>
<span
class="cmr-12">method.</span>
<!--l. 985--><p class="noindent" ><span
<!--l. 1017--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-20-1g"><col
id="TBL-20-1"><col
id="TBL-20-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
class="td11"><!--l. 988--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
class="td11"><!--l. 988--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-21" class="tabular"
><colgroup id="TBL-21-1g"><col
id="TBL-21-1"><col
id="TBL-21-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
class="td11"> <!--l. 1020--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
class="td11"> <!--l. 1020--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
class="td11"><!--l. 989--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 989--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
class="td11"> <!--l. 1021--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
class="td11"> <!--l. 1021--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
class="td11"><!--l. 990--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
class="td11"><!--l. 990--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class</span><span
class="cmtt-12">(</span><span
class="cmtt-12">psb_</span><span
class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
class="td11"> <!--l. 1022--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-21-3-2"
class="td11"> <!--l. 1022--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
class="td11"><!--l. 991--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
class="td11"><!--l. 991--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:normal; text-align:left;" id="TBL-21-4-1"
class="td11"> <!--l. 1023--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-4-2"
class="td11"> <!--l. 1023--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:normal; text-align:left;" id="TBL-20-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 997--><p class="noindent" >
style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:normal; text-align:left;" id="TBL-21-5-1"
class="td11"> </td> </tr></table> </div>
<!--l. 1029--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.5 </span></span> <a
id="x26-300005.9.5"></a><span
@@ -391,50 +260,37 @@ class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 999--><p class="noindent" >
<!--l. 1000--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">free_wrk</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
<!--l. 1031--><p class="noindent" >
<!--l. 1032--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">free_wrk</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 1003--><p class="noindent" ><span
<!--l. 1035--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 1006--><p class="noindent" ><span
<!--l. 1038--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-21" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-21-1g"><col
id="TBL-21-1"><col
id="TBL-21-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
class="td11"><!--l. 1009--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
class="td11"><!--l. 1009--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-22" class="tabular"
><colgroup id="TBL-22-1g"><col
id="TBL-22-1"><col
id="TBL-22-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:normal; text-align:left;" id="TBL-22-1-1"
class="td11"> <!--l. 1041--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-22-1-2"
class="td11"> <!--l. 1041--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
class="td11"><!--l. 1010--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
class="td11"><!--l. 1010--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:normal; text-align:left;" id="TBL-22-2-1"
class="td11"> <!--l. 1042--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-2-2"
class="td11"> <!--l. 1042--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td>
class="cmr-12">for details.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:normal; text-align:left;" id="TBL-22-3-1"
class="td11"> </td> </tr></table> </div>
+41 -36
View File
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
<!--l. 96--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu3.html" ><span
class="cmr-12">next</span></a><span
@@ -31,24 +31,25 @@ class="cmr-12">] </span></p></div>
class="cmr-12">3.2 </span></span> <a
id="x10-90003.2"></a><span
class="cmr-12">Optional third party libraries</span></h4>
<!--l. 81--><p class="noindent" ><span
<!--l. 98--><p class="noindent" ><span
class="cmr-12">We provide interfaces to the following third-party software libraries; note that these are</span>
<span
class="cmr-12">optional, but if you enable them some defaults for multilevel preconditioners may</span>
<span
class="cmr-12">change to reflect their presence.</span>
<!--l. 85--><p class="indent" >
<!--l. 102--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-12">UMFPACK</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 103--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XUMFPACK"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span>
class="cmr-12">A sparse LU factorization package included in the SuiteSparse library,</span>
<span
class="cmr-12">library, available from </span><a
class="cmr-12">available from </span><a
href="faculty.cse.tamu.edu/davis/suitesparse.html" class="url" ><span
class="cmtt-12">faculty.cse.tamu.edu/davis/suitesparse.html</span></a><span
class="cmr-12">;</span>
@@ -60,36 +61,38 @@ class="cmr-12">double precision real and complex data. We tested
class="cmr-12">of SuiteSparse. Note that for configuring SuiteSparse you should</span>
<span
class="cmr-12">provide the right path to the BLAS and LAPACK libraries in the</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">SuiteSparse_config/SuiteSparse_config.mk</span></span></span> <span
<span class="obeylines-h"><code class="verb">SuiteSparse_config/SuiteSparse_config.mk</code></span> <span
class="cmr-12">file.</span>
</dd><dt class="description">
<span
class="cmbx-12">MUMPS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 110--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XMUMPS"><span
class="cmr-12">2</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span>
<a
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from </span><a
href="mumps.enseeiht.fr" class="url" ><span
class="cmtt-12">mumps.enseeiht.fr</span></a><span
class="cmr-12">; it provides sequential and parallel factorizations and</span>
class="cmr-12">;</span>
<span
class="cmr-12">triangular system solution for single and double precision, real and complex</span>
class="cmr-12">it provides sequential and parallel factorizations and triangular system</span>
<span
class="cmr-12">data. We tested versions 4.10.0 and 5.0.1.</span>
class="cmr-12">solution for single and double precision, real and complex data. We tested</span>
<span
class="cmr-12">versions 4.10.0 and 5.0.1.</span>
</dd><dt class="description">
<span
class="cmbx-12">SuperLU</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 115--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XSUPERLU"><span
class="cmr-12">16</span></a><span
class="cmr-12">17</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span>
<a
class="cmr-12">A sparse LU factorization package available from </span>
<a
href="crd.lbl.gov/~xiaoye/SuperLU/" class="url" ><span
class="cmtt-12">crd.lbl.gov/</span><span
class="cmtt-12">~</span><span
@@ -105,35 +108,37 @@ class="cmr-12">remember to define the BLASLIB variable in the make.inc file.</sp
<span
class="cmbx-12">SuperLU</span><span
class="cmbx-12">_Dist</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 121--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XSUPERLUDIST"><span
class="cmr-12">26</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same</span>
class="cmr-12">28</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same site as</span>
<span
class="cmr-12">site as SuperLU; it provides parallel factorization and triangular system</span>
class="cmr-12">SuperLU; it provides parallel factorization and triangular system solution</span>
<span
class="cmr-12">solution for double precision real and complex data. We tested versions</span>
class="cmr-12">for double precision real and complex data. We tested versions 3.3 and</span>
<span
class="cmr-12">3.3 and 4.2. If you installed BLAS from ATLAS, remember to define the</span>
class="cmr-12">4.2. If you installed BLAS from ATLAS, remember to define the BLASLIB</span>
<span
class="cmr-12">BLASLIB variable in the make.inc file and to add the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">-std=c99</span></span></span> <span
class="cmr-12">option to</span>
class="cmr-12">variable in the make.inc file and to add the </span><span class="obeylines-h"><code class="verb">-std=c99</code></span> <span
class="cmr-12">option to the C</span>
<span
class="cmr-12">the C compiler options. Note that this library requires the ParMETIS library</span>
class="cmr-12">compiler options. Note that this library requires the ParMETIS library for</span>
<span
class="cmr-12">for parallel graph partitioning and fill-reducing matrix ordering, available</span>
<span
class="cmr-12">from </span><a
class="cmr-12">parallel graph partitioning and fill-reducing matrix ordering, available from</span>
<a
href="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview" class="url" ><span
class="cmtt-12">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</span></a><span
class="cmr-12">.</span></dd></dl>
<!--l. 116--><div class="crosslinks"><p class="noindent"><span
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu3.html" ><span
class="cmr-12">next</span></a><span
@@ -150,6 +155,6 @@ class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu2.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 116--><p class="indent" > <a
<!--l. 133--><p class="indent" > <a
id="tailuserhtmlsu2.html"></a>
</body></html>
+1922 -2576
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More