-
Notifications
You must be signed in to change notification settings - Fork 68
Prototype CGNS blueprint mesh relay output #1364
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
@mlohry awesome that you are working on this! The IOHandle provides generic I/O vs relay blueprint mesh read/write which is mesh focused. IOHandle is used to implement many parts of the mesh read/write but that is for convenience. I don't think we need to have CGNS work through the IOHandle. I think the best analogue for CGNS is our Silo support. IOHandle does not support Silo, since Silo operates at the mesh level of abstraction. We have Silo logic in the https://github.com/LLNL/conduit/blob/develop/src/libs/relay/conduit_relay_io_silo.cpp, which provide You can place you CGNS logic into the equivalent cgns source file with a For how silo is connected to the main write/read methods. When a silo file is detected on read -- the main blueprint read method calls the related silo methods:
When asked to write a silo file, the main blueprint write method calls the related silo methods:
That way everything works via:
And the python equivalents (we don't need silo specific methods in python) I think we can follow this same strategy. For the CI - I will get CGNS added to the build_conduit script. I have a few things in flight with that script right now, and I'll be on travel next week so it might take a bit. Let me know if you have more questions or if I can clarify more. |
Thanks @cyrush I'll take a look at the silo implementation. |
@mlohry yes, I can setup HDF5 to build with mpi support. |
@@ -143,6 +143,9 @@ CMake Options for Third-party Library Paths | |||
* - ``ZLIB_DIR`` | |||
- Path to a Zlib install (optional). (Needed for HDF5 support) | |||
|
|||
* - ``CGNS_DIR`` | |||
- Path to a CGNS install (optional). Controls if CGNS I/O support is built into *conduit_relay*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also requires HDF5 support.
@cyrush re previous discussions, my usual build config for CGNS has these cmake options:
the |
Not for merge in the current state
This PR is an initial take at providing CGNS file export functionality alongside the existing HDF5 functionality, with the end goal to also enable ascent extracts to CGNS in parallel. In this PR's state the
relay::io::blueprint::write_mesh(data, "all_tet", "cgns");
with the braid test mesh produces a valid CGNS file in serial, but reading is not implemented to complete the test. Two initial questions:write_mesh
, a call is first made toIOHandle::HandleInterface::write(const Node &node, const std::string &path, const Node &opts)
wherenode
contains the raw mesh and solution data. After that a call is made towrite(const Node &node, const Node &opts)
, where nownode
appears to only contain metadata, not the mesh data. In particular the first call has no filename information -- is the intent for that call to cache the node data somewhere? Only in the subsequent call is thefile_pattern
given -- should I be writing temp files in the first call and then renaming them in the second?@cyrush for notification