Axom-v0.6.0
Please download the Axom-v0.6.0.tar.gz tarball below, which includes all of the Axom submodules.
Added
- Added new CMake option to allow users to turn off Axom created tools:
AXOM_ENABLE_TOOLS
- Inlet can now log verification errors to a user-processable list instead of using Slic
- Sidre parallel I/O: Added new mapping arrays to the automatically-generated Blueprint
index to support new schema for multi-domain parallel meshes. - Added support for optional third-party
c2c
("contours to codes") library for parsing 2D spline data.
c2c
is currently only available for Axom configurations on LLNL platforms. - Primal's
intersect(Ray, Segment)
can now return the parametric coordinates of the intersection
along both the ray and the segment (when the intersection exists) - Primal's
intersect(Segment, BoundingBox)
can now return the parametric coordinates bounding the
portion of the segment contained within the BoundingBox (when the intersection exists) - Generalizes Quest's
InOutOctree
class to work with 2D line segment meshes. Previously,
it only worked with 3D triangle meshes - Added support for reading
c2c
".contour" files in Quest. Contours that enclose a 2D region can be linearized
into line segment meshes and loaded into Quest'sInOutOctree
for in/out queries. - Updated the Quest
inout
C API to support 2D queries using thec2c
library, when Axom is configured withc2c
- Updated the C++ Quest "containment" example to support 2D in/out queries
(in addition to the already supported 3D queries) - Added
axom::Array
modeled afterstd::vector
. Previousaxom::Array
renamed toaxom::MCArray
. Future changes to both arrays are expected. - Added a
data_collection_util
tool to generate Mesh Blueprint compliant high order distributed meshes from
an mfem mesh or over a Cartesian domain - Added utility functions
axom::utilities::getHostName()
andaxom::utilities::getUserName()
. - Added new
axom::primal::ZipIterable<T>
type to convert structure-of-arrays data to a given
Primal geometric primitive. - Quest: Added a
computeDistances()
function toSignedDistance
class for batched
signed-distance queries. - Spin: Added a
getTraverser()
function toBVH
, enabling the customized traversal of a
BVH from within a device kernel. - Primal: Adds an
Octahedron
primitive - Primal: Adds a
Polyhedron
primitive for representing convex polyhedra bounded by planar polygons in 3D - Primal: Adds a
clip()
operator for computing the intersection of aTetrahedron
and anOctahedron
as aPolyhedron
- Klee: Adds a new component,
klee
, for specifying non-conformal shape overlays for materials onto simulation meshes.
This component defines a schema for defining, transforming and overlaying 2D and 3D shapes
and validates klee input files. See the klee documentation for more information. - Quest: Adds a new query for sampling-based "shaping" onto low- or high-order computational meshes
- Quest: Adds a new query for intersection-based "shaping" of revolved contours onto 3D hexahedral meshes.
This capability uses a RAJA policy operate on various execution spaces (host, openmp, device). - Quest: Adds a "shaping" example for embedding a klee specification onto an MFEM mesh
- Added Sidre function
View::clear()
. - Core now provides an
axom::ArrayView
that provides view/indexing semantics over a raw pointer.
This replaces the external buffer logic previously provided byaxom::Array
.
Changed
-
MFEMSidreDataCollection
now reuses FESpace/QSpace objects with the same basis -
Harden configuration options for BLT tools (style, code quality, etc.) against accidentally being enabled for users. Developers will
always give a full path (e.g.CLANGFORMAT_EXECUTABLE
) -
Inlet:
Writer
s are passed directly toInlet::write
instead of being registered -
Inlet
objects can now be constructed without a user-providedsidre::DataStore
-
Conduit version changed to v. 0.7.2
-
Renames
AXOM_DEBUG_VAR
macro toAXOM_UNUSED_VAR
since there were many cases where the latter
was not the appropriate name. This macro elides warnings about unused variables -
Inlet's
isUserProvided
can now be used to query the status of subobjects of aContainer
via a name parameter -
Upgrades our
vcpkg
usage for automated Windows builds of our TPLs to its 2021.05.12 release -
Upgrades built-in
cli11
library to its v1.9.1 release -
Quest's
inout
C API has two new functions:inout_set_dimension()
andinout_set_segments_per_knot_span()
.
The latter is only applicable for 2D queries onc2c
contours -
Spin: Refactored
BVH
public API based on user suggestions
BVH
constructor only handles setting up default values, while the actual building of the BVH is
now done in aBVH::initialize(primal::BoundingBox*, int)
method.
Alternate Umpire allocator IDs are supplied viaBVH::setAllocatorID(int)
.
OtherBVH
methods have been modified to accept or return Primal primitives. -
Spin: Removed hard dependency on RAJA and Umpire from
BVH
. -
Moved
slam::IteratorBase
toaxom::IteratorBase
. -
sidre::Array
now derives fromaxom::MCArray
. -
axom::Array
is now multidimensional; it intends to behave likestd::vector
in the 1D case
andnumpy.ndarray
in the multidimensional case -
Quest:
SignedDistance
has been modified to usespin::BVH
instead ofBVHTree
. This
enables signed-distance queries to run on the GPU, as specified via a new template
parameter. -
Spin: Removed
BVHTree
class in favor ofBVH
. -
Quest's
signed_distance
C API: Removed functions related to oldBVHTree
class
and added functions related toBVH
class- Removed:
void signed_distance_set_max_levels( int maxLevels )
- Removed:
void signed_distance_set_max_occupancy( int maxOccupancy )
- Added:
void signed_distance_set_allocator( int allocatorID )
- Added:
void signed_distance_set_execution_space( SignedDistExec execSpace )
- Removed:
-
All built-in third-party libraries (
fmt
,cli11
,sol
, andsparsehash
) have been guarded to allow downstream users to
have their own versions. This includes moving their headers underinclude/axom
instead ofinclude/
and
moving their C++ namespace underaxom
(eg.fmt
toaxom::fmt
). If you don't use our built-n TPLs this has no
affect on you, but if you do these are some the changes you will need to make:Library Namespace changes Header include changes fmt fmt::
→axom::fmt::
#include "fmt/fmt.hpp"
→#include "axom/fmt.hpp"
sol sol::
→axom::sol::
#include "sol/sol.hpp"
→#include "axom/sol.hpp"
sparsehash google::
→axom::google::
#include "sparsehash
→#include "axom/sparsehash
cli11 CLI::
→axom::CLI::
#include "CLI11/CLI11.hpp"
→#include "axom/CLI11.hpp"
-
Moved
axom::MCArray
and thesidre::Array
it was based on intomint
asaxom::deprecated::MCArray
andsidre::deprecated::MCArray
, respectively.
sidre::Array
is now based onaxom::Array
. -
utilities::string::split
now returns a vector instead of using an out-parameter,
Inlet's string utilities were moved to Core, andsplitLastNTokens
was renamed torsplitN
-
axom::Array
-related classes have been moved into individual files. -
RAJA dependency updated to 0.14.0
-
Umpire dependency updated to 0.6.0. Support for versions prior to v2.1.0 was removed.
-
Conduit dependency updated to 0.7.2+ (develop as of Sept 13, 2021). This was required because Spack
is now usingHDF5
's CMake build system. -
Internal BLT dependency updated to 0.4.1
Fixed
- Fixed Primal's
intersect(Ray, Segment)
calculation for Segments that do not have unit length - Fixed problem with Cray Fortran compiler not recognizing MSVC pragmas in
axom/config.hpp
.
The latter are now only added in MSVC configurations. - Fixed bug in
Mint
's VTK output for fields of typeint64
andfloat
- Improved loading of data collections in
MFEMSidreDataCollection
- Added workaround to
MFEMSidreDataCollection
forC++14
standard library feature that was not available in[email protected]
- Delayed finalizing reloaded mesh in
MFEMSidreDataCollection
until after setting
the nodalGridFunction
(when applicable) - Transposed
R
andZ
coordinates when linearizing NURBS curves inc2c
reader - Fixed user-reported in/out ambiguity within some
InOutOctree
cases with grazing triangles