1.3.99
Pre-release
Pre-release
- The code base uses C++11 standard.
amgcl::mpi::amg
preconditioner is implemented! This works much better than subdomain deflation which is now considered deprecated. Seeexamples/mpi/mpi_amg.cpp
and some benchmarks in https://doi.org/10.1134/S1995080219050056 (https://arxiv.org/abs/1811.05704).- Added wrappers for Scotch and ParMetis partitioning libraries.
- Runtime interface has been refactored. Instead of doing
one should now
typedef amgcl::make_solver< amgcl::runtime::amg<Backend>, amgcl::runtime::iterative_solver<Backend> > Solver;
This allows to reuse the sametypedef amgcl::make_solver< amgcl::amg< Backend, amgcl::runtime::coarsening::wrapper, amgcl::runtime::relaxation::wrapper >, amgcl::runtime::solver::wrapper<Backend> > Solver;
amgcl::amg
implementation both for compile-time and runtime interfaces, and greately reduces compilation time and memory requirements for the library. - Got rid of as many Boost dependencies as possible in favor of C++11. Currently , only the runtime interface depends on Boost , as it uses
boost::property_tree::ptree
for defining runtime parameters.
It should be possible to use the compile-time interface completely Boost-free. This also means that one should replace all uses ofboost::tie
andboost::make_tuple
in amgcl-related code withstd::tie
andstd::make_tuple
. For example:Solver solve(std::tie(n, ptr, col, val)); std::tie(iters, error) = solve(f, x);
- Provide
amgcl::backend::bytes()
function that returns (sometimes approximately) the amount of memory allocated for an amgcl object.std::string amgcl::backend::human_readable_memory(size_t)
converts bytes to a human-readable size string (e.g. 1024 is converted to1 K
). - Initial support for mixed-precision computations (where iterative solver and preconditioner use different precisions).
- MPI versions of CPR preconditioners. Support for statically-sized matrices in global preconditioners of CPR. Support for mixed precision in global and pressure-specific parts of CPR.
epetra_map
was moved toadapter
namespace.- Eigen backend was split into adapter and backend part.
amgcl::make_scaling_solver
has been replaced withamgcl::scaled_problem
adapter.
This is marked as pre-release, because the documentation still needs to be updated.