sandialabs / seacas

The Sandia Engineering Analysis Code Access System (SEACAS) is a suite of preprocessing, postprocessing, translation, and utility applications supporting finite element analysis software using the Exodus database file format.
Other
131 stars 79 forks source link

Dynamic topology region file opening with group I/O #469

Closed tokusanya closed 1 month ago

tokusanya commented 1 month ago

Initial workflow design to support dynamic topology through Region file handling and the use of NETCDF file groups. The file handling is an automatic mechanism that can support the multi-file style output of Sierra Fmwk or single file concatenation using groups.

A topology modification observer that can be registered on the region provides a callback mechanism for setting up the Region mesh when a topology change occurs.

Unit tests are included to show how use cases drive the development

tokusanya commented 1 month ago

I think that overall it looks very good. There are a few nitpicky comments and or suggestions.

It would be nice to have a short document/comments describing how an application would use this with a few different use cases, but that is probably planned after the initial code is in place.

Yes, the idea is to write a few doc tests in STK that show how to interface with this. Sierra Fmwk handled all the logic of creating and managing the multi-file case and that was what was moved over into IOSS. However, since STK does not subscribe to Fmwk, the aim is to have it rely on this new behavior in IOSS to replicate the previous Fmwk behavior.

A few followon suggestions:

* documentation

* modify io_shell to be able to take a set of -s000X files and create the singel grouped file.

* modify io_shell to do the reverse of above -- take a grouped file with topology changes and output the -s000X files.

* (The above two make it easier for the users to try it out)

That sounds like an excellent suggestion .. I want to continue working with you to get the API settled down first before implementing this.

This may alrady be in the code, but it looks like the DynamicTopology will write either -s000X sets of files, or a singel grouped file. Does it also manage both kinds on read? That is, if a user opens up a database and that database has groups in it, then they can discover the groups and what steps corresons to which groups, get min/max time, step counts, ...

This is precisely what one of the unit tests demonstrates TEST(TestDynamicRead, single_file_simple_topology_modification) I can add functionality that tests for the existence of groups and automatically opens that group on initial mesh read (similar to what happens in the test). That test however queries information on a per-group basis where the group is known and does not currently support automatically querying quantities across all groups. That would be something to work on.

Does the same hold for the case where they open up a database that has the base and then one or more -s000X files -- can they manage that as a single database, or do they have to manually query each one?

For the multi-file case, I would have to again rely on the previous workflow that exists in Fmwk to support operations that span all the -s000X files but that is definitely do-able.

Again, looks good and I think there will be lots of requests for enhancements from teh applications/users.

Cool .. phew :D

gsjaardema commented 1 month ago

Looks good. A few things maybe left, but those can be added as you like...