mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-07 07:04:59 +00:00
Compare commits
25
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1aef82023c | ||
|
|
161b93da64 | ||
|
|
8d4af1ba9f | ||
|
|
cd87bdb0c1 | ||
|
|
53afa87814 | ||
|
|
13c99a0c3f | ||
|
|
1aa7c8db59 | ||
|
|
36b57eec24 | ||
|
|
417f8beaf9 | ||
|
|
d66bf1e2f8 | ||
|
|
c590a4088a | ||
|
|
80dfd1ad3b | ||
|
|
857844474a | ||
|
|
a85997926c | ||
|
|
70fb39ae55 | ||
|
|
82de529c54 | ||
|
|
db9757a45e | ||
|
|
5b654cc221 | ||
|
|
d518f5eac7 | ||
|
|
053d5c4bc0 | ||
|
|
032543d625 | ||
|
|
07149a02ad | ||
|
|
08a0c744b1 | ||
|
|
60324084d8 | ||
|
|
aec5a52c7f |
@@ -20,3 +20,5 @@ autom4te.cache
|
||||
# the executable from tests
|
||||
runs
|
||||
|
||||
# Documentation temporary files
|
||||
docs/src/userguide.pdf
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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'
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
all: guide
|
||||
|
||||
guide:
|
||||
cd src && $(MAKE) clean all
|
||||
|
||||
doxy:
|
||||
doxygen doxypsb
|
||||
Binary file not shown.
+33
-108
@@ -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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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
@@ -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
@@ -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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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"> </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"> </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"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </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"> </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"> </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"> </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
@@ -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’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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XPCFD2006"></a><span
|
||||
class="cmr-12">A. Aprovitola, P. D’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–27.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[2]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XMUMPS"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> R.</span><span
|
||||
class="cmr-12"> Amestoy, C.</span><span
|
||||
class="cmr-12"> Ashcraft, O.</span><span
|
||||
class="cmr-12"> Boiteau, A.</span><span
|
||||
class="cmr-12"> Buttari, J.</span><span
|
||||
class="cmr-12"> L’Excellent,</span>
|
||||
<span
|
||||
class="cmr-12">C.</span><span
|
||||
class="cmr-12"> 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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XBERTACCINIFILIPPONE"></a><span
|
||||
class="cmr-12">D. Bertaccini</span><span
|
||||
class="cmr-12"> and</span><span
|
||||
class="cmr-12"> 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"> 3, 693–711.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[4]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XBREZINA_VANEK"></a><span
|
||||
class="cmr-12">M.</span><span
|
||||
class="cmr-12"> Brezina, P.</span><span
|
||||
class="cmr-12"> Van</span><span
|
||||
class="cmr-12">ě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–263.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[5]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XBriggs2000"></a><span
|
||||
class="cmr-12">W.</span><span
|
||||
class="cmr-12"> L.</span><span
|
||||
class="cmr-12"> Briggs, V.</span><span
|
||||
class="cmr-12"> E.</span><span
|
||||
class="cmr-12"> Henson, S.</span><span
|
||||
class="cmr-12"> F.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xpara_04"></a><span
|
||||
class="cmr-12">A.</span><span
|
||||
class="cmr-12"> Buttari, P.</span><span
|
||||
class="cmr-12"> D’Ambra, D.</span><span
|
||||
class="cmr-12"> di Serafino, S.</span><span
|
||||
class="cmr-12"> 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"> 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"> Madsen, J.</span><span
|
||||
class="cmr-12"> Wasniewski, editors, Proceedings of PARA</span><span
|
||||
class="cmr-12"> 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–602.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[7]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xaaecc_07"></a><span
|
||||
class="cmr-12">A.</span><span
|
||||
class="cmr-12"> Buttari, P.</span><span
|
||||
class="cmr-12"> D’Ambra, D.</span><span
|
||||
class="cmr-12"> di</span><span
|
||||
class="cmr-12"> Serafino, S.</span><span
|
||||
class="cmr-12"> 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–239.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[8]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XCAI_SARKIS"></a><span
|
||||
class="cmr-12">X.</span><span
|
||||
class="cmr-12"> C.</span><span
|
||||
class="cmr-12"> Cai, M.</span><span
|
||||
class="cmr-12"> 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–797.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[9]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XMatchBoxP"></a><span
|
||||
class="cmr-12">U..</span><span
|
||||
class="cmr-12"> V.</span><span
|
||||
class="cmr-12"> Catalyurek, F.</span><span
|
||||
class="cmr-12"> Dobrian, A.</span><span
|
||||
class="cmr-12"> Gebremedhin, M.</span><span
|
||||
class="cmr-12"> Halappanavar,</span>
|
||||
<span
|
||||
class="cmr-12">and A.</span><span
|
||||
class="cmr-12"> 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’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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xapnum_07"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, S.</span><span
|
||||
class="cmr-12"> Filippone,</span>
|
||||
<span
|
||||
class="cmr-12">D.</span><span
|
||||
class="cmr-12"> di</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XMLD2P4_TOMS"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, D.</span><span
|
||||
class="cmr-12"> di</span><span
|
||||
class="cmr-12"> Serafino, S.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDV2013"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra and P. S.</span><span
|
||||
class="cmr-12"> 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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDFV2018"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, S.</span><span
|
||||
class="cmr-12"> Filippone and P. S.</span><span
|
||||
class="cmr-12"> 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–39:25.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[14]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDDF2020"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, F.</span><span
|
||||
class="cmr-12"> Durastante, S.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDDFMT2024"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, F.</span><span
|
||||
class="cmr-12"> Durastante, S.</span><span
|
||||
class="cmr-12"> Filippone, S.</span><span
|
||||
class="cmr-12"> Massei, S.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XUMFPACK"></a><span
|
||||
class="cmr-12">T.</span><span
|
||||
class="cmr-12"> A.</span><span
|
||||
class="cmr-12"> 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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XSUPERLU"></a><span
|
||||
class="cmr-12">J.</span><span
|
||||
class="cmr-12"> W.</span><span
|
||||
class="cmr-12"> Demmel, S.</span><span
|
||||
class="cmr-12"> C.</span><span
|
||||
class="cmr-12"> Eisenstat, J.</span><span
|
||||
class="cmr-12"> R.</span><span
|
||||
class="cmr-12"> Gilbert,</span>
|
||||
<span
|
||||
class="cmr-12">X.</span><span
|
||||
class="cmr-12"> S.</span><span
|
||||
class="cmr-12"> Li, J.</span><span
|
||||
class="cmr-12"> W.</span><span
|
||||
class="cmr-12"> H.</span><span
|
||||
class="cmr-12"> 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–755.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[18]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xblas3"></a><span
|
||||
class="cmr-12">J.</span><span
|
||||
class="cmr-12"> J.</span><span
|
||||
class="cmr-12"> Dongarra, J.</span><span
|
||||
class="cmr-12"> Du Croz, I.</span><span
|
||||
class="cmr-12"> S.</span><span
|
||||
class="cmr-12"> Duff, S.</span><span
|
||||
class="cmr-12"> 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–17.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[19]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xblas2"></a><span
|
||||
class="cmr-12">J.</span><span
|
||||
class="cmr-12"> J.</span><span
|
||||
class="cmr-12"> Dongarra, J.</span><span
|
||||
class="cmr-12"> Du Croz, S.</span><span
|
||||
class="cmr-12"> Hammarling, R.</span><span
|
||||
class="cmr-12"> J.</span><span
|
||||
class="cmr-12"> 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–17.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[20]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XPARCO2001"></a><span
|
||||
class="cmr-12">S.</span><span
|
||||
class="cmr-12"> Filippone, P.</span><span
|
||||
class="cmr-12"> D’Ambra, M.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XPSBLASGUIDE"></a><span
|
||||
class="cmr-12">S.</span><span
|
||||
class="cmr-12"> Filippone, A.</span><span
|
||||
class="cmr-12"> Buttari, </span><span
|
||||
class="cmti-12">PSBLAS 3.5.0 User’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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XPSBLAS3"></a><span
|
||||
class="cmr-12">S.</span><span
|
||||
class="cmr-12"> Filippone, A.</span><span
|
||||
class="cmr-12"> 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"> 23.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[23]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xpsblas_00"></a><span
|
||||
class="cmr-12">S.</span><span
|
||||
class="cmr-12"> Filippone, M.</span><span
|
||||
class="cmr-12"> 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–550.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[24]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XMPI2"></a><span
|
||||
class="cmr-12">W.</span><span
|
||||
class="cmr-12"> Gropp, S.</span><span
|
||||
class="cmr-12"> Huss-Lederman, A.</span><span
|
||||
class="cmr-12"> Lumsdaine, E.</span><span
|
||||
class="cmr-12"> Lusk, B.</span><span
|
||||
class="cmr-12"> Nitzberg,</span>
|
||||
<span
|
||||
class="cmr-12">W.</span><span
|
||||
class="cmr-12"> Saphir, M.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xblas1"></a><span
|
||||
class="cmr-12">C.</span><span
|
||||
class="cmr-12"> L.</span><span
|
||||
class="cmr-12"> Lawson, R.</span><span
|
||||
class="cmr-12"> J.</span><span
|
||||
class="cmr-12"> Hanson, D.</span><span
|
||||
class="cmr-12"> Kincaid, F.</span><span
|
||||
class="cmr-12"> T.</span><span
|
||||
class="cmr-12"> 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–323.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[27]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XLOTTES"></a><span
|
||||
class="cmr-12">J.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XSUPERLUDIST"></a><span
|
||||
class="cmr-12">X.</span><span
|
||||
class="cmr-12"> S.</span><span
|
||||
class="cmr-12"> Li, J.</span><span
|
||||
class="cmr-12"> W.</span><span
|
||||
class="cmr-12"> 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–140.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[29]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XNotay2008"></a><span
|
||||
class="cmr-12">Y.</span><span
|
||||
class="cmr-12"> Notay, P.</span><span
|
||||
class="cmr-12"> S.</span><span
|
||||
class="cmr-12"> 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–487.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[30]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XSaad_book"></a><span
|
||||
class="cmr-12">Y.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="Xdd2_96"></a><span
|
||||
class="cmr-12">B.</span><span
|
||||
class="cmr-12"> Smith, P.</span><span
|
||||
class="cmr-12"> Bjorstad, W.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XMPI1"></a><span
|
||||
class="cmr-12">M.</span><span
|
||||
class="cmr-12"> Snir, S.</span><span
|
||||
class="cmr-12"> Otto, S.</span><span
|
||||
class="cmr-12"> Huss-Lederman, D.</span><span
|
||||
class="cmr-12"> Walker, J.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XStuben_01"></a><span
|
||||
class="cmr-12">K.</span><span
|
||||
class="cmr-12"> 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"> Sch</span><span
|
||||
class="cmr-12">üller,</span>
|
||||
<span
|
||||
class="cmr-12">U.</span><span
|
||||
class="cmr-12"> Trottenberg, C.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XTUMINARO_TONG"></a><span
|
||||
class="cmr-12">R.</span><span
|
||||
class="cmr-12"> S.</span><span
|
||||
class="cmr-12"> Tuminaro, C.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XVANEK_MANDEL_BREZINA"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> Van</span><span
|
||||
class="cmr-12">ěk, J.</span><span
|
||||
class="cmr-12"> Mandel, M.</span><span
|
||||
class="cmr-12"> 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–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>
|
||||
|
||||
@@ -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>
|
||||
       archivePrefix = {arXiv},
|
||||
       year={2021}
|
||||
     }
|
||||
|
||||
@Misc{psctoolkit-web-page,
|
||||
       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore},
|
||||
       title =  {{PSCToolkit} {W}eb 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
@@ -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"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDDF2020"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, F</span><span
|
||||
class="cmr-12"> D’Ambra, F.</span><span
|
||||
class="cmr-12"> Durastante, S.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XDDFMT2024"></a><span
|
||||
class="cmr-12">P.</span><span
|
||||
class="cmr-12"> D’Ambra, F.</span><span
|
||||
class="cmr-12"> Durastante, S.</span><span
|
||||
class="cmr-12"> Filippone, S.</span><span
|
||||
class="cmr-12"> Massei, S.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -384,7 +403,7 @@ class="cmr-12">Software, 16 (1) 1990, 1–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -464,7 +483,7 @@ class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -481,7 +500,7 @@ class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XLOTTES"></a><span
|
||||
class="cmr-12">J.</span><span
|
||||
class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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–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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -579,7 +612,7 @@ class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473R
|
||||
</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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -650,7 +683,7 @@ class="cmr-12"> 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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </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"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -690,6 +726,9 @@ class="cmr-12">(3) 1996, 179–196.</span></p></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 156--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlse9.html" ><span
|
||||
|
||||
+39
-34
@@ -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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> Section</span><span
|
||||
class="cmr-12"> </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"> </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"> </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"> </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"> </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
@@ -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"> </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"> </span><span class="likesubsectionToc" ><a
|
||||
href="userhtmlli3.html#x6-50002"><span
|
||||
class="cmr-12">Contributors</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </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’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,
|
||||
       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore},
|
||||
       title = {{{AMG Preconditioners for Linear Solvers towards Extreme Scale}},
|
||||
       journal = {arXiv e-preprints},
|
||||
       eprint = {2006.16147v3},
|
||||
       archivePrefix = {arXiv},
|
||||
       year={2021}
|
||||
     }
|
||||
|
||||
@Misc{psctoolkit-web-page,
|
||||
       author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore},
|
||||
       title =  {{PSCToolkit} {W}eb page},
|
||||
       url =    {https://psctoolkit.github.io/},
|
||||
       howpublished = {\url{https://psctoolkit.github.io/}},
|
||||
       year = {2021}
|
||||
     }
|
||||
</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
File diff suppressed because it is too large
Load Diff
+614
-133
@@ -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"> </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"> </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"> </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"> </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"> </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"> </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"> </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">’</span><span
|
||||
class="cmtt-10x-x-109">NONE</span><span
|
||||
class="cmtt-10x-x-109">’</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">’</span><span style="color:#000000">NONE</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-10x-x-109">DIAG</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">JACOBI</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</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">’</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">’</span><span style="color:#000000">DIAG</span><span style="color:#000000">’</span></code>,
|
||||
<code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">JACOBI</span><span style="color:#000000">’</span></code>,
|
||||
<code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">JACOBI</span><span style="color:#000000">’</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 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">’</span><span
|
||||
class="cmtt-10x-x-109">GS</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</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">’</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">’</span><span style="color:#000000">GS</span><span style="color:#000000">’</span></code>,
|
||||
<code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">GS</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-10x-x-109">FBGS</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</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">’</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">’</span><span style="color:#000000">FBGS</span><span style="color:#000000">’</span></code>,
|
||||
<code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">FBGS</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-10x-x-109">BJAC</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</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">’</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">’</span><span style="color:#000000">BJAC</span><span style="color:#000000">’</span></code>,
|
||||
<code class="lstinline"><span style="color:#000000">’</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">BJAC</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-10x-x-109">AS</span><span
|
||||
class="cmtt-10x-x-109">’</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">’</span><span style="color:#000000">AS</span><span style="color:#000000">’</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 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">’</span><span
|
||||
class="cmtt-10x-x-109">ML</span><span
|
||||
class="cmtt-10x-x-109">’</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">’</span><span style="color:#000000">ML</span><span style="color:#000000">’</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 <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 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"> </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"> computers.</span>
|
||||
<div class="subsectionTOCS">
|
||||
<span
|
||||
class="cmr-12"> </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"> </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"> </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"> </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">’</span><span style="color:#000000">ML</span><span style="color:#000000">’</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"> </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’s Guide</span><span
|
||||
class="cmr-12"> </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"> </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">
|
||||
  use psb_base_mod
|
||||
  use amg_prec_mod
|
||||
  use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
  type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
  type(psb_desc_type)   :: desc_A
|
||||
! preconditioner
|
||||
  type(amg_dprec_type)  :: P
|
||||
! right-hand side and solution vectors
|
||||
  type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
  call psb_init(ctxt)
|
||||
  call psb_info(ctxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multilevel preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
  call P%init(ctxt,’ML’,info)
|
||||
!
|
||||
! build the preconditioner
|
||||
  call P%hierarchy_build(A,desc_A,info)
|
||||
  call P%smoothers_build(A,desc_A,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
  ... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned FCG
|
||||
  call psb_krylov(’FCG’,A,P,b,x,tol,desc_A,info)
|
||||
  ... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
  call P%free(info)
|
||||
!
|
||||
! deallocate other data structures
|
||||
  ... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
  call psb_exit(ctxt)
|
||||
  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"> </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"> </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"> </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"> </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"> </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">
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
  call P%init(ctxt,’ML’,info)
|
||||
  call P%set(’SMOOTHER_TYPE’,’BJAC’,info)
|
||||
  call P%set(’COARSE_SOLVE’,’BJAC’,info)
|
||||
  call P%set(’COARSE_SWEEPS’,8,info)
|
||||
  call P%hierarchy_build(A,desc_A,info)
|
||||
  call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</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">
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
! as pre- and post-smoother, a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
  call P%init(ctxt,’ML’,info)
|
||||
  call P%set(’PAR_AGGR_ALG’,’COUPLED’,info)
|
||||
  call P%set(’AGGR_TYPE’,’MATCHBOXP’,info)
|
||||
  call P%set(’AGGR_SIZE’,8,info)
|
||||
  call P%set(’ML_CYCLE’,’WCYCLE’,info)
|
||||
  call P%set(’SMOOTHER_TYPE’,’FBGS’,info)
|
||||
  call P%set(’SMOOTHER_SWEEPS’,2,info)
|
||||
  call P%set(’COARSE_SOLVE’,’KRM’,info)
|
||||
  call P%set(’COARSE_MAT’,’DIST’,info)
|
||||
  call P%set(’KRM_METHOD’,’FCG’,info)
|
||||
  call P%hierarchy_build(A,desc_A,info)
|
||||
  call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</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">
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
  call P%init(ctxt,’AS’,info)
|
||||
  call P%set(’SUB_OVR’,2,info)
|
||||
  call P%bld(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
  call psb_krylov(’BICGSTAB’,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 amg_dexample_gpu
|
||||
  use psb_base_mod
|
||||
  use amg_prec_mod
|
||||
  use psb_krylov_mod
|
||||
  use psb_util_mod
|
||||
  use psb_gpu_mod
|
||||
  use data_input
|
||||
  use amg_d_pde_mod
|
||||
  implicit none
|
||||
  .......
|
||||
  ! GPU variables
|
||||
  type(psb_d_hlg_sparse_mat) :: agmold
|
||||
  type(psb_d_vect_gpu)       :: vgmold
|
||||
  type(psb_i_vect_gpu)       :: igmold
|
||||
|
||||
 
|
||||
</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’</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’</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">
|
||||
  call psb_init(ctxt)
|
||||
  call psb_info(ctxt,iam,np)
|
||||
  !
|
||||
  ! BEWARE: if you have NGPUS  per node, the default is to
|
||||
  ! attach to mod(IAM,NGPUS)
|
||||
  !
|
||||
  call psb_gpu_init(ictxt)
|
||||
  ......
|
||||
  t1 = psb_wtime()
|
||||
  call prec%smoothers_build(a,desc_a,info, amold=agmold, vmold=vgmold, imold=igmold)
|
||||
|
||||
 
|
||||
</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">
|
||||
  call desc_a%cnv(mold=igmold)
|
||||
  call a%cscnv(info,mold=agmold)
|
||||
  call psb_geasb(x,desc_a,info,mold=vgmold)
|
||||
  call psb_geasb(b,desc_a,info,mold=vgmold)
|
||||
|
||||
  !
|
||||
  ! iterative method parameters
|
||||
  !
|
||||
  call psb_barrier(ctxt)
|
||||
  call prec%allocate_wrk(info)
|
||||
  t1 = psb_wtime()
|
||||
  call psb_krylov(s_choice%kmethd,a,prec,b,x,s_choice%eps,&
|
||||
       & desc_a,info,itmax=s_choice%itmax,iter=iter,err=err,itrace=s_choice%itrace,&
|
||||
       & istop=s_choice%istopc,irst=s_choice%irst)
|
||||
  call prec%deallocate_wrk(info)
|
||||
  call psb_barrier(ctxt)
|
||||
  tslv = psb_wtime() - t1
|
||||
|
||||
  ......
|
||||
  call psb_gpu_exit()
|
||||
  call psb_exit(ctxt)
|
||||
  stop
|
||||
|
||||
 
|
||||
</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">ℓ</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
File diff suppressed because it is too large
Load Diff
+37
-72
@@ -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"> 2 in Section</span><span
|
||||
class="cmr-12"> </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"> </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"> </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"> </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"> </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"> </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">
|
||||
|
||||
  ! sparse matrix and preconditioner
|
||||
  type(psb_dspmat_type) :: a
|
||||
  type(amg_dprec_type)  :: prec
|
||||
  type(amg_d_tlu_solver_type) :: tlusv
|
||||
|
||||
......
|
||||
  !
|
||||
  !  prepare the preconditioner: an ML with defaults, but with TLU solver at
|
||||
@@ -230,6 +191,7 @@ class="cmr-12">pass it as follows:</span>
|
||||
  nlv = prec%get_nlevs()
|
||||
  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1))
|
||||
  call 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
|
||||
|
||||
@@ -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’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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
                           AMG4PSBLAS  version 1.0
|
||||
              Algebraic MultiGrid Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
|
||||
  (C) Copyright 2021
|
||||
|
||||
  Pasqua D’Ambra         IAC-CNR, IT
|
||||
  Fabio Durastante       University of Pisa and IAC-CNR, IT
|
||||
  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT
|
||||
|
||||
  Redistribution and use in source and binary forms, with or without
|
||||
  modification, are permitted provided that the following conditions
|
||||
  are met:
|
||||
@@ -55,6 +59,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
|
||||
    3. The name of the MLD2P4 group or the names of its contributors may
|
||||
       not be used to endorse or promote products derived from this
|
||||
       software without specific written permission.
|
||||
|
||||
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -66,6 +71,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
|
||||
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
  POSSIBILITY OF SUCH 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">
|
||||
|
||||
|
||||
                           MLD2P4  version 2.2
|
||||
  MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
||||
|
||||
  (C) Copyright 2008-2018
|
||||
|
||||
      Salvatore Filippone
|
||||
      Pasqua D’Ambra
|
||||
      Daniela di Serafino
|
||||
|
||||
|
||||
  Redistribution and use in source and binary forms, with or without
|
||||
  modification, are permitted provided that the following conditions
|
||||
  are met:
|
||||
@@ -97,6 +109,7 @@ class="cmr-12">abide by its terms:</span>
|
||||
    3. The name of the MLD2P4 group or the names of its contributors may
|
||||
       not be used to endorse or promote products derived from this
|
||||
       software without specific written permission.
|
||||
|
||||
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -108,6 +121,7 @@ class="cmr-12">abide by its terms:</span>
|
||||
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
  POSSIBILITY OF SUCH 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"> </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">
|
||||
// ***********************************************************************
|
||||
//
|
||||
//        MatchboxP: A C++ library for approximate weighted 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
@@ -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’ 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
@@ -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"> </span><a
|
||||
href="userhtmlli5.html#Xblas2"><span
|
||||
class="cmr-12">18</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli5.html#Xblas2"><span
|
||||
class="cmr-12">19</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </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"> </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"> </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 --enable-cuda --with-cudadir=${CUDA_HOME} --with-cudacc=xx,yy,zz  
|
||||
</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"> </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
@@ -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"> </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"> </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’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"> </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’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"> </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"> </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
@@ -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"> </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"> </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"> </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’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"> </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’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"> </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"> </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"> </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"> </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’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"> </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"> </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"> </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"> </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
@@ -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"> </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"> </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"> </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’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"> </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’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"> </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"> </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"> </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"> </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’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"> </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"> </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"> </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"> </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
@@ -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"> </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"> </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)—.</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)—.</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)—.</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)—.</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"> </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"> </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"> </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"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </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">’</span><span
|
||||
class="cmtt-12">N</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">n</span><span
|
||||
class="cmtt-12">’</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">’</span><span style="color:#000000">N</span><span style="color:#000000">’</span><span style="color:#000000">,</span><span style="color:#000000">’</span><span style="color:#000000">n</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-12">T</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">t</span><span
|
||||
class="cmtt-12">’</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">’</span><span style="color:#000000">T</span><span style="color:#000000">’</span><span style="color:#000000">,</span><span style="color:#000000">’</span><span style="color:#000000">t</span><span style="color:#000000">’</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">’</span><span
|
||||
class="cmtt-12">C</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">c</span><span
|
||||
class="cmtt-12">’</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">’</span><span style="color:#000000">C</span><span style="color:#000000">’</span><span style="color:#000000">,</span><span style="color:#000000">’</span><span style="color:#000000">c</span><span style="color:#000000">’</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—.</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—.</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"> </span><span
|
||||
class="cmtt-12">*</span><span
|
||||
class="cmtt-12"> </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’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
@@ -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"> </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"> </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"> </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
@@ -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"> </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"> </span><span
|
||||
class="cmtt-12">[</span><span
|
||||
class="cmtt-12">iout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">root</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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
@@ -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"> </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"> </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"> </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"> </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"> </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’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"> </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"> </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"> </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"> </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"> </span><span
|
||||
class="cmtt-12">=</span><span
|
||||
class="cmtt-12"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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
@@ -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
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
Reference in New Issue
Block a user