I’m starting to look into upgrading the Catalyst support on the code_saturne CDF code to Catalyst-2, and there are one or 2 things I can’t mange to find in the documentation and examples:
I recall reading something about how an MPI communicator info can be passed to Catalyst-2 or a Conduit node, but can’t find it again. I don’t see anything about this grepping the examples. In most cases, we use MPI_COMM_WORLD, but in some cases (involving code coupling), we may use another communicator, so I assume being able to control this is important (in Catalyst “legacy”, we do control this).
I see that ParaView uses its own Conduit C++ wrappers, and calls the Conduit C interface but not the c++ one. And the headers installed with Catalyst only include the C headers. Is this by design, or due to code maturity issues ? I was thinking that using Conduit, I could also easily add support in the future for other libraries (such as Sensei or Ascent) by sharing part of the code, but I guess for this I would need to use the C API ? Nothing urgent here, just trying to future-proof the code.
This is because we want to ensure that what is exposed is ABI compatible. Making the core Conduit C++ ABI compatible is not easy and it will be too hard to ensure that it stays compatible. Instead, we limit everything to the C wrappers and then rewrap those in C++ so that the ABI surface is far more easily controlled.
Communicator can be passed as catalyst/mpi_comm, see ref. Note, you need to pass a fortran handle so use MPI_Comm_c2f to generate a fortran handle from a C handle.