0.7.0
This is rather big and an API breaking release!
- All runtime parameters (namely, coarsening type, relaxation type, and solver
type) were moved to the generic parameter structure (stored in
boost::property_tree
). So the following code:
boost::property_tree::ptree prm;
typedef amgcl::runtime::make_solver< amgcl::backend::builtin<double> > Solver;
Solver S(amgcl::runtime::coarsening::smoothed_aggregation,
amgcl::runtime::relaxation::spai0,
amgcl::runtime::solver::bicgstab,
A, prm);
would have to be changed to
boost::property_tree::ptree prm;
typedef amgcl::runtime::make_solver< amgcl::backend::builtin<double> > Solver;
prm.put("precond.coarsening.type", amgcl::runtime::coarsening::smoothed_aggregation);
prm.put("precond.relaxation.type", amgcl::runtime::relaxation::spai0);
prm.put("solver.type", amgcl::runtime::solver::bicgstab);
Solver S(A, prm);
This is done as part of the effort to generalize use of preconditioners
in the library, so that any preconditioner supported by AMGCL could be
uniformly constructed with the system matrix and the parameters.
-
amg::top_matrix()
method was renamed toamg::system_matrix()
for the same reason. -
The use of preconditioners in AMGCL was generalized. A class that may be used
as a preconditioner should have the following properties:- Provide public type
backend_type
for its backend. - Provide public type
params
containing its parameters. - Have constructor that takes three arguments:
- System matrix
- Parameters
- Backend parameters
- Export the system matrix in the backend format through
system_matrix()
method.
A preconditioner may be used in the following contexts:
- As a parameter to an iterative solver.
- As a template parameter to
make_solver
class. - As a template parameter to a two-step preconditioner (CPR and SIMPLE).
- As a template parameter to subdomain deflation class (as a local preconditioner).
- Provide public type
-
Added
amgcl::as_preconditioner<Backend, Relaxation>
andamgcl::runtime::as_preconditioner<Backend>
wrapper classes that allow to use smoothers as preconditioners. -
Added ILUT(p,tau) smoother/preconditioner.
-
Implemented Chow and Patel version of parallel ILU. This allowed to enable
ILU-type smoothers on all backends, but may not work as well as serial version
for some problems. -
Provided a wrapper for cuSPARSE implementation of ILU0 on CUDA backend.
-
Added adapter for complex-valued matrices. This uses an equivalent real
formulation (ERF) for the matrix so that it may be solved with AMGCL. -
Added zero copy matrix adapter for CRS matrices. The adapter allows to skip
copy and thus save some memory for matrices that are binary compatible with
internal AMGCL storage. Basically, that means that row pointer and column
number arrays should be either signed or unsignedptrdiff_t
. -
Provided wrapper interface for Fortran.