summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis Martinez2023-02-14 17:11:10 -0600
committerLuis Martinez2023-02-14 17:11:10 -0600
commit9deb0c9566dcb079f2d8a866589ffc00cbd77690 (patch)
treeeb7bac0691691cb0268614bb0130a52275acf280
parentf0d94865af36719100de323e7d7a8e9620f20915 (diff)
downloadaur-9deb0c9566dcb079f2d8a866589ffc00cbd77690.tar.gz
update to 4.5
-rw-r--r--.SRCINFO8
-rw-r--r--CHANGELOG141
-rw-r--r--PKGBUILD14
3 files changed, 152 insertions, 11 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b1360f0720c9..801a6bb0c771 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
=======================================
diff --git a/PKGBUILD b/PKGBUILD
index 6044282d5128..41da42266342 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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/"
}