Axom-v0.8.0
Please download the Axom-v0.8.0.tar.gz tarball below, which includes all of the Axom submodules as well.
Added
- Adds MarchingCubes class implementing the marching cubes algorithm for surface detection.
- Adds the following methods to
axom::Array
to conform more closely with thestd::vector
interface:Array::front()
: returns a reference to the first elementArray::back()
: returns a reference to the last elementArray::resize(size, T value)
: resizes the array, and sets any new elements tovalue
.
- Adds an
ArrayView::empty()
method to return whether the view is empty or not. - Adds an
area()
function toprimal::Polygon
- Adds initial support for using Slam types on the GPU
- Adds support for using
ArrayViewIndirection
indirection policy withslam::Map
andslam::BivariateMap
- Adds
const_iterator
support toslam::BivariateMap
andslam::SubMap
- Primal: Adds a
Hexahedron
primitive - Primal: Adds a
clip()
operator for computing the intersection of aHexahedron
and anotherTetrahedron
as aPolyhedron
- Primal: Adds an
intersection_volume()
operator for computing the volume of intersection between a primitive and aTetrahedron
- Primal: Adds a
primal::Polyhedron::from_primitive()
operator that returns aPolyhedron
object from a given primitive. - Adds
DataStore::getBufferInfo()
andGroup::getDataInfo()
methods that insert information into a ConduitNode
about buffers in aDataStore
object or data in aGroup
subtree. The information can be accessed from theNode
by the caller from specifically named fields in theNode
. - Quest: Adds a
quest::ProEReader
for reading in Pro/E tetrahedral meshes - Quest: The
quest::IntersectionShaper
class can now use a percent error to determine whether the revolved volume for a shape is sufficiently accurate or whether the shape must be further refined. This new dynamic method of shaping complements the existing segment-based curve refinement method and it is activated usingShaper::setRefinementType()
and by callingShaper::setPercentError()
to set a refinement error percentage. - Multimat: adds initial support for fields stored on the GPU.
MultiMat::setAllocatorID()
orMultiMat::setFieldAllocatorID()
can be called to change the memory space in which a field is allocated. - Multimat: adds an
MultiMat::addExternalField()
function to support fields where the memory is managed externally. Fields which are externally-managed cannot be transposed between sparse and dense layouts, or moved between allocator spaces. - Multimat: adds a
MultiMat::removeField()
function to remove fields from the Multimat instance. - Multimat: adds an overload of
MultiMat::setCellMatRel()
that supports setting a multi-material relation in a compressed sparse-row (CSR) representation. - Quest: Adds ability to import volume fractions into
SamplingShaper
before processingKlee
input - Slam: adds a
slam::MappedVariableCardinality
policy to accelerate mapping flat indices back to first-set indices when used in aStaticRelation
- Adds an
ArrayView(data, shape, strides)
constructor to support column-major and custom striding layouts. - Adds an
ArrayView::subspan()
overload for multi-dimensional subspans - Adds an
axom::utilities::insertionSort()
method. - Quest: Adds Pro/E tetrahedral meshes as input to the
IntersectionShaper
- Quest: For sample-based shaping, users can register callback functions to modify the input points before querying the spatial index. This allows, e.g. querying 3D points against 2D surfaces of revolution provided as c2c contour files.
- Adds an
axom::utilities::locale
utility function to guard against platforms that do not have the requested locales via thestd::locale
function. If the system does not have the requested locale (e.g.en_US.UTF8
), it returns the user's default locale. - Sidre: Add new protocols
sidre_layout_json
andconduit_layout_json
to provide output of DataStore layout in a user-readable format that excludes the numerical arrays held by Views and Buffers. - Sidre: Add methods to methods for destroying Groups that will also destroy Buffers if the destruction of a Group and the Views in its subtree cause the Buffer to become detached from all Views.
- Sidre: Add two Group methods -- one to return a vector of the valid I/O protocols (based on compilation options), and one that returns a default protocol.
- Klee: Add support in shaping driver and MFEMSidreDataCollection to write Blueprint datasets that contain matset metadata needed for VisIt to treat volume fraction arrays as a material. This enables VisIt plots such as FilledBoundary.
Changed
- Fixed bug in
mint::mesh::UnstructuredMesh
constructors, affecting capacity. A missing factor was added. If you worked around this by adding the factor yourself, you may want to undo that work-around. - Updates blt submodule to [email protected]
- Updates uberenv submodule to HEAD of main on 12May2023
- Updates to conduit version 0.8.6
- Updates to mfem version 4.5
- Updates to fmt version 9.1.0
- Updates to
c2c
version 1.8.0 - The Axom library has been broken down into its component libraries (prefixed with
axom_
). This change requires no change to downstream CMake users who import our targets. The exported CMake targetaxom
includes all components, but users who do not import our targets will need to create the link line themselves. The following replacement can be used:-laxom
->-laxom_quest -laxom_multimat -laxom_slam -laxom_mint -laxom_klee -laxom_inlet -laxom_sidre -laxom_slic -laxom_lumberjack -laxom_core
. If you only need a subset of the components, you can now use those targets directly, ie.axom::inlet
. IntersectionShaper
now implements material replacement rules.axom::Array
move constructors are nownoexcept
.- Exported CMake targets,
cli11
,fmt
,sol
, andsparsehash
, have been prefixed withaxom::
to guard against conflicts. DistributedClosestPoint
query now supports any blueprint-valid mesh format, including multidomain. Domain underloading and overloading can be expressed using multidomain format. Closest points are identified by cp_rank, cp_domain_index, and cp_index. The new cp_domain_index specifies the domain containing the closest point.DistributedClosestPoint
interfacing variable namesclosest_point
andmin_distance
have been changed tocp_coords
andcp_distance
, respectively, to match the naming convention of other interfacing variables.- Adds
vcpkg
ports forRAJA
,Umpire
with optionalOpenMP
feature for automated Windows build. - Reduce size of
ArrayView::subspan
to prevent accessing invalid memory. - Adds
vcpkg
port forlua
as optional dependency on Windows. - Adds additional parameters to quest's
PointInCell
query to control the Newton solve from physical to reference space for a given element. - Remove function pointer call in IteratorBase::advance().
- Slam:
IndirectionPolicy::data()
now returns a reference to the underlying buffer. Rebinding an indirection to a new buffer is now achieved throughIndirectionPolicy::ptr()
, which returns a mutable pointer to the buffer. - Quest:
Shaper::applyTransforms()
is no longer a public method. - Multimat: fields are now returned as shallow, device-copyable views of a field instead of full copies of field data.
- Multimat:
MultiMat::addField()
andMultiMat::setVolfracField()
API now useaxom::ArrayView
to accept data. - Multimat: Ported field data/sparsity layout conversion methods to GPU.
- Multimat:
MultiMat::makeOtherRelation()
now runs on the GPU with an appropriately-set allocator ID. - Multimat:
MultiMat::setCellMatRel(counts, indices)
now runs on the GPU, and accepts GPU-side data. - Renames
ArrayView::spacing()
toArrayView::minStride()
. - Klee: A shape's geometry no longer needs a
path
field when itsformat
is "none" - Quest: Shapes without geometry can participate in replacement rules for sample-based shaping. Volume fractions for the associated materials must be supplied before shaping.
- Primal: Expose Polyhedron::getFaces() as public method.
- Removed custom Spack package recipes in favor of using the radiuss-spack-configs repository as a submodule.
Fixed
- Fixed issues with CUDA build in CMake versions 3.14.5 and above. Now require CMake 3.18+ for CUDA and non-gpu builds.
- Fix to allow Axom to build when using RAJA, but not Umpire.
- Checks validity of bounding boxes in
primal
intersection operators against planes and triangles before using the geometry. - Improves import logic for
lua
dependency - Improves import logic for
mfem
dependency in device builds whenmfem
is configured withcaliper
- Fixes ambiguity when calling
Array::resize(size, value)
forArray<bool>
- Sidre: Group methods
hasChildView()
andhasChildGroup()
changed to return false when Group holds items in list format. This fixes an IOManager issue causing failures for multi-domain meshes when writing Blueprint index file. - Sidre: Changed Group::copyToConduitNode() method to properly handle Groups using the list format. Previously, it was assumed that all child items in a Group have a name, which is not the case for list format.
- Sidre: Fixed Group method
importConduitTreeExternal()
to handle lists with unnamed members the same asimportConduitTree()
. - Slic and Lumberjack: Add missing calls to
flush()
for parallel output log streams.
Deprecated
- Integer types in
src/axom/core/Types.hpp
are deprecated becausec++11
supports their equivalents.