CS infrastructure components for HPC applications
Please download the Axom-v0.9.0.tar.gz tarball below, which includes all of the Axom submodules as well.
Quadrilateral
primitivecompute_bounding_box()
operator for computing the bounding
box of a Quadrilateral
clip()
operator for clipping a tetrahedron against the
half-space defined by a planecheckAndFixOrientation()
function to primal::Tetrahedron
that swaps the order of vertices if the signed volume of the Tetrahedron is
negative, resulting in the signed volume becoming positive.FlatMap
, a generic key-value store which aims for drop-in compatibility
with std::unordered_map
, but utilizes an open-addressing design.Array::push_back()
and Array::emplace_back()
.setTetPredFromBoundingBox()
and setTetPred()
functions to
quest::ProEReader
and PProEReader
that set a tet predicate, allowing
user code to read in a subset of a Pro/E ASCII tetrahedron mesh file.MarchingCubes
has optimizations to improve GPU performance, particularly for
repeated computations. The constructor has changed and a new setMesh
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 the setOutput
method.MarchingCubes
allows user to select the underlying data-parallel implementation
fullParallel
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
and DistributedClosestPoint
classes identify domains by their
state/domain_id
parameters if provided, or the local iteration index if not.MarchingCubes
and DistributedClosestPoint
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
Polyhedron::volume()
function changed from returning a signed
volume to an unsigned volume. The added Polyhedron::signedVolume()
function
returns the signed volume.intersection_volume()
operators changed from returning a signed
volume to an unsigned volume.BoundingBox::contains(BoundingBox)
now returns true
when the input is emptyC++20
standard: popCount() -> popcount()
,
trailingZeros() -> countr_zero()
and leadingZeros() -> countl_zero()
axom::utilities::swapEndian() -> byteswap()
to conform to C++23
standardSamplingShaper
now properly handles material names containing underscoresSamplingShaper
can now be used with an mfem that is configured for (GPU) devicesPolygon
area computation in 3D previously only worked when the polygon was aligned with the XY-plane. It now works for arbitrary polygons.vcpkg
usage for automated Windows builds of our TPLs to its 2023.12.12 release
primal::clip(Triangle, BoundingBox)
std::locale
error when when compiling src/axom/core/utilities/System.cpp
using nvcccstdint
for higher gcc version support (e.g. gcc-13)axom::Array
, quest::Shaping
and sidre::MFEMSidreDataCollection
Please download the Axom-v0.8.1.tar.gz tarball below, which includes all of the Axom submodules as well.
Please download the Axom-v0.8.0.tar.gz tarball below, which includes all of the Axom submodules as well.
axom::Array
to conform more closely with the std::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 to value
.ArrayView::empty()
method to return whether the view is empty or not.area()
function to primal::Polygon
ArrayViewIndirection
indirection policy with slam::Map
and slam::BivariateMap
const_iterator
support to slam::BivariateMap
and slam::SubMap
Hexahedron
primitiveclip()
operator for computing the intersection of a Hexahedron
and another Tetrahedron
as a Polyhedron
intersection_volume()
operator for computing the volume of intersection between a primitive and a Tetrahedron
primal::Polyhedron::from_primitive()
operator that returns a Polyhedron
object from a given primitive.DataStore::getBufferInfo()
and Group::getDataInfo()
methods that insert information into a Conduit Node
about buffers in a DataStore
object or data in a Group
subtree. The information can be accessed from the Node
by the caller from specifically named fields in the Node
.quest::ProEReader
for reading in Pro/E tetrahedral meshesquest::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 using Shaper::setRefinementType()
and by calling Shaper::setPercentError()
to set a refinement error percentage.MultiMat::setAllocatorID()
or MultiMat::setFieldAllocatorID()
can be called to change the memory space in which a field is allocated.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::removeField()
function to remove fields from the Multimat instance.MultiMat::setCellMatRel()
that supports setting a multi-material relation in a compressed sparse-row (CSR) representation.SamplingShaper
before processing Klee
inputslam::MappedVariableCardinality
policy to accelerate mapping flat indices back to first-set indices when used in a StaticRelation
ArrayView(data, shape, strides)
constructor to support column-major and custom striding layouts.ArrayView::subspan()
overload for multi-dimensional subspansaxom::utilities::insertionSort()
method.IntersectionShaper
axom::utilities::locale
utility function to guard against platforms that do not have the requested locales via the std::locale
function. If the system does not have the requested locale (e.g. en_US.UTF8
), it returns the user's default locale.sidre_layout_json
and conduit_layout_json
to provide output of DataStore layout in a user-readable format that excludes the numerical arrays held by Views and Buffers.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.c2c
version 1.8.0axom_
). This change requires no change to downstream CMake users who import our targets. The exported CMake target axom
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 now noexcept
.cli11
, fmt
, sol
, and sparsehash
, have been prefixed with axom::
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 names closest_point
and min_distance
have been changed to cp_coords
and cp_distance
, respectively, to match the naming convention of other interfacing variables.vcpkg
ports for RAJA
, Umpire
with optional OpenMP
feature for automated Windows build.ArrayView::subspan
to prevent accessing invalid memory.vcpkg
port for lua
as optional dependency on Windows.PointInCell
query to control the Newton solve from physical to reference space for a given element.IndirectionPolicy::data()
now returns a reference to the underlying buffer. Rebinding an indirection to a new buffer is now achieved through IndirectionPolicy::ptr()
, which returns a mutable pointer to the buffer.Shaper::applyTransforms()
is no longer a public method.MultiMat::addField()
and MultiMat::setVolfracField()
API now use axom::ArrayView
to accept data.MultiMat::makeOtherRelation()
now runs on the GPU with an appropriately-set allocator ID.MultiMat::setCellMatRel(counts, indices)
now runs on the GPU, and accepts GPU-side data.ArrayView::spacing()
to ArrayView::minStride()
.path
field when its format
is "none"primal
intersection operators against planes and triangles before using the geometry.lua
dependencymfem
dependency in device builds when mfem
is configured with caliper
Array::resize(size, value)
for Array<bool>
hasChildView()
and hasChildGroup()
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.importConduitTreeExternal()
to handle lists with unnamed members the same as importConduitTree()
.flush()
for parallel output log streams.src/axom/core/Types.hpp
are deprecated because c++11
supports their equivalents.Please download the Axom-v0.7.0.tar.gz tarball below, which includes all of the Axom submodules as well.
view()
method to axom::Array
class to simplify creation of a corresponding axom::ArrayView
spin::ImplicitGrid
.
The following functions run with the user-specified execution space (specified as a template argument
on ImplicitGrid
):
ImplicitGrid::insert(nelems, bboxes)
: insert a batch of bounding boxes into the implicit gridImplicitGrid::getCandidatesAsArray(nquery, queryObjs, ...)
: query the implicit grid for a batch of
query objects, and generate a CSR-format array for the candidates.
In addition, ImplicitGrid::getQueryObject()
returns an object that may be used within a GPU kernel
to query the implicit grid.ImplicitGrid
const
versions of begin()
and end()
for Array
and ArrayView
axom::Array
with explicitly specified
memory spaceaxom::Array
that uses both uninitialized data (ArrayOptions::Uninitialized
)
and custom allocatorsoperator<()
) to StackArray
. This allows it to be used as a key for std::map
popCount()
, trailingZeros()
and leadingZeros()
slam::DynamicSet
ImpicitGrid::getCandidates()
from a grid cell of the lattice.
This makes it easier to iterate over the bins of the spatial index.axom::Array<T>
/ArrayView<T>
iterators, to allow passing iterator
pairs to standard library functionsaxom::Array<T>
allocated in device-only memory.axom::Array<T>
using
operator[]
and operator()
hip
compiler. Support for running device
kernels with hip will be added in the future.spin::UniformGrid
.
The following functions run with a user-specified execution space (specified as a template argument
on UniformGrid
):
UniformGrid::initialize()
: creates/re-creates a uniform grid with an array of objects and their
corresponding bounding boxesUniformGrid::getCandidatesAsArray()
: query the uniform grid for objects that share a grid
cell with the query bounding box
In addition, UniformGrid::getQueryObject()
returns an object that may be used within a GPU kernel
to query the uniform grid.UniformGrid
. Two policies are provided:
DynamicGridStorage
stores the bins as an array of arrays (default)FlatGridStorage
stores the bins as a flat array of elements, where each bin is a slice of the
arrayaxom::Array
axom::Array::resize(ArrayOptions::Uninitialized, dims)
to support resizes
without constructing or initializing new elementsScatteredInterpolation
query to quest, which enables interpolating scalar fields at arbitrary
points from a given 2D or 3D point mesh in the Mesh Blueprint format. The current implementation
generates a Deluanay complex over the points and performs linear interpolation over the
triangle/tetrahedron at the query points.SLIC_ERROR_ROOT(msg)
and SLIC_ERROR_ROOT_IF(EXP, msg)
. This can be set via
slic::initialize(bool is_root = true)
or slic::setIsRoot()
.View
s and Group
s of a sidre::Group
.
These can be accessed via the range-for syntax as for(auto& view: grp.views()){...}
,
Or using the iterator syntax as
for(auto& it = grp.views().begin(), itEnd = grp.views().end(); it ! itEnd ; ++it) {...}
, and similarly for the groups of a group.Attribute
s and Buffers
s of a sidre::DataStore
,
with a similar syntax, e.g. for(auto& buf : datastore.buffers()){...}
.ImplicitGrid::getCandidatesAsArray()
to accept query points/bounding boxes
as an axom::ArrayView
.primal::closest_point(point,sphere)
overload to find the closest point on a sphere to a given pointSignedDistance
query to return the closest point on the surface
to the query point and the surface normal at that point. Also exposes this functionality
in quest's signed_distance C API.lerp
) of two numbersCurvedPolygon
class to primal representing a polygon with BezierCurve
s as edgesCurvedPolygon
BezierCurve
and CurvedPolygon
objectsArrayViewIndirection
storage policy to Slamslam::DynamicVariableRelation
multimat
, to simplify the handing of multi-material meshes and
fields.Polygon
and CurvedPolygon
objects.constants.hpp
to primal to track geometric constants. Initially includes
a value for PRIMAL_TINY
, a small constant that can be added to
denominators to avoid division by zero.DistributedClosestPoint
query now supports "domain underloading" -- ranks that are passed in can
have empty object meshes and/or empty query meshesclip()
operator for computing the intersection of a Tetrahedron
and another Tetrahedron
as a Polyhedron
slic::outputLocalMessages()
to output messages from the current rank to the console for MPI-enabled LogStreams.BLT_CXX_STD
.axom::Array
now default-initializes its data by default. To create an Array with uninitialized
elements, pass an axom::ArrayOptions::Uninitialized
as the first constructor argument.axom::ArrayView<const T>
can now be created from a const Array<T>
ExecSpace
template parameter to spin::ImplicitGrid
.
ExecSpace
is now the second template parameter (out of three) and defaults to axom::SEQ_EXEC
.DataStore
, MFEMSidreDataCollection
will now save only
its domain and global groupsinlet::Field
fails a range or valid value constraint, the provided value and
corresponding range/set of valid values are now included in the error messageprimal::Plane
, primal::Sphere
, primal::orientation()
and primal::in_sphere()
primal::in_sphere()
-- the computations are now based on (D+1)x(D+1)
determinants
instead of (D+2)x(D+2)
determinants for D
-dimensional spheresprimal::Segment
, primal::Triangle
and primal::Tetrahedron
primal::Sphere
to use more of primal
, e.g. uses primal::Point
instead of T*
to represent pointscircumsphere()
functions to primal::Triangle
and primal::Tetrahedron
to return the Sphere
that circumscribes the triangle/tetrahedron's verticesprimal::Vector
from a primal::Point
to yield a new primal::Point
quest::findTriMeshIntersections*()
implementations for BVH
and ImplicitGrid
BVH::find*()
batch functions now return the total number of candidate intersections foundaxom::Array<T>
to be iterated over with begin()/end()
AXOM_VERSION_EXTRA
in favor of axom::gitSHA()
and adding the SHA to axom::getVersion()
and
axom::about()
ArrayOps
, to avoid generating unnecessary copies in
fill/destroy operations on otherwise trivially-copyable/destructible types.axom::Array
now consistently propagates the allocator ID on copy, move, and swap operations when possible.
This is a breaking change; copy-construction of a dynamic array from a device array will no longer automatically
move the array to host memory, and will instead maintain the same allocator ID as the source array.BVH::TraverserType::traverse_tree()
now supports passing in arbitrary query objects
for BVH traversal.inlet::LuaReader::solState()
to be a protected function that now returns a std::shared_ptr<axom::sol::state>
.
This is an advanced feature that could cause users to break an input file state after verification. This also allows us
to not expose axom/sol.hpp
to all users of Inlet. This greatly reduces compile times. Using this feature requires
both a derived class and including axom/sol.hpp
in the user code.createView
of
axom::sidre::Group
which accept int ndims, IndexType *shape
arguments to be createViewWithShape
or createViewWithShapeAndAllocate
.std
-compliant
implementationsidre/core/sidre.hpp
.
We recommend using the automatically generated header file axom/sidre.hpp
to include
sidre functionality.sidre::ItemCollection
base class that were not common to all derived classes
and added a new derived class sidre::IndexedCollection
BVH::findPoints/Rays/BoundingBoxes()
candidate search methods now accept an axom::ArrayView<IndexType>
for the offsets
and counts
output arrays, and return candidates
as an axom::Array<IndexType>
.primal::Polygon::centroid()
to primal::Polygon::vertexMean()
because it was not actually computing the centroid.axom:sidre:IndexType
is now the same type as
axom:IndexType
. Before, Sidre always used int64_t
. Now it
respects the define AXOM_USE_64BIT_INDEXTYPE
.ArrayIndirection
to CArrayIndirection
and the axom::Array-based indirection policy was renamed from CoreArrayIndirection
to ArrayIndirection
.primal::detail::intersect_ray
now correctly identifies intersections between collinear Segment
and Ray
objects.axom::Array
smfem::FiniteElementSpaces
in sidre::MFEMSidreDataCollection
quest::PointInCell
when not using RAJAaxom::Array<T>
for non-trivial types T
which allocate memoryaxom::ArrayList
for axom configurations without Umpire to fix a compiler error (XL compiler)quest::Delaunay
to avoid "multiply-defined" linker errorsaxom::Array<T>
fill operations on uninitialized memoryaxom::Array<T>::resize(new_size)
with new_size < curr_size
quest::SignedDistance
when closest point is along an edge
with a sharp dihedral angle and the adjacent triangles have significantly different areasaxom::Array<T>
behavior on copy-construction when T
is a non-trivial typeusing
statement in SidreDataTypesIds.h
with typedef
since C syntax is required in this file.sidre::Array<T>
construction where the size is set to the underlying buffer
capacity, instead of the actual number of elementsaxom::Array<T>::insert
behavior with non-trivial types.Please download the Axom-v0.6.1.tar.gz tarball below, which includes all of the Axom submodules as well.
AXOM_DEBUG_DEFINE
to control whether the AXOM_DEBUG
compiler define is enabled.
By DEFAULT
, it is enabled for Debug
and RelWithDebInfo
configurations, but this can be overriden
by setting AXOM_DEBUG_DEFINE
to ON
or OFF
.axom::Array
is now GPU-compatible, in particular via a memory space template parameter and via
extensions to axom::ArrayView
that allow for copying into kernels and transfers between memory spaces.primal::Point
s and primal::Vector
sAXOM_NOT_USED
macro to AXOM_UNUSED_PARAM
for better consistency with other Axom macrosexplicit
to axom::Inlet::InletVector
constructors and added a constructor that accepts a double*
AXOM_ENABLE_MFEM_SIDRE_DATACOLLECTION
configuration option is now ON
by default (rather than OFF
).
This option should be disabled if mfem
was configured with MFEM_USE_SIDRE
.AXOM_DEBUG
compiler define is now properly exported via the axom
CMake target when it is enabledEPS
to primal::closest_point()
operator. This effectively snaps
closest points to the triangle boundaries vertices and edges when they are within EPS
,
improving consistency when, e.g., querying multiple triangles from the same mesh.SignedDistance
queries for query points closest to edges or vertices
of the input triangle meshPlease download the Axom-v0.6.0.tar.gz tarball below, which includes all of the Axom submodules.
AXOM_ENABLE_TOOLS
c2c
("contours to codes") library for parsing 2D spline data.
c2c
is currently only available for Axom configurations on LLNL platforms.intersect(Ray, Segment)
can now return the parametric coordinates of the intersection
along both the ray and the segment (when the intersection exists)intersect(Segment, BoundingBox)
can now return the parametric coordinates bounding the
portion of the segment contained within the BoundingBox (when the intersection exists)InOutOctree
class to work with 2D line segment meshes. Previously,
it only worked with 3D triangle meshesc2c
".contour" files in Quest. Contours that enclose a 2D region can be linearized
into line segment meshes and loaded into Quest's InOutOctree
for in/out queries.inout
C API to support 2D queries using the c2c
library, when Axom is configured with c2c
axom::Array
modeled after std::vector
. Previous axom::Array
renamed to axom::MCArray
. Future changes to both arrays are expected.data_collection_util
tool to generate Mesh Blueprint compliant high order distributed meshes from
an mfem mesh or over a Cartesian domainaxom::utilities::getHostName()
and axom::utilities::getUserName()
.axom::primal::ZipIterable<T>
type to convert structure-of-arrays data to a given
Primal geometric primitive.computeDistances()
function to SignedDistance
class for batched
signed-distance queries.getTraverser()
function to BVH
, enabling the customized traversal of a
BVH from within a device kernel.Octahedron
primitivePolyhedron
primitive for representing convex polyhedra bounded by planar polygons in 3Dclip()
operator for computing the intersection of a Tetrahedron
and an Octahedron
as a Polyhedron
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.View::clear()
.axom::ArrayView
that provides view/indexing semantics over a raw pointer.
This replaces the external buffer logic previously provided by axom::Array
.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 to Inlet::write
instead of being registered
Inlet
objects can now be constructed without a user-provided sidre::DataStore
Conduit version changed to v. 0.7.2
Renames AXOM_DEBUG_VAR
macro to AXOM_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 a Container
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()
and inout_set_segments_per_knot_span()
.
The latter is only applicable for 2D queries on c2c
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 a BVH::initialize(primal::BoundingBox*, int)
method.
Alternate Umpire allocator IDs are supplied via BVH::setAllocatorID(int)
.
Other BVH
methods have been modified to accept or return Primal primitives.
Spin: Removed hard dependency on RAJA and Umpire from BVH
.
Moved slam::IteratorBase
to axom::IteratorBase
.
sidre::Array
now derives from axom::MCArray
.
axom::Array
is now multidimensional; it intends to behave like std::vector
in the 1D case
and numpy.ndarray
in the multidimensional case
Quest: SignedDistance
has been modified to use spin::BVH
instead of BVHTree
. This
enables signed-distance queries to run on the GPU, as specified via a new template
parameter.
Spin: Removed BVHTree
class in favor of BVH
.
Quest's signed_distance
C API: Removed functions related to old BVHTree
class
and added functions related to BVH
class
void signed_distance_set_max_levels( int maxLevels )
void signed_distance_set_max_occupancy( int maxOccupancy )
void signed_distance_set_allocator( int allocatorID )
void signed_distance_set_execution_space( SignedDistExec execSpace )
All built-in third-party libraries (fmt
, cli11
, sol
, and sparsehash
) have been guarded to allow downstream users to
have their own versions. This includes moving their headers under include/axom
instead of include/
and
moving their C++ namespace under axom
(eg. fmt
to axom::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 the sidre::Array
it was based on into mint
as axom::deprecated::MCArray
and sidre::deprecated::MCArray
, respectively.
sidre::Array
is now based on axom::Array
.
utilities::string::split
now returns a vector instead of using an out-parameter,
Inlet's string utilities were moved to Core, and splitLastNTokens
was renamed to rsplitN
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 using HDF5
's CMake build system.
Internal BLT dependency updated to 0.4.1
intersect(Ray, Segment)
calculation for Segments that do not have unit lengthaxom/config.hpp
.
The latter are now only added in MSVC configurations.Mint
's VTK output for fields of type int64
and float
MFEMSidreDataCollection
MFEMSidreDataCollection
for C++14
standard library feature that was not available in [email protected]
MFEMSidreDataCollection
until after setting
the nodal GridFunction
(when applicable)R
and Z
coordinates when linearizing NURBS curves in c2c
readerInOutOctree
cases with grazing trianglesPlease download the Axom-v0.5.0.tar.gz tarball below, which includes all of the Axom submodules as well.
AXOM_ENABLE_MFEM_SIDRE_DATACOLLECTION
CMake option is enabled.slic::setAbortFunction
to configure a custom callback when SLIC aborts.batched
option to quest's InOutOctree
containment query example application.
This uses a kernel to test for containment on an array of points.
The query uses OpenMP threading, when available.NOMINMAX
to axom/config.hpp.in
to avoid problems with
the Windows min
and max
macros.cpp14
variant to Spack package to allow Inlet::LuaReader
to be used more easily.void
and strings in Lua-defined functionsget<std::vector<T>>
for retrieving arrays without index informationWriter
for generating JSON schemas which can be used by text editors
for autocompletioninlet::Inlet
that retrieves the set of unexpected names
in the input fileContainer
s as strict, which fail verification when unexpected
entries are presentMFEMSidreDataCollection
for registering QFunctions
(data associated with quadrature points on a mesh)Inlet
object can be reconstructed from a Sidre group,
excluding callback functionsMFEMSidreDataCollection
. These correspond to
matset
s
and
specset
s
in the Mesh BlueprintDataStore::setConduitSLICMessageHandlers()
method.SchemaCreator
to an abstract class and added missing functionsReader
class from Inlet
and Sol Lua state
from the LuaReader
classoperator[]
and
T get<T>()
std::shared_ptr<T>
has been replaced with T&
in non-owning contexts
and std::unique_ptr<T>
in owning contexts - specifically, within Inlet's internal
tree structureaxom::slic::UnitTestLogger
to axom::slic:SimpleLogger
because it's used in
more than just unit tests.conduit
to version 0.6.0 released Nov 2, 2020.sparsehash
to version 2.0.4 released Aug 11, 2020.primal::Vector
in Lua for use in input-file-defined functionsMFEMSidreDataCollection
will now reconstruct fields and the mesh when a
datastore is Load
ed inTable
interface to eliminate ambiguity and duplicated functionalityDocWriter
to Writer
and refactored its interfaceTable
to Container
operator bool
for Field
and Container
has been replaced with more precise isUserProvided
and exists
, which also returns true
if a default value was specified.fmt
to master branch snapshot, March 26, 2021.SphinxWriter
will now print only one element schema per container instead of
printing the same schema for each element in the containerAXOM_EXPORT
instead of AXOM_API
style
build
target if version is unknown or wrong.Please download the Axom-v0.4.0.tar.gz tarball below, which includes all of the Axom submodules as well.
EPS
that is used to determine intersections between
triangles in primal:intersect()
as an optional final parameter.mesh_tester
utility for calculating
triangle-triangle intersection.axom::execution_space< ExecSpace >::onDevice()
to check if execution
space is on device.AXOM_SUPPRESS_HD_WARN
to silence host device compiler
warnings.SignedDistance
class and C API to toggle whether
the distance query computes the sign.batched
option to quest's signed distance query example application.
This computes all distance queries on an array of points using a single call to computeDistance
.
The query uses OpenMP threading, when available.AXOM_ENABLE_ANNOTATIONS
, to enable/disable code
annotations in Axom. Default is OFF.AXOM_PERF_MARK_FUNCTION
macro, or at a more fine grain level,
different sections of code can be annotated by wrapping them within an
AXOM_PERF_MARK_SECTION
block. As a first cut, this works with NVTX tools.
However, the hooks are in place to add support for Caliper in the future.axom::nvtx:set_color()
and
axom::nvtx::set_category()
to set the corresponding parameters respectively.
This facilitates in the performance evaluation by allowing developers to easily
filter out calls by category or visually by setting a different color to use
in GUI tools, such as, NVVP and NSight.float
or double
type. The functionality is equivalent to that provided by
std::numeric_limits, but, the code is host/device decorated accordingly such that it
can also be called on the device.axom-config.cmake
file to axom's installation to streamline incorporating axom
into user applications. See <axom-install>/examples/axom
for example usages.C++
and Lua
binding.
Sol is automatically enabled when LUA_DIR
is found.
The version of Sol used in this release is v2.20.6
, which requires C++14
.AXOM_ENABLE_CUB
option, since CUB
is no lonher used directly in
Axom code. Instead, we use RAJA::stable_sort
with RAJA-v0.12.1 and fallback
to std::stable_sort
with older versions of RAJA and when the code is built
without RAJA.Uncrustify
to [clang-format].
Axom's clang-format rules depend on clang 10.mesh_tester
utility. Interface
now uses a -m, --method option to select the spatial index, and -p, policy
option now accepts a string or integer value.AXOM_USE_MPI3
option to AXOM_ENABLE_MPI3
for consistency.BVH::findPoints()
and BVH::findRays()
.umpire::Allocator
object to specify an allocator, we now use the corresponding
integer ID associated with the allocator.SIDRE_datastore_new
is now SIDRE_DataStore_new
.axom::slic::message
Level enums are changed
from enum-name_enumerator to namespace_enumerator.
ex. level_error
is now message_error
.datastore_new
is now SidreDataStore
iomanager_new
is now IOManager
primal::intersect(Segment, BoundingBox)
and added regression tests.AXOM_USE_64BIT_INDEXTYPE
configurations. Axom can once again
be configured with 64-bit index types.__threadfence_system()
after the parent is computed and stored back
to global memory to ensure that the write is visible to all threads.mint_cell_types.cpp
test was causing a segfault in the compiler. The main
issue triggering this compiler bug was the use of constexpr
when defining the
static cell_info
array of structs. The code has been modified to use const
instead.generate_aabbs_and_centroids
method
in the spin_bvh.cpp
unit test. It seems that the compiler does not handle
the lambda capture of the arrays correctly which leads to a segfault. A
workaround for the IBM XL compiler is provided.Please download the Axom-v0.3.3.tar.gz tarball below, which includes all of the Axom submodules as well.
axom::reallocate(_, 0)
to always return a valid pointer.
This matches the semantics of Umpire's reallocate(_, 0)
.
Note: Umpire's PR-292 fixed a bug in its handling of this case and Axom
includes a workaround to get the new behavior until we upgrade to Umpire v2.0+.convert_sidre_protocol
example. Data truncation functionality now
works properly when multiple Views point to the same data.Please download the Axom-v0.3.2.tar.gz tarball below, which includes all of the Axom submodules as well
intersect
operator was also added to
compute the intersection points between a pair of Bezier curves of arbitrary order.