Releases: feltor-dev/feltor
Clang
CMake integration
Fully integrate CMake into the feltor and feltor-dg build process. This enables the use of Feltor and feltor's dg library in other projects and on other platforms (i.e. Windows).
This release also fixes "extra" and "pedantic" compiler warnings.
See the CHANGELOG for a full description of all changes and fixes. Particularly note that
- the geometries header is no longer dependent on "Boost"
- the matrix header depends on "lapack" instead of "lapacke"
Update dependencies
This is a hotfix on top of v8.1 that fixes a bug when using Aliases in pointwiseDot and pointwiseDivide
Update dependencies
This release removes our dependency on the no longer maintained cusp library. The main reason is to be able to update the thrust library through its more modern distribution through the cccl repository and enable the use of its CMakeFile system. In order to do so we have:
- Novel
dg::SparseMatrixclass - Increased usage of
dg::TriDiagonalanddg::SquareMatrix - Dispatch to cusparse for gpu matrix-vector products
- Update default build dependencies
See full updates in CHANGELOG
New foundations
Highlights of this Feltor version:
- C++-17 standard
- A completely freshly designed C++17 style
dg::file::NcFileclass that replaces all previous netcdf output utility functions - A module
dg::file::Probesclass that can be added to any src project - New blas1 functions
dg::blas1::kroneckeranddg::blas1::vdot - New generalized N dimensional Grids superseding all previous grids and allowing arbitrary MPI parallelization
- Completely re-designed MPI communication backend layer allowing general overlapping communication and computation
- Automatic unit tests with the Catch2 framework
- Possibility to replace jsoncpp with nlohmann-json
What's Changed
- Fix Helmholtz constructor in reco2D by @mwiesenberger in #50
- Remove unnecessary resize by @mwiesenberger in #51
- New foundations by @mwiesenberger in #53
- and much more (see CHANGELOG for full list)
Three-dimensional
For a full list of additions / changes / bugfixes see the file CHANGELOG.md
Key new features
dg::blas2::parallel_forfor general parallelization tasks on shared memory containers (very close in functionality tokokkos::parallel_fordg::blas2::stencilA generalization ofdg::blas2::parallel_forthat works for MPI parallelization at the cost of having to encode the communication stencil in a sparse matrix and only one vector argument- Utilities for exponential integrators
- Restructure of
dg::geo::Fieldalignedto allow for different interpolation and backprojection from dG to fine grid and back (to a possibly equidistant grid and with possibly cubic, linear or nearest methods)
Removed or changed
- Constructors of
dg::Helmholtz, anddg::Helmholtz3dchange the orders of parameteralphaand reverts to constructor of respectivedg::Ellipticclass dg::ModalFilteris removed in favor of generating and usingdg::MultiMatrixdirectlydg::transpose_dispatchremoved (replaced bydg::blas2::parallel_for)dg::extend_lineremoved (replaced bydg::blas2::parallel_for)dg::extend_columnremoved (replaced bydg::blas2::parallel_for)dg::create::interpolationTis removeddg::integratereplaced bydg::aTimeloopfunctionalitydg::integrateERKreplaced bydg::aTimeloopfunctionalitydg::stepperRKreplaced bydg::aTimeloopfunctionality
More modular
Key new features in this release
- more modularity by allowing lambda functions in most dg classes in particular matrix inversion, multigrid and timesteppers. Create new solvers by freely combining existing ones or link to extermal libraries with a small lambda wrapper
- Allow
std::map < key, Container>in blas1 functions - the new dg/matrix/matrix.h library for matrix-function computations
- new improved timestepper interface that allows purely implicit solvers in implicit timesteppers
Break backwards compatibility
dg::normwas removed (finally) -> fix all compile errors by simply removing all occurences ofdg::normedanddg::not_normeddg::PCGnow works with self-adjoint matrices in given weights instread of symmetrics ones- implicit and semi-implicit timesteppers now expect a separate solver instance -> use
std::tieto tie parameters together anddg::DefaultSolverto create the usual PCG time solve
More Multistep
A host of additions updates and bug - fixes in connection with the development of a 3d code
Highlights:
- Re- designed multistep time-steppers including a host of new tables to chose from
- Re-designed and abstract generation of magnetic flux surfaces and wall / sheath modification
- important bug fix in GPU dot product
- and more. See CHANGELOG.md for a full list of additions, removals, changes, bug-fixes, and deprecations.
This update will break backwards compatibility to v5.1. Here is what you have to do to make it work in your code
- file namespace changed to dg::file (use search and replace in your codes to change)
- Arakawa.variation method (to compute uE2) moved to Elliptic.variation class, which is necessary to support various metric elements and is consistent with energy conservation
- now use std=c++14 (adapt your Makefile!)
- the blas1::transfer function that was marked deprecated before was removed (use dg::assign)
Adaptive time-steppers
This is the first release on our way to a fully robust and functional 3d code. It contains several additions, bug-fixes, and changes with a full list in CHANGELOG.md
Here, we highlight the new Adaptive time-steppers based on the ARKode library (in fact a complete re-implementation thereof in Feltor)
Reproducible backend
This release introduces
- the reproducible blas functions
- the Exblas library
- the vcl library dependence
- new interfaces for time-integrators, when the right-hand side is explicitly time-dependent
- two new dg::blas1::evaluate functions
The former three additions make the library binary reproducible.
The latter two new additions provide more efficient and easy implementation of manufactured solutions in time-dependent problems.