LLNL / conduit

Simplified Data Exchange for HPC Simulations
https://software.llnl.gov/conduit/
Other
212 stars 65 forks source link

Documentation: a mixed topology example would be useful #927

Closed YvanFournier closed 2 years ago

YvanFournier commented 2 years ago

Hello,

As of v0.82, is there an example for mixed topology meshes ?

The documentation (https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#mixed-shape-toplogies) is minimal, with no example, so it is not clear whether specific names are needed.

Printing a Conduit node generated with braid ("quads_and_tris" for example) seems to use a different logic, not mentioned in the documentation.

And grep-ing through the Conduit source codes, examples section, I see mentions indicating the mixed topologies are not supported yet.

Looking at the code for the verify method in conduit_blueprint_mesh.cpp, I did manage to generate a mesh with mixed sections which seem to pass "verify" (in the process of generating Catalyst output, which I still have to test in that context)... But id did take looking at the code and not just the documentation.

cyrush commented 2 years ago

@YvanFournier, here is some info:

The current unstructured support really only allows multiple topologies (one per shape type) to support this use case. That's not ideal, b/c while they can share the coordinates - this forces you to have multiple fields (one connected to each shape type topology)

You can use the polygonal or polyhedral mesh types now for cases like this.

The plan for future mixed topology support for unstructured is to use the same "one to many" constructs that we use to support polygonal and polyhedral meshes. We haven't prioritized the unstructured extensions, but they are something we want to support.

The difference between the current polytopal support and the future extensions to unstructured, will be that it will be a bit easier to specify known shapes (like tet or hex`) vs the arbitrary cases that polytopal supports.

The older stream based examples are prototypes that we haven't widely adopted.

YvanFournier commented 2 years ago

@cyrush Thanks for the info.

Ok, I can convert everything to polyhedra when I have more than one cell type (or prisms or pyramids), and not bother with mixed for now. I would have had to do this for prisms and pyramids anyways. Though it will probably lead to higher memory usage (x3) for the time being.

cyrush commented 2 years ago

@YvanFournier -- we now have support for mixed topologies, and there is an example that shows both polyhedra and standard elements:

https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#mixed-topologies-with-shapes-shape-map

cyrush commented 2 years ago

braid examples also create data of this type when you pass mixed_2d (2d topology) or mixed (3d topology) as mesh_type argument.

I feel this is now complete, so I will close.