Skip to content

Axom-v0.6.0

Compare
Choose a tag to compare
@rhornung67 rhornung67 released this 04 Nov 16:25
· 3918 commits to main since this release
65287dc

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's InOutOctree for in/out queries.
  • Updated the Quest inout C API to support 2D queries using the c2c library, when Axom is configured with c2c
  • Updated the C++ Quest "containment" example to support 2D in/out queries
    (in addition to the already supported 3D queries)
  • Added axom::Array modeled after std::vector. Previous axom::Array renamed to axom::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() and axom::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 to SignedDistance class for batched
    signed-distance queries.
  • Spin: Added a getTraverser() function to BVH, 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 a Tetrahedron and an Octahedron as a Polyhedron
  • 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 by axom::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: Writers 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

    • 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 )
  • 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

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 type int64 and float
  • Improved loading of data collections in MFEMSidreDataCollection
  • Added workaround to MFEMSidreDataCollection for C++14 standard library feature that was not available in [email protected]
  • Delayed finalizing reloaded mesh in MFEMSidreDataCollection until after setting
    the nodal GridFunction (when applicable)
  • Transposed R and Z coordinates when linearizing NURBS curves in c2c reader
  • Fixed user-reported in/out ambiguity within some InOutOctree cases with grazing triangles