Skip to content

Axom-v0.9.0

Latest
Compare
Choose a tag to compare
@white238 white238 released this 20 Mar 20:58
5f53159

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 a Quadrilateral
  • Primal: Adds a clip() operator for clipping a tetrahedron against the
    half-space defined by a plane
  • Primal: Adds a checkAndFixOrientation() 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.
  • Adds FlatMap, a generic key-value store which aims for drop-in compatibility
    with std::unordered_map, but utilizes an open-addressing design.
  • Adds support for device-side use of Array::push_back() and Array::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() 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.

Changed

  • 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
  • Primal: Polyhedron::volume() function changed from returning a signed
    volume to an unsigned volume. The added Polyhedron::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 returns true when the input is empty
  • Renamed axom's bit utility functions to conform to C++20 standard: popCount() -> popcount(),
    trailingZeros() -> countr_zero() and leadingZeros() -> countl_zero()
  • Renamed axom::utilities::swapEndian() -> byteswap() to conform to C++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 compiling src/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 and sidre::MFEMSidreDataCollection