0.6.0
0.6.0 Release Highlights
(adapted from Conduit's Changelog)
Added
General
- Added support for children with names that include
/
. Since slashes are part of Conduit's hierarchical path mechanism, you must use explicit methods (add_child(), child(), etc) to create and access children with these types of names. These names are also supported in all basic i/o cases (JSON, YAML, Conduit Binary). - Added Node::child and Schema::child methods, which provide access to existing children by name.
- Added Node::fetch_existing and Schema::fetch_existing methods, which provide access to existing paths or error when given a bad path.
- Added Node::add_child() and Node::remove_child() to support direct operations and cases where names have
/
s. - Added a set of conduit::utils::log::remove_* filtering functions, which process conduit log/info nodes and strip out the requested information (useful for focusing the often verbose output in log/info nodes).
- Added to_string() and to_string_default() methods to Node, Schema, DataType, and DataArray. These methods alias either to_yaml() or to_json(). Long term yaml will be preferred over json.
- Added helper script (scripts/regen_docs_outputs.py) that regenerates all example outputs used Conduit's Sphinx docs.
- Added to_yaml() and to_yaml_stream methods() to Schema, DataType, and DataArray.
- Added support for C++-style iterators on node children. You can now do
for (Node &node : node.children()) {}
. You can also donode.children.begin()
andnode.children.end()
to work with the iterators directly.
Relay
- Added an open mode option to Relay IOHandle. See Relay IOHandle docs (https://llnl-conduit.readthedocs.io/en/latest/relay_io.html#relay-i-o-handle-interface) for more details.
- Added the conduit.relay.mpi Python module to support Relay MPI in Python.
- Added support to write and read Conduit lists to HDF5 files. Since HDF5 Groups do not support unnamed indexed children, each list child is written using a string name that represents its index and a special attribute is written to the HDF5 group to mark the list case. On read, the special attribute is used to detect and read this style of group back into a Conduit list.
- Added preliminary support to read Sidre Datastore-style HDF5 using Relay IOHandle, those grouped with a root file.
- Added
conduit::relay::io::blueprint::read_mesh
functions, were pulled in from Ascent's Blueprint import logic. - Added
conduit::relay::mpi::wait
andconduit::relay::mpi::wait_all
functions. These functions consolidate the logic supporting bothisend
andirecv
requests.wait_all
supports cases where both sends and receives were posted, which is a common for non-trivial point-to-point communication use cases.
Blueprint
- Added support for sparse one-to-many relationships with the new
blueprint::o2mrelation
protocol. See theblueprint::o2mrelation::examples::uniform
example for details. - Added sparse one-to-many, uni-buffer, and material-dominant specification support to Material sets. See the Material sets documentation
(https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#material-sets) for more details. - Added support for Adjacency sets for Structured Mesh Topologies. See the
blueprint::mesh::examples::adjset_uniform
example. - Added
blueprint::mesh::examples::julia_nestsets_simple
andblueprint::mesh::examples::julia_nestsets_complex
examples represent Julia set fractals using patch-based AMR meshes and the Mesh Blueprint Nesting Set protocol. See the Julia AMR Blueprint docs
(https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#julia-amr-examples) for more details. - Added
blueprint::mesh::examples::venn
example that demonstrates different ways to encode volume fraction based multi-material fields. See the Venn Blueprint docs
(https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#venn) for more details. - Added
blueprint::mesh::number_of_domains
property method for trees that conform to the mesh blueprint. - Added MPI mesh blueprint methods,
blueprint::mpi::mesh::verify
andblueprint::mpi::mesh::number_of_domains
(available in theconduit_blueprint_mpi
library) - Added
blueprint::mpi::mesh::examples::braid_uniform_multi_domain
andblueprint::mpi::mesh::examples::spiral_round_robin
distributed-memory mesh examples to theconduit_blueprint_mpi
library. - Added
state/path
to the Mesh Blueprint index, needed for consumers to know the proper path to read extended state info (such asdomain_id
)
Fixed
General
- Updated to newer BLT to resolve BLT/FindMPI issues with rpath linking commands when using OpenMPI.
- Fixed internal object name string for the Python Iterator object. It used to report
Schema
, which triggered both puzzling and concerned emotions. - Fixed a bug with
Node.set
in the Python API that undermined setting NumPy arrays with sliced views and complex striding. General slices should now work withset
. No changes to theset_external
case, which requires 1-D effective striding and throws an exception when more complex strides are presented. - Fixed a bug with auto detect of protocol for Node.load
- Fixed bugs with auto detect of protocol for Node.load and Node.save in the Python interface
Relay
- Use H5F_ACC_RDONLY in relay::io::is_hdf5_file to avoid errors when checking files that already have open HDF5 handles.
- Fixed compatibility check for empty Nodes against HDF5 files with existing paths
Changed
General
- Conduit's main git branch was renamed from
master
todevelop
. To allow time for folks to migrate, themaster
branch is active but frozen and will be removed during the0.7.0
release. - We recommend a C++11 (or newer) compiler, support for older C++ standards is deprecated and will be removed in a future release.
- Node::fetch_child and Schema::fetch_child are deprecated in favor of the more clearly named Node::fetch_existing and Schema::fetch_existing. fetch_child variants still exist, but will be removed in a future release.
- Python str() methods for Node, Schema, and DataType now use their new to_string() methods.
- DataArray::to_json(std::ostring &) is deprecated in favor DataArray::to_json_stream. to_json(std::ostring &) will be removed in a future release.
- Schema::to_json and Schema::save variants with detailed (bool) arg are deprecated. The detailed arg was never used. These methods will be removed in a future release.
- Node::print() now prints yaml instead of json.
- The string return variants of
about
methods now return yaml strings instead of json strings. - Sphinx Docs code examples and outputs are now included using start-after and end-before style includes.
- Schema to_json() and to_json_stream() methods were expanded to support indent, depth, pad and end-of-element args.
- In Python, conduit.Node() repr now returns the YAML string representation of the Node. Perviously verbose
conduit_json
was used, which was overwhelming. - conduit.about() now reports the git tag if found, and
version
was changed to add git sha and status (dirty) info to avoid confusion between release and development installs.
Relay
- Provide more context when a Conduit Node cannot be written to a HDF5 file because it is incompatible with the existing HDF5 tree. Error messages now provide the full path and details about the incompatibility.
conduit::relay::io_blueprint::save
functions are deprecated in favor ofconduit::relay::io::blueprint::write_mesh
conduit::relay::io::blueprint::write_mesh
functions were pulled in from Ascent's Blueprint export logic.conduit_relay_io_mpi
lib now depends onconduit_relay_io
. Due to this change, a single build supports either ADIOS serial (no-mpi) or ADIOS with MPI support, but not both. If conduit is configured with MPI support, ADIOS MPI is used.- The functions
conduit::relay::mpi::wait_send
andconduit::relay::mpi::wait_recv
now useconduit::relay::mpi::wait
. The functionswait_send
andwait_recv
exist to preserve the old API, there is no benefit to use them overwait
. - The functions
conduit::relay::mpi::wait_all_send
andconduit::relay::mpi::wait_all_recv
now useconduit::relay::mpi::wait_all
. The functionswait_all_send
andwait_all_recv
exist to preserve the old API, there is no benefit to use them overwait_all
.
Blueprint
- Refactored the Polygonal and Polyhedral mesh blueprint specification to leverage one-to-many concepts and to allow more zero-copy use cases.
- The
conduit_blueprint_mpi
library now depends onconduit_relay_mpi
. - The optional Mesh Blueprint structured topology logical element origin is now specified using
{i,j,k}
instead of{i0,j0,k0}
.