diff options
author | Luis Martinez | 2023-02-14 17:11:10 -0600 |
---|---|---|
committer | Luis Martinez | 2023-02-14 17:11:10 -0600 |
commit | 9deb0c9566dcb079f2d8a866589ffc00cbd77690 (patch) | |
tree | eb7bac0691691cb0268614bb0130a52275acf280 | |
parent | f0d94865af36719100de323e7d7a8e9620f20915 (diff) | |
download | aur-9deb0c9566dcb079f2d8a866589ffc00cbd77690.tar.gz |
update to 4.5
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | CHANGELOG | 141 | ||||
-rw-r--r-- | PKGBUILD | 14 |
3 files changed, 152 insertions, 11 deletions
@@ -1,6 +1,6 @@ pkgbase = mfem pkgdesc = Lightweight, general, scalable C++ library for finite element methods - pkgver = 4.4 + pkgver = 4.5 pkgrel = 1 url = https://github.com/mfem/mfem changelog = CHANGELOG @@ -8,8 +8,8 @@ pkgbase = mfem license = BSD makedepends = cmake depends = gcc-libs - provides = libmfem.so=4.4.0-64 - source = mfem-4.4.tar.gz::https://github.com/mfem/mfem/archive/v4.4.tar.gz - sha256sums = 0325a57854d9268dfe3f8d9b03836eb01b00a966d93162e6249857e9fab9c61f + provides = libmfem.so=4.5.0-64 + source = mfem-4.5.tar.gz::https://github.com/mfem/mfem/archive/v4.5.tar.gz + sha256sums = ee0e640286ea370aaf5c973e8f08eb648fa650e3e30f296e68bfc10c3dcfa9b8 pkgname = mfem diff --git a/CHANGELOG b/CHANGELOG index 12baca1d1fc7..29a018fa78e7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,147 @@ https://mfem.org +Version 4.5, released on October 22, 2022 +========================================= + +Meshing improvements +-------------------- +- Added new SubMesh and ParSubMesh classes that can be used to extract a subset + of a given Mesh. These classes have the same functionality as Mesh and ParMesh + and work with all existing MFEM interfaces like finite element spaces etc. + +- Added a method, ParMesh::GetSerialMesh(), that reconstructs a partitioned + parallel mesh on a given single rank. Also, added ParMesh::PrintAsSerial(), + which saves the reconstructed serial mesh to a C++ stream on rank 0. + +- Added more 3D TMOP metrics, as well as specialized metrics for mesh + untangling and worst-case quality improvement. + +- Added a new method, Mesh::NodesUpdated, which should be called after the mesh + node coordinates have changed, e.g. after the mesh has moved. This is + necessary, for example, with device assembly of linear and bilinear forms. + +- Added support for mixed meshes and pyramids in GSLIB-FindPoints. + +Discretization improvements +--------------------------- +- Added full assembly and device support for several LinearForm integrators: + * DomainLF: (f, v) + * VectorDomainLF: ((f1,...,fn), (v1,...,vn)) + * DomainLFGrad: (f, grad(v)) + * VectorDomainLFGrad: ((f1x,f1y,f1z,...,fnx,fny,fnz), grad(v1,...,vn)) + The device assembly of linear forms has to be explicitly enabled by calling + LinearForm::UseFastAssembly(true), otherwise the legacy linear form assembly + is used by default. + +- Added support for assembling low-order-refined matrices using a GPU-enabled + "batched" algorithm. The lor_solvers and plor_solvers now fully support GPU + acceleration with arbitrary user-supplied coefficients. + +- Added a new class FaceQuadratureSpace that allows for the construction of + QuadratureFunctions on the interior or boundary faces of a mesh. + +- Added a class CoefficientVector for efficient access of variable coefficient + values at quadrature points (in particular for GPU/device kernels). + +- Added WhiteGaussianNoiseDomainLFIntegrator: a LinearFormIntegrator class for + spatial Gaussian white noise. + +- Added a new Zienkiewicz-Zhu patch recovery-based a posteriori error estimator. + See fem/estimators.hpp. + +- Various fixes and improvements in LinearFormExtension. + +Linear and nonlinear solvers +---------------------------- +- Added a new class DGMassInverse that performs a local element-wise CG + iteration to solve systems involving the discontinuous Galerkin mass matrix, + including support for device/GPU acceleration. + +- Added more flexibility to the constrained solver classes: + * PenaltyConstrainedSolver now allows for a vector of penalty parameters + (necessary for penalty contact) + * PenaltyConstrainedSolver and EliminationSolver can use GMRES or PCG + * All constraint solver classes can take a user-defined preconditioner + + - Added functions to toggle additional options for the SuperLU_Dist and Hypre + preconditioners (ParaSails, Euclid, ILU). + +- Added boundary elimination with device support for `SparseMatrix` and + `HypreParMatrix`. + +New and updated examples and miniapps +------------------------------------- +- Added a new elasticity miniapp, Hooke, that showcases a low-level approach of + using MFEM to solve a nonlinear elasticity problem based on the fundamental + finite element operator decomposition. The miniapp also integrates with + automatic differentiation tools like a native dual number implementation or a + third party library such as Enzyme. See miniapps/elasticity for more details. + +- Added example for body-fitted volumetric and shape integration using the + Algoim library in miniapps/shifted. + +- Add a new example code, Example 33/33p, to demonstrate the solution of + spectral fractional PDEs with MFEM. + +Integrations, testing and documentation +--------------------------------------- +- Added a Dockerfile for a simple MFEM container, see config/docker/README.md. + More sophisticated developer containers are available in the new repo + https://github.com/mfem/containers. + +- Added support for the LLVM-based automatic differentiation tool Enzyme, see + https://github.com/EnzymeAD/Enzyme. Build system flags and a convenience + header are provided. The functionality and interaction are demonstrated in a + new miniapp in miniapps/elasticity. + +- Added support for partial assembly and fully matrix-free operators on mixed + meshes (different element types and p-adaptivity) through libCEED, including + device acceleration, e.g. with NVIDIA and AMD GPUs. The p-adaptivity is + currently limited to 2D serial meshes. All mixed element topologies are + supported in both serial and parallel. + +- Added support for ParMoonolith, https://bitbucket.org/zulianp/par_moonolith, + which provides parallel non-conforming, non-matching, variational, volumetric + mesh information transfer. With ParMortarAssember, fields can be exchanged + between arbitrarily distributed and unrelated finite element meshes in a + variationally consistent way. + +- Fully encapsulated SUNDIALS `N_Vector` object within the `SundialsNVector` + class by removing deprecated (e.g. `HypreParVector::ToNVector`) and + non-deprecated (e.g. `Vector::ToNVector`) functions in other classes. + +- New benchmark for the different assembly levels inspired by the CEED + Bake-Off Problems, see tests/benchmarks/bench_assembly_levels.cpp. + +- Added Windows 2022 CI testing with GitHub actions. + +Miscellaneous +------------- +- The method SparseMatrix::EnsureMultTranspose() is now automatically called + by the methods AddMultTranspose(), MultTranspose(), and AbsMultTranspose(). + Added a method with the same name to class HypreParMatrix which is also called + automatically by the HypreParMatrix::MultTranspose() methods. + +- Updated various MemoryUsage methods to return 'std::size_t' instead of 'long' + since the latter is 32-bit in Win64 builds. + +- When using `AssemblyLevel::FULL`, `FABilinearFormExtension::FormSystemMatrix` + outputs an `OperatorHandle` containing a `SparseMatrix` in serial, and an + `HypreParMatrix` in parallel (instead of a `ConstrainedOperator`). + +- In various places in the library, replace the use of 'long' with 'long long' + to better support Win64 builds where 'long' is 32-bit and 'long long' is + 64-bit. On Linux and MacOS, both types are typically 64-bit. + +- The behavior of GridFunction::GetTrueVector() has been changed to not return + an empty true vector. + +- Added support for ordering search points byVDIM in FindPointsGSLIB. + +- Various other simplifications, extensions, and bugfixes in the code. + + Version 4.4, released on March 21, 2022 ======================================= @@ -1,7 +1,7 @@ # Maintainer: Luis Martinez <luis dot martinez at disroot dot org> pkgname=mfem -pkgver=4.4 +pkgver=4.5 pkgrel=1 pkgdesc="Lightweight, general, scalable C++ library for finite element methods" arch=('x86_64') @@ -9,10 +9,10 @@ url='https://github.com/mfem/mfem' license=('BSD') depends=('gcc-libs') makedepends=('cmake') -provides=('libmfem.so=4.4.0-64') +provides=('libmfem.so=4.5.0-64') changelog=CHANGELOG source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") -sha256sums=('0325a57854d9268dfe3f8d9b03836eb01b00a966d93162e6249857e9fab9c61f') +sha256sums=('ee0e640286ea370aaf5c973e8f08eb648fa650e3e30f296e68bfc10c3dcfa9b8') build() { cmake \ @@ -22,12 +22,12 @@ build() { -Wno-dev \ -B build \ -S "$pkgname-$pkgver" - make -C build + cmake --build build } package() { - make -C build install DESTDIR="$pkgdir/" + DESTDIR="$pkgdir" cmake --install build cd "$pkgname-$pkgver" - install -Dm644 LICENSE -t "$pkgdir/usr/share/licenses/$pkgname/" - install -Dm644 README NOTICE -t "$pkgdir/usr/share/doc/$pkgname/" + install -Dvm644 LICENSE -t "$pkgdir/usr/share/licenses/$pkgname/" + install -Dvm644 README.md NOTICE -t "$pkgdir/usr/share/doc/$pkgname/" } |