Catalyst is integrated into powerful simulation codes. WarpX is an electromagnetics and particle code capable of simulation at the Exascale, and Catalyst is speeding up time to insight.

Catalyst 2.0.0 has been released! This is the first release of the Catalyst API as a standalone project. Catalyst is an API developed for simulations to communicate in situ with analysis and visualization tools.

Release Features

New Conduit Version

Update to conduit 0.8.7 internally. This brings in a few more APIs:

conduit_datatype_sizeof_index_t
conduit_node_move
conduit_node_reset
conduit_node_swap

External Conduit Support

An external Conduit is now supported via the CATALYST_WITH_EXTERNAL_CONDUIT CMake option. Additionally, there is a CATALYST_RELOCATABLE_INSTALL option to support embedding the build-time Conduit path into the install tree to ease usage of the package at the cost of not being able to be moved to any other path reliably.

Note that at least Conduit 0.8.6 is required to provide all of the symbols required.

Conduit Implementation Improvements

The state of Catalyst’s Conduit being provided by Catalyst or by an external build is now part of the implementation structure. Implementations built against a Catalyst with a different state of Conduit are not compatible with each other. The new catalyst_status_error_conduit_mismatch status is returned if a Conduit mismatch is detected.

Conduit Imported Targets

Catalyst no longer exposes the internal Conduit targets used to manage its vendored copy to exports. This requires CMake 3.26 in order to work properly.

Passing Conduit Nodes to Python

The function PyCatalystConduit_Node_Wrap can now be used to pass a conduit_node from C/C++ to Python via the CPython interface. If Catalyst is built without Python wrappings the function will just return nullptr.

New Language Bindings

Python bindings

The Catalyst API is now wrapped in Python. This makes available the Python bindings of conduit. All functions live under the catalyst Python module. Input parameters can be created using conduit’s Python API. To compile the Python interface, use CATALYST_WRAP_PYTHON=ON when compiling Catalyst.

Fortran bindings

The Catalyst API is wrapped in Fortran. Simulation developers can now access Catalyst in Fortran. To compile the Fortran interface use CATALYST_WRAP_FORTRAN=ON when compiling Catalyst.

Included Conduit API Improvements

Added Node::number_of_elements Method

The conduit_cpp::Node::number_of_elements method was missing and is now available.

Mangled Conduit Functions Improvements

The conduit_node_fetch_node_data_ptr function had been improperly mangled as catalyst_conduit_node_fetch_path_data_ptr. The function is now properly mangled and the improper mangled name is provided for compatibility with older Catalyst versions.

Resources

To learn more about Catalyst head to the library documentation. If you encounter any issues or have questions regarding the use of the Catalyst you can reach out in the in-situ support section of the ParaView discourse page.

Leave a Reply