Axom-v0.9.0
Please download the Axom-v0.9.0.tar.gz tarball below, which includes all of the Axom submodules as well.
Added
- Primal: Adds a
Quadrilateral
primitive - Primal: Adds a
compute_bounding_box()
operator for computing the bounding
box of aQuadrilateral
- Primal: Adds a
clip()
operator for clipping a tetrahedron against the
half-space defined by a plane - Primal: Adds a
checkAndFixOrientation()
function toprimal::Tetrahedron
that swaps the order of vertices if the signed volume of the Tetrahedron is
negative, resulting in the signed volume becoming positive. - Adds
FlatMap
, a generic key-value store which aims for drop-in compatibility
withstd::unordered_map
, but utilizes an open-addressing design. - Adds support for device-side use of
Array::push_back()
andArray::emplace_back()
. - Adds initial support for using Slic streams with tags
- Adds an example that finds intersection candidate pairs between two Silo
hexahedral meshes using either a BVH or Implicit Grid spatial index - Quest: Adds
setTetPredFromBoundingBox()
andsetTetPred()
functions to
quest::ProEReader
andPProEReader
that set a tet predicate, allowing
user code to read in a subset of a Pro/E ASCII tetrahedron mesh file.
Changed
MarchingCubes
has optimizations to improve GPU performance, particularly for
repeated computations. The constructor has changed and a newsetMesh
method
is added to set (or change) the mesh. New accessors present output data
without moving them from device to host. These accessors are an interim
solution and likely to be updated in the future.DistributedClosestPoint
outputs are now controlled by thesetOutput
method.MarchingCubes
allows user to select the underlying data-parallel implementationfullParallel
works best on GPUs.hybridParallel
reduces the amount of data processed and works best with
MarchingCubesRuntimePolicy::seq
.byPolicy
(the default) selects the implementation based on the runtime policy.
MarchingCubes
andDistributedClosestPoint
classes identify domains by their
state/domain_id
parameters if provided, or the local iteration index if not.MarchingCubes
andDistributedClosestPoint
classes changed from requiring the Blueprint
coordset name to requiring the Blueprint topology name. The changed interface methods are:DistributedClosestPoint::setObjectMesh
DistributedClosestPoint::computeClosestPoints
MarchingCubes::MarchingCubes
MarchingCubesSingleDomain::MarchingCubesSingleDomain
- Primal:
Polyhedron::volume()
function changed from returning a signed
volume to an unsigned volume. The addedPolyhedron::signedVolume()
function
returns the signed volume. - Primal:
intersection_volume()
operators changed from returning a signed
volume to an unsigned volume. - Primal's
BoundingBox::contains(BoundingBox)
now returnstrue
when the input is empty - Renamed axom's bit utility functions to conform to
C++20
standard:popCount() -> popcount()
,
trailingZeros() -> countr_zero()
andleadingZeros() -> countl_zero()
- Renamed
axom::utilities::swapEndian() -> byteswap()
to conform toC++23
standard
Fixed
- quest's
SamplingShaper
now properly handles material names containing underscores - quest's
SamplingShaper
can now be used with an mfem that is configured for (GPU) devices - primal's
Polygon
area computation in 3D previously only worked when the polygon was aligned with the XY-plane. It now works for arbitrary polygons. - Upgrades our
vcpkg
usage for automated Windows builds of our TPLs to its 2023.12.12 release - Fixed a bug in the bounds checks for
primal::clip(Triangle, BoundingBox)
- Fixed a bug when loading Sidre groups with attributes that already exist
- Fixed
std::locale
error when when compilingsrc/axom/core/utilities/System.cpp
using nvcc - Include
cstdint
for higher gcc version support (e.g. gcc-13) - Fixed several memory leaks in
axom::Array
,quest::Shaping
andsidre::MFEMSidreDataCollection