Releases: llnl/conduit
Releases · llnl/conduit
0.9.6
0.9.6 Release Highlights
(adapted from Conduit's Changelog )
Released 2026-04-14
Added
Conduit
- Added
CONDUIT_VERSION_VALUEmacro that encodes the current Conduit version as an integer. - Added a macro to make an integer a version number from major, minor, patch version numbers. Example:
CONDUIT_MAKE_VERSION_VALUE(0, 9, 6). This macro can be used to conditionally compile code that is valid for specific versions of Conduit. - Added
setmethods toDataAccessorthat takeDataArraysandDataAccessors. - Added optional device execution support via RAJA and Umpire.
- Added
conduit_bin_yamlprotocol case toNode::load()andNode::save(). Also addedconduit_bin_json, which does the same thing asconduit_bin(creates a json schema file to go with theconduit_binfile). - Fixed an issue in
Node::swap()orNode::move()where child nodes moved to a new parent did not point to their new parent. This caused operations that callNode::parent()to traverse upwards to malfunction. - Added
Node::as_index_t().
Blueprint
- Finished
bent_multi_grid_amrmesh by adding adjacency sets between spatially adjacent domains at the same level of refinement. - Added
conduit::blueprint::mesh::convert()function that can convert among various mesh formats and generate derived meshes such as points, centroids, faces, sides, and corners. - Added a mode within the new
convert()function that allows it to convert polyhedral hex meshes into unstructured hex meshes. - Sped up
conduit::blueprint::mesh::topology::unstructured::to_polygonal()algorithm and added support for mixed element types. - Improved support for "mixed" element types in
conduit::blueprint::mesh::utils::ShapeTypeand also removed a string member to speed up construction. - Added 2D block rotation support in
conduit::blueprint::mpi::mesh::to_polygonal(). - Added field data to the
conduit::blueprint::mpi::mesh::to_polygonal()transformation, including communication of vertex data on hanging nodes. - Added
conduit::blueprint::mesh::specset::to_multi_buffer_full(),conduit::blueprint::mesh::specset::to_uni_buffer_by_element(), andconduit::blueprint::mesh::specset::to_multi_buffer_by_material(), which are converters that take species sets between the three supported species set/material set representations. - Added
conduit::blueprint::mesh::specset::is_multi_buffer(),conduit::blueprint::mesh::specset::is_uni_buffer(),conduit::blueprint::mesh::specset::get_num_species_for_material(), andconduit::blueprint::mesh::specset::get_material_names(), which are simple species set utilities. - Added
conduit::blueprint::mesh::matset::MatsetAccessor, a class for fetching material set/field/species set data independent of material set layout. It provides methods that fetch data for zone id and material id pairs (or zone id, material id, species id triples). - Added
conduit::blueprint::mesh::matset::create_or_reuse_material_map(), which will shallow copy or create a material map for a provided material set. - Added
conduit::blueprint::mesh::matset::create_or_copy_material_map(), which will deep copy or create a material map for a provided material set. - Added
conduit::blueprint::mesh::specset::create_or_reuse_species_names(), which will shallow copy or create species names for a provided species set. - Added
conduit::blueprint::mesh::specset::create_or_copy_species_names(), which will deep copy or create species names for a provided species set. - Added
conduit::blueprint::mesh::matset::renumber_material_ids(), which renumbers material ids for a material set to be in the range 0 to N - 1, where N is the number of materials. - Added
conduit::blueprint::mesh::matset::count_materials_from_matset(), which counts the number of materials in a given material set, taking into account the various matset layouts. - Added
conduit::blueprint::mesh::matset::count_materials_from_specset(), which counts the number of materials in a given species set, taking into account the various specset layouts. - Added
conduit::blueprint::mesh::matset::to_uni_buffer_by_material(),conduit::blueprint::mesh::field::to_uni_buffer_by_material(), andconduit::blueprint::mesh::specset::to_uni_buffer_by_material(), which for now only throw errors, but leave the door open for future support for this 4th material set layout.
Changed
Conduit
- Updated uberenv to use Spack 1.1.1
- Updated built in fmt to version 12.1.0.
- Updated python module build processes to use
pyproject.tomlfiles. Process now requires pip24.0.0or newer.
Blueprint
- Removed previously deprecated
quads_and_trisandhexs_and_tetsmesh types frombraidinblueprint::mesh::examples. - Renamed
conduit::blueprint::mesh::matset::to_multi_buffer_full()toconduit::blueprint::mesh::matset::to_multi_buffer_by_element(). - Material Set conversion routines (
to_multi_buffer_by_element(),to_uni_buffer_by_element(), andto_multi_buffer_by_material()) are now sensitive to optionally included material maps for all cases. If included, they will provide converted matsets with the material map. - Field/Species Set conversion routines (
to_multi_buffer_by_element(),to_uni_buffer_by_element(), andto_multi_buffer_by_material()) previously forced materials to appear in the same order in fields/specsets as they do in the associated material set. This restriction has been relaxed. - Updated
conduit::blueprint::o2mrelation::O2MIndexsuch that the number of "ones" in the one-to-many relationship is precomputed when the object is created. The number of "ones" is computed by using thesize()method from anO2MIndex. If anO2MIndexis created butsizes,offsets, andindicesare not present, then theO2MIndexconstructor will examine the providedNodeand search for data arrays to determine the number of "ones". If all data arrays in the providedNodehave the same number of elements, then that number is assumed to be the number of "ones". If there is disagreement or there are no data arrays present, then theO2MIndexthrows an error, as the number of "ones" is ambiguous or unknowable. - Renamed
conduit::blueprint::mesh::matset::count_zones_from_matset()toconduit::blueprint::mesh::matset::count_elements_from_matset(). - Renamed
conduit::blueprint::mesh::matset::is_material_in_zone()toconduit::blueprint::mesh::matset::is_material_in_element(). - Added error checking for mixed vector fields (fields with
matset_valuesdefined on vector components).conduit::blueprint::mesh::field::to_multi_buffer_by_element(),conduit::blueprint::mesh::field::to_multi_buffer_by_material(),conduit::blueprint::mesh::field::to_uni_buffer_by_element(), andconduit::blueprint::mesh::field::to_silo()now error in this case. - Rewrote
conduit::blueprint::mesh::matset::to_silo(),conduit::blueprint::mesh::field::to_silo(), andconduit::blueprint::mesh::specset::to_silo(). Instead of just thespecsetcase having its own implementation, all three now share a common implementation. Additionally, support for multi-buffer by material and uni-buffer by elementspecsetshave come online as part of these changes. We have also removed support for non-idiomatic material-set representations. Most importantly, the new version ofto_silo()boasts significant speedup: for multi-buffer by elementmatset/fields, the new version is roughly 15x faster, depending on how large your data is. For multi-buffer by materialmatset/fields, the new version has a modest speedup of roughly 1.05x. For uni-buffer by elementmatset/fields, the speedup ratio increases as the problem size increases. For even trivially sized problems, the speedup is roughly 100x, while for million-element problems the speedup is many times greater than 1000x. Speedup information forspecsetsis omitted as support was previously limited to multi-buffer by elementspecsets. - Modified
conduit::blueprint::mpi::mesh::generate_partition_field()so it takes a "verbose" option, which is set to 0 (off) by default. This change of behavior results in less output while still giving the user the ability to generate verbose Parmetis output. - Changed logic in
matsetverifysuch that for multi-buffer material sets, children ofvolume_fractionsmust be a subset of children of thematerial_map, not the other way around. - Removed support for the multi-buffer
matsetindirection case in which children ofvolume_fractionscould beo2mrelationsinstead of flat arrays.
Relay
- Updates to use Silo 4.12 and HDF5 2.0.0.
- Reworked HDF5 handle managment to avoid resource leaks with exceptions.
- Relaxed the restriction on float and double volume fractions for data being read from Silo when the length of the mixed arrays is 0 (i.e. no mixed zones/volume fractions are present).
- Adjusted MPI max tag logic search for cases where large tags are supported.
- Added logic to enforce Overlink requirements when writing species sets to Overlink files.
Fixed
Conduit
- Fixed a bug preventing explicit length 0 in
yamlschema. - Fixed a bug where empty objects or lists were not written correctly to
yamlschema. - Fixed a bug where the python DataType constructor did not properly accept arguments.
Blueprint
- Fixed an issue with material set conversions where uni-buffer by material matsets would incorrectly follow the same path as multi-buffer by material matsets.
- Fixed
conduit::blueprint::mesh::utils::topology::compute_mesh_info()so it does not generate a floating point exception when processing 1-d meshes under the Intel 25 compiler with C++20. - Modified all material set transforms and helper functions to make them robust to all 4 material set layout types.
- Fixed a bug with the `conduit::blueprint::...
v0.9.5
0.9.5 Release Highlights
(adapted from Conduit's Changelog )
Released 2025-09-10
Added
Blueprint
- Added support for unstructured topologies with
mixedshape type in theconduit::blueprint::mesh::partition()andconduit::blueprint::mesh::utils::topology::iterate_elements()functions. They work with mixed shape types, including polyhedra. - Added
conduit::blueprint::mesh::utils::topology::compute_mesh_info()function to compute basic information about a mesh such as extents and edge lengths. - Added
conduit::blueprint::mesh::utils::topology::Quantizerclass to compute a quantized index for a point. - Added
bent_multi_grid_amrexample mesh. This enhances thebent_multi_gridexample to allow a user to specify, in one of the domains, a nested domain with its ID and refinement ratio. This will allow example AMR meshes.
Relay
- Added
flushmethod torelay::IOHandleinterface. Semantics differ between concrete implementations. - Added
flushsupport torelay::BasicIOHandle, allows write to file system without closing the handle. - Added
flushsupport torelay::HDF5Handle, if hdf5 file handle is open, invokesH5Fflush()withH5F_SCOPE_LOCAL. - Added namescheme read and write support to the Relay Silo/Overlink Reader/Writer.
- Added support for block types or unified types to the Relay Silo/Overlink Reader/Writer.
Changed
General
- Updates to spack uberenv recipes for macOS 15.5.
Blueprint
- The
conduit::blueprint::mesh::topology::dims()function was changed so it will return the maximum topological dimension of the shape types from theshape_mapfor amixedshape. - Enhanced the
conduit::blueprint::mesh::examples::tiled()function so it can accept mesh tiles containingmixedshape types for generating 2D tiled output. - Adjacency set construction was altered so points are sorted spatially using the
Quantizerclass.
Fixed
Relay
- Fixed an issue with the Overlink Writer preventing it from correctly writing out data in the n files to m domains case.
0.9.4
0.9.4 Release Highlights
(adapted from Conduit's Changelog )
Released 2025-04-03
Added
Conduit
- Added
conduit::utils::memory_usagehelper. - Added an example demonstrating a strategy to use Umpire with Conduit's allocators.
- Added
conduit::utils::memory_usagehelper. - Added extra unit tests for native signed and unsigned Node set methods.
- Added support to read a
HOST_CONFIGenvironment variable to allowpipinstalls. When set, pip install will pass a host config file to set CMake options.
Blueprint
- Added
conduit::blueprint::<mpi>::mesh::state(),conduit::blueprint::<mpi>::mesh::cycle(), andconduit::blueprint::<mpi>::mesh::time(), utilities for getting state information from meshes. - Added
conduit.blueprint.mpi,conduit.blueprint.mpi.mesh, andconduit.blueprint.mpi.mesh.examplesmodules to the Python interface.
Relay
- Added h5z-zfp compression support to relay io hdf5 methods.
- Added
conduit::relay::<mpi>::io::blueprint::generate_root_filename(), which takes the same arguments assave_meshorwrite_meshand produces the name of the root file that would be generated by a call tosave_meshorwrite_mesh. - Added
conduit::relay::mpi::memory_usageandconduit::relay::mpi::memory_statshelpers. - Added
conduit.relay.mpi.ioandconduit.relay.mpi.io.blueprintmodules to the Python interface. - Added
v1120andv1140options to hdf5 libver settings to support 1.12 and 1.14 libver upper range.
Changed
Conduit
- Updated build system to use blt 0.7.0.
- Changed Conduit memory handler callbacks from function pointers to
std::functionobjects, allowing users more flexibility in dealing with different memory spaces. - Adjusted how imported CMake target
conduit::conduit_pythonlocates python headers for case where Conduit's python module is installed as part of the overall conduit install.
Relay
- Ported relay and blueprint zfp support to use zfp 1.0 api. Added extra meta data to zfparray blueprint protocol to support roundtrip wrapping and unwrapping with zfp 1.0 api.
- Added
conduit::relay::mpi::memory_usageandconduit::relay::mpi::memory_statshelpers.
Fixed
Relay
- Fixed an issue with the relay hdf5 detection heuristic on windows.
- Fixed a bug with path creation logic that impact reading mesh blueprint data on windows.
0.9.3
0.9.3 Release Highlights
(adapted from Conduit's Changelog )
Released 2025-01-27
Added
Conduit
- Added
conduit_yamlandconduit_base64_yamlprotocol support. - Added support to detect
.ymlfiles asyamlprotocol.
Blueprint
- Added
conduit::blueprint::mesh::examples:generatedriver functions that supports creating any blueprint example mesh with options. - Added
conduit::blueprint::mesh::examples:generate_default_optionsfunctions that provide default options values forconduit::blueprint::mesh::examples:generate. - Added python API support for
conduit::blueprint::mesh::examples:generateandconduit::blueprint::mesh::examples:generate_default_options. - Added
gyreexample mesh, which provides a simple velocity vector field. - Added
bent_multi_gridexample mesh, which provides a multi-grid that can contain enhanced and reduced connectivity.bent_multi_gridcan produce meshes like the example at http://visitusers.org/index.php?title=Representing_ghost_data#Enhanced_and_Reduced_Connectivity_Zones . - Added new utilities for material sets:
conduit::blueprint::mesh::matset::count_zones_from_matset(),conduit::blueprint::mesh::matset::is_material_in_zone(), andconduit::blueprint::mesh::matset::create_reverse_material_map(). - Added a new example,
conduit::blueprint::mesh::examples::venn_specsets(), which covers the breadth of species set representations.
Relay
- Added limited support for species sets for Silo/Overlink I/O. Multi-buffer element-dominant species sets can be written to Silo and the same can be read from Silo. Additional species set flavors will come online in a later release.
- Added support for
conduit_yamlandconduit_base64_yamlI/O cases. - Standardized the way that Relay Silo Save handles name collisions and non-idiomatic Silo names.
Changed
Conduit
- Changed the MPI CMake target used by conduit from
MPI:MPI_CXXtoMPI:MPI_Cto provide better compatibility with downstream tools. - Added vendored yyjson v0.10.0 as new and default JSON parser. yyjson has an MIT license that is compatible with Debian's Free Software Guidelines, where RapidJSON is not (https://wiki.debian.org/qa.debian.org/jsonevil). You can still use RapidJSON by setting the new CMake option
ENABLE_YYJSONtoFALSE. - The
DataType::equals()method now correctly takes striding into account.
Blueprint
- Certain algorithms that use MPI tags had their tag values lowered since some MPI implementations do not support large values.
- Changed the name of
conduit::blueprint::mesh::matset::to_sparse_by_element()toconduit::blueprint::mesh::matset::to_uni_buffer_by_element()to be more consistent with similar function names. - Expanded the ways species sets can be represented in Blueprint to include sparse by element and sparse by material representations, much like material sets.
- Updated
conduit.relay.io.blueprint.{load_mesh|read_mesh}to support reading and writing Silo files when Conduit is built with Silo support. - Updated
conduit.relay.io.blueprint.{load_mesh|read_mesh}to use improved logic to auto detect the format (hdf5 , silo, yaml, or json) of mesh blueprint root files. Added silo logic, and fixed prior logic that could confuse yaml as json files due to format specifiers in partition pattern strings.
Relay
- User-supplied warning and error handlers are suspended during
conduit::relay::communicate_using_schema::execute()so exceptions will be thrown properly when there is an MPI error. The handlers are restored before the execute method returns. conduit::relay::communicate_using_schema::execute()flushes logs as they are generated, in case of error. This is mostly to facilitate internal debugging.- Changes were made to how Relay queries the upper limit for MPI tags to work around problems on some systems.
- Rewrote
conduit::blueprint::mesh::specset::to_silo()to allow it to support specsets that do not use all the materials in the associated matset.
0.9.2
0.9.2 Release Highlights
(adapted from Conduit's Changelog )
Released 2024-05-21
Added
Relay
- Added support for Blueprint + Silo round trip for axis units and labels.
- Added support for reading Silo column major data as strided structured Blueprint data.
- Added support for reading a much wider set of Silo meshes, beyond multimeshes, multivars, etc.
Changed
Conduit
- Removed cmake use of distutils for python introspection.
Blueprint
- Fixed partitioner so it reverses vertex order as needed in polyhedral face definitions when extracting mesh elements.
- Changed
conduit::blueprint::mesh::partition_map_back()function so it will attempt to reuse existing field memory when mapping fields back. This permitspartition_map_back()to send data from a partitioned mesh into the original mesh where fields were provided from a host code usingNode::set_external(). - Changed
generate_sidesto be robust to the case where no fields exist.
Relay
- Changed
conduit::relay::mpi::communicate_using_schemato avoid an invalid tag MPI error message on some MPI distributions.
Fixed
Relay
- Fixed Relay I/O HDF5 DataSpace handle leak.
0.9.1
0.9.1 Release Highlights
(adapted from Conduit's Changelog)
Changed
Conduit
- Relaxed strict header check for C++14 back to C++11. A downstream consumer of Conduit has C++11 hardcoded into their build system and patching for related deployments is intractable.
- Restore logic to avoid fused mpi c++ and fortran flags that can undermine blt's mpi smoke test.
Blueprint
- Fixed missing build dependency relationship with the python conduit blueprint table examples module.
- Fixed partitioner so it does not duplicate faces when combining polyhedral meshes.
Added
Relay
- Added polygonal support to Blueprint Silo I/O.
0.9.0
0.9.0 Release Highlights
(adapted from Conduit's Changelog)
Added
General
- Added
conduit_json_externalprotocol. Creates a json schema representation of a node that includes all addresses that the node is pointing to. Parsing this schema will create a node equivalent toset_external(). - Added a
conduit_generate_dataexecutable that can generate datasets using thetiled()andbraid()functions and save the datasets to files. - Added helpers that support enhanced debugging of Conduit Node objects in several debuggers.
- Added the ability to set values via a DataAccessor and DataAccessor to string methods.
- Added explicit set methods to DataArray, and the ability to set DataArray values from a DataAccessor.
Relay
- Added extensive Mesh Blueprint Silo I/O support including, including options for Overlink Silo conventions. This capability allows Silo files to be used as a close peer to the Blueprint HDF5 I/O options.
- Added ability to read N-dimensional hyperslabs from HDF5 leaf arrays into linear memory arrays.
- Added
conduit.relay.io.siloto the Python interface.
Blueprint
- Added a
conduit::blueprint::mesh::examples::tiled()function that can generate meshes by repeating a tiled pattern. - Added a
conduit::blueprint::mpi::mesh::utils::adjset::compare_pointwise()function that can compare adjsets for multi-domain meshes in parallel. The function is used to diagnose adjsets with points that are out of order on either side of the boundary. The comparison is done point by point within each group and it checks to ensure that the points reference the same spatial location. - Added a
conduit::blueprint::mesh::utils::reorder()function that can accept a vector of element ids and create a reordered topology. The points and coordinates are re-ordered according to their first use in the new element ordering. - Added a
conduit::blueprint::mesh::utils::topology::spatial_ordering()function that takes a topology and computes centroids for each element, passes them through a kdtree, and returns the new element ordering. The new ordering can be used with thereorder()function. - Added a
conduit::blueprint::mesh::utils::topology::hilbert_ordering()function that computes a new order for a topology's elements based on their centroids and a Hilbert curve. The new ordering can be used with thereorder()function. - Added a
conduit::blueprint::mesh::utils::slice_array()function that can slice Conduit nodes that contain arrays. A new node with the same type is created but it contains only the selected indices. - Added a
conduit::blueprint::mesh::utils::slice_field()function. It is likeslice_array()but it can handle the mcarray protocol. This functionality was generalized from the partitioner. - Added a
conduit::blueprint::mesh::utils::topology::unstructured::rewrite_connectivity()function that will rewrite a topology's connectivity in terms of a different coordset. The PointQuery is used internally to search for equivalent coordinates in the new coordset. - Added a
conduit::blueprint::mesh::utils::copy_fields()function that helps copy fields from one fields node to another. - Added a
conduit::blueprint::mesh::utils::convert()function that converts a list of nodes to a desired data type. - Added a
conduit::blueprint::mesh::generate_boundary_partition_field()function that can take a topology and a partition field and generate a field for a related boundary topology. This is helpful when partitioning a boundary topology in the same manner as its parent topology. - Added
blueprint.mesh.examples.strided_structuredto the blueprint python module. - Added
conduit::blueprint::mesh::utils::adjset::to_topo()function to make new point mesh topologies for each group of an adjacency set. This permits each group to be visualized as a set of points in VisIt. The groups for each side of the domain interface can be compared since they are separate point meshes. - Added
conduit::blueprint::mesh::utils::adjset::is_canonical()function to check whether the group names in an adjacency set are canonical. - Added more Mesh Blueprint docs.
Changed
General
- Conduit now requires C++14 and CMake 3.21 or newer.
- Improved the efficiency of json parsing logic.
- The
conduit_relay_io_convertprogram was enhanced so it can read/write Blueprint root files by passing "blueprint" for the read or write protocols. - The
conduit_adjset_validateprogram now writes a point mesh for each adjset groups if the-outputargument is supplied. - Updated to BLT 0.6.1
- Updated Python logic hybrid module build logic to use pip and setuptools. Removed use of distutils.
Blueprint
- The
conduit::blueprint::mpi::mesh::partition_map_back()function was enhanced so it accepts a "field_prefix" value in its options. The prefix is used when looking for theglobal_vertex_idsfield, which could have been created with a prefix by the same option in theconduit::blueprint::mpi::mesh::generate_partition_field()function. - The
conduit::blueprint::mesh::utils::ShapeTypeclass was enhanced so it can take topologies other than unstructured. - The
conduit::blueprint::mesh::utils::topology::unstructured::points()function was changed so it takes an optional argument that can turn off point uniqueness and sorting so the method can return points for an element as they appear in the connectivity, for non-polyhedral shapes. - Removed deprecated use of
npts_z !=0for 2D shape types inconduit::blueprint::mesh::examples::{braid,basic,grid}. These cases now issue aCONDUIT_ERROR. - Removed
volume_dependententry inspecsets. Species ratios and mass fractions are innately volume independent.
Relay
- Relay Mesh Blueprint I/O methods (
conduit::relay::io::blueprint::{save,write}_mesh()) now default tohdf5protocol if Conduit is built withhdf5support.
Fixed
General
- The Fortran
nodeprocedures for fetching integer pointers are now associated with the correct routines.
Blueprint
- The
conduit::blueprint::mesh::partition()function no longer issues an error when it receives a "maxshare" adjset. - The partitioner is better about outputting a "material_map" node for matsets. The "material_map" node is optional for some varieties of matset but they can also help the
conduit::blueprint::mesh::matset::to_silo()function generate the right material numbers when a domain does not contain all materials. - The
conduit::Node::swap()andconduit::Node::move()functions no longer cause node names to disappear. - The
conduit::blueprint::mesh::utils::kdtreecould erroneously return that points were not found when one of the coordset dimensions had a very narrow range of values. This could happen with planar 2D geometries embedded in 3D, such as inside aMatchQueryduring adjacency set creation. - The
conduit::blueprint::mpi::mesh::generate_partition_field()function was not treating polyhedral topologies correctly, leading to unusable partitioning fields. - The point merging algorithm in the Blueprint partitioner was corrected so it should no longer produce occasional duplicate points when merging coordsets.
0.8.8
0.8.8 Release Highlights
(adapted from Conduit's Changelog)
Added
General
- Added Python 3 Stable ABI compatibility (Py_LIMITED_API) build support. Enabled by default when building against Python 3.11 or newer.
- Added
conduit_adjset_validatetool which can read root files for a multiple domain dataset and check whether the adjsets (vertex or element associations) in it are correct. Any errors are printed to the console.
Blueprint
- Added
PointQueryclass that can query points in a topology and return whether the query points hit a point in that topology's coordset. There are serial and parallel versions of this class. In parallel, the query domain may exist on a different MPI rank and the result will be communicated to the calling rank. - Added
MatchQueryclass that can be used to ask remote domains whether they contain an entity given using a set of point ids in the current rank's topology. The query builds up a query topology that it sends to the neighboring rank (if the query domain is not owned by the current MPI rank) and the topology is matched against the remote topology by matching points in the remote coordset. The results are returned to the calling MPI rank and can be retrieved using the query. - Added
TopologyBuilderclass that can be used to build up a new topology subset from a source topology. The new topology shape does not have to match the original topology shape. A new coordset is created based on the points that are referenced from the original topology. - Added
topology::searchfunction that allows one topology to be searched for in another topology. The topologies must have the same shape type and their respective coordsets can have points in different orders. The shapes are matched using coordinate matching. - Added
adjset::validatefunction which tests adjacency sets for correctness and flags any errors in a Conduit node. There are serial and parallel versions of the function. The functions apply PointQuery for vertex association adjsets and MatchQuery for element association adjsets. Each domain's adjset will make queries to its neighboring domains as to whether the vertex or element of interest exists in the neighbor's topology. - Added
utils::kdtreeclass that can be used to accelerate point lookups for coordsets. - Field selections for the
conduit::blueprint::mesh::partition()function support a newdestination_ranksproperty that contains a list of integers that map domain numbers to MPI ranks. This property tells the partitioner the ranks where it should place each domain. If the property is not supplied, the partitioner is free to place domains as before.
Fixed
General
- Added explicit control for OpenMP Features with CMake
ENABLE_OPENMPoption (default = OFF). AddsCONDUIT_USE_OPENMPdefine toconduit_config.h. Guards all use of OpenMP withCONDUIT_USE_OPENMP. Prior to these guards, downstream users could enable OpenMP and macros could evaluate inconsistently with how Conduit was built causing OpenMP related linking errors.
Blueprint
- Functions such as
generate_cornersorgenerate_facesthat accept adjsets now include a filtering stage to improve adjset quality. This filtering stage usesPointQueryandMatchQueryto ensure that entities referenced in a remote domain actually exist in the neighboring domain.
0.8.7
0.8.7 Release Highlights
(adapted from Conduit's Changelog)
Added
General
- Added public default and copy constructor to DataAccessor. Enables more flexibility with initializing DataAccessors from Nodes.
- Added Node.name(), Node.path(), Schema.name(), and Schema.path() to Python API.
- Added Node.as_index_t_ptr()
- Added
conduit::executionnamespace, which containsfor_all()andsort()functions. - Added DataType support to the Fortran API
Blueprint
- Added
conduit::blueprint::mpi::mesh::distribute, which enables sending mesh domains to arbitrary MPI ranks (suppo - Added
conduit::blueprint::mesh::utils::NDIndexclass. Instantiate with shape, offset, and stride in array or conduit::Node. Get flatindex for N-D coordinates. - Added
conduit::blueprint::o2mrelation::O2MIndexclass. Instantiate with O2M relation Node; get flatindex for a given one_index and many_index. Alternative to Java-style iterator. - Added
conduit::blueprint::examples::mesh::rz_cylinderfunction that generates example 2D cylindrical (RZ) meshes.
Fixed
General
- Fixed a logic issue undermining C++ type mapping when using CMake 3.26.
Blueprint
- Performance improvements to Mesh Blueprint topology metadata, used by
generate_points,generate_sides, etc. The class was rewritten and the old one was moved toconduit::blueprint::mesh::utils::reference::TopologyMetadata. The new implementation is faster, often about 6-20x depending on options. - Performance improvements to O2M Iterators.
- Performance improvements to functions that underpin centroid generation.
Relay
- Fixed MPI baton logic error in
conduit::relay::io::blueprint::save_mesh()that caused MPI tasks to serialize writes to files in the N domains to M files case. Fix restores parallel write performance. This bug did not impact cases where where N domains were written to N files (N to N) or N domains were written to a single file (N to 1).
Changed
General
- Changed diff of string types to respect null terminated strings instead of described length
- Improved diff_compatible of string types to look for substring match, to implement expected compatible semantics.
Blueprint
- Changed the recommended axis order for 2D cylindrical meshes to be
Zas the first axis, andRas the second. This choice aligns with expected visualization cases whereZvaries with the horizontal axis andRvaries with the vertical axis.
0.8.6
0.8.6 Release Highlights
(adapted from Conduit's Changelog)
Added
General
- Added C++
int DataType::sizeof_index_t()and Cint conduit_datatype_sizeof_index_t()methods to provide a stable ABI to determine configured size (number of bytes) of Conduit's index_t type.
Fixed
General
- Build fixes for Conda Forge (mpi -fallow-argument-mismatch clang protection)
Relay
- Fixed a directory creation bug in
relay::io::blueprint::{save_mesh|write_mesh}that occurred with sparse topologies with no domains on rank 0. - Fixed a bug in
relay::io::blueprint::{save_mesh|write_mesh}with thesuffix=cycleoption that could cause int max to erroneously be used as the cycle number in the output directory.