This post serves as a brief introduction and documentation for RGG session.
- RGG stands for reactor geometry generator. This session enables the creation of detailed large and complicated reactor models (geometry/mesh) for different types of physics simulations. A lattice hierarchy-based approach is used to create these reactor models from pin, duct to assembly and core.
- RGG session rendering utilizes the glyphing functionality in VTK to handle millions of elements. See Rendering part for details.
- To create a nuclear core, a list of smtk operators are provided for users. See Operators section for details.
- So far RGG session supports meshkit, pyarc and proteus simulation. See Simulation section for details.
- It’s a sucessor for standalone RGG application. For user convenience, it also comes with a superbuild.
- Related post bring rgg to CMB6.
- Testing data repo is here.
- The base elements in RGG session are pin, duct, assembly and core. They are serialized and deserialized through JSON. RGG session supports either a hex or a rect core. At construction time, user needs to specify the geometry type, z origin and height.
- Pin is a base nuclear element which consists of several geometries(cylinder or frustum). A user can specify the sub pieces along the height and layer materials along the radius. It’s stored as a string property in a smtk auxiliary geometry.
- Duct is a base nuclear element which consists of several geometries depending on whether it’s a hex or rect core. A user can specify the segments along the height(line extension) where each piece can have its own layer materials along the radius(Annular extension)… It’s stored as a string property in a smtk auxiliary geometry.
- Assembly is a container which holds one kind of duct and various kinds of pins.The pins are placed in a rectangular grid or a hex grid. A unique label shall be provided. It’s stored as a string property in a smtk group.
- Core is a container which holds various kinds of assemblies.The assemblies are placed in a rectangular grid or a hex grid. It’s stored as a string property in a smtk group.
Core generation ops
- EditPin: Create or edit a nuclear pin. A unique label shall be provided.
- EditDuct: Create or edit a nuclear duct.
- EditAssembly: Create or edit a nuclear assembly. It provides a layout to specify pin placements.
- EditCore：Create or edit a nuclear core. It provides a layout to specify assembly placements.
- Delete: Delete a rgg entity.
- AddMaterial: Specify a custom material.
- RemoveMaterial: Remove a custom material.
- ExportInp: Export the core according inp file format.
- Generate_mesh: launch Meshkit meshing jobs.
- Read: Write a core according to native smtk format.
- Write: Read a core according to native smtk format.
- ReadRXFFile: Read the native old rgg application file into smtk.
- RGG rendering relies on smtk. It utilizes the AuxiliaryGeometryExtension visitor paradigm so that all rgg entities are handles by rggAuxiliaryGeometryExtension class. So far pin and duct have their own geometry generation logic.
Referring to assembly and core, they are rendered as glyphs of prototype geometries which are generated by rggAuxiliaryGeometryExtension. The benefit of using prototype geometries is using fewer vtkActors which is a huge boost to rendering performance. See details in post Rendering pipeline refactor. See details about glyphing in EditAssembly&&EditPin operators who are using the same OperationHelper::glyph* helper functions.
proteus - Ask TJ
- Export RGG core according to son file format.
- Export RGG core according to inp file format and mesh the core via Cubit. See details in MeshKit workflow.
- Add more convenient functions for entity layouts such as fill the ring/ fill the row or fill the diagonal, etc.
- Test simulation work flows with CMB6.
- Add more GUI tests.