Skip to content

Axom-v0.13.0

Latest

Choose a tag to compare

@BradWhitlock BradWhitlock released this 05 Feb 23:21
d00f6c6

Please download the Axom-v0.13.0.tar.gz tarball below, which includes all of the
submodules needed to build Axom. The AxomData-v0.13.0.tar.gz tarball contains
extra files to put in the data directory only if you want to run certain
Axom tests.

Added

  • Adds the AXOM_ENABLE_TUTORIALS configuration variable (ON by default)
  • Adds a tutorial on shaping in Axom and associated infrastructure in quest, klee, inlet and sidre.
  • Sina: User can control curve ordering in Sina output file setDefaultCurveOrder()
  • Sina: appendDocument() will create the document if not present or append if document exists.
    It can also auto detects the protocol based on file's name, removing the need to call
    the append function that matches your protocol.
  • Adds Sina fortran functions sina_set_curves_order and sina_set_record_curves_order
  • Sidre: Added iterators and Attribute class to the Python interface.
  • Adds new optimization hint macros AXOM_LIKELY and AXOM_UNLIKELY to mark likely/unlikely
    paths in if-statements.
  • The axom::bump::extraction::CutField class was added to cut Blueprint geometry using a
    field (isosurface). The output contains polygons for 3D inputs and lines for 2D inputs.
    resulting in geometry with reduced topological dimension.
  • The axom::bump::extraction::PlaneSlice class was added to cut Blueprint geometry using a
    plane given using "origin" and "normal" values in the algorithm's options. The planar slice
    results in polygons for 3D inputs and lines for 2D inputs.
  • Adds a reader for STEP files to quest/io. The geometry can either be returned
    as an array of NURBSPatch with trimming curves or it can be triangulated into triangle mesh.
  • Adds a components variant to Axom's spack package. Users can now provide an explicit list
    of desired components, e.g. components=sidre and Spack adds any missing dependencies,
    e.g. the slic component and the conduit dependency. By default (when components is not provided,
    or when components="all"), all components are enabled. All components can be disabled via components=none.
  • Adds a conduit spack variant. Conduit was previously a required dependency in our spack package, and is now enabled by default.
  • Adds spack variants for adiak and caliper. These replace the previous profiling variant which enabled both at the same time.
  • Adds the AXOM_TEST_NUM_OMP_THREADS configuration variable to control the default OpenMP thread count for tests.
  • Slic: Adds slic::getAbortFunction() to return a function pointer to the abort handler called during logging functions
  • Quest: Adds a 3D winding number example and improves WN performance in 2D and 3D
  • Sidre: Added AXOM_SIDRE_IO_USE_SCALAR_STATE_STRING (default ON) to optionally serialize scalar views
    with state "SCALAR" instead of "TUPLE" for compatibility with downstream readers (e.g. VisIt)
    that don't yet support "TUPLE". We expect to remove this in the future as readers adopt the "TUPLE" type.

Changed

  • Version of quest::discretize that approximates a surface-of-revolution from a polyline
    now respects the allocator ID of the output Array. It no longer resets the ID to the
    execution space default.
  • Updates to RAJA version 2025.12.1
  • Updates to camp version 2025.12.0
  • Updates to Umpire version 2025.12.0
  • Updates to Caliper version 2.14.0
  • Evaluation methods for line integrals in axom::primal have been generalized, and
    evaluate_scalar_line_integral has been renamed to evaluate_line_integral.
  • Treatment of materials on strided-structured Blueprint meshes has changed in axom::mir.
    Materials are now expected to be defined only on the valid subset of zones in the mesh.
    This more closely matches VisIt behavior.
  • Views and functions for creating views in axom::bump have been enhanced to better validate
    Blueprint meshes to guard against malformed input. Likewise, runtime input checks have been
    promoted to use SLIC_ERROR_IF instead of SLIC_ASSERT so the checks will remain in
    optimized Axom builds.
  • The maximum number of vertices allowed in polygon primitives can now be passed as a template
    argument to axom::bump::TopologyMapper, axom::bump::PrimalAdaptor, and
    axom::mir::ElviraAlgorithm.
  • Material views in axom::bump::views were enhanced with const_iterator classes that
    enable traversal of material data for zones so kernels do not need to use large fixed size
    buffers to gather that data inside kernels.
  • Material views in axom::bump::views were enhanced with an overloaded zoneMaterials()
    method that allows data to be gathered into axom::ArrayView objects.
  • A new heavily_mixed example program was added in axom::mir to demonstrate running MIR on
    meshes with heavily mixed zones.
  • saveDocument() now has a AUTODETECT protocol for the file type
  • Sina fortran can now handle multiple records rather than a single record per application
  • Most Sina Fortran call can now pass the record for which the call is desired (sina_add, sina_add_file, sina_add_curveset, sina_add_curve)
  • Sina fortran create_document_and_record is now sina_create_record
  • Sina fortran sina_write_document now accepts a third argument that preserves records in memory so they can be written to another file (otherwise they're released from memory as soon as they're written)
  • Primal: In Bezier and NURBS classes, accessors for arrays of control points, weights and knots
    are now returned by (const) reference instead of returning a copy by value.
  • The axom::bump::clipping::ClipField and axom::mir::EquiZAlgorithm classes were enhanced so they can clip polygons up to 8 sides.
  • De-virtualized axom::Array methods to improve performance. This change may break code which
    utilizes axom::Array or sidre::Array/MCArray in a polymorphic manner, for example by overriding
    Array::updateNumElements() or Array::dynamicRealloc().
    Refer to the new StoragePolicy interface for substitute functionality.
  • The axom::bump::clipping namespace was renamed to axom::bump::extraction since it now
    contains additional algorithms.
  • Updates to mfem version 4.9.
    Also updates mfem's hypre dependency to hypre version 2.27.
  • Quest: MFEMReader can now read in multispan 1D NURBS meshes
  • fmt: Axom's built-in version of the fmt formatting library was updated to fmt version 12.1.0.
  • Primal: Improves robustness of linear_winding_number by using atan2 instead of acos
  • Core: Allows users to set the minimum size for Axom's shared memory allocator in getSharedMemoryAllocatorID()
  • Core: Allows users to set the name of the shared memory allocation in allocate()
  • Quest: Adds a function to the signed distance API to set the shared memory size: signed_distance_set_shared_memory_size()
  • Sidre: Shroud-generated C/Fortran interfaces for Group::createViewScalar() and Group::createViewString()
    now include overloads that accept an allocator ID.

Fixed

  • Sina's Fortran tests are now running (instead of silently failing)
  • Optimized Array::push_back() and Array::emplace_back() operations.
  • Quest: In Shaping applications, we now check return code after attempting to load a mesh
    and throw an error for unsuccessful loads.
  • Core: Bugfix for batched insertion into a FlatMap with deleted entries
  • Quest: Sets the allocation name for shared memory in the signed distance query

Removed

  • Removes the AXOM_ENABLE_MFEM_SIDRE_DATACOLLECTION CMake config variable.
    It is no longer needed -- we now always use MFEMSidreDataCollection in configurations with mfem and sidre.