From 2d23e9b2e2f3ff7e130ddf34322dd1e6921bb950 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 13 Nov 2023 12:23:06 -0500 Subject: [PATCH 01/23] First pass at bypassing mesh generation in RGMB --- .../meshgenerators/AssemblyMeshGenerator.h | 3 ++ .../meshgenerators/CoreMeshGenerator.h | 4 ++ .../ReactorGeometryMeshBuilderBase.h | 11 ++++ .../meshgenerators/ReactorMeshParams.h | 3 ++ .../meshgenerators/AssemblyMeshGenerator.C | 50 +++++++++++++------ .../src/meshgenerators/CoreMeshGenerator.C | 43 ++++++++++------ .../src/meshgenerators/PinMeshGenerator.C | 38 +++++++++----- .../ReactorGeometryMeshBuilderBase.C | 7 +++ .../src/meshgenerators/ReactorMeshParams.C | 5 +- 9 files changed, 121 insertions(+), 43 deletions(-) diff --git a/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h b/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h index 6778783f89cf..4a9bc2f68447 100644 --- a/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h @@ -46,6 +46,9 @@ class AssemblyMeshGenerator : public ReactorGeometryMeshBuilderBase ///The number of divisions in the meshes of the ducts const std::vector _duct_intervals; + ///Temporary container for mesh pointers pointing to input meshes + std::vector *> _mesh_ptrs; + ///Vector used to set the "region_id" extra-element integer of the assembly background elements std::vector _background_region_id; diff --git a/modules/reactor/include/meshgenerators/CoreMeshGenerator.h b/modules/reactor/include/meshgenerators/CoreMeshGenerator.h index 9009221f9d34..e5ea2b92559b 100644 --- a/modules/reactor/include/meshgenerators/CoreMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/CoreMeshGenerator.h @@ -63,6 +63,10 @@ class CoreMeshGenerator : public ReactorGeometryMeshBuilderBase const unsigned int _periphery_num_layers; /// Desired (maximum) triangle area const Real _desired_area; + + ///Temporary container for mesh pointers pointing to input meshes + std::vector *> _mesh_ptrs; + /// Desired (local) triangle area as a function of (x,y) std::string _desired_area_func; diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 7d52ec79ba89..7a4e08660a95 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -53,6 +53,8 @@ static const std::string duct_region_ids = "duct_region_ids"; static const std::string duct_block_names = "duct_block_names"; static const std::string peripheral_ring_region_id = "peripheral_ring_region_id"; +// Quantities related to bypassing mesh generation +static const std::string bypass_meshgen = "bypass_meshgen"; } /** @@ -187,6 +189,15 @@ class ReactorGeometryMeshBuilderBase : public MeshGenerator std::string elem_block_name, SubdomainID & next_free_id); + /** + * Calls addMeshSubGenerator to add mesh sub generator defined by RGMB + * NOTE: addMeshSubGenerator only gets called if bypass_mesh_generation has not been set to true in ReactorMeshParams + * @param type of mesh generator + * @param name of mesh generator + * @param input parameters associated with mesh generator + */ + void callMeshSubgenerator(std::string mg_type, std::string mg_name, InputParameters & params); + ///The ReactorMeshParams object that is storing the reactor global information for this reactor geometry mesh MeshGeneratorName _reactor_params; /// specify the depletion id is generated at which reactor generation level diff --git a/modules/reactor/include/meshgenerators/ReactorMeshParams.h b/modules/reactor/include/meshgenerators/ReactorMeshParams.h index 35e8b69faa0e..3e84172c98fd 100644 --- a/modules/reactor/include/meshgenerators/ReactorMeshParams.h +++ b/modules/reactor/include/meshgenerators/ReactorMeshParams.h @@ -34,6 +34,9 @@ class ReactorMeshParams : public MeshGenerator /// The the flat-to-flat size of assemblies in the reactor. const Real _assembly_pitch; + /// Whether or not to bypass mesh generation step in RGMB calls + const bool _bypass_meshgen; + ///The heights of the axial regions. std::vector _axial_regions; diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 40b46a99df93..5cd8d0d43400 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -106,8 +106,6 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) : std::vector>()), _extrude(getParam("extrude")) { - declareMeshesForSub("inputs"); - MeshGeneratorName reactor_params = MeshGeneratorName(getMeshProperty(RGMB::reactor_params_name, _inputs[0])); // Check that MG name for reactor params is consistent across all assemblies @@ -119,6 +117,13 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) // Initialize ReactorMeshParams object stored in pin input initializeReactorMeshParams(reactor_params); + // Declare dependency of inputs to sub generator calls. If mesh generation + // should be bypassed, then store the input meshes to free later + if (!getReactorParam(RGMB::bypass_meshgen)) + declareMeshesForSub("inputs"); + else + _mesh_ptrs = getMeshes("inputs"); + _geom_type = getReactorParam(RGMB::mesh_geometry); _mesh_dimensions = getReactorParam(RGMB::mesh_dimensions); @@ -311,16 +316,20 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) params.set("external_boundary_id") = _assembly_boundary_id; params.set("external_boundary_name") = _assembly_boundary_name; - addMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); + callMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator - copyMeshProperty("is_control_drum_meta", name() + "_pattern"); - copyMeshProperty>("control_drum_positions", name() + "_pattern"); - copyMeshProperty>("control_drum_angles", name() + "_pattern"); - copyMeshProperty>>("control_drums_azimuthal_meta", - name() + "_pattern"); - copyMeshProperty("position_file_name", name() + "_pattern"); - copyMeshProperty("pattern_pitch_meta", name() + "_pattern"); + // Only relevant if we are generating RGMB mesh and not bypassing mesh generation + if (!getReactorParam(RGMB::bypass_meshgen)) + { + copyMeshProperty("is_control_drum_meta", name() + "_pattern"); + copyMeshProperty>("control_drum_positions", name() + "_pattern"); + copyMeshProperty>("control_drum_angles", name() + "_pattern"); + copyMeshProperty>>("control_drums_azimuthal_meta", + name() + "_pattern"); + copyMeshProperty("position_file_name", name() + "_pattern"); + copyMeshProperty("pattern_pitch_meta", name() + "_pattern"); + } } std::string build_mesh_name = name() + "_delbds"; @@ -345,7 +354,7 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) params.set("input") = name() + "_pattern"; params.set>("boundary_names") = boundaries_to_delete; - addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); } for (auto pinMG : _inputs) @@ -379,7 +388,7 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) params.set("bottom_boundary") = bottom_boundary; params.set("top_boundary") = top_boundary; - addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); } { @@ -391,7 +400,7 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator params.set>("new_boundary") = {"top", "bottom"}; - addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); } { @@ -409,12 +418,14 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) params.set("id_name") = "plane_id"; build_mesh_name = name() + "_extrudedIDs"; - addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); } } generateMetadata(); - _build_mesh = &getMeshByName(build_mesh_name); + // Store final mesh subgenerator if we are not bypassing mesh generation + if (!getReactorParam(RGMB::bypass_meshgen)) + _build_mesh = &getMeshByName(build_mesh_name); } void @@ -467,6 +478,15 @@ AssemblyMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // Return default mesh if option to bypass mesh generation is chosen and free all input meshes + if (getReactorParam(RGMB::bypass_meshgen)) + { + for (const auto & mesh_ptr : _mesh_ptrs) + mesh_ptr->reset(); + auto mesh = buildMeshBaseObject(); + return dynamic_pointer_cast(mesh); + } + // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage if (hasMeshProperty("pattern_pitch_meta", name() + "_pattern")) diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index 63d3a8033afe..af3b6ff918bf 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -117,10 +117,6 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) // represent an empty position declareNullMeshName(_empty_key); - // Declare that all of the meshes in the "inputs" parameter are to be used by - // a sub mesh generator - declareMeshesForSub("inputs"); - // periphery meshing input checking if (_mesh_periphery) { @@ -232,6 +228,14 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) // Initialize ReactorMeshParams object stored in pin input initializeReactorMeshParams(reactor_params); + // Declare that all of the meshes in the "inputs" parameter are to be used by + // a sub mesh generator. If mesh generation should be bypassed, then store + // the input meshes to free later + if (!getReactorParam(RGMB::bypass_meshgen)) + declareMeshesForSub("inputs"); + else + _mesh_ptrs = getMeshes("inputs"); + _geom_type = getReactorParam(RGMB::mesh_geometry); _mesh_dimensions = getReactorParam(RGMB::mesh_dimensions); @@ -285,7 +289,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set("hexagon_size") = getReactorParam(RGMB::assembly_pitch) / 2.0; params.set>("block_id") = {(UINT16_MAX / 2) - 1}; - addMeshSubgenerator("SimpleHexagonGenerator", std::string(_empty_key), params); + callMeshSubgenerator("SimpleHexagonGenerator", std::string(_empty_key), params); } else { @@ -313,7 +317,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set>("background_block_ids") = std::vector{(UINT16_MAX / 2) - 1}; - addMeshSubgenerator(adaptive_mg_name, std::string(_empty_key), params); + callMeshSubgenerator(adaptive_mg_name, std::string(_empty_key), params); } } } @@ -341,7 +345,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set("external_boundary_name") = "outer_core"; params.set("rotate_angle") = 0.0; - addMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); + callMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); } } if (_empty_pos) @@ -352,7 +356,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set("input") = name() + "_pattern"; params.set("new_boundary") = "outer_core"; - addMeshSubgenerator("BlockDeletionGenerator", name() + "_deleted", params); + callMeshSubgenerator("BlockDeletionGenerator", name() + "_deleted", params); } std::string build_mesh_name; @@ -382,7 +386,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set>("boundary_names") = boundaries_to_delete; build_mesh_name = name() + "_delbds"; - addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); } for (auto assembly : _inputs) @@ -476,7 +480,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) // finish periphery input build_mesh_name = name() + "_periphery"; - addMeshSubgenerator(periphery_mg_name, build_mesh_name, params); + callMeshSubgenerator(periphery_mg_name, build_mesh_name, params); } if (_extrude && _mesh_dimensions == 3) @@ -499,7 +503,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set("bottom_boundary") = bottom_boundary; params.set("top_boundary") = top_boundary; - addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); } { @@ -511,7 +515,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator params.set>("new_boundary") = {"top", "bottom"}; - addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); } { @@ -530,12 +534,14 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) params.set("id_name") = "plane_id"; build_mesh_name = name() + "_extrudedIDs"; - addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); } } generateMetadata(); - _build_mesh = &getMeshByName(build_mesh_name); + // Store final mesh subgenerator if we are not bypassing mesh generation + if (!getReactorParam(RGMB::bypass_meshgen)) + _build_mesh = &getMeshByName(build_mesh_name); } void @@ -608,6 +614,15 @@ CoreMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // Return default mesh if option to bypass mesh generation is chosen and free all input meshes + if (getReactorParam(RGMB::bypass_meshgen)) + { + for (const auto & mesh_ptr : _mesh_ptrs) + mesh_ptr->reset(); + auto mesh = buildMeshBaseObject(); + return dynamic_pointer_cast(mesh); + } + // This generate() method will be called once the subgenerators that we depend on are // called. This is where we reassign subdomain ids/names in case they were merged // when stitching assemblies into the core. This is also where we set region_id extra diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 1634f50a31b2..920b947faf60 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -211,7 +211,7 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) params.set>("block_name") = {block_name}; build_mesh_name = name() + "_2D"; - addMeshSubgenerator("SimpleHexagonGenerator", build_mesh_name, params); + callMeshSubgenerator("SimpleHexagonGenerator", build_mesh_name, params); } else { @@ -349,7 +349,7 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) params.set>("duct_intervals") = duct_intervals; } - addMeshSubgenerator("PolygonConcentricCircleMeshGenerator", name() + "_2D", params); + callMeshSubgenerator("PolygonConcentricCircleMeshGenerator", name() + "_2D", params); } // Remove extra sidesets created by PolygonConcentricCircleMeshGenerator @@ -366,16 +366,20 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) params.set>("boundary_names") = boundaries_to_delete; build_mesh_name = name() + "_del_bds"; - addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); } } // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator - copyMeshProperty("pitch_meta", name() + "_2D"); - copyMeshProperty>("num_sectors_per_side_meta", name() + "_2D"); - copyMeshProperty("max_radius_meta", name() + "_2D"); - copyMeshProperty("background_intervals_meta", name() + "_2D"); - copyMeshProperty("node_id_background_meta", name() + "_2D"); + // Only relevant if we are generating RGMB mesh and not bypassing mesh generation + if (!getReactorParam(RGMB::bypass_meshgen)) + { + copyMeshProperty("pitch_meta", name() + "_2D"); + copyMeshProperty>("num_sectors_per_side_meta", name() + "_2D"); + copyMeshProperty("max_radius_meta", name() + "_2D"); + copyMeshProperty("background_intervals_meta", name() + "_2D"); + copyMeshProperty("node_id_background_meta", name() + "_2D"); + } if (_is_assembly) declareMeshProperty("pattern_pitch_meta", getReactorParam(RGMB::assembly_pitch)); else if (hasMeshProperty("pattern_pitch_meta", name() + "_2D")) @@ -397,7 +401,7 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) params.set>("heights") = axial_boundaries; params.set("bottom_boundary") = bottom_boundary; params.set("top_boundary") = top_boundary; - addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); } { @@ -408,8 +412,7 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) std::to_string(top_boundary), std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator params.set>("new_boundary") = {"top", "bottom"}; - - addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); } { @@ -427,13 +430,15 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) params.set("id_name") = "plane_id"; build_mesh_name = name() + "_extrudedIDs"; - addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); } } generateMetadata(); - _build_mesh = &getMeshByName(build_mesh_name); + // Store final mesh subgenerator if we are not bypassing mesh generation + if (!getReactorParam(RGMB::bypass_meshgen)) + _build_mesh = &getMeshByName(build_mesh_name); } void @@ -518,6 +523,13 @@ PinMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // Return default mesh if option to bypass mesh generation is chosen + if (getReactorParam(RGMB::bypass_meshgen)) + { + auto mesh = buildMeshBaseObject(); + return dynamic_pointer_cast(mesh); + } + // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage const auto max_radius_meta = getMeshProperty("max_radius_meta", name() + "_2D"); diff --git a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C index 933eab59e68e..fa025684e94a 100644 --- a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C +++ b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C @@ -107,6 +107,13 @@ ReactorGeometryMeshBuilderBase::updateElementBlockNameId( } } +void +ReactorGeometryMeshBuilderBase::callMeshSubgenerator(std::string mg_type, std::string mg_name, InputParameters & params) +{ + if (!ReactorGeometryMeshBuilderBase::getReactorParam(RGMB::bypass_meshgen)) + addMeshSubgenerator(mg_type, mg_name, params); +} + void ReactorGeometryMeshBuilderBase::printReactorMetadata(const std::string geometry_type, const std::string mg_name, diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index ac453878e5b0..a137994ac342 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -43,6 +43,7 @@ ReactorMeshParams::validParams() params.addParam>( "axial_mesh_intervals", "Number of elements in the Z direction for each axial region"); + params.addParam("bypass_mesh_generation", false, "Whether or not to bypass mesh generation when running RGMB workflow"); params.addClassDescription("This ReactorMeshParams object acts as storage for persistent " "information about the reactor geometry."); return params; @@ -52,7 +53,8 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) : MeshGenerator(parameters), _dim(getParam("dim")), _geom(getParam("geom")), - _assembly_pitch(getParam("assembly_pitch")) + _assembly_pitch(getParam("assembly_pitch")), + _bypass_meshgen(getParam("bypass_mesh_generation")) { if (int(_dim) == 2) { @@ -78,6 +80,7 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::mesh_geometry, std::string(_geom)); this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); this->declareMeshProperty("name_id_map", _name_id_map); + this->declareMeshProperty(RGMB::bypass_meshgen, _bypass_meshgen); if (isParamValid("top_boundary_id")) { From f3c205709742e50e41927f88a039371aff93c999 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 13 Nov 2023 19:41:45 -0500 Subject: [PATCH 02/23] Add unit tests --- .../meshgenerators/core_mesh_generator/tests | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 93b4ba4dd9a6..1b6e991f0d31 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -16,6 +16,16 @@ cli_args = "Mesh/cmg/show_rgmb_metadata=true" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] + [square_metadata_bypass_meshgen] + requirement = 'The system shall print out reactor-related metadata to console output for a full 3D square core mesh with 3 pin types and 2 assembly types and bypass all mesh subgenerator calls' + type = 'RunApp' + input = 'core_square.i' + cli_args = "Mesh/cmg/show_rgmb_metadata=true + Mesh/rmp/bypass_mesh_generation=true + Outputs/out/output_extra_element_ids=false + Outputs/out/extra_element_ids_to_output='' --mesh-only" + expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' + [] [core_shared_assembly_ids] requirement = 'The system shall throw an error if a core is composed of different assemblies with a shared assembly type id' type = 'RunException' @@ -95,6 +105,16 @@ Outputs/file_base=core_hex_in" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] + [hex_metadata_bypass_meshgen] + requirement = 'The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with empty lattice positions and explicit block name specification and bypass all mesh subgenerator calls' + type = 'RunApp' + input = 'core_hex.i' + cli_args = "Mesh/cmg/show_rgmb_metadata=true + Mesh/rmp/bypass_mesh_generation=true + Outputs/out/output_extra_element_ids=false + Outputs/out/extra_element_ids_to_output='' --mesh-only" + expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' + [] [single_assembly_square_core] requirement = 'The system shall generate a full 3D square core mesh with 2 single assembly types' type = 'Exodiff' @@ -169,6 +189,16 @@ cli_args = "Mesh/cmg/show_rgmb_metadata=true" expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] + [hex_metadata_2d_bypass_meshgen] + requirement = 'The system shall print out reactor-related metadata to console output for a 2D hexagonal core mesh and bypass all mesh subgenerator calls' + type = 'RunApp' + input = 'core_hex_2d.i' + cli_args = "Mesh/cmg/show_rgmb_metadata=true + Mesh/rmp/bypass_mesh_generation=true + Outputs/out/output_extra_element_ids=false + Outputs/out/extra_element_ids_to_output='' --mesh-only" + expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' + [] [hex_metadata_extra_assemblies] requirement = 'The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with extra assemblies not part of core lattice' type = 'RunApp' From a84b8dd394fcecc903c979d75977ef75c17ea7c7 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 13 Nov 2023 19:47:46 -0500 Subject: [PATCH 03/23] Update documentation, refs #25239 --- .../content/source/meshgenerators/AssemblyMeshGenerator.md | 2 ++ .../doc/content/source/meshgenerators/CoreMeshGenerator.md | 2 ++ .../doc/content/source/meshgenerators/PinMeshGenerator.md | 2 ++ .../doc/content/source/meshgenerators/ReactorMeshParams.md | 2 ++ .../include/meshgenerators/ReactorGeometryMeshBuilderBase.h | 4 +++- .../src/meshgenerators/ReactorGeometryMeshBuilderBase.C | 4 +++- modules/reactor/src/meshgenerators/ReactorMeshParams.C | 4 +++- 7 files changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index 9f0889d4414c..4e405f9b35f2 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -67,6 +67,8 @@ For each of the pins listed in `pin_names`, the pin-level metadata is also displ In addition, the value of the `reactor_params_name` metadata can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. + ## Example Syntax !listing modules/reactor/test/tests/meshgenerators/assembly_mesh_generator/assembly_square.i block=Mesh diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index 7b8a08e6b656..f1b3f08f37e2 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -52,6 +52,8 @@ For meshes where a core periphery is defined, the following metadata is also def In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. + ## Example Syntax !listing modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square.i block=Mesh diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 49cc821dae7f..4691721d829e 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -52,6 +52,8 @@ At the pin level, the following metadata is defined on the pin mesh: In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. + ## Example Syntax !listing modules/reactor/test/tests/meshgenerators/pin_mesh_generator/pin_square.i block=Mesh diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index 71dc11ac77aa..7c8b34188d52 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -15,6 +15,8 @@ The `ReactorMeshParams` object stores certain global mesh information as metadat - `axial_mesh_sizes`: Length of each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_regions). Only relevant for 3-D meshes. - `axial_mesh_intervals`: Number of elements in the axial dimension for each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_mesh_intervals). Only relevant for 3-D meshes. +In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. + ## Example Syntax !listing modules/reactor/test/tests/meshgenerators/pin_mesh_generator/pin_square.i block=Mesh/rmp diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 7a4e08660a95..08dc8b1b5f07 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -10,6 +10,7 @@ #pragma once #include "MeshGenerator.h" +#include "CastUniquePointer.h" #include "libmesh/elem.h" namespace RGMB @@ -191,7 +192,8 @@ class ReactorGeometryMeshBuilderBase : public MeshGenerator /** * Calls addMeshSubGenerator to add mesh sub generator defined by RGMB - * NOTE: addMeshSubGenerator only gets called if bypass_mesh_generation has not been set to true in ReactorMeshParams + * NOTE: addMeshSubGenerator only gets called if bypass_mesh_generation has not been set to true + * in ReactorMeshParams * @param type of mesh generator * @param name of mesh generator * @param input parameters associated with mesh generator diff --git a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C index fa025684e94a..e372bd7e1760 100644 --- a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C +++ b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C @@ -108,7 +108,9 @@ ReactorGeometryMeshBuilderBase::updateElementBlockNameId( } void -ReactorGeometryMeshBuilderBase::callMeshSubgenerator(std::string mg_type, std::string mg_name, InputParameters & params) +ReactorGeometryMeshBuilderBase::callMeshSubgenerator(std::string mg_type, + std::string mg_name, + InputParameters & params) { if (!ReactorGeometryMeshBuilderBase::getReactorParam(RGMB::bypass_meshgen)) addMeshSubgenerator(mg_type, mg_name, params); diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index a137994ac342..421a8dbede48 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -43,7 +43,9 @@ ReactorMeshParams::validParams() params.addParam>( "axial_mesh_intervals", "Number of elements in the Z direction for each axial region"); - params.addParam("bypass_mesh_generation", false, "Whether or not to bypass mesh generation when running RGMB workflow"); + params.addParam("bypass_mesh_generation", + false, + "Whether or not to bypass mesh generation when running RGMB workflow"); params.addClassDescription("This ReactorMeshParams object acts as storage for persistent " "information about the reactor geometry."); return params; From 055bfde823188ab2edc95bc8004766aba3e29ccc Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Wed, 15 Nov 2023 19:36:10 -0500 Subject: [PATCH 04/23] Update logic for bypassing mesh generation to skip all steps related to addMeshSubgenerator calls --- .../ReactorGeometryMeshBuilderBase.h | 10 - .../meshgenerators/AssemblyMeshGenerator.C | 275 +++++------ .../src/meshgenerators/CoreMeshGenerator.C | 455 +++++++++--------- .../src/meshgenerators/PinMeshGenerator.C | 392 +++++++-------- .../ReactorGeometryMeshBuilderBase.C | 9 - 5 files changed, 563 insertions(+), 578 deletions(-) diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 08dc8b1b5f07..2af331c45fd1 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -190,16 +190,6 @@ class ReactorGeometryMeshBuilderBase : public MeshGenerator std::string elem_block_name, SubdomainID & next_free_id); - /** - * Calls addMeshSubGenerator to add mesh sub generator defined by RGMB - * NOTE: addMeshSubGenerator only gets called if bypass_mesh_generation has not been set to true - * in ReactorMeshParams - * @param type of mesh generator - * @param name of mesh generator - * @param input parameters associated with mesh generator - */ - void callMeshSubgenerator(std::string mg_type, std::string mg_name, InputParameters & params); - ///The ReactorMeshParams object that is storing the reactor global information for this reactor geometry mesh MeshGeneratorName _reactor_params; /// specify the depletion id is generated at which reactor generation level diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 5cd8d0d43400..2042e65267d7 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -117,13 +117,6 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) // Initialize ReactorMeshParams object stored in pin input initializeReactorMeshParams(reactor_params); - // Declare dependency of inputs to sub generator calls. If mesh generation - // should be bypassed, then store the input meshes to free later - if (!getReactorParam(RGMB::bypass_meshgen)) - declareMeshesForSub("inputs"); - else - _mesh_ptrs = getMeshes("inputs"); - _geom_type = getReactorParam(RGMB::mesh_geometry); _mesh_dimensions = getReactorParam(RGMB::mesh_dimensions); @@ -250,78 +243,81 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) else _has_duct_block_names = false; - _assembly_boundary_id = 2000 + _assembly_type; - _assembly_boundary_name = "outer_assembly_" + std::to_string(_assembly_type); - - // Call PatternedHexMeshGenerator or PatternedCartesianMeshGenerator to stitch assembly + if (!getReactorParam(RGMB::bypass_meshgen)) { - const auto patterned_mg_name = - _geom_type == "Hex" ? "PatternedHexMeshGenerator" : "PatternedCartesianMeshGenerator"; - auto params = _app.getFactory().getValidParams(patterned_mg_name); + // Declare dependency of inputs to sub generator calls. If mesh generation + declareMeshesForSub("inputs"); - if (_geom_type == "Hex") - { - params.set("hexagon_size") = getReactorParam(RGMB::assembly_pitch) / 2.0; - params.set("hexagon_size_style") = "apothem"; - } - else + _assembly_boundary_id = 2000 + _assembly_type; + _assembly_boundary_name = "outer_assembly_" + std::to_string(_assembly_type); + + // Call PatternedHexMeshGenerator or PatternedCartesianMeshGenerator to stitch assembly { - if (_background_region_id.size() == 0) - params.set("pattern_boundary") = "none"; + const auto patterned_mg_name = + _geom_type == "Hex" ? "PatternedHexMeshGenerator" : "PatternedCartesianMeshGenerator"; + auto params = _app.getFactory().getValidParams(patterned_mg_name); + + if (_geom_type == "Hex") + { + params.set("hexagon_size") = getReactorParam(RGMB::assembly_pitch) / 2.0; + params.set("hexagon_size_style") = "apothem"; + } else { - params.set("pattern_boundary") = "expanded"; - params.set("square_size") = getReactorParam(RGMB::assembly_pitch); - params.set("uniform_mesh_on_sides") = true; + if (_background_region_id.size() == 0) + params.set("pattern_boundary") = "none"; + else + { + params.set("pattern_boundary") = "expanded"; + params.set("square_size") = getReactorParam(RGMB::assembly_pitch); + params.set("uniform_mesh_on_sides") = true; + } } - } - params.set>("id_name") = {"pin_id"}; - params.set>("assign_type") = { - MooseEnum("cell", "cell")}; // give elems IDs relative to position in assembly - params.set>("inputs") = _inputs; - params.set>>("pattern") = _pattern; - params.set("create_outward_interface_boundaries") = false; - - unsigned int assembly_block_id_start = 20000; - if (_background_intervals > 0) - { - params.set("background_intervals") = _background_intervals; - // Initial block id used to define peripheral regions of assembly - const auto background_block_name = "RGMB_ASSEMBLY" + std::to_string(_assembly_type) + "_R0"; - const auto background_block_id = assembly_block_id_start; - params.set("background_block_id") = background_block_id; - params.set("background_block_name") = background_block_name; - } + params.set>("id_name") = {"pin_id"}; + params.set>("assign_type") = { + MooseEnum("cell", "cell")}; // give elems IDs relative to position in assembly + params.set>("inputs") = _inputs; + params.set>>("pattern") = _pattern; + params.set("create_outward_interface_boundaries") = false; - if (_duct_sizes.size() > 0) - { - std::vector duct_block_ids; - std::vector duct_block_names; - for (const auto duct_it : index_range(_duct_region_ids[0])) + unsigned int assembly_block_id_start = 20000; + if (_background_intervals > 0) { - const auto duct_block_name = - "RGMB_ASSEMBLY" + std::to_string(_assembly_type) + "_R" + std::to_string(duct_it + 1); - const auto duct_block_id = assembly_block_id_start + duct_it + 1; - duct_block_ids.push_back(duct_block_id); - duct_block_names.push_back(duct_block_name); + params.set("background_intervals") = _background_intervals; + // Initial block id used to define peripheral regions of assembly + + const auto background_block_name = "RGMB_ASSEMBLY" + std::to_string(_assembly_type) + "_R0"; + const auto background_block_id = assembly_block_id_start; + params.set("background_block_id") = background_block_id; + params.set("background_block_name") = background_block_name; } - params.set>("duct_sizes") = _duct_sizes; - params.set>("duct_block_ids") = duct_block_ids; - params.set>("duct_block_names") = duct_block_names; - params.set>("duct_intervals") = _duct_intervals; - } + if (_duct_sizes.size() > 0) + { + std::vector duct_block_ids; + std::vector duct_block_names; + for (const auto duct_it : index_range(_duct_region_ids[0])) + { + const auto duct_block_name = + "RGMB_ASSEMBLY" + std::to_string(_assembly_type) + "_R" + std::to_string(duct_it + 1); + const auto duct_block_id = assembly_block_id_start + duct_it + 1; + duct_block_ids.push_back(duct_block_id); + duct_block_names.push_back(duct_block_name); + } + + params.set>("duct_sizes") = _duct_sizes; + params.set>("duct_block_ids") = duct_block_ids; + params.set>("duct_block_names") = duct_block_names; + params.set>("duct_intervals") = _duct_intervals; + } - params.set("external_boundary_id") = _assembly_boundary_id; - params.set("external_boundary_name") = _assembly_boundary_name; + params.set("external_boundary_id") = _assembly_boundary_id; + params.set("external_boundary_name") = _assembly_boundary_name; - callMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); + addMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); - // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator - // Only relevant if we are generating RGMB mesh and not bypassing mesh generation - if (!getReactorParam(RGMB::bypass_meshgen)) - { + // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator copyMeshProperty("is_control_drum_meta", name() + "_pattern"); copyMeshProperty>("control_drum_positions", name() + "_pattern"); copyMeshProperty>("control_drum_angles", name() + "_pattern"); @@ -330,102 +326,107 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) copyMeshProperty("position_file_name", name() + "_pattern"); copyMeshProperty("pattern_pitch_meta", name() + "_pattern"); } - } - std::string build_mesh_name = name() + "_delbds"; + std::string build_mesh_name = name() + "_delbds"; - // Remove outer pin sidesets created by PolygonConcentricCircleMeshGenerator - { - // Get outer boundaries of all constituent pins based on pin_type - std::vector boundaries_to_delete = {}; - for (const auto & pattern_x : _pattern) + // Remove outer pin sidesets created by PolygonConcentricCircleMeshGenerator { - for (const auto & pattern_idx : pattern_x) + // Get outer boundaries of all constituent pins based on pin_type + std::vector boundaries_to_delete = {}; + for (const auto & pattern_x : _pattern) { - const auto pin_name = _inputs[pattern_idx]; - const auto pin_id = getMeshProperty(RGMB::pin_type, pin_name); - const BoundaryName boundary_name = "outer_pin_" + std::to_string(pin_id); - if (!std::count(boundaries_to_delete.begin(), boundaries_to_delete.end(), boundary_name)) - boundaries_to_delete.push_back(boundary_name); + for (const auto & pattern_idx : pattern_x) + { + const auto pin_name = _inputs[pattern_idx]; + const auto pin_id = getMeshProperty(RGMB::pin_type, pin_name); + const BoundaryName boundary_name = "outer_pin_" + std::to_string(pin_id); + if (!std::count(boundaries_to_delete.begin(), boundaries_to_delete.end(), boundary_name)) + boundaries_to_delete.push_back(boundary_name); + } } - } - auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); + auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); - params.set("input") = name() + "_pattern"; - params.set>("boundary_names") = boundaries_to_delete; + params.set("input") = name() + "_pattern"; + params.set>("boundary_names") = boundaries_to_delete; - callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); - } + addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + } - for (auto pinMG : _inputs) - { - std::map>> region_id_map = - getMeshProperty>>>( - RGMB::pin_region_ids, pinMG); - _pin_region_id_map.insert( - std::pair>>( - region_id_map.begin()->first, region_id_map.begin()->second)); - subdomain_id_type pin_type_id = getMeshProperty(RGMB::pin_type, pinMG); - std::vector> pin_block_names = - getMeshProperty>>(RGMB::pin_block_names, pinMG); - _pin_block_name_map.insert(std::pair>>( - pin_type_id, pin_block_names)); - } + for (auto pinMG : _inputs) + { + std::map>> region_id_map = + getMeshProperty>>>( + RGMB::pin_region_ids, pinMG); + _pin_region_id_map.insert( + std::pair>>( + region_id_map.begin()->first, region_id_map.begin()->second)); + subdomain_id_type pin_type_id = getMeshProperty(RGMB::pin_type, pinMG); + std::vector> pin_block_names = + getMeshProperty>>(RGMB::pin_block_names, pinMG); + _pin_block_name_map.insert( + std::pair>>(pin_type_id, + pin_block_names)); + } - if (_extrude && _mesh_dimensions == 3) - { - std::vector axial_boundaries = getReactorParam>(RGMB::axial_mesh_sizes); - const auto top_boundary = getReactorParam(RGMB::top_boundary_id); - const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); + if (_extrude && _mesh_dimensions == 3) { - auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); + std::vector axial_boundaries = + getReactorParam>(RGMB::axial_mesh_sizes); + const auto top_boundary = getReactorParam(RGMB::top_boundary_id); + const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); + { + auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); - params.set("input") = name() + "_delbds"; - params.set("direction") = Point(0, 0, 1); - params.set>("num_layers") = - getReactorParam>(RGMB::axial_mesh_intervals); - params.set>("heights") = axial_boundaries; - params.set("bottom_boundary") = bottom_boundary; - params.set("top_boundary") = top_boundary; + params.set("input") = name() + "_delbds"; + params.set("direction") = Point(0, 0, 1); + params.set>("num_layers") = + getReactorParam>(RGMB::axial_mesh_intervals); + params.set>("heights") = axial_boundaries; + params.set("bottom_boundary") = bottom_boundary; + params.set("top_boundary") = top_boundary; - callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); - } + addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + } - { - auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); + { + auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); - params.set("input") = name() + "_extruded"; - params.set>("old_boundary") = { - std::to_string(top_boundary), - std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator - params.set>("new_boundary") = {"top", "bottom"}; + params.set("input") = name() + "_extruded"; + params.set>("old_boundary") = { + std::to_string(top_boundary), + std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator + params.set>("new_boundary") = {"top", "bottom"}; - callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); - } + addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + } - { - auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); + { + auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); - params.set("input") = name() + "_change_plane_name"; + params.set("input") = name() + "_change_plane_name"; - std::vector plane_heights{0}; - for (Real z : axial_boundaries) - plane_heights.push_back(z + plane_heights.back()); + std::vector plane_heights{0}; + for (Real z : axial_boundaries) + plane_heights.push_back(z + plane_heights.back()); - params.set>("plane_coordinates") = plane_heights; + params.set>("plane_coordinates") = plane_heights; - std::string plane_id_name = "plane_id"; - params.set("id_name") = "plane_id"; + std::string plane_id_name = "plane_id"; + params.set("id_name") = "plane_id"; - build_mesh_name = name() + "_extrudedIDs"; - callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + build_mesh_name = name() + "_extrudedIDs"; + addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + } } - } - generateMetadata(); - // Store final mesh subgenerator if we are not bypassing mesh generation - if (!getReactorParam(RGMB::bypass_meshgen)) + // Store final mesh subgenerator _build_mesh = &getMeshByName(build_mesh_name); + } + // If mesh generation should be bypassed, then store the input meshes to free later + else + _mesh_ptrs = getMeshes("inputs"); + + generateMetadata(); } void diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index af3b6ff918bf..d3383fa4176c 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -151,7 +151,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) } } // using PRMG-specific options with PTMG - if (_periphery_meshgenerator == "triangle") + else if (_periphery_meshgenerator == "triangle") { if (parameters.isParamSetByUser("periphery_num_layers")) { @@ -159,6 +159,9 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) "periphery_num_layers cannot be used with PTMG periphery mesher."); } } + else + paramError("periphery_generator", + "Provided periphery meshgenerator has not been implemented."); } MeshGeneratorName first_nondummy_assembly = ""; @@ -228,14 +231,6 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) // Initialize ReactorMeshParams object stored in pin input initializeReactorMeshParams(reactor_params); - // Declare that all of the meshes in the "inputs" parameter are to be used by - // a sub mesh generator. If mesh generation should be bypassed, then store - // the input meshes to free later - if (!getReactorParam(RGMB::bypass_meshgen)) - declareMeshesForSub("inputs"); - else - _mesh_ptrs = getMeshes("inputs"); - _geom_type = getReactorParam(RGMB::mesh_geometry); _mesh_dimensions = getReactorParam(RGMB::mesh_dimensions); @@ -276,272 +271,280 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) } } - // Stitch assemblies into a hexagonal / Cartesian core lattice + if (!getReactorParam(RGMB::bypass_meshgen)) { - // create a dummy assembly that is a renamed version of one of the inputs - if (make_empty) + // Declare that all of the meshes in the "inputs" parameter are to be used by + // a sub mesh generator. + declareMeshesForSub("inputs"); + + // Stitch assemblies into a hexagonal / Cartesian core lattice { + // create a dummy assembly that is a renamed version of one of the inputs + if (make_empty) { - if (assembly_homogenization) { - auto params = _app.getFactory().getValidParams("SimpleHexagonGenerator"); - - params.set("hexagon_size") = getReactorParam(RGMB::assembly_pitch) / 2.0; - params.set>("block_id") = {(UINT16_MAX / 2) - 1}; + if (assembly_homogenization) + { + auto params = _app.getFactory().getValidParams("SimpleHexagonGenerator"); - callMeshSubgenerator("SimpleHexagonGenerator", std::string(_empty_key), params); - } - else - { - const auto adaptive_mg_name = - _geom_type == "Hex" ? "HexagonConcentricCircleAdaptiveBoundaryMeshGenerator" - : "CartesianConcentricCircleAdaptiveBoundaryMeshGenerator"; - auto params = _app.getFactory().getValidParams(adaptive_mg_name); + params.set("hexagon_size") = getReactorParam(RGMB::assembly_pitch) / 2.0; + params.set>("block_id") = {(UINT16_MAX / 2) - 1}; - const auto assembly_pitch = getReactorParam(RGMB::assembly_pitch); - if (_geom_type == "Hex") - { - params.set("hexagon_size") = assembly_pitch / 2.0; - params.set>("num_sectors_per_side") = - std::vector(6, 2); + addMeshSubgenerator("SimpleHexagonGenerator", std::string(_empty_key), params); } else { - params.set("square_size") = assembly_pitch; - params.set>("num_sectors_per_side") = - std::vector(4, 2); + const auto adaptive_mg_name = + _geom_type == "Hex" ? "HexagonConcentricCircleAdaptiveBoundaryMeshGenerator" + : "CartesianConcentricCircleAdaptiveBoundaryMeshGenerator"; + auto params = _app.getFactory().getValidParams(adaptive_mg_name); + + const auto assembly_pitch = getReactorParam(RGMB::assembly_pitch); + if (_geom_type == "Hex") + { + params.set("hexagon_size") = assembly_pitch / 2.0; + params.set>("num_sectors_per_side") = + std::vector(6, 2); + } + else + { + params.set("square_size") = assembly_pitch; + params.set>("num_sectors_per_side") = + std::vector(4, 2); + } + params.set>("sides_to_adapt") = std::vector{0}; + params.set>("meshes_to_adapt_to") = + std::vector{first_nondummy_assembly}; + params.set>("background_block_ids") = + std::vector{(UINT16_MAX / 2) - 1}; + + addMeshSubgenerator(adaptive_mg_name, std::string(_empty_key), params); } - params.set>("sides_to_adapt") = std::vector{0}; - params.set>("meshes_to_adapt_to") = - std::vector{first_nondummy_assembly}; - params.set>("background_block_ids") = - std::vector{(UINT16_MAX / 2) - 1}; - - callMeshSubgenerator(adaptive_mg_name, std::string(_empty_key), params); } } - } - { - const auto patterned_mg_name = - _geom_type == "Hex" ? "PatternedHexMeshGenerator" : "PatternedCartesianMeshGenerator"; - auto params = _app.getFactory().getValidParams(patterned_mg_name); - - params.set>("id_name") = {"assembly_id"}; - params.set>("assign_type") = { - MooseEnum("cell", "cell")}; // give elems IDs relative to position in assembly - params.set>("inputs") = _inputs; - params.set>>("pattern") = _pattern; - params.set("pattern_boundary") = "none"; - params.set("generate_core_metadata") = !pin_as_assembly; - params.set("create_outward_interface_boundaries") = false; - if (make_empty) { - params.set>("exclude_id") = - std::vector{_empty_key}; - } + const auto patterned_mg_name = + _geom_type == "Hex" ? "PatternedHexMeshGenerator" : "PatternedCartesianMeshGenerator"; + auto params = _app.getFactory().getValidParams(patterned_mg_name); + + params.set>("id_name") = {"assembly_id"}; + params.set>("assign_type") = { + MooseEnum("cell", "cell")}; // give elems IDs relative to position in assembly + params.set>("inputs") = _inputs; + params.set>>("pattern") = _pattern; + params.set("pattern_boundary") = "none"; + params.set("generate_core_metadata") = !pin_as_assembly; + params.set("create_outward_interface_boundaries") = false; + if (make_empty) + { + params.set>("exclude_id") = + std::vector{_empty_key}; + } - const auto radial_boundary = getReactorParam(RGMB::radial_boundary_id); - params.set("external_boundary_id") = radial_boundary; - params.set("external_boundary_name") = "outer_core"; - params.set("rotate_angle") = 0.0; + const auto radial_boundary = getReactorParam(RGMB::radial_boundary_id); + params.set("external_boundary_id") = radial_boundary; + params.set("external_boundary_name") = "outer_core"; + params.set("rotate_angle") = 0.0; - callMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); + addMeshSubgenerator(patterned_mg_name, name() + "_pattern", params); + } } - } - if (_empty_pos) - { - auto params = _app.getFactory().getValidParams("BlockDeletionGenerator"); + if (_empty_pos) + { + auto params = _app.getFactory().getValidParams("BlockDeletionGenerator"); - params.set>("block") = {std::to_string((UINT16_MAX / 2) - 1)}; - params.set("input") = name() + "_pattern"; - params.set("new_boundary") = "outer_core"; + params.set>("block") = {std::to_string((UINT16_MAX / 2) - 1)}; + params.set("input") = name() + "_pattern"; + params.set("new_boundary") = "outer_core"; - callMeshSubgenerator("BlockDeletionGenerator", name() + "_deleted", params); - } + addMeshSubgenerator("BlockDeletionGenerator", name() + "_deleted", params); + } - std::string build_mesh_name; + std::string build_mesh_name; - // Remove outer assembly sidesets created during assembly generation - { - // Get outer boundaries of all constituent assemblies based on assembly_type, - // skipping all dummy assemblies - std::vector boundaries_to_delete = {}; - for (const auto & pattern_x : _pattern) + // Remove outer assembly sidesets created during assembly generation { - for (const auto & pattern_idx : pattern_x) + // Get outer boundaries of all constituent assemblies based on assembly_type, + // skipping all dummy assemblies + std::vector boundaries_to_delete = {}; + for (const auto & pattern_x : _pattern) { - const auto assembly_name = _inputs[pattern_idx]; - if (assembly_name == _empty_key) - continue; - const auto assembly_id = - getMeshProperty(RGMB::assembly_type, assembly_name); - const BoundaryName boundary_name = "outer_assembly_" + std::to_string(assembly_id); - if (!std::count(boundaries_to_delete.begin(), boundaries_to_delete.end(), boundary_name)) - boundaries_to_delete.push_back(boundary_name); + for (const auto & pattern_idx : pattern_x) + { + const auto assembly_name = _inputs[pattern_idx]; + if (assembly_name == _empty_key) + continue; + const auto assembly_id = + getMeshProperty(RGMB::assembly_type, assembly_name); + const BoundaryName boundary_name = "outer_assembly_" + std::to_string(assembly_id); + if (!std::count(boundaries_to_delete.begin(), boundaries_to_delete.end(), boundary_name)) + boundaries_to_delete.push_back(boundary_name); + } } - } - auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); + auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); - params.set("input") = _empty_pos ? name() + "_deleted" : name() + "_pattern"; - params.set>("boundary_names") = boundaries_to_delete; + params.set("input") = + _empty_pos ? name() + "_deleted" : name() + "_pattern"; + params.set>("boundary_names") = boundaries_to_delete; - build_mesh_name = name() + "_delbds"; - callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); - } + build_mesh_name = name() + "_delbds"; + addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + } - for (auto assembly : _inputs) - { - if (assembly != _empty_key) + for (auto assembly : _inputs) { - std::map>> pin_region_id_map = - getMeshProperty>>>( - RGMB::pin_region_id_map, assembly); - for (auto pin = pin_region_id_map.begin(); pin != pin_region_id_map.end(); ++pin) - if (_pin_region_id_map.find(pin->first) == _pin_region_id_map.end()) - _pin_region_id_map.insert( - std::pair>>( - pin->first, pin->second)); - - std::map>> pin_block_name_map = - getMeshProperty>>>( - RGMB::pin_block_name_map, assembly); - for (auto pin = pin_block_name_map.begin(); pin != pin_block_name_map.end(); ++pin) - if (_pin_block_name_map.find(pin->first) == _pin_block_name_map.end()) - _pin_block_name_map.insert( - std::pair>>(pin->first, - pin->second)); - - // Define background and duct region ID map from constituent assemblies - subdomain_id_type assembly_type = - getMeshProperty(RGMB::assembly_type, assembly); - if (_background_region_id_map.find(assembly_type) == _background_region_id_map.end()) + if (assembly != _empty_key) { - // Store region ids and block names associated with duct and background regions for each - // assembly, in case block names need to be recovered from region ids after - // multiple assemblies have been stitched together into a core - std::vector background_region_ids = - getMeshProperty>(RGMB::background_region_id, assembly); - std::vector> duct_region_ids = - getMeshProperty>>(RGMB::duct_region_ids, - assembly); - _background_region_id_map.insert( - std::pair>(assembly_type, - background_region_ids)); - _duct_region_id_map.insert( - std::pair>>( - assembly_type, duct_region_ids)); - - std::vector background_block_names = - getMeshProperty>(RGMB::background_block_name, assembly); - std::vector> duct_block_names = - getMeshProperty>>(RGMB::duct_block_names, - assembly); - _background_block_name_map.insert(std::pair>( - assembly_type, background_block_names)); - _duct_block_name_map.insert( - std::pair>>(assembly_type, - duct_block_names)); + std::map>> pin_region_id_map = + getMeshProperty< + std::map>>>( + RGMB::pin_region_id_map, assembly); + for (auto pin = pin_region_id_map.begin(); pin != pin_region_id_map.end(); ++pin) + if (_pin_region_id_map.find(pin->first) == _pin_region_id_map.end()) + _pin_region_id_map.insert( + std::pair>>( + pin->first, pin->second)); + + std::map>> pin_block_name_map = + getMeshProperty>>>( + RGMB::pin_block_name_map, assembly); + for (auto pin = pin_block_name_map.begin(); pin != pin_block_name_map.end(); ++pin) + if (_pin_block_name_map.find(pin->first) == _pin_block_name_map.end()) + _pin_block_name_map.insert( + std::pair>>(pin->first, + pin->second)); + + // Define background and duct region ID map from constituent assemblies + subdomain_id_type assembly_type = + getMeshProperty(RGMB::assembly_type, assembly); + if (_background_region_id_map.find(assembly_type) == _background_region_id_map.end()) + { + // Store region ids and block names associated with duct and background regions for each + // assembly, in case block names need to be recovered from region ids after + // multiple assemblies have been stitched together into a core + std::vector background_region_ids = + getMeshProperty>(RGMB::background_region_id, assembly); + std::vector> duct_region_ids = + getMeshProperty>>(RGMB::duct_region_ids, + assembly); + _background_region_id_map.insert( + std::pair>(assembly_type, + background_region_ids)); + _duct_region_id_map.insert( + std::pair>>( + assembly_type, duct_region_ids)); + + std::vector background_block_names = + getMeshProperty>(RGMB::background_block_name, assembly); + std::vector> duct_block_names = + getMeshProperty>>(RGMB::duct_block_names, + assembly); + _background_block_name_map.insert(std::pair>( + assembly_type, background_block_names)); + _duct_block_name_map.insert( + std::pair>>( + assembly_type, duct_block_names)); + } } } - } - // periphery meshing - if (_mesh_periphery) - { - std::string periphery_mg_name; - if (_periphery_meshgenerator == "triangle") - periphery_mg_name = "PeripheralTriangleMeshGenerator"; - else if (_periphery_meshgenerator == "quad_ring") - periphery_mg_name = "PeripheralRingMeshGenerator"; - else - paramError("periphery_generator", - "Provided periphery meshgenerator has not been implemented."); - - // set up common options - auto params = _app.getFactory().getValidParams(periphery_mg_name); - params.set("input") = name() + "_delbds"; - params.set("peripheral_ring_radius") = _outer_circle_radius; - params.set("external_boundary_name") = "outside_periphery"; - params.set("peripheral_ring_block_name") = "RGMB_PERIPHERY_GENERATED"; - - // unique MG options - if (_periphery_meshgenerator == "triangle") - { - params.set("peripheral_ring_num_segments") = _outer_circle_num_segments; - params.set("desired_area") = _desired_area; - params.set("desired_area_func") = _desired_area_func; - } - else if (_periphery_meshgenerator == "quad_ring") + // periphery meshing + if (_mesh_periphery) { - params.set("peripheral_ring_block_id") = 25000; - params.set("input_mesh_external_boundary") = (BoundaryName) "outer_core"; - params.set("peripheral_layer_num") = _periphery_num_layers; - } + std::string periphery_mg_name = (_periphery_meshgenerator == "triangle") + ? "PeripheralTriangleMeshGenerator" + : "PeripheralRingMeshGenerator"; + + // set up common options + auto params = _app.getFactory().getValidParams(periphery_mg_name); + params.set("input") = name() + "_delbds"; + params.set("peripheral_ring_radius") = _outer_circle_radius; + params.set("external_boundary_name") = "outside_periphery"; + params.set("peripheral_ring_block_name") = "RGMB_PERIPHERY_GENERATED"; + + // unique MG options + if (_periphery_meshgenerator == "triangle") + { + params.set("peripheral_ring_num_segments") = _outer_circle_num_segments; + params.set("desired_area") = _desired_area; + params.set("desired_area_func") = _desired_area_func; + } + else if (_periphery_meshgenerator == "quad_ring") + { + params.set("peripheral_ring_block_id") = 25000; + params.set("input_mesh_external_boundary") = (BoundaryName) "outer_core"; + params.set("peripheral_layer_num") = _periphery_num_layers; + } - // finish periphery input - build_mesh_name = name() + "_periphery"; - callMeshSubgenerator(periphery_mg_name, build_mesh_name, params); - } + // finish periphery input + build_mesh_name = name() + "_periphery"; + addMeshSubgenerator(periphery_mg_name, build_mesh_name, params); + } - if (_extrude && _mesh_dimensions == 3) - { - std::vector axial_boundaries = getReactorParam>(RGMB::axial_mesh_sizes); - const auto top_boundary = getReactorParam(RGMB::top_boundary_id); - const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); + if (_extrude && _mesh_dimensions == 3) { - auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); + std::vector axial_boundaries = + getReactorParam>(RGMB::axial_mesh_sizes); + const auto top_boundary = getReactorParam(RGMB::top_boundary_id); + const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); + { + auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); - if (_mesh_periphery) - params.set("input") = name() + "_periphery"; - else - params.set("input") = name() + "_delbds"; + if (_mesh_periphery) + params.set("input") = name() + "_periphery"; + else + params.set("input") = name() + "_delbds"; - params.set("direction") = Point(0, 0, 1); - params.set>("num_layers") = - getReactorParam>(RGMB::axial_mesh_intervals); - params.set>("heights") = axial_boundaries; - params.set("bottom_boundary") = bottom_boundary; - params.set("top_boundary") = top_boundary; + params.set("direction") = Point(0, 0, 1); + params.set>("num_layers") = + getReactorParam>(RGMB::axial_mesh_intervals); + params.set>("heights") = axial_boundaries; + params.set("bottom_boundary") = bottom_boundary; + params.set("top_boundary") = top_boundary; - callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); - } + addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + } - { - auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); + { + auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); - params.set("input") = name() + "_extruded"; - params.set>("old_boundary") = { - std::to_string(top_boundary), - std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator - params.set>("new_boundary") = {"top", "bottom"}; + params.set("input") = name() + "_extruded"; + params.set>("old_boundary") = { + std::to_string(top_boundary), + std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator + params.set>("new_boundary") = {"top", "bottom"}; - callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); - } + addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + } - { - auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); + { + auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); - params.set("input") = name() + "_change_plane_name"; + params.set("input") = name() + "_change_plane_name"; - std::vector plane_heights{0}; - for (Real z : axial_boundaries) - { - plane_heights.push_back(z + plane_heights.back()); - } - params.set>("plane_coordinates") = plane_heights; + std::vector plane_heights{0}; + for (Real z : axial_boundaries) + { + plane_heights.push_back(z + plane_heights.back()); + } + params.set>("plane_coordinates") = plane_heights; - std::string plane_id_name = "plane_id"; - params.set("id_name") = "plane_id"; + std::string plane_id_name = "plane_id"; + params.set("id_name") = "plane_id"; - build_mesh_name = name() + "_extrudedIDs"; - callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + build_mesh_name = name() + "_extrudedIDs"; + addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + } } - } - generateMetadata(); - // Store final mesh subgenerator if we are not bypassing mesh generation - if (!getReactorParam(RGMB::bypass_meshgen)) + // Store final mesh subgenerator _build_mesh = &getMeshByName(build_mesh_name); + } + // If mesh generation should be bypassed, then store the input meshes to free later + else + _mesh_ptrs = getMeshes("inputs"); + + generateMetadata(); } void diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 920b947faf60..b8fa1a5f1ee3 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -193,252 +193,252 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) std::string build_mesh_name; - if (_homogenized) - { - auto params = _app.getFactory().getValidParams("SimpleHexagonGenerator"); - - params.set("hexagon_size") = _pitch / 2.0; - params.set("external_boundary_id") = 20000 + _pin_type; - const auto boundary_name = _is_assembly ? "outer_assembly_" + std::to_string(_pin_type) - : "outer_pin_" + std::to_string(_pin_type); - params.set("external_boundary_name") = boundary_name; - params.set>("block_id") = {_quad_center ? pin_block_id_start - : pin_block_id_tri}; - params.set("element_type") = _quad_center ? "QUAD" : "TRI"; - auto block_name = "RGMB_PIN" + std::to_string(_pin_type) + "_R0"; - if (_quad_center) - block_name += "_TRI"; - params.set>("block_name") = {block_name}; - - build_mesh_name = name() + "_2D"; - callMeshSubgenerator("SimpleHexagonGenerator", build_mesh_name, params); - } - else + if (!getReactorParam(RGMB::bypass_meshgen)) { - // Define all id variables used in the pin - std::vector ring_intervals; - std::vector ring_blk_ids; - std::vector ring_blk_names; - unsigned int background_intervals = 1; - std::vector background_blk_ids; - std::vector background_blk_names; - std::vector duct_intervals; - std::vector duct_blk_ids; - std::vector duct_blk_names; - - for (const auto i : index_range(_intervals)) + if (_homogenized) { - const auto block_name = "RGMB_PIN" + std::to_string(_pin_type) + "_R" + std::to_string(i); - const auto block_id = pin_block_id_start + i; + auto params = _app.getFactory().getValidParams("SimpleHexagonGenerator"); - if (i < _ring_radii.size()) - { - ring_intervals.push_back(_intervals[i]); - ring_blk_ids.push_back(block_id); - ring_blk_names.push_back(block_name); - } - else if (i > _ring_radii.size()) - { - duct_intervals.push_back(_intervals[i]); - duct_blk_ids.push_back(block_id); - duct_blk_names.push_back(block_name); - } - else - { - background_intervals = _intervals[i]; - background_blk_ids.push_back(block_id); - background_blk_names.push_back(block_name); - } + params.set("hexagon_size") = _pitch / 2.0; + params.set("external_boundary_id") = 20000 + _pin_type; + const auto boundary_name = _is_assembly ? "outer_assembly_" + std::to_string(_pin_type) + : "outer_pin_" + std::to_string(_pin_type); + params.set("external_boundary_name") = boundary_name; + params.set>("block_id") = {_quad_center ? pin_block_id_start + : pin_block_id_tri}; + params.set("element_type") = _quad_center ? "QUAD" : "TRI"; + auto block_name = "RGMB_PIN" + std::to_string(_pin_type) + "_R0"; + if (_quad_center) + block_name += "_TRI"; + params.set>("block_name") = {block_name}; + + build_mesh_name = name() + "_2D"; + addMeshSubgenerator("SimpleHexagonGenerator", build_mesh_name, params); } - if (ring_intervals.size() > 0) + else { - if (ring_intervals.front() != 1) + // Define all id variables used in the pin + std::vector ring_intervals; + std::vector ring_blk_ids; + std::vector ring_blk_names; + unsigned int background_intervals = 1; + std::vector background_blk_ids; + std::vector background_blk_names; + std::vector duct_intervals; + std::vector duct_blk_ids; + std::vector duct_blk_names; + + for (const auto i : index_range(_intervals)) { - // If quad center elements, copy element at beginning of block names and - // block ids. Otherwise add "_TRI" suffix to block names and generate new - // block id - if (_quad_center) + const auto block_name = "RGMB_PIN" + std::to_string(_pin_type) + "_R" + std::to_string(i); + const auto block_id = pin_block_id_start + i; + + if (i < _ring_radii.size()) { - ring_blk_ids.insert(ring_blk_ids.begin(), ring_blk_ids.front()); - ring_blk_names.insert(ring_blk_names.begin(), ring_blk_names.front()); + ring_intervals.push_back(_intervals[i]); + ring_blk_ids.push_back(block_id); + ring_blk_names.push_back(block_name); + } + else if (i > _ring_radii.size()) + { + duct_intervals.push_back(_intervals[i]); + duct_blk_ids.push_back(block_id); + duct_blk_names.push_back(block_name); } else { - const auto block_name = ring_blk_names.front() + "_TRI"; - const auto block_id = pin_block_id_tri; - ring_blk_ids.insert(ring_blk_ids.begin(), block_id); - ring_blk_names.insert(ring_blk_names.begin(), block_name); + background_intervals = _intervals[i]; + background_blk_ids.push_back(block_id); + background_blk_names.push_back(block_name); } } - // Add _TRI suffix if only one radial region and tri center elements - else if (!_quad_center) + if (ring_intervals.size() > 0) { - ring_blk_ids[0] = pin_block_id_tri; - ring_blk_names[0] += "_TRI"; + if (ring_intervals.front() != 1) + { + // If quad center elements, copy element at beginning of block names and + // block ids. Otherwise add "_TRI" suffix to block names and generate new + // block id + if (_quad_center) + { + ring_blk_ids.insert(ring_blk_ids.begin(), ring_blk_ids.front()); + ring_blk_names.insert(ring_blk_names.begin(), ring_blk_names.front()); + } + else + { + const auto block_name = ring_blk_names.front() + "_TRI"; + const auto block_id = pin_block_id_tri; + ring_blk_ids.insert(ring_blk_ids.begin(), block_id); + ring_blk_names.insert(ring_blk_names.begin(), block_name); + } + } + // Add _TRI suffix if only one radial region and tri center elements + else if (!_quad_center) + { + ring_blk_ids[0] = pin_block_id_tri; + ring_blk_names[0] += "_TRI"; + } } - } - else - { - if (background_intervals > 1) + else { - // If quad center elements, copy element at beginning of block names and - // block ids. Otherwise add "_TRI" suffix to block names and generate new - // block id - if (_quad_center) + if (background_intervals > 1) { - background_blk_ids.insert(background_blk_ids.begin(), background_blk_ids.front()); - background_blk_names.insert(background_blk_names.begin(), background_blk_names.front()); + // If quad center elements, copy element at beginning of block names and + // block ids. Otherwise add "_TRI" suffix to block names and generate new + // block id + if (_quad_center) + { + background_blk_ids.insert(background_blk_ids.begin(), background_blk_ids.front()); + background_blk_names.insert(background_blk_names.begin(), background_blk_names.front()); + } + else + { + const auto block_name = background_blk_names.front() + "_TRI"; + const auto block_id = pin_block_id_tri; + background_blk_ids.insert(background_blk_ids.begin(), block_id); + background_blk_names.insert(background_blk_names.begin(), block_name); + } } - else + // Add _TRI suffix if only one background region and tri center elements + // and no ring regions + else if (!_quad_center) { - const auto block_name = background_blk_names.front() + "_TRI"; - const auto block_id = pin_block_id_tri; - background_blk_ids.insert(background_blk_ids.begin(), block_id); - background_blk_names.insert(background_blk_names.begin(), block_name); + background_blk_ids[0] = pin_block_id_tri; + background_blk_names[0] += "_TRI"; } } - // Add _TRI suffix if only one background region and tri center elements - // and no ring regions - else if (!_quad_center) + + // Generate Cartesian/hex pin using PolygonConcentricCircleMeshGenerator { - background_blk_ids[0] = pin_block_id_tri; - background_blk_names[0] += "_TRI"; - } - } + // Get and assign parameters for the main geometry feature of the Pin + // which is created with a PolygonConcentricCircleMeshGenerator subgenerator + auto params = _app.getFactory().getValidParams("PolygonConcentricCircleMeshGenerator"); + params.set("preserve_volumes") = true; + params.set("quad_center_elements") = _quad_center; + params.set("polygon_size_style") = "apothem"; + params.set("polygon_size") = _pitch / 2.0; + params.set("external_boundary_id") = 20000 + _pin_type; + const auto boundary_name = _is_assembly ? "outer_assembly_" + std::to_string(_pin_type) + : "outer_pin_" + std::to_string(_pin_type); + params.set("external_boundary_name") = boundary_name; + bool flat_side_up = (_mesh_geometry == "Square"); + params.set("flat_side_up") = flat_side_up; + params.set("create_outward_interface_boundaries") = false; + + const auto num_sides = (_mesh_geometry == "Square") ? 4 : 6; + params.set("num_sides") = num_sides; + params.set>("num_sectors_per_side") = + std::vector(num_sides, _num_sectors); + + if (ring_intervals.size() > 0) + { + params.set>("ring_radii") = _ring_radii; + params.set>("ring_block_ids") = ring_blk_ids; + params.set>("ring_block_names") = ring_blk_names; + params.set>("ring_intervals") = ring_intervals; + } - // Generate Cartesian/hex pin using PolygonConcentricCircleMeshGenerator - { - // Get and assign parameters for the main geometry feature of the Pin - // which is created with a PolygonConcentricCircleMeshGenerator subgenerator - auto params = _app.getFactory().getValidParams("PolygonConcentricCircleMeshGenerator"); - params.set("preserve_volumes") = true; - params.set("quad_center_elements") = _quad_center; - params.set("polygon_size_style") = "apothem"; - params.set("polygon_size") = _pitch / 2.0; - params.set("external_boundary_id") = 20000 + _pin_type; - const auto boundary_name = _is_assembly ? "outer_assembly_" + std::to_string(_pin_type) - : "outer_pin_" + std::to_string(_pin_type); - params.set("external_boundary_name") = boundary_name; - bool flat_side_up = (_mesh_geometry == "Square"); - params.set("flat_side_up") = flat_side_up; - params.set("create_outward_interface_boundaries") = false; + params.set>("background_block_ids") = background_blk_ids; + params.set>("background_block_names") = background_blk_names; + params.set("background_intervals") = background_intervals; - const auto num_sides = (_mesh_geometry == "Square") ? 4 : 6; - params.set("num_sides") = num_sides; - params.set>("num_sectors_per_side") = - std::vector(num_sides, _num_sectors); + if (duct_intervals.size() > 0) + { + params.set("duct_sizes_style") = "apothem"; + params.set>("duct_sizes") = _duct_halfpitch; + params.set>("duct_block_ids") = duct_blk_ids; + params.set>("duct_block_names") = duct_blk_names; + params.set>("duct_intervals") = duct_intervals; + } - if (ring_intervals.size() > 0) - { - params.set>("ring_radii") = _ring_radii; - params.set>("ring_block_ids") = ring_blk_ids; - params.set>("ring_block_names") = ring_blk_names; - params.set>("ring_intervals") = ring_intervals; + addMeshSubgenerator("PolygonConcentricCircleMeshGenerator", name() + "_2D", params); } - params.set>("background_block_ids") = background_blk_ids; - params.set>("background_block_names") = background_blk_names; - params.set("background_intervals") = background_intervals; - - if (duct_intervals.size() > 0) + // Remove extra sidesets created by PolygonConcentricCircleMeshGenerator { - params.set("duct_sizes_style") = "apothem"; - params.set>("duct_sizes") = _duct_halfpitch; - params.set>("duct_block_ids") = duct_blk_ids; - params.set>("duct_block_names") = duct_blk_names; - params.set>("duct_intervals") = duct_intervals; - } + auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); - callMeshSubgenerator("PolygonConcentricCircleMeshGenerator", name() + "_2D", params); - } - - // Remove extra sidesets created by PolygonConcentricCircleMeshGenerator - { - auto params = _app.getFactory().getValidParams("BoundaryDeletionGenerator"); + params.set("input") = name() + "_2D"; - params.set("input") = name() + "_2D"; + auto num_sides = (_mesh_geometry == "Square") ? 4 : 6; + std::vector boundaries_to_delete = {}; + for (const auto i : make_range(num_sides)) + boundaries_to_delete.insert(boundaries_to_delete.end(), + {std::to_string(10001 + i), std::to_string(15001 + i)}); + params.set>("boundary_names") = boundaries_to_delete; - auto num_sides = (_mesh_geometry == "Square") ? 4 : 6; - std::vector boundaries_to_delete = {}; - for (const auto i : make_range(num_sides)) - boundaries_to_delete.insert(boundaries_to_delete.end(), - {std::to_string(10001 + i), std::to_string(15001 + i)}); - params.set>("boundary_names") = boundaries_to_delete; - - build_mesh_name = name() + "_del_bds"; - callMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + build_mesh_name = name() + "_del_bds"; + addMeshSubgenerator("BoundaryDeletionGenerator", build_mesh_name, params); + } } - } - // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator - // Only relevant if we are generating RGMB mesh and not bypassing mesh generation - if (!getReactorParam(RGMB::bypass_meshgen)) - { + // Pass mesh meta-data defined in subgenerator constructor to this MeshGenerator copyMeshProperty("pitch_meta", name() + "_2D"); copyMeshProperty>("num_sectors_per_side_meta", name() + "_2D"); copyMeshProperty("max_radius_meta", name() + "_2D"); copyMeshProperty("background_intervals_meta", name() + "_2D"); copyMeshProperty("node_id_background_meta", name() + "_2D"); - } - if (_is_assembly) - declareMeshProperty("pattern_pitch_meta", getReactorParam(RGMB::assembly_pitch)); - else if (hasMeshProperty("pattern_pitch_meta", name() + "_2D")) - copyMeshProperty("pattern_pitch_meta", name() + "_2D"); - declareMeshProperty("is_control_drum_meta", false); - if (_extrude && _mesh_dimensions == 3) - { - std::vector axial_boundaries = getReactorParam>(RGMB::axial_mesh_sizes); - const auto top_boundary = getReactorParam(RGMB::top_boundary_id); - const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); - { - auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); - - params.set("input") = _homogenized ? name() + "_2D" : name() + "_del_bds"; - params.set("direction") = Point(0, 0, 1); - params.set>("num_layers") = - getReactorParam>(RGMB::axial_mesh_intervals); - params.set>("heights") = axial_boundaries; - params.set("bottom_boundary") = bottom_boundary; - params.set("top_boundary") = top_boundary; - callMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); - } + if (_is_assembly) + declareMeshProperty("pattern_pitch_meta", getReactorParam(RGMB::assembly_pitch)); + else if (hasMeshProperty("pattern_pitch_meta", name() + "_2D")) + copyMeshProperty("pattern_pitch_meta", name() + "_2D"); + declareMeshProperty("is_control_drum_meta", false); + if (_extrude && _mesh_dimensions == 3) { - auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); - - params.set("input") = name() + "_extruded"; - params.set>("old_boundary") = { - std::to_string(top_boundary), - std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator - params.set>("new_boundary") = {"top", "bottom"}; - callMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); - } + std::vector axial_boundaries = + getReactorParam>(RGMB::axial_mesh_sizes); + const auto top_boundary = getReactorParam(RGMB::top_boundary_id); + const auto bottom_boundary = getReactorParam(RGMB::bottom_boundary_id); + { + auto params = _app.getFactory().getValidParams("AdvancedExtruderGenerator"); + + params.set("input") = + _homogenized ? name() + "_2D" : name() + "_del_bds"; + params.set("direction") = Point(0, 0, 1); + params.set>("num_layers") = + getReactorParam>(RGMB::axial_mesh_intervals); + params.set>("heights") = axial_boundaries; + params.set("bottom_boundary") = bottom_boundary; + params.set("top_boundary") = top_boundary; + addMeshSubgenerator("AdvancedExtruderGenerator", name() + "_extruded", params); + } - { - auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); + { + auto params = _app.getFactory().getValidParams("RenameBoundaryGenerator"); + + params.set("input") = name() + "_extruded"; + params.set>("old_boundary") = { + std::to_string(top_boundary), + std::to_string(bottom_boundary)}; // hard coded boundary IDs in patterned mesh generator + params.set>("new_boundary") = {"top", "bottom"}; + addMeshSubgenerator("RenameBoundaryGenerator", name() + "_change_plane_name", params); + } - params.set("input") = name() + "_change_plane_name"; + { + auto params = _app.getFactory().getValidParams("PlaneIDMeshGenerator"); - std::vector plane_heights{0}; - for (Real z : axial_boundaries) - plane_heights.push_back(z + plane_heights.back()); + params.set("input") = name() + "_change_plane_name"; - params.set>("plane_coordinates") = plane_heights; + std::vector plane_heights{0}; + for (Real z : axial_boundaries) + plane_heights.push_back(z + plane_heights.back()); - std::string plane_id_name = "plane_id"; - params.set("id_name") = "plane_id"; + params.set>("plane_coordinates") = plane_heights; - build_mesh_name = name() + "_extrudedIDs"; - callMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + std::string plane_id_name = "plane_id"; + params.set("id_name") = "plane_id"; + + build_mesh_name = name() + "_extrudedIDs"; + addMeshSubgenerator("PlaneIDMeshGenerator", build_mesh_name, params); + } } + // Store final mesh subgenerator + _build_mesh = &getMeshByName(build_mesh_name); } generateMetadata(); - - // Store final mesh subgenerator if we are not bypassing mesh generation - if (!getReactorParam(RGMB::bypass_meshgen)) - _build_mesh = &getMeshByName(build_mesh_name); } void diff --git a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C index e372bd7e1760..933eab59e68e 100644 --- a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C +++ b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C @@ -107,15 +107,6 @@ ReactorGeometryMeshBuilderBase::updateElementBlockNameId( } } -void -ReactorGeometryMeshBuilderBase::callMeshSubgenerator(std::string mg_type, - std::string mg_name, - InputParameters & params) -{ - if (!ReactorGeometryMeshBuilderBase::getReactorParam(RGMB::bypass_meshgen)) - addMeshSubgenerator(mg_type, mg_name, params); -} - void ReactorGeometryMeshBuilderBase::printReactorMetadata(const std::string geometry_type, const std::string mg_name, From 3a2234124dc19b52d7bdfa91c2aac5600ba132b5 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Fri, 8 Dec 2023 16:24:43 -0500 Subject: [PATCH 05/23] Update RGMB to leverage generateData methods --- framework/src/base/MooseApp.C | 15 ++++++++++++-- .../meshgenerators/AssemblyMeshGenerator.md | 2 +- .../meshgenerators/CoreMeshGenerator.md | 2 +- .../source/meshgenerators/PinMeshGenerator.md | 2 +- .../meshgenerators/ReactorMeshParams.md | 2 +- .../ReactorGeometryMeshBuilderBase.h | 2 ++ .../meshgenerators/ReactorMeshParams.h | 5 ++--- .../meshgenerators/AssemblyMeshGenerator.C | 9 --------- .../src/meshgenerators/CoreMeshGenerator.C | 9 --------- .../src/meshgenerators/PinMeshGenerator.C | 7 ------- .../ReactorGeometryMeshBuilderBase.C | 7 +++++++ .../src/meshgenerators/ReactorMeshParams.C | 20 +++++++++++++------ .../meshgenerators/core_mesh_generator/tests | 9 +++------ 13 files changed, 45 insertions(+), 46 deletions(-) diff --git a/framework/src/base/MooseApp.C b/framework/src/base/MooseApp.C index 18ed912a7c2e..65e3097360b6 100644 --- a/framework/src/base/MooseApp.C +++ b/framework/src/base/MooseApp.C @@ -107,6 +107,10 @@ MooseApp::validParams() "mesh_only", "--mesh-only [mesh_file_name]", "Setup and Output the input mesh only (Default: \"_in.e\")"); + params.addCommandLineParam( + "metadata_only", + "--metadata-only", + "Setup and output the metadata defined on input mesh only"); params.addCommandLineParam("show_input", "--show-input", @@ -953,7 +957,14 @@ MooseApp::setupOptions() _builder.build(); - if (isParamValid("mesh_only")) + if (isParamValid("metadata_only")) + { + _action_warehouse.setFinalTask("create_added_mesh_generators"); + if (isParamValid("mesh_only")) + mooseWarning( + "--metadata-only mode does not create an output mesh and --mesh-only will be ignored"); + } + else if (isParamValid("mesh_only")) { _syntax.registerTaskName("mesh_only", true); _syntax.addDependency("mesh_only", "setup_mesh_complete"); @@ -1089,7 +1100,7 @@ MooseApp::runInputFile() _action_warehouse.executeAllActions(); - if (isParamValid("mesh_only") || isParamValid("split_mesh")) + if (isParamValid("mesh_only") || isParamValid("split_mesh") || isParamValid("metadata_only")) _ready_to_exit = true; else if (getParam("list_constructed_objects")) { diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index 4e405f9b35f2..b8b865034008 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -67,7 +67,7 @@ For each of the pins listed in `pin_names`, the pin-level metadata is also displ In addition, the value of the `reactor_params_name` metadata can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index f1b3f08f37e2..1b314ad07cb6 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -52,7 +52,7 @@ For meshes where a core periphery is defined, the following metadata is also def In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 4691721d829e..0be9062de501 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -52,7 +52,7 @@ At the pin level, the following metadata is defined on the pin mesh: In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index 7c8b34188d52..b77dc4fa3f60 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -15,7 +15,7 @@ The `ReactorMeshParams` object stores certain global mesh information as metadat - `axial_mesh_sizes`: Length of each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_regions). Only relevant for 3-D meshes. - `axial_mesh_intervals`: Number of elements in the axial dimension for each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_mesh_intervals). Only relevant for 3-D meshes. -In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [!param](/Mesh/ReactorMeshParams/bypass_mesh_generation) can be set to true. +In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. ## Example Syntax diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 2af331c45fd1..81faec5e0af4 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -70,6 +70,8 @@ class ReactorGeometryMeshBuilderBase : public MeshGenerator ReactorGeometryMeshBuilderBase(const InputParameters & parameters); + void generateData() override; + protected: /** * Initializes extra element integer from id name for a given mesh and throws an error diff --git a/modules/reactor/include/meshgenerators/ReactorMeshParams.h b/modules/reactor/include/meshgenerators/ReactorMeshParams.h index 3e84172c98fd..0ff424774d4c 100644 --- a/modules/reactor/include/meshgenerators/ReactorMeshParams.h +++ b/modules/reactor/include/meshgenerators/ReactorMeshParams.h @@ -24,6 +24,8 @@ class ReactorMeshParams : public MeshGenerator std::unique_ptr generate() override; + void generateData() override; + protected: /// The number of dimension in the mesh const MooseEnum _dim; @@ -34,9 +36,6 @@ class ReactorMeshParams : public MeshGenerator /// The the flat-to-flat size of assemblies in the reactor. const Real _assembly_pitch; - /// Whether or not to bypass mesh generation step in RGMB calls - const bool _bypass_meshgen; - ///The heights of the axial regions. std::vector _axial_regions; diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 2042e65267d7..90e97888e473 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -479,15 +479,6 @@ AssemblyMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // Return default mesh if option to bypass mesh generation is chosen and free all input meshes - if (getReactorParam(RGMB::bypass_meshgen)) - { - for (const auto & mesh_ptr : _mesh_ptrs) - mesh_ptr->reset(); - auto mesh = buildMeshBaseObject(); - return dynamic_pointer_cast(mesh); - } - // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage if (hasMeshProperty("pattern_pitch_meta", name() + "_pattern")) diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index d3383fa4176c..be9d6f7af848 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -617,15 +617,6 @@ CoreMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // Return default mesh if option to bypass mesh generation is chosen and free all input meshes - if (getReactorParam(RGMB::bypass_meshgen)) - { - for (const auto & mesh_ptr : _mesh_ptrs) - mesh_ptr->reset(); - auto mesh = buildMeshBaseObject(); - return dynamic_pointer_cast(mesh); - } - // This generate() method will be called once the subgenerators that we depend on are // called. This is where we reassign subdomain ids/names in case they were merged // when stitching assemblies into the core. This is also where we set region_id extra diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index b8fa1a5f1ee3..6e7a78b663f6 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -523,13 +523,6 @@ PinMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // Return default mesh if option to bypass mesh generation is chosen - if (getReactorParam(RGMB::bypass_meshgen)) - { - auto mesh = buildMeshBaseObject(); - return dynamic_pointer_cast(mesh); - } - // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage const auto max_radius_meta = getMeshProperty("max_radius_meta", name() + "_2D"); diff --git a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C index 933eab59e68e..260b2845c66b 100644 --- a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C +++ b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C @@ -21,6 +21,8 @@ ReactorGeometryMeshBuilderBase::validParams() params.addClassDescription("A base class that contains common members and methods for Reactor " "Geometry Mesh Builder mesh generators."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } @@ -316,3 +318,8 @@ ReactorGeometryMeshBuilderBase::addDepletionId(MeshBase & input_mesh, for (Elem * const elem : input_mesh.active_element_ptr_range()) elem->set_extra_integer(depl_id_index, depl_ids.at(elem->id())); } + +void +ReactorGeometryMeshBuilderBase::generateData() +{ +} diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index 421a8dbede48..bf5ba4be2ae0 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -43,11 +43,11 @@ ReactorMeshParams::validParams() params.addParam>( "axial_mesh_intervals", "Number of elements in the Z direction for each axial region"); - params.addParam("bypass_mesh_generation", - false, - "Whether or not to bypass mesh generation when running RGMB workflow"); params.addClassDescription("This ReactorMeshParams object acts as storage for persistent " "information about the reactor geometry."); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } @@ -55,8 +55,7 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) : MeshGenerator(parameters), _dim(getParam("dim")), _geom(getParam("geom")), - _assembly_pitch(getParam("assembly_pitch")), - _bypass_meshgen(getParam("bypass_mesh_generation")) + _assembly_pitch(getParam("assembly_pitch")) { if (int(_dim) == 2) { @@ -82,7 +81,11 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::mesh_geometry, std::string(_geom)); this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); this->declareMeshProperty("name_id_map", _name_id_map); - this->declareMeshProperty(RGMB::bypass_meshgen, _bypass_meshgen); + + // Option to bypass mesh generation depends on value of Mesh/data_only + const auto & moose_mesh = _app.actionWarehouse().getMesh(); + const auto data_only = moose_mesh->parameters().get("data_only"); + this->declareMeshProperty(RGMB::bypass_meshgen, data_only); if (isParamValid("top_boundary_id")) { @@ -114,3 +117,8 @@ ReactorMeshParams::generate() auto mesh = buildMeshBaseObject(); return dynamic_pointer_cast(mesh); } + +void +ReactorMeshParams::generateData() +{ +} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 1b6e991f0d31..4c35ceab1abf 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -21,9 +21,8 @@ type = 'RunApp' input = 'core_square.i' cli_args = "Mesh/cmg/show_rgmb_metadata=true - Mesh/rmp/bypass_mesh_generation=true Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --mesh-only" + Outputs/out/extra_element_ids_to_output='' --metadata-only" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] [core_shared_assembly_ids] @@ -110,9 +109,8 @@ type = 'RunApp' input = 'core_hex.i' cli_args = "Mesh/cmg/show_rgmb_metadata=true - Mesh/rmp/bypass_mesh_generation=true Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --mesh-only" + Outputs/out/extra_element_ids_to_output='' --metadata-only" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] [single_assembly_square_core] @@ -194,9 +192,8 @@ type = 'RunApp' input = 'core_hex_2d.i' cli_args = "Mesh/cmg/show_rgmb_metadata=true - Mesh/rmp/bypass_mesh_generation=true Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --mesh-only" + Outputs/out/extra_element_ids_to_output='' --metadata-only" expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] [hex_metadata_extra_assemblies] From 7dcd9d41ae2a0c8996e67dc0908fbe5648b31440 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 14 Dec 2023 16:35:04 -0500 Subject: [PATCH 06/23] Update Mesh parameter name to data_driven, return null mesh in RGMB with bypass option, and revert changes to --metadata-only mode --- .../include/meshgenerators/ElementGenerator.h | 2 ++ framework/src/base/MeshGeneratorSystem.C | 2 +- framework/src/base/MooseApp.C | 15 ++------------- framework/src/meshgenerators/ElementGenerator.C | 7 +++++++ .../src/meshgenerators/AssemblyMeshGenerator.C | 8 ++++++++ .../src/meshgenerators/CoreMeshGenerator.C | 8 ++++++++ .../reactor/src/meshgenerators/PinMeshGenerator.C | 8 ++++++++ .../src/meshgenerators/ReactorMeshParams.C | 6 +++--- 8 files changed, 39 insertions(+), 17 deletions(-) diff --git a/framework/include/meshgenerators/ElementGenerator.h b/framework/include/meshgenerators/ElementGenerator.h index 32679c77bbc3..310af446458b 100644 --- a/framework/include/meshgenerators/ElementGenerator.h +++ b/framework/include/meshgenerators/ElementGenerator.h @@ -25,6 +25,8 @@ class ElementGenerator : public MeshGenerator Elem * getElemType(const std::string & type); + void generateData() override; + protected: /// Mesh that possibly comes from another generator std::unique_ptr & _input; diff --git a/framework/src/base/MeshGeneratorSystem.C b/framework/src/base/MeshGeneratorSystem.C index a92f47e4ac38..a1918cf4efb6 100644 --- a/framework/src/base/MeshGeneratorSystem.C +++ b/framework/src/base/MeshGeneratorSystem.C @@ -614,7 +614,7 @@ MeshGeneratorSystem::getSavedMesh(const std::string & name) if (!mesh_unique_ptr) mooseError("While getting the saved mesh generator '", name, - "', said mesh has already been retreived"); + "', said mesh has already been retreived or points to a null mesh"); return std::move(mesh_unique_ptr); } diff --git a/framework/src/base/MooseApp.C b/framework/src/base/MooseApp.C index 65e3097360b6..18ed912a7c2e 100644 --- a/framework/src/base/MooseApp.C +++ b/framework/src/base/MooseApp.C @@ -107,10 +107,6 @@ MooseApp::validParams() "mesh_only", "--mesh-only [mesh_file_name]", "Setup and Output the input mesh only (Default: \"_in.e\")"); - params.addCommandLineParam( - "metadata_only", - "--metadata-only", - "Setup and output the metadata defined on input mesh only"); params.addCommandLineParam("show_input", "--show-input", @@ -957,14 +953,7 @@ MooseApp::setupOptions() _builder.build(); - if (isParamValid("metadata_only")) - { - _action_warehouse.setFinalTask("create_added_mesh_generators"); - if (isParamValid("mesh_only")) - mooseWarning( - "--metadata-only mode does not create an output mesh and --mesh-only will be ignored"); - } - else if (isParamValid("mesh_only")) + if (isParamValid("mesh_only")) { _syntax.registerTaskName("mesh_only", true); _syntax.addDependency("mesh_only", "setup_mesh_complete"); @@ -1100,7 +1089,7 @@ MooseApp::runInputFile() _action_warehouse.executeAllActions(); - if (isParamValid("mesh_only") || isParamValid("split_mesh") || isParamValid("metadata_only")) + if (isParamValid("mesh_only") || isParamValid("split_mesh")) _ready_to_exit = true; else if (getParam("list_constructed_objects")) { diff --git a/framework/src/meshgenerators/ElementGenerator.C b/framework/src/meshgenerators/ElementGenerator.C index 6f17d0248e64..310b84759224 100644 --- a/framework/src/meshgenerators/ElementGenerator.C +++ b/framework/src/meshgenerators/ElementGenerator.C @@ -37,6 +37,8 @@ ElementGenerator::validParams() params.addClassDescription("Generates individual elements given a list of nodal positions."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } @@ -92,3 +94,8 @@ ElementGenerator::generate() return dynamic_pointer_cast(mesh); } + +void +ElementGenerator::generateData() +{ +} diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 90e97888e473..545983c9cca3 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -479,6 +479,14 @@ AssemblyMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB + // mesh should not be the final mesh generator with this option specified + if (getReactorParam(RGMB::bypass_meshgen)) + { + auto null_mesh = nullptr; + return null_mesh; + } + // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage if (hasMeshProperty("pattern_pitch_meta", name() + "_pattern")) diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index be9d6f7af848..a8fb28ff0e8a 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -617,6 +617,14 @@ CoreMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB + // mesh should not be the final mesh generator with this option specified + if (getReactorParam(RGMB::bypass_meshgen)) + { + auto null_mesh = nullptr; + return null_mesh; + } + // This generate() method will be called once the subgenerators that we depend on are // called. This is where we reassign subdomain ids/names in case they were merged // when stitching assemblies into the core. This is also where we set region_id extra diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 6e7a78b663f6..b80af39e1fca 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -523,6 +523,14 @@ PinMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); + // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB + // mesh should not be the final mesh generator with this option specified + if (getReactorParam(RGMB::bypass_meshgen)) + { + auto null_mesh = nullptr; + return null_mesh; + } + // Update metadata at this point since values for these metadata only get set by PCCMG // at generate() stage const auto max_radius_meta = getMeshProperty("max_radius_meta", name() + "_2D"); diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index bf5ba4be2ae0..5c07d61f21ba 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -82,10 +82,10 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); this->declareMeshProperty("name_id_map", _name_id_map); - // Option to bypass mesh generation depends on value of Mesh/data_only + // Option to bypass mesh generation depends on value of Mesh/data_driven const auto & moose_mesh = _app.actionWarehouse().getMesh(); - const auto data_only = moose_mesh->parameters().get("data_only"); - this->declareMeshProperty(RGMB::bypass_meshgen, data_only); + const auto data_driven = moose_mesh->parameters().get("data_driven"); + this->declareMeshProperty(RGMB::bypass_meshgen, data_driven); if (isParamValid("top_boundary_id")) { From d9a8c3ce5bfddff5e05a9a4f4bf1356e2c7b1414 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 14 Dec 2023 17:03:59 -0500 Subject: [PATCH 07/23] Update unit tests with data_driven parameter --- .../core_hex_2d_datadriven.i | 79 ++ .../core_mesh_generator/core_hex_datadriven.i | 118 ++ .../core_square_datadriven.i | 102 ++ .../gold/core_hex_2d_datadriven_out.json | 490 ++++++++ .../gold/core_hex_datadriven_out.json | 1114 +++++++++++++++++ .../gold/core_square_datadriven_out.json | 918 ++++++++++++++ .../meshgenerators/core_mesh_generator/tests | 40 +- 7 files changed, 2840 insertions(+), 21 deletions(-) create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json create mode 100644 modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i new file mode 100644 index 000000000000..22fcc1849e2b --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i @@ -0,0 +1,79 @@ +[Mesh] + [rmp] + type = ReactorMeshParams + dim = 2 + geom = "Hex" + assembly_pitch = 3.7884 + radial_boundary_id = 200 + [] + + [pin1] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 1 + pitch = 1.3425 + region_ids = '1 2' + quad_center_elements = false + num_sectors = 2 + ring_radii = 0.5404 + mesh_intervals = '1 1' + [] + + [amg1] + type = AssemblyMeshGenerator + assembly_type = 1 + inputs = 'pin1' + pattern = '0 0; + 0 0 0; + 0 0' + background_intervals = 1 + background_region_id = 3 + duct_halfpitch = 1.7703 + duct_intervals = 1 + duct_region_ids = 4 + [] + + [cmg] + type = CoreMeshGenerator + inputs = 'amg1' + dummy_assembly_name = empty + pattern = '0 0; + 0 0 0; + 0 0' + extrude = false + mesh_periphery = true + periphery_generator = quad_ring + periphery_region_id = 5 + outer_circle_radius = 7 + periphery_num_layers = 1 + desired_area = 5.0 + [] + [elem_gen] + type = ElementGenerator + input = cmg + nodal_positions = '0 0 0 + 1 0 0 + 1 1 0 + 0 1 0' + + element_connectivity = '0 1 2 3' + elem_type = "QUAD4" + [] + data_driven = true +[] + +[Problem] + solve = false +[] + +[Executioner] + type = Steady +[] + +[Reporters/metadata] + type = MeshMetaDataReporter +[] + +[Outputs] + json = true +[] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i new file mode 100644 index 000000000000..fad7450f315e --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i @@ -0,0 +1,118 @@ +[Mesh] + [rmp] + type = ReactorMeshParams + dim = 3 + geom = "Hex" + assembly_pitch = 7.10315 + radial_boundary_id = 200 + top_boundary_id = 201 + bottom_boundary_id = 202 + axial_regions = '1.0 1.0' + axial_mesh_intervals = '1 1' + [] + + [pin1] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 1 + pitch = 1.42063 + num_sectors = 2 + ring_radii = 0.2 + duct_halfpitch = 0.68 + mesh_intervals = '1 1 1' + quad_center_elements = false + region_ids = '11 12 13; 111 112 113' + block_names = 'P1_R11 P1_R12 P1_R13; P1_R111 P1_R112 P1_R113' + [] + + [pin2] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 2 + pitch = 1.42063 + num_sectors = 2 + quad_center_elements = false + mesh_intervals = 1 + region_ids = '21; 121' + block_names = 'P2_R21; P2_R121' + [] + + [pin3] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 3 + pitch = 1.42063 + num_sectors = 2 + ring_radii = '0.3818' + mesh_intervals = '1 1' + quad_center_elements = false + region_ids = '31 32; 131 132' + block_names = 'P3_R31 P3_R32; P3_R131 P3_R132' + [] + + [amg1] + type = AssemblyMeshGenerator + assembly_type = 1 + inputs = 'pin2' + pattern=' 0 0; + 0 0 0; + 0 0' + background_intervals = 1 + background_region_id = '41 141' + background_block_name = 'A1_R41 A1_R141' + [] + + [amg2] + type = AssemblyMeshGenerator + assembly_type = 2 + inputs = 'pin1 pin3' + pattern = '0 0; + 0 1 0; + 0 0' + background_region_id = '51 151' + background_block_name = 'A2_R51 A2_R151' + background_intervals = 1 + duct_region_ids = '52; 152' + duct_block_names = 'A2_R52; A2_R152' + duct_halfpitch = '3.5' + duct_intervals = '1' + [] + + [cmg] + type = CoreMeshGenerator + inputs = 'amg1 amg2 empty' + dummy_assembly_name = empty + pattern = '2 1; + 1 0 2; + 2 1' + extrude = true + [] + [elem_gen] + type = ElementGenerator + input = cmg + nodal_positions = '0 0 0 + 1 0 0 + 1 1 0 + 0 1 0' + + element_connectivity = '0 1 2 3' + elem_type = "QUAD4" + [] + data_driven = true +[] + +[Problem] + solve = false +[] + +[Executioner] + type = Steady +[] + +[Reporters/metadata] + type = MeshMetaDataReporter +[] + +[Outputs] + json = true +[] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i new file mode 100644 index 000000000000..c28a23936f3b --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i @@ -0,0 +1,102 @@ +[Mesh] + [rmp] + type = ReactorMeshParams + dim = 3 + geom = "Square" + assembly_pitch = 2.84126 + radial_boundary_id = 200 + axial_regions = '1.0' + axial_mesh_intervals = '1' + top_boundary_id = 201 + bottom_boundary_id = 202 + [] + + [pin1] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 1 + pitch = 1.42063 + region_ids='1 2 5' + quad_center_elements = true + num_sectors = 2 + ring_radii = 0.2 + duct_halfpitch = 0.68 + mesh_intervals = '1 1 1' + [] + + [pin2] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 2 + pitch = 1.42063 + region_ids='2' + quad_center_elements = true + num_sectors = 2 + mesh_intervals = '2' + [] + + [pin3] + type = PinMeshGenerator + reactor_params = rmp + pin_type = 3 + pitch = 1.42063 + region_ids='3 4' + quad_center_elements = true + num_sectors = 2 + ring_radii = 0.3818 + mesh_intervals = '1 1' + [] + + [amg1] + type = AssemblyMeshGenerator + assembly_type = 1 + inputs = 'pin2' + pattern = '0 0; + 0 0' + [] + + [amg2] + type = AssemblyMeshGenerator + assembly_type = 2 + inputs = 'pin3 pin1 pin2' + pattern = '0 1; + 1 2' + [] + + [cmg] + type = CoreMeshGenerator + inputs = 'amg2 amg1 empty' + dummy_assembly_name = empty + pattern = '1 0; + 0 1' + extrude = true + [] + [elem_gen] + type = ElementGenerator + input = cmg + nodal_positions = '0 0 0 + 1 0 0 + 1 1 0 + 0 1 0' + + element_connectivity = '0 1 2 3' + elem_type = "QUAD4" + [] + data_driven = true +[] + +[Problem] + solve = false +[] + +[Executioner] + type = Steady +[] + +[Reporters/metadata] + type = MeshMetaDataReporter +[] + +[Outputs] + json = true +[] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json new file mode 100644 index 000000000000..457265f33baf --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json @@ -0,0 +1,490 @@ +{ + "app_name": "main", + "current_time": "Thu Dec 14 17:01:57 2023", + "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", + "executable_time": "Thu Dec 14 16:47:00 2023", + "libmesh_version": "", + "moose_version": "git commit 3cb1b71d1c on 2023-12-14", + "petsc_version": "3.20.1", + "reporters": { + "metadata": { + "type": "MeshMetaDataReporter", + "values": { + "values": { + "type": "std::map, std::allocator>>" + } + } + } + }, + "slepc_version": "3.20.0", + "time_steps": [ + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [ + 3 + ] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 1.7703 + ] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 4 + ] + ] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin1" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 3.7884 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg1" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/cmg/peripheral_ring_radius": { + "type": "double", + "value": 7.0 + }, + "MeshMetaData/cmg/peripheral_ring_region_id": { + "type": "unsigned short", + "value": 5 + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin1" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 1, + 2 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.3425 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.5404 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 1 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 3.7884 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 2 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Hex" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + } + } + }, + "time": 0.0, + "time_step": 0 + }, + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [ + 3 + ] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 1.7703 + ] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 4 + ] + ] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin1" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 3.7884 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg1" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/cmg/peripheral_ring_radius": { + "type": "double", + "value": 7.0 + }, + "MeshMetaData/cmg/peripheral_ring_region_id": { + "type": "unsigned short", + "value": 5 + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin1" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 1, + 2 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.3425 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.5404 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 1 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 3.7884 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 2 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Hex" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + } + } + }, + "time": 1.0, + "time_step": 1 + } + ] +} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json new file mode 100644 index 000000000000..86eacd128aa4 --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json @@ -0,0 +1,1114 @@ +{ + "app_name": "main", + "current_time": "Thu Dec 14 16:58:00 2023", + "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", + "executable_time": "Thu Dec 14 16:47:00 2023", + "libmesh_version": "", + "moose_version": "git commit 3cb1b71d1c on 2023-12-14", + "petsc_version": "3.20.1", + "reporters": { + "metadata": { + "type": "MeshMetaDataReporter", + "values": { + "values": { + "type": "std::map, std::allocator>>" + } + } + } + }, + "slepc_version": "3.20.0", + "time_steps": [ + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [ + "A1_R41", + "A1_R141" + ] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [ + 41, + 141 + ] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin2" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/amg2/assembly_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/amg2/background_block_name": { + "type": "std::vector", + "value": [ + "A2_R51", + "A2_R151" + ] + }, + "MeshMetaData/amg2/background_region_id": { + "type": "std::vector", + "value": [ + 51, + 151 + ] + }, + "MeshMetaData/amg2/duct_block_names": { + "type": "std::vector>", + "value": [ + [ + "A2_R52" + ], + [ + "A2_R152" + ] + ] + }, + "MeshMetaData/amg2/duct_halfpitches": { + "type": "std::vector", + "value": [ + 3.5 + ] + }, + "MeshMetaData/amg2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 52 + ], + [ + 152 + ] + ] + }, + "MeshMetaData/amg2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg2/pin_names": { + "type": "std::vector", + "value": [ + "pin1", + "pin3" + ] + }, + "MeshMetaData/amg2/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/amg2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + -1, + 1 + ], + [ + 1, + 0, + -1 + ], + [ + -1, + 1 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg1", + "amg2" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": true + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin2", + "pin1", + "pin3" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 12, + 112 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 0.68 + ] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 13 + ], + [ + 113 + ] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P1_R11", + "P1_R12", + "P1_R13" + ], + [ + "P1_R111", + "P1_R112", + "P1_R113" + ] + ] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 11, + 12, + 13 + ], + [ + 111, + 112, + 113 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.2 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 11 + ], + [ + 111 + ] + ] + }, + "MeshMetaData/pin2/background_region_id": { + "type": "std::vector", + "value": [ + 21, + 121 + ] + }, + "MeshMetaData/pin2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P2_R21" + ], + [ + "P2_R121" + ] + ] + }, + "MeshMetaData/pin2/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 2, + [ + [ + 21 + ], + [ + 121 + ] + ] + ] + ] + }, + "MeshMetaData/pin2/pin_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/pin2/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin2/ring_radii": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/ring_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin3/background_region_id": { + "type": "std::vector", + "value": [ + 32, + 132 + ] + }, + "MeshMetaData/pin3/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin3/duct_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin3/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P3_R31", + "P3_R32" + ], + [ + "P3_R131", + "P3_R132" + ] + ] + }, + "MeshMetaData/pin3/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 3, + [ + [ + 31, + 32 + ], + [ + 131, + 132 + ] + ] + ] + ] + }, + "MeshMetaData/pin3/pin_type": { + "type": "unsigned short", + "value": 3 + }, + "MeshMetaData/pin3/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin3/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin3/ring_radii": { + "type": "std::vector", + "value": [ + 0.3818 + ] + }, + "MeshMetaData/pin3/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 31 + ], + [ + 131 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/rmp/axial_mesh_intervals": { + "type": "std::vector", + "value": [ + 1, + 1 + ] + }, + "MeshMetaData/rmp/axial_mesh_sizes": { + "type": "std::vector", + "value": [ + 1.0, + 1.0 + ] + }, + "MeshMetaData/rmp/bottom_boundary_id": { + "type": "short", + "value": 202 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 3 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Hex" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + }, + "MeshMetaData/rmp/top_boundary_id": { + "type": "short", + "value": 201 + } + } + }, + "time": 0.0, + "time_step": 0 + }, + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [ + "A1_R41", + "A1_R141" + ] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [ + 41, + 141 + ] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin2" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/amg2/assembly_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/amg2/background_block_name": { + "type": "std::vector", + "value": [ + "A2_R51", + "A2_R151" + ] + }, + "MeshMetaData/amg2/background_region_id": { + "type": "std::vector", + "value": [ + 51, + 151 + ] + }, + "MeshMetaData/amg2/duct_block_names": { + "type": "std::vector>", + "value": [ + [ + "A2_R52" + ], + [ + "A2_R152" + ] + ] + }, + "MeshMetaData/amg2/duct_halfpitches": { + "type": "std::vector", + "value": [ + 3.5 + ] + }, + "MeshMetaData/amg2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 52 + ], + [ + 152 + ] + ] + }, + "MeshMetaData/amg2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg2/pin_names": { + "type": "std::vector", + "value": [ + "pin1", + "pin3" + ] + }, + "MeshMetaData/amg2/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/amg2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + -1, + 1 + ], + [ + 1, + 0, + -1 + ], + [ + -1, + 1 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg1", + "amg2" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": true + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin2", + "pin1", + "pin3" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 12, + 112 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 0.68 + ] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 13 + ], + [ + 113 + ] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P1_R11", + "P1_R12", + "P1_R13" + ], + [ + "P1_R111", + "P1_R112", + "P1_R113" + ] + ] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 11, + 12, + 13 + ], + [ + 111, + 112, + 113 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.2 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 11 + ], + [ + 111 + ] + ] + }, + "MeshMetaData/pin2/background_region_id": { + "type": "std::vector", + "value": [ + 21, + 121 + ] + }, + "MeshMetaData/pin2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P2_R21" + ], + [ + "P2_R121" + ] + ] + }, + "MeshMetaData/pin2/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 2, + [ + [ + 21 + ], + [ + 121 + ] + ] + ] + ] + }, + "MeshMetaData/pin2/pin_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/pin2/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin2/ring_radii": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/ring_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin3/background_region_id": { + "type": "std::vector", + "value": [ + 32, + 132 + ] + }, + "MeshMetaData/pin3/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin3/duct_region_ids": { + "type": "std::vector>", + "value": [ + [], + [] + ] + }, + "MeshMetaData/pin3/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/pin_block_names": { + "type": "std::vector>", + "value": [ + [ + "P3_R31", + "P3_R32" + ], + [ + "P3_R131", + "P3_R132" + ] + ] + }, + "MeshMetaData/pin3/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 3, + [ + [ + 31, + 32 + ], + [ + 131, + 132 + ] + ] + ] + ] + }, + "MeshMetaData/pin3/pin_type": { + "type": "unsigned short", + "value": 3 + }, + "MeshMetaData/pin3/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin3/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin3/ring_radii": { + "type": "std::vector", + "value": [ + 0.3818 + ] + }, + "MeshMetaData/pin3/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 31 + ], + [ + 131 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 7.10315 + }, + "MeshMetaData/rmp/axial_mesh_intervals": { + "type": "std::vector", + "value": [ + 1, + 1 + ] + }, + "MeshMetaData/rmp/axial_mesh_sizes": { + "type": "std::vector", + "value": [ + 1.0, + 1.0 + ] + }, + "MeshMetaData/rmp/bottom_boundary_id": { + "type": "short", + "value": 202 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 3 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Hex" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + }, + "MeshMetaData/rmp/top_boundary_id": { + "type": "short", + "value": 201 + } + } + }, + "time": 1.0, + "time_step": 1 + } + ] +} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json new file mode 100644 index 000000000000..48b12ec0659c --- /dev/null +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json @@ -0,0 +1,918 @@ +{ + "app_name": "main", + "current_time": "Thu Dec 14 16:51:35 2023", + "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", + "executable_time": "Thu Dec 14 16:47:00 2023", + "libmesh_version": "", + "moose_version": "git commit 3cb1b71d1c on 2023-12-14", + "petsc_version": "3.20.1", + "reporters": { + "metadata": { + "type": "MeshMetaDataReporter", + "values": { + "values": { + "type": "std::map, std::allocator>>" + } + } + } + }, + "slepc_version": "3.20.0", + "time_steps": [ + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin2" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/amg2/assembly_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/amg2/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/background_region_id": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 1 + ], + [ + 1, + 2 + ] + ] + }, + "MeshMetaData/amg2/pin_names": { + "type": "std::vector", + "value": [ + "pin3", + "pin1", + "pin2" + ] + }, + "MeshMetaData/amg2/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/amg2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg2", + "amg1" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": true + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin3", + "pin1", + "pin2" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 0.68 + ] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 5 + ] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 1, + 2, + 5 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.2 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 1 + ] + ] + }, + "MeshMetaData/pin2/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin2/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 2, + [ + [ + 2 + ] + ] + ] + ] + }, + "MeshMetaData/pin2/pin_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/pin2/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin2/ring_radii": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/ring_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin3/background_region_id": { + "type": "std::vector", + "value": [ + 4 + ] + }, + "MeshMetaData/pin3/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin3/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin3/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin3/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 3, + [ + [ + 3, + 4 + ] + ] + ] + ] + }, + "MeshMetaData/pin3/pin_type": { + "type": "unsigned short", + "value": 3 + }, + "MeshMetaData/pin3/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin3/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin3/ring_radii": { + "type": "std::vector", + "value": [ + 0.3818 + ] + }, + "MeshMetaData/pin3/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 3 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/rmp/axial_mesh_intervals": { + "type": "std::vector", + "value": [ + 1 + ] + }, + "MeshMetaData/rmp/axial_mesh_sizes": { + "type": "std::vector", + "value": [ + 1.0 + ] + }, + "MeshMetaData/rmp/bottom_boundary_id": { + "type": "short", + "value": 202 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 3 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Square" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + }, + "MeshMetaData/rmp/top_boundary_id": { + "type": "short", + "value": 201 + } + } + }, + "time": 0.0, + "time_step": 0 + }, + { + "metadata": { + "values": { + "MeshMetaData/amg1/assembly_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/amg1/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/background_region_id": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg1/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg1/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "MeshMetaData/amg1/pin_names": { + "type": "std::vector", + "value": [ + "pin2" + ] + }, + "MeshMetaData/amg1/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg1/pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/amg1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/amg2/assembly_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/amg2/background_block_name": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/background_region_id": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/duct_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/amg2/duct_region_ids": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/amg2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/amg2/pin_block_name_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pin_lattice": { + "type": "std::vector>", + "value": [ + [ + 0, + 1 + ], + [ + 1, + 2 + ] + ] + }, + "MeshMetaData/amg2/pin_names": { + "type": "std::vector", + "value": [ + "pin3", + "pin1", + "pin2" + ] + }, + "MeshMetaData/amg2/pin_region_id_map": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [] + }, + "MeshMetaData/amg2/pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/amg2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/cmg/assembly_lattice": { + "type": "std::vector>", + "value": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ] + }, + "MeshMetaData/cmg/assembly_names": { + "type": "std::vector", + "value": [ + "amg2", + "amg1" + ] + }, + "MeshMetaData/cmg/extruded": { + "type": "bool", + "value": true + }, + "MeshMetaData/cmg/pin_names": { + "type": "std::vector", + "value": [ + "pin3", + "pin1", + "pin2" + ] + }, + "MeshMetaData/cmg/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin1/duct_halfpitches": { + "type": "std::vector", + "value": [ + 0.68 + ] + }, + "MeshMetaData/pin1/duct_region_ids": { + "type": "std::vector>", + "value": [ + [ + 5 + ] + ] + }, + "MeshMetaData/pin1/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin1/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin1/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 1, + [ + [ + 1, + 2, + 5 + ] + ] + ] + ] + }, + "MeshMetaData/pin1/pin_type": { + "type": "unsigned short", + "value": 1 + }, + "MeshMetaData/pin1/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin1/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin1/ring_radii": { + "type": "std::vector", + "value": [ + 0.2 + ] + }, + "MeshMetaData/pin1/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 1 + ] + ] + }, + "MeshMetaData/pin2/background_region_id": { + "type": "std::vector", + "value": [ + 2 + ] + }, + "MeshMetaData/pin2/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin2/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin2/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin2/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 2, + [ + [ + 2 + ] + ] + ] + ] + }, + "MeshMetaData/pin2/pin_type": { + "type": "unsigned short", + "value": 2 + }, + "MeshMetaData/pin2/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin2/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin2/ring_radii": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin2/ring_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin3/background_region_id": { + "type": "std::vector", + "value": [ + 4 + ] + }, + "MeshMetaData/pin3/duct_halfpitches": { + "type": "std::vector", + "value": [] + }, + "MeshMetaData/pin3/duct_region_ids": { + "type": "std::vector>", + "value": [ + [] + ] + }, + "MeshMetaData/pin3/extruded": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_homogenized": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/is_single_pin": { + "type": "bool", + "value": false + }, + "MeshMetaData/pin3/pin_block_names": { + "type": "std::vector>", + "value": [] + }, + "MeshMetaData/pin3/pin_region_ids": { + "type": "std::map>, std::less, std::allocator>>>>", + "value": [ + [ + 3, + [ + [ + 3, + 4 + ] + ] + ] + ] + }, + "MeshMetaData/pin3/pin_type": { + "type": "unsigned short", + "value": 3 + }, + "MeshMetaData/pin3/pitch": { + "type": "double", + "value": 1.42063 + }, + "MeshMetaData/pin3/reactor_params_name": { + "type": "std::string", + "value": "rmp" + }, + "MeshMetaData/pin3/ring_radii": { + "type": "std::vector", + "value": [ + 0.3818 + ] + }, + "MeshMetaData/pin3/ring_region_ids": { + "type": "std::vector>", + "value": [ + [ + 3 + ] + ] + }, + "MeshMetaData/rmp/assembly_pitch": { + "type": "double", + "value": 2.84126 + }, + "MeshMetaData/rmp/axial_mesh_intervals": { + "type": "std::vector", + "value": [ + 1 + ] + }, + "MeshMetaData/rmp/axial_mesh_sizes": { + "type": "std::vector", + "value": [ + 1.0 + ] + }, + "MeshMetaData/rmp/bottom_boundary_id": { + "type": "short", + "value": 202 + }, + "MeshMetaData/rmp/bypass_meshgen": { + "type": "bool", + "value": true + }, + "MeshMetaData/rmp/mesh_dimensions": { + "type": "int", + "value": 3 + }, + "MeshMetaData/rmp/mesh_geometry": { + "type": "std::string", + "value": "Square" + }, + "MeshMetaData/rmp/name_id_map": { + "type": "std::map, std::less, std::allocator>>>", + "value": {} + }, + "MeshMetaData/rmp/radial_boundary_id": { + "type": "short", + "value": 200 + }, + "MeshMetaData/rmp/top_boundary_id": { + "type": "short", + "value": 201 + } + } + }, + "time": 1.0, + "time_step": 1 + } + ] +} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 4c35ceab1abf..a63ee2928093 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -17,13 +17,17 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] [square_metadata_bypass_meshgen] - requirement = 'The system shall print out reactor-related metadata to console output for a full 3D square core mesh with 3 pin types and 2 assembly types and bypass all mesh subgenerator calls' - type = 'RunApp' - input = 'core_square.i' - cli_args = "Mesh/cmg/show_rgmb_metadata=true - Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --metadata-only" - expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' + requirement = 'The system shall output reactor-related metadata to for a full 3D square core mesh in data driven mode and default mesh as the final generator' + type = 'JSONDiff' + input = 'core_square_datadriven.i' + jsondiff = 'core_square_datadriven_out.json' + [] + [bypass_meshgen_err] + requirement = 'The system shall throw an error in data driven mode with CoreMeshGenerator as the final generator' + type = 'RunException' + input = 'core_square_datadriven.i' + cli_args = "Mesh/inactive=elem_gen" + expect_err = 'or points to a null mesh' [] [core_shared_assembly_ids] requirement = 'The system shall throw an error if a core is composed of different assemblies with a shared assembly type id' @@ -105,13 +109,10 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] [hex_metadata_bypass_meshgen] - requirement = 'The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with empty lattice positions and explicit block name specification and bypass all mesh subgenerator calls' - type = 'RunApp' - input = 'core_hex.i' - cli_args = "Mesh/cmg/show_rgmb_metadata=true - Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --metadata-only" - expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' + requirement = 'The system shall output reactor-related metadata to for a full 3D hexagonal core mesh in data driven mode and default mesh as the final generator' + type = 'JSONDiff' + input = 'core_hex_datadriven.i' + jsondiff = 'core_hex_datadriven_out.json' [] [single_assembly_square_core] requirement = 'The system shall generate a full 3D square core mesh with 2 single assembly types' @@ -188,13 +189,10 @@ expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] [hex_metadata_2d_bypass_meshgen] - requirement = 'The system shall print out reactor-related metadata to console output for a 2D hexagonal core mesh and bypass all mesh subgenerator calls' - type = 'RunApp' - input = 'core_hex_2d.i' - cli_args = "Mesh/cmg/show_rgmb_metadata=true - Outputs/out/output_extra_element_ids=false - Outputs/out/extra_element_ids_to_output='' --metadata-only" - expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' + requirement = 'The system shall output reactor-related metadata to for a full 3D hexagonal core mesh in data driven mode and default mesh as the final generator' + type = 'JSONDiff' + input = 'core_hex_2d_datadriven.i' + jsondiff = 'core_hex_2d_datadriven_out.json' [] [hex_metadata_extra_assemblies] requirement = 'The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with extra assemblies not part of core lattice' From eccfccecdd45275f8e92cdd45f1ada735a7e4742 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 14 Dec 2023 17:06:10 -0500 Subject: [PATCH 08/23] Update documentation to reflect new mesh parameter name --- .../doc/content/source/meshgenerators/AssemblyMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/CoreMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/PinMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/ReactorMeshParams.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index b8b865034008..4b6cb8d208f2 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -67,7 +67,7 @@ For each of the pins listed in `pin_names`, the pin-level metadata is also displ In addition, the value of the `reactor_params_name` metadata can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index 1b314ad07cb6..7c5e492e62f6 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -52,7 +52,7 @@ For meshes where a core periphery is defined, the following metadata is also def In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 0be9062de501..91c119635ebc 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -52,7 +52,7 @@ At the pin level, the following metadata is defined on the pin mesh: In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index b77dc4fa3f60..319e8f17a8ab 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -15,7 +15,7 @@ The `ReactorMeshParams` object stores certain global mesh information as metadat - `axial_mesh_sizes`: Length of each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_regions). Only relevant for 3-D meshes. - `axial_mesh_intervals`: Number of elements in the axial dimension for each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_mesh_intervals). Only relevant for 3-D meshes. -In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_only) can be set to true. +In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. ## Example Syntax From e8cccf007324030a59d3a5ce0cd77c90ef91d846 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 14 Dec 2023 17:41:56 -0500 Subject: [PATCH 09/23] Remove unneeded variables based on framework updates --- .../reactor/include/meshgenerators/AssemblyMeshGenerator.h | 3 --- modules/reactor/include/meshgenerators/CoreMeshGenerator.h | 4 ---- .../include/meshgenerators/ReactorGeometryMeshBuilderBase.h | 1 - modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C | 5 +++-- modules/reactor/src/meshgenerators/CoreMeshGenerator.C | 5 +++-- .../test/tests/meshgenerators/core_mesh_generator/tests | 2 +- 6 files changed, 7 insertions(+), 13 deletions(-) diff --git a/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h b/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h index 4a9bc2f68447..6778783f89cf 100644 --- a/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/AssemblyMeshGenerator.h @@ -46,9 +46,6 @@ class AssemblyMeshGenerator : public ReactorGeometryMeshBuilderBase ///The number of divisions in the meshes of the ducts const std::vector _duct_intervals; - ///Temporary container for mesh pointers pointing to input meshes - std::vector *> _mesh_ptrs; - ///Vector used to set the "region_id" extra-element integer of the assembly background elements std::vector _background_region_id; diff --git a/modules/reactor/include/meshgenerators/CoreMeshGenerator.h b/modules/reactor/include/meshgenerators/CoreMeshGenerator.h index e5ea2b92559b..9009221f9d34 100644 --- a/modules/reactor/include/meshgenerators/CoreMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/CoreMeshGenerator.h @@ -63,10 +63,6 @@ class CoreMeshGenerator : public ReactorGeometryMeshBuilderBase const unsigned int _periphery_num_layers; /// Desired (maximum) triangle area const Real _desired_area; - - ///Temporary container for mesh pointers pointing to input meshes - std::vector *> _mesh_ptrs; - /// Desired (local) triangle area as a function of (x,y) std::string _desired_area_func; diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 81faec5e0af4..3101b668790e 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -10,7 +10,6 @@ #pragma once #include "MeshGenerator.h" -#include "CastUniquePointer.h" #include "libmesh/elem.h" namespace RGMB diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 545983c9cca3..8219f750e5bd 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -422,9 +422,10 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) // Store final mesh subgenerator _build_mesh = &getMeshByName(build_mesh_name); } - // If mesh generation should be bypassed, then store the input meshes to free later + // If mesh generation should be bypassed, call getMeshes to resolve MeshGeneratorSystem + // dependencies else - _mesh_ptrs = getMeshes("inputs"); + auto input_meshes = getMeshes("inputs"); generateMetadata(); } diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index a8fb28ff0e8a..508ff71da77c 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -540,9 +540,10 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) // Store final mesh subgenerator _build_mesh = &getMeshByName(build_mesh_name); } - // If mesh generation should be bypassed, then store the input meshes to free later + // If mesh generation should be bypassed, call getMeshes to resolve MeshGeneratorSystem + // dependencies else - _mesh_ptrs = getMeshes("inputs"); + auto input_meshes = getMeshes("inputs"); generateMetadata(); } diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index a63ee2928093..f763b0c17e3b 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -189,7 +189,7 @@ expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] [hex_metadata_2d_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata to for a full 3D hexagonal core mesh in data driven mode and default mesh as the final generator' + requirement = 'The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default mesh as the final generator' type = 'JSONDiff' input = 'core_hex_2d_datadriven.i' jsondiff = 'core_hex_2d_datadriven_out.json' From c8c6be976452aabdfaf21a2e4a4c1e174cef53db Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 11 Jan 2024 16:10:58 -0500 Subject: [PATCH 10/23] Changes to RGMB to support design of Mesh/data_driven_generator --- .../include/meshgenerators/ElementGenerator.h | 2 +- framework/src/base/MeshGeneratorSystem.C | 2 +- .../src/meshgenerators/ElementGenerator.C | 5 - .../meshgenerators/AssemblyMeshGenerator.md | 2 +- .../meshgenerators/CoreMeshGenerator.md | 2 +- .../source/meshgenerators/PinMeshGenerator.md | 2 +- .../ReactorGeometryMeshBuilderBase.h | 2 +- .../meshgenerators/ReactorMeshParams.h | 2 +- .../meshgenerators/AssemblyMeshGenerator.C | 4 +- .../src/meshgenerators/CoreMeshGenerator.C | 5 +- .../src/meshgenerators/PinMeshGenerator.C | 4 +- .../ReactorGeometryMeshBuilderBase.C | 5 - .../src/meshgenerators/ReactorMeshParams.C | 20 +- .../core_hex_2d_datadriven.i | 8 +- .../core_mesh_generator/core_hex_datadriven.i | 8 +- .../core_square_datadriven.i | 14 +- .../gold/core_hex_2d_datadriven_out.json | 246 +------- .../gold/core_hex_datadriven_out.json | 558 +----------------- .../gold/core_square_datadriven_out.json | 460 +-------------- .../meshgenerators/core_mesh_generator/tests | 17 +- 20 files changed, 67 insertions(+), 1301 deletions(-) diff --git a/framework/include/meshgenerators/ElementGenerator.h b/framework/include/meshgenerators/ElementGenerator.h index 310af446458b..195c0a158e83 100644 --- a/framework/include/meshgenerators/ElementGenerator.h +++ b/framework/include/meshgenerators/ElementGenerator.h @@ -25,7 +25,7 @@ class ElementGenerator : public MeshGenerator Elem * getElemType(const std::string & type); - void generateData() override; + void generateData() override{}; protected: /// Mesh that possibly comes from another generator diff --git a/framework/src/base/MeshGeneratorSystem.C b/framework/src/base/MeshGeneratorSystem.C index a1918cf4efb6..b55f83ea0142 100644 --- a/framework/src/base/MeshGeneratorSystem.C +++ b/framework/src/base/MeshGeneratorSystem.C @@ -614,7 +614,7 @@ MeshGeneratorSystem::getSavedMesh(const std::string & name) if (!mesh_unique_ptr) mooseError("While getting the saved mesh generator '", name, - "', said mesh has already been retreived or points to a null mesh"); + "', said mesh has already been retrieved"); return std::move(mesh_unique_ptr); } diff --git a/framework/src/meshgenerators/ElementGenerator.C b/framework/src/meshgenerators/ElementGenerator.C index 310b84759224..bab4013ba4eb 100644 --- a/framework/src/meshgenerators/ElementGenerator.C +++ b/framework/src/meshgenerators/ElementGenerator.C @@ -94,8 +94,3 @@ ElementGenerator::generate() return dynamic_pointer_cast(mesh); } - -void -ElementGenerator::generateData() -{ -} diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index 4b6cb8d208f2..61cb5073d4aa 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -67,7 +67,7 @@ For each of the pins listed in `pin_names`, the pin-level metadata is also displ In addition, the value of the `reactor_params_name` metadata can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index 7c5e492e62f6..ddfce758e3e8 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -52,7 +52,7 @@ For meshes where a core periphery is defined, the following metadata is also def In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 91c119635ebc..176ad0e01008 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -52,7 +52,7 @@ At the pin level, the following metadata is defined on the pin mesh: In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index 3101b668790e..ce30f9399884 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -69,7 +69,7 @@ class ReactorGeometryMeshBuilderBase : public MeshGenerator ReactorGeometryMeshBuilderBase(const InputParameters & parameters); - void generateData() override; + void generateData() override{}; protected: /** diff --git a/modules/reactor/include/meshgenerators/ReactorMeshParams.h b/modules/reactor/include/meshgenerators/ReactorMeshParams.h index 0ff424774d4c..89cdd6b11623 100644 --- a/modules/reactor/include/meshgenerators/ReactorMeshParams.h +++ b/modules/reactor/include/meshgenerators/ReactorMeshParams.h @@ -24,7 +24,7 @@ class ReactorMeshParams : public MeshGenerator std::unique_ptr generate() override; - void generateData() override; + void generateData() override{}; protected: /// The number of dimension in the mesh diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 8219f750e5bd..402c4f3aa37e 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -480,8 +480,8 @@ AssemblyMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB - // mesh should not be the final mesh generator with this option specified + // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() + // should not be called with this option specified if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index 508ff71da77c..5b2b9a33f114 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -618,14 +618,13 @@ CoreMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB - // mesh should not be the final mesh generator with this option specified + // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() + // should not be called with this option specified if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; return null_mesh; } - // This generate() method will be called once the subgenerators that we depend on are // called. This is where we reassign subdomain ids/names in case they were merged // when stitching assemblies into the core. This is also where we set region_id extra diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index b80af39e1fca..3857ee1e4510 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -523,8 +523,8 @@ PinMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. RGMB - // mesh should not be the final mesh generator with this option specified + // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() + // should not be called with this option specified if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; diff --git a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C index 260b2845c66b..6e7ec47dfb02 100644 --- a/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C +++ b/modules/reactor/src/meshgenerators/ReactorGeometryMeshBuilderBase.C @@ -318,8 +318,3 @@ ReactorGeometryMeshBuilderBase::addDepletionId(MeshBase & input_mesh, for (Elem * const elem : input_mesh.active_element_ptr_range()) elem->set_extra_integer(depl_id_index, depl_ids.at(elem->id())); } - -void -ReactorGeometryMeshBuilderBase::generateData() -{ -} diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index 5c07d61f21ba..429142f5eb59 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -82,10 +82,12 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); this->declareMeshProperty("name_id_map", _name_id_map); - // Option to bypass mesh generation depends on value of Mesh/data_driven + // Option to bypass mesh generation depends on existence of Mesh/data_driven_generator parameter const auto & moose_mesh = _app.actionWarehouse().getMesh(); - const auto data_driven = moose_mesh->parameters().get("data_driven"); - this->declareMeshProperty(RGMB::bypass_meshgen, data_driven); + const auto data_driven_generator = + moose_mesh->parameters().get("data_driven_generator"); + const bool bypass_meshgen = (data_driven_generator != ""); + this->declareMeshProperty(RGMB::bypass_meshgen, bypass_meshgen); if (isParamValid("top_boundary_id")) { @@ -114,11 +116,13 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) std::unique_ptr ReactorMeshParams::generate() { + // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() + // mesh should not be called with this option specified + if (getMeshProperty(RGMB::bypass_meshgen)) + { + auto null_mesh = nullptr; + return null_mesh; + } auto mesh = buildMeshBaseObject(); return dynamic_pointer_cast(mesh); } - -void -ReactorMeshParams::generateData() -{ -} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i index 22fcc1849e2b..cf5fbb3e880a 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i @@ -59,7 +59,7 @@ element_connectivity = '0 1 2 3' elem_type = "QUAD4" [] - data_driven = true + data_driven_generator = elem_gen [] [Problem] @@ -75,5 +75,9 @@ [] [Outputs] - json = true + [out] + type = JSON + execute_on = FINAL + execute_system_information_on = none + [] [] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i index fad7450f315e..8612d3be4e28 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i @@ -98,7 +98,7 @@ element_connectivity = '0 1 2 3' elem_type = "QUAD4" [] - data_driven = true + data_driven_generator = elem_gen [] [Problem] @@ -114,5 +114,9 @@ [] [Outputs] - json = true + [out] + type = JSON + execute_on = FINAL + execute_system_information_on = none + [] [] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i index c28a23936f3b..a626693e4bd2 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i @@ -82,7 +82,13 @@ element_connectivity = '0 1 2 3' elem_type = "QUAD4" [] - data_driven = true + [transform] + type = TransformGenerator + input = elem_gen + transform = scale + vector_value = '1 1 1' + [] + data_driven_generator = elem_gen [] [Problem] @@ -98,5 +104,9 @@ [] [Outputs] - json = true + [out] + type = JSON + execute_on = FINAL + execute_system_information_on = none + [] [] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json index 457265f33baf..e15fef747ace 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json @@ -1,11 +1,4 @@ { - "app_name": "main", - "current_time": "Thu Dec 14 17:01:57 2023", - "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", - "executable_time": "Thu Dec 14 16:47:00 2023", - "libmesh_version": "", - "moose_version": "git commit 3cb1b71d1c on 2023-12-14", - "petsc_version": "3.20.1", "reporters": { "metadata": { "type": "MeshMetaDataReporter", @@ -16,7 +9,6 @@ } } }, - "slepc_version": "3.20.0", "time_steps": [ { "metadata": { @@ -249,242 +241,8 @@ } } }, - "time": 0.0, - "time_step": 0 - }, - { - "metadata": { - "values": { - "MeshMetaData/amg1/assembly_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/amg1/background_block_name": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg1/background_region_id": { - "type": "std::vector", - "value": [ - 3 - ] - }, - "MeshMetaData/amg1/duct_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg1/duct_halfpitches": { - "type": "std::vector", - "value": [ - 1.7703 - ] - }, - "MeshMetaData/amg1/duct_region_ids": { - "type": "std::vector>", - "value": [ - [ - 4 - ] - ] - }, - "MeshMetaData/amg1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pin_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 0 - ], - [ - 0, - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - "MeshMetaData/amg1/pin_names": { - "type": "std::vector", - "value": [ - "pin1" - ] - }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pitch": { - "type": "double", - "value": 3.7884 - }, - "MeshMetaData/amg1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/cmg/assembly_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 0 - ], - [ - 0, - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - "MeshMetaData/cmg/assembly_names": { - "type": "std::vector", - "value": [ - "amg1" - ] - }, - "MeshMetaData/cmg/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/cmg/peripheral_ring_radius": { - "type": "double", - "value": 7.0 - }, - "MeshMetaData/cmg/peripheral_ring_region_id": { - "type": "unsigned short", - "value": 5 - }, - "MeshMetaData/cmg/pin_names": { - "type": "std::vector", - "value": [ - "pin1" - ] - }, - "MeshMetaData/cmg/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/background_region_id": { - "type": "std::vector", - "value": [ - 2 - ] - }, - "MeshMetaData/pin1/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin1/duct_region_ids": { - "type": "std::vector>", - "value": [ - [] - ] - }, - "MeshMetaData/pin1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/pin_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/pin1/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 1, - [ - [ - 1, - 2 - ] - ] - ] - ] - }, - "MeshMetaData/pin1/pin_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/pin1/pitch": { - "type": "double", - "value": 1.3425 - }, - "MeshMetaData/pin1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/ring_radii": { - "type": "std::vector", - "value": [ - 0.5404 - ] - }, - "MeshMetaData/pin1/ring_region_ids": { - "type": "std::vector>", - "value": [ - [ - 1 - ] - ] - }, - "MeshMetaData/rmp/assembly_pitch": { - "type": "double", - "value": 3.7884 - }, - "MeshMetaData/rmp/bypass_meshgen": { - "type": "bool", - "value": true - }, - "MeshMetaData/rmp/mesh_dimensions": { - "type": "int", - "value": 2 - }, - "MeshMetaData/rmp/mesh_geometry": { - "type": "std::string", - "value": "Hex" - }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, - "MeshMetaData/rmp/radial_boundary_id": { - "type": "short", - "value": 200 - } - } - }, - "time": 1.0, - "time_step": 1 + "time": 2.0, + "time_step": 2 } ] } diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json index 86eacd128aa4..c3106f2e433b 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json @@ -1,11 +1,4 @@ { - "app_name": "main", - "current_time": "Thu Dec 14 16:58:00 2023", - "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", - "executable_time": "Thu Dec 14 16:47:00 2023", - "libmesh_version": "", - "moose_version": "git commit 3cb1b71d1c on 2023-12-14", - "petsc_version": "3.20.1", "reporters": { "metadata": { "type": "MeshMetaDataReporter", @@ -16,7 +9,6 @@ } } }, - "slepc_version": "3.20.0", "time_steps": [ { "metadata": { @@ -561,554 +553,8 @@ } } }, - "time": 0.0, - "time_step": 0 - }, - { - "metadata": { - "values": { - "MeshMetaData/amg1/assembly_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/amg1/background_block_name": { - "type": "std::vector", - "value": [ - "A1_R41", - "A1_R141" - ] - }, - "MeshMetaData/amg1/background_region_id": { - "type": "std::vector", - "value": [ - 41, - 141 - ] - }, - "MeshMetaData/amg1/duct_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg1/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg1/duct_region_ids": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pin_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 0 - ], - [ - 0, - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - "MeshMetaData/amg1/pin_names": { - "type": "std::vector", - "value": [ - "pin2" - ] - }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pitch": { - "type": "double", - "value": 7.10315 - }, - "MeshMetaData/amg1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/amg2/assembly_type": { - "type": "unsigned short", - "value": 2 - }, - "MeshMetaData/amg2/background_block_name": { - "type": "std::vector", - "value": [ - "A2_R51", - "A2_R151" - ] - }, - "MeshMetaData/amg2/background_region_id": { - "type": "std::vector", - "value": [ - 51, - 151 - ] - }, - "MeshMetaData/amg2/duct_block_names": { - "type": "std::vector>", - "value": [ - [ - "A2_R52" - ], - [ - "A2_R152" - ] - ] - }, - "MeshMetaData/amg2/duct_halfpitches": { - "type": "std::vector", - "value": [ - 3.5 - ] - }, - "MeshMetaData/amg2/duct_region_ids": { - "type": "std::vector>", - "value": [ - [ - 52 - ], - [ - 152 - ] - ] - }, - "MeshMetaData/amg2/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg2/pin_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 0 - ], - [ - 0, - 1, - 0 - ], - [ - 0, - 0 - ] - ] - }, - "MeshMetaData/amg2/pin_names": { - "type": "std::vector", - "value": [ - "pin1", - "pin3" - ] - }, - "MeshMetaData/amg2/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg2/pitch": { - "type": "double", - "value": 7.10315 - }, - "MeshMetaData/amg2/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/cmg/assembly_lattice": { - "type": "std::vector>", - "value": [ - [ - -1, - 1 - ], - [ - 1, - 0, - -1 - ], - [ - -1, - 1 - ] - ] - }, - "MeshMetaData/cmg/assembly_names": { - "type": "std::vector", - "value": [ - "amg1", - "amg2" - ] - }, - "MeshMetaData/cmg/extruded": { - "type": "bool", - "value": true - }, - "MeshMetaData/cmg/pin_names": { - "type": "std::vector", - "value": [ - "pin2", - "pin1", - "pin3" - ] - }, - "MeshMetaData/cmg/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/background_region_id": { - "type": "std::vector", - "value": [ - 12, - 112 - ] - }, - "MeshMetaData/pin1/duct_halfpitches": { - "type": "std::vector", - "value": [ - 0.68 - ] - }, - "MeshMetaData/pin1/duct_region_ids": { - "type": "std::vector>", - "value": [ - [ - 13 - ], - [ - 113 - ] - ] - }, - "MeshMetaData/pin1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/pin_block_names": { - "type": "std::vector>", - "value": [ - [ - "P1_R11", - "P1_R12", - "P1_R13" - ], - [ - "P1_R111", - "P1_R112", - "P1_R113" - ] - ] - }, - "MeshMetaData/pin1/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 1, - [ - [ - 11, - 12, - 13 - ], - [ - 111, - 112, - 113 - ] - ] - ] - ] - }, - "MeshMetaData/pin1/pin_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/pin1/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/ring_radii": { - "type": "std::vector", - "value": [ - 0.2 - ] - }, - "MeshMetaData/pin1/ring_region_ids": { - "type": "std::vector>", - "value": [ - [ - 11 - ], - [ - 111 - ] - ] - }, - "MeshMetaData/pin2/background_region_id": { - "type": "std::vector", - "value": [ - 21, - 121 - ] - }, - "MeshMetaData/pin2/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin2/duct_region_ids": { - "type": "std::vector>", - "value": [ - [], - [] - ] - }, - "MeshMetaData/pin2/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/pin_block_names": { - "type": "std::vector>", - "value": [ - [ - "P2_R21" - ], - [ - "P2_R121" - ] - ] - }, - "MeshMetaData/pin2/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 2, - [ - [ - 21 - ], - [ - 121 - ] - ] - ] - ] - }, - "MeshMetaData/pin2/pin_type": { - "type": "unsigned short", - "value": 2 - }, - "MeshMetaData/pin2/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin2/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin2/ring_radii": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin2/ring_region_ids": { - "type": "std::vector>", - "value": [ - [], - [] - ] - }, - "MeshMetaData/pin3/background_region_id": { - "type": "std::vector", - "value": [ - 32, - 132 - ] - }, - "MeshMetaData/pin3/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin3/duct_region_ids": { - "type": "std::vector>", - "value": [ - [], - [] - ] - }, - "MeshMetaData/pin3/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/pin_block_names": { - "type": "std::vector>", - "value": [ - [ - "P3_R31", - "P3_R32" - ], - [ - "P3_R131", - "P3_R132" - ] - ] - }, - "MeshMetaData/pin3/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 3, - [ - [ - 31, - 32 - ], - [ - 131, - 132 - ] - ] - ] - ] - }, - "MeshMetaData/pin3/pin_type": { - "type": "unsigned short", - "value": 3 - }, - "MeshMetaData/pin3/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin3/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin3/ring_radii": { - "type": "std::vector", - "value": [ - 0.3818 - ] - }, - "MeshMetaData/pin3/ring_region_ids": { - "type": "std::vector>", - "value": [ - [ - 31 - ], - [ - 131 - ] - ] - }, - "MeshMetaData/rmp/assembly_pitch": { - "type": "double", - "value": 7.10315 - }, - "MeshMetaData/rmp/axial_mesh_intervals": { - "type": "std::vector", - "value": [ - 1, - 1 - ] - }, - "MeshMetaData/rmp/axial_mesh_sizes": { - "type": "std::vector", - "value": [ - 1.0, - 1.0 - ] - }, - "MeshMetaData/rmp/bottom_boundary_id": { - "type": "short", - "value": 202 - }, - "MeshMetaData/rmp/bypass_meshgen": { - "type": "bool", - "value": true - }, - "MeshMetaData/rmp/mesh_dimensions": { - "type": "int", - "value": 3 - }, - "MeshMetaData/rmp/mesh_geometry": { - "type": "std::string", - "value": "Hex" - }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, - "MeshMetaData/rmp/radial_boundary_id": { - "type": "short", - "value": 200 - }, - "MeshMetaData/rmp/top_boundary_id": { - "type": "short", - "value": 201 - } - } - }, - "time": 1.0, - "time_step": 1 + "time": 2.0, + "time_step": 2 } ] } diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json index 48b12ec0659c..d5302a695ce3 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json @@ -1,11 +1,4 @@ { - "app_name": "main", - "current_time": "Thu Dec 14 16:51:35 2023", - "executable": "/Users/shikharkumar/Documents/Codes/moose/modules/reactor/reactor-opt", - "executable_time": "Thu Dec 14 16:47:00 2023", - "libmesh_version": "", - "moose_version": "git commit 3cb1b71d1c on 2023-12-14", - "petsc_version": "3.20.1", "reporters": { "metadata": { "type": "MeshMetaDataReporter", @@ -16,7 +9,6 @@ } } }, - "slepc_version": "3.20.0", "time_steps": [ { "metadata": { @@ -463,456 +455,8 @@ } } }, - "time": 0.0, - "time_step": 0 - }, - { - "metadata": { - "values": { - "MeshMetaData/amg1/assembly_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/amg1/background_block_name": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg1/background_region_id": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg1/duct_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg1/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg1/duct_region_ids": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pin_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - "MeshMetaData/amg1/pin_names": { - "type": "std::vector", - "value": [ - "pin2" - ] - }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg1/pitch": { - "type": "double", - "value": 2.84126 - }, - "MeshMetaData/amg1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/amg2/assembly_type": { - "type": "unsigned short", - "value": 2 - }, - "MeshMetaData/amg2/background_block_name": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg2/background_region_id": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg2/duct_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg2/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/amg2/duct_region_ids": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/amg2/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/amg2/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg2/pin_lattice": { - "type": "std::vector>", - "value": [ - [ - 0, - 1 - ], - [ - 1, - 2 - ] - ] - }, - "MeshMetaData/amg2/pin_names": { - "type": "std::vector", - "value": [ - "pin3", - "pin1", - "pin2" - ] - }, - "MeshMetaData/amg2/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, - "MeshMetaData/amg2/pitch": { - "type": "double", - "value": 2.84126 - }, - "MeshMetaData/amg2/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/cmg/assembly_lattice": { - "type": "std::vector>", - "value": [ - [ - 1, - 0 - ], - [ - 0, - 1 - ] - ] - }, - "MeshMetaData/cmg/assembly_names": { - "type": "std::vector", - "value": [ - "amg2", - "amg1" - ] - }, - "MeshMetaData/cmg/extruded": { - "type": "bool", - "value": true - }, - "MeshMetaData/cmg/pin_names": { - "type": "std::vector", - "value": [ - "pin3", - "pin1", - "pin2" - ] - }, - "MeshMetaData/cmg/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/background_region_id": { - "type": "std::vector", - "value": [ - 2 - ] - }, - "MeshMetaData/pin1/duct_halfpitches": { - "type": "std::vector", - "value": [ - 0.68 - ] - }, - "MeshMetaData/pin1/duct_region_ids": { - "type": "std::vector>", - "value": [ - [ - 5 - ] - ] - }, - "MeshMetaData/pin1/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin1/pin_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/pin1/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 1, - [ - [ - 1, - 2, - 5 - ] - ] - ] - ] - }, - "MeshMetaData/pin1/pin_type": { - "type": "unsigned short", - "value": 1 - }, - "MeshMetaData/pin1/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin1/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin1/ring_radii": { - "type": "std::vector", - "value": [ - 0.2 - ] - }, - "MeshMetaData/pin1/ring_region_ids": { - "type": "std::vector>", - "value": [ - [ - 1 - ] - ] - }, - "MeshMetaData/pin2/background_region_id": { - "type": "std::vector", - "value": [ - 2 - ] - }, - "MeshMetaData/pin2/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin2/duct_region_ids": { - "type": "std::vector>", - "value": [ - [] - ] - }, - "MeshMetaData/pin2/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin2/pin_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/pin2/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 2, - [ - [ - 2 - ] - ] - ] - ] - }, - "MeshMetaData/pin2/pin_type": { - "type": "unsigned short", - "value": 2 - }, - "MeshMetaData/pin2/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin2/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin2/ring_radii": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin2/ring_region_ids": { - "type": "std::vector>", - "value": [ - [] - ] - }, - "MeshMetaData/pin3/background_region_id": { - "type": "std::vector", - "value": [ - 4 - ] - }, - "MeshMetaData/pin3/duct_halfpitches": { - "type": "std::vector", - "value": [] - }, - "MeshMetaData/pin3/duct_region_ids": { - "type": "std::vector>", - "value": [ - [] - ] - }, - "MeshMetaData/pin3/extruded": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/is_homogenized": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/is_single_pin": { - "type": "bool", - "value": false - }, - "MeshMetaData/pin3/pin_block_names": { - "type": "std::vector>", - "value": [] - }, - "MeshMetaData/pin3/pin_region_ids": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [ - [ - 3, - [ - [ - 3, - 4 - ] - ] - ] - ] - }, - "MeshMetaData/pin3/pin_type": { - "type": "unsigned short", - "value": 3 - }, - "MeshMetaData/pin3/pitch": { - "type": "double", - "value": 1.42063 - }, - "MeshMetaData/pin3/reactor_params_name": { - "type": "std::string", - "value": "rmp" - }, - "MeshMetaData/pin3/ring_radii": { - "type": "std::vector", - "value": [ - 0.3818 - ] - }, - "MeshMetaData/pin3/ring_region_ids": { - "type": "std::vector>", - "value": [ - [ - 3 - ] - ] - }, - "MeshMetaData/rmp/assembly_pitch": { - "type": "double", - "value": 2.84126 - }, - "MeshMetaData/rmp/axial_mesh_intervals": { - "type": "std::vector", - "value": [ - 1 - ] - }, - "MeshMetaData/rmp/axial_mesh_sizes": { - "type": "std::vector", - "value": [ - 1.0 - ] - }, - "MeshMetaData/rmp/bottom_boundary_id": { - "type": "short", - "value": 202 - }, - "MeshMetaData/rmp/bypass_meshgen": { - "type": "bool", - "value": true - }, - "MeshMetaData/rmp/mesh_dimensions": { - "type": "int", - "value": 3 - }, - "MeshMetaData/rmp/mesh_geometry": { - "type": "std::string", - "value": "Square" - }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, - "MeshMetaData/rmp/radial_boundary_id": { - "type": "short", - "value": 200 - }, - "MeshMetaData/rmp/top_boundary_id": { - "type": "short", - "value": 201 - } - } - }, - "time": 1.0, - "time_step": 1 + "time": 2.0, + "time_step": 2 } ] } diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index f763b0c17e3b..47dff03fce82 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -17,17 +17,24 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] [square_metadata_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata to for a full 3D square core mesh in data driven mode and default mesh as the final generator' + requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode and ElementGenerator as the data driven generator' + type = 'JSONDiff' + input = 'core_square_datadriven.i' + cli_args = 'Mesh/inactive=transform' + jsondiff = 'core_square_datadriven_out.json' + [] + [square_metadata_bypass_meshgen_append_generator] + requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with an additional mesh generator appended to the data driven generator' type = 'JSONDiff' input = 'core_square_datadriven.i' jsondiff = 'core_square_datadriven_out.json' [] [bypass_meshgen_err] - requirement = 'The system shall throw an error in data driven mode with CoreMeshGenerator as the final generator' + requirement = 'The system shall throw an error in data driven mode with an RGMB mesh as the data driven generator' type = 'RunException' input = 'core_square_datadriven.i' - cli_args = "Mesh/inactive=elem_gen" - expect_err = 'or points to a null mesh' + cli_args = "Mesh/data_driven_generator=cmg" + expect_err = 'A mesh was not generated by this generator' [] [core_shared_assembly_ids] requirement = 'The system shall throw an error if a core is composed of different assemblies with a shared assembly type id' @@ -109,7 +116,7 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] [hex_metadata_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata to for a full 3D hexagonal core mesh in data driven mode and default mesh as the final generator' + requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and generate a default mesh with the data driven generator' type = 'JSONDiff' input = 'core_hex_datadriven.i' jsondiff = 'core_hex_datadriven_out.json' From 63fb37655c88d9dfcdd874334c6d07373a521ac8 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 18 Jan 2024 14:52:55 -0500 Subject: [PATCH 11/23] Correct typo in TestSaveInMesh --- test/src/userobjects/TestSaveInMesh.C | 2 +- test/tests/mesh/save_in_meshes/tests | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/src/userobjects/TestSaveInMesh.C b/test/src/userobjects/TestSaveInMesh.C index 09de49234cb1..61faacbc8283 100644 --- a/test/src/userobjects/TestSaveInMesh.C +++ b/test/src/userobjects/TestSaveInMesh.C @@ -28,7 +28,7 @@ TestSaveInMesh::validParams() params.addParam( "mesh_unique", std::string(), - "Test whether or not throw out an error when the saved mesh mesh has already been retreived"); + "Test whether or not throw out an error when the saved mesh mesh has already been retrieved"); return params; } diff --git a/test/tests/mesh/save_in_meshes/tests b/test/tests/mesh/save_in_meshes/tests index 410663f2b093..b5b3d49dc160 100644 --- a/test/tests/mesh/save_in_meshes/tests +++ b/test/tests/mesh/save_in_meshes/tests @@ -53,11 +53,11 @@ detail = 'the requested saved mesh does not exist, and when' [] - [save_in_meshes_retreived_twice] + [save_in_meshes_retrieved_twice] type = 'RunException' input = 'save_in_meshes_with_D.i' cli_args ="UserObjects/test/mesh_unique='left_block'" - expect_err = "While getting the saved mesh generator 'left_block', said mesh has already been retreived" + expect_err = "While getting the saved mesh generator 'left_block', said mesh has already been retrieved" detail = 'the requested saved mesh has already been retrieved.' [] From 4d83b463b2964fc27e5f470d6d026a0925317f42 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 18 Jan 2024 15:49:52 -0500 Subject: [PATCH 12/23] Remove name_id_map from output json file when bypassing mesh generation --- modules/reactor/src/meshgenerators/ReactorMeshParams.C | 5 ++++- .../core_mesh_generator/gold/core_hex_2d_datadriven_out.json | 4 ---- .../core_mesh_generator/gold/core_hex_datadriven_out.json | 4 ---- .../core_mesh_generator/gold/core_square_datadriven_out.json | 4 ---- 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index 429142f5eb59..9b74d87a7bb6 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -80,7 +80,6 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::mesh_dimensions, int(_dim)); this->declareMeshProperty(RGMB::mesh_geometry, std::string(_geom)); this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); - this->declareMeshProperty("name_id_map", _name_id_map); // Option to bypass mesh generation depends on existence of Mesh/data_driven_generator parameter const auto & moose_mesh = _app.actionWarehouse().getMesh(); @@ -89,6 +88,10 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) const bool bypass_meshgen = (data_driven_generator != ""); this->declareMeshProperty(RGMB::bypass_meshgen, bypass_meshgen); + // Declare name id map only if RGMB is outputting a mesh + if (!bypass_meshgen) + this->declareMeshProperty("name_id_map", _name_id_map); + if (isParamValid("top_boundary_id")) { _top_boundary = getParam("top_boundary_id"); diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json index e15fef747ace..d664f0532bbe 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json @@ -231,10 +231,6 @@ "type": "std::string", "value": "Hex" }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, "MeshMetaData/rmp/radial_boundary_id": { "type": "short", "value": 200 diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json index c3106f2e433b..6a84eee08e18 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json @@ -539,10 +539,6 @@ "type": "std::string", "value": "Hex" }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, "MeshMetaData/rmp/radial_boundary_id": { "type": "short", "value": 200 diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json index d5302a695ce3..b2042486328b 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json @@ -441,10 +441,6 @@ "type": "std::string", "value": "Square" }, - "MeshMetaData/rmp/name_id_map": { - "type": "std::map, std::less, std::allocator>>>", - "value": {} - }, "MeshMetaData/rmp/radial_boundary_id": { "type": "short", "value": 200 From e8d92711bc0c0cfced3cbf9d2932f128a4190def Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 18 Jan 2024 20:06:27 -0500 Subject: [PATCH 13/23] Use correct link in documentation to Mesh/data_driven_generator --- .../doc/content/source/meshgenerators/AssemblyMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/CoreMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/PinMeshGenerator.md | 2 +- .../doc/content/source/meshgenerators/ReactorMeshParams.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index 61cb5073d4aa..4d5e528fb0be 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -67,7 +67,7 @@ For each of the pins listed in `pin_names`, the pin-level metadata is also displ In addition, the value of the `reactor_params_name` metadata can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/MeshGeneratorMesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index ddfce758e3e8..295322bb4b2e 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -52,7 +52,7 @@ For meshes where a core periphery is defined, the following metadata is also def In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/MeshGeneratorMesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 176ad0e01008..79f08442805c 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -52,7 +52,7 @@ At the pin level, the following metadata is defined on the pin mesh: In addition, the value of the metadata `reactor_params_name` can be used to retrieve global metadata defined by [ReactorMeshParams](ReactorMeshParams.md). Please refer to [ReactorMeshParams](ReactorMeshParams.md) to see a list of metadata defined by this mesh generator. -For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. +For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/MeshGeneratorMesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index 319e8f17a8ab..be125b03ca45 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -15,7 +15,7 @@ The `ReactorMeshParams` object stores certain global mesh information as metadat - `axial_mesh_sizes`: Length of each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_regions). Only relevant for 3-D meshes. - `axial_mesh_intervals`: Number of elements in the axial dimension for each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_mesh_intervals). Only relevant for 3-D meshes. -In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/data_driven) can be set to true. +In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/MeshGeneratorMesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. ## Example Syntax From 6db6f503e8b9956063404c29a336d3d7bd24fbaf Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 18 Jan 2024 22:00:13 -0500 Subject: [PATCH 14/23] Set allow_data_driven_param to true in CombinedTestApp --- modules/combined/test/src/base/CombinedTestApp.C | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/combined/test/src/base/CombinedTestApp.C b/modules/combined/test/src/base/CombinedTestApp.C index f41254ca189e..d57dfcd1f100 100644 --- a/modules/combined/test/src/base/CombinedTestApp.C +++ b/modules/combined/test/src/base/CombinedTestApp.C @@ -49,6 +49,8 @@ InputParameters CombinedTestApp::validParams() { InputParameters params = CombinedApp::validParams(); + // Below parameter is set to enable data driven mesh generation in test suite + params.set(MeshGeneratorSystem::allow_data_driven_param) = true; return params; } From 529a06dff5ed73c12cbdbbc8eb549e745b51433a Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 22 Jan 2024 15:50:35 -0500 Subject: [PATCH 15/23] Declare dependencies of RGMB mesh generators as having generateData method --- framework/include/meshgenerators/AdvancedExtruderGenerator.h | 2 ++ framework/include/meshgenerators/BlockDeletionGenerator.h | 1 + framework/include/meshgenerators/BoundaryDeletionGenerator.h | 2 ++ framework/include/meshgenerators/CartesianMeshGenerator.h | 2 ++ framework/include/meshgenerators/PlaneIDMeshGenerator.h | 2 ++ framework/include/meshgenerators/RenameBoundaryGenerator.h | 2 ++ framework/src/meshgenerators/AdvancedExtruderGenerator.C | 3 +++ framework/src/meshgenerators/BlockDeletionGenerator.C | 2 ++ framework/src/meshgenerators/BoundaryDeletionGenerator.C | 2 ++ framework/src/meshgenerators/CartesianMeshGenerator.C | 3 +++ framework/src/meshgenerators/PlaneIDMeshGenerator.C | 3 +++ framework/src/meshgenerators/RenameBoundaryGenerator.C | 2 ++ .../include/meshgenerators/ExtraElementIDCopyGenerator.h | 2 ++ .../HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h | 2 ++ .../reactor/include/meshgenerators/PatternedHexMeshGenerator.h | 2 ++ .../include/meshgenerators/PeripheralRingMeshGenerator.h | 2 ++ .../include/meshgenerators/PeripheralTriangleMeshGenerator.h | 2 ++ .../meshgenerators/PolygonConcentricCircleMeshGenerator.h | 2 ++ .../reactor/include/meshgenerators/SimpleHexagonGenerator.h | 2 ++ .../reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C | 3 +++ .../HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C | 2 ++ modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C | 2 ++ .../reactor/src/meshgenerators/PeripheralRingMeshGenerator.C | 2 ++ .../src/meshgenerators/PeripheralTriangleMeshGenerator.C | 3 +++ .../src/meshgenerators/PolygonConcentricCircleMeshGenerator.C | 2 ++ modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C | 2 ++ 26 files changed, 56 insertions(+) diff --git a/framework/include/meshgenerators/AdvancedExtruderGenerator.h b/framework/include/meshgenerators/AdvancedExtruderGenerator.h index 3e2d76e63fa9..9991cd0ae9bd 100644 --- a/framework/include/meshgenerators/AdvancedExtruderGenerator.h +++ b/framework/include/meshgenerators/AdvancedExtruderGenerator.h @@ -25,6 +25,8 @@ class AdvancedExtruderGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: /// Mesh that comes from another generator std::unique_ptr & _input; diff --git a/framework/include/meshgenerators/BlockDeletionGenerator.h b/framework/include/meshgenerators/BlockDeletionGenerator.h index 415755f2a8bb..17d281afeda7 100644 --- a/framework/include/meshgenerators/BlockDeletionGenerator.h +++ b/framework/include/meshgenerators/BlockDeletionGenerator.h @@ -24,6 +24,7 @@ class BlockDeletionGenerator : public ElementDeletionGeneratorBase protected: virtual std::unique_ptr generate() override; virtual bool shouldDelete(const Elem * elem) override; + void generateData() override{}; private: /// Ids of the blocks to be removed diff --git a/framework/include/meshgenerators/BoundaryDeletionGenerator.h b/framework/include/meshgenerators/BoundaryDeletionGenerator.h index b64ea95411d9..f994d6b8704e 100644 --- a/framework/include/meshgenerators/BoundaryDeletionGenerator.h +++ b/framework/include/meshgenerators/BoundaryDeletionGenerator.h @@ -20,6 +20,8 @@ class BoundaryDeletionGenerator : public MeshGenerator virtual std::unique_ptr generate() override; + void generateData() override{}; + protected: ///The input mesh std::unique_ptr & _input; diff --git a/framework/include/meshgenerators/CartesianMeshGenerator.h b/framework/include/meshgenerators/CartesianMeshGenerator.h index 8dd78544ed43..955f4bbb4475 100644 --- a/framework/include/meshgenerators/CartesianMeshGenerator.h +++ b/framework/include/meshgenerators/CartesianMeshGenerator.h @@ -24,6 +24,8 @@ class CartesianMeshGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: /// The dimension of the mesh MooseEnum _dim; diff --git a/framework/include/meshgenerators/PlaneIDMeshGenerator.h b/framework/include/meshgenerators/PlaneIDMeshGenerator.h index 1ee7a53be900..f7982b7d9a59 100644 --- a/framework/include/meshgenerators/PlaneIDMeshGenerator.h +++ b/framework/include/meshgenerators/PlaneIDMeshGenerator.h @@ -23,6 +23,8 @@ class PlaneIDMeshGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: /// get plane ID for given plane coordiantes int getPlaneID(const Point & p) const; diff --git a/framework/include/meshgenerators/RenameBoundaryGenerator.h b/framework/include/meshgenerators/RenameBoundaryGenerator.h index 8d2080c84787..569a0798de92 100644 --- a/framework/include/meshgenerators/RenameBoundaryGenerator.h +++ b/framework/include/meshgenerators/RenameBoundaryGenerator.h @@ -23,6 +23,8 @@ class RenameBoundaryGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: std::unique_ptr & _input; diff --git a/framework/src/meshgenerators/AdvancedExtruderGenerator.C b/framework/src/meshgenerators/AdvancedExtruderGenerator.C index 43da1b5b6631..b00d7428c39e 100644 --- a/framework/src/meshgenerators/AdvancedExtruderGenerator.C +++ b/framework/src/meshgenerators/AdvancedExtruderGenerator.C @@ -119,6 +119,9 @@ AdvancedExtruderGenerator::validParams() 0, "Pitch for helicoidal extrusion around an axis going through the origin " "following the direction vector"); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/BlockDeletionGenerator.C b/framework/src/meshgenerators/BlockDeletionGenerator.C index f9e48bf87216..8f0524dce111 100644 --- a/framework/src/meshgenerators/BlockDeletionGenerator.C +++ b/framework/src/meshgenerators/BlockDeletionGenerator.C @@ -24,6 +24,8 @@ BlockDeletionGenerator::validParams() params.addDeprecatedParam( "block_id", "The block to be deleted.", "Use block instead"); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/BoundaryDeletionGenerator.C b/framework/src/meshgenerators/BoundaryDeletionGenerator.C index 7cd1f95c6e99..f44f32d6ded4 100644 --- a/framework/src/meshgenerators/BoundaryDeletionGenerator.C +++ b/framework/src/meshgenerators/BoundaryDeletionGenerator.C @@ -26,6 +26,8 @@ BoundaryDeletionGenerator::validParams() params.addRequiredParam>("boundary_names", "The boundaries to be deleted"); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/CartesianMeshGenerator.C b/framework/src/meshgenerators/CartesianMeshGenerator.C index 6066d6b35617..2909c5c97dc7 100644 --- a/framework/src/meshgenerators/CartesianMeshGenerator.C +++ b/framework/src/meshgenerators/CartesianMeshGenerator.C @@ -40,6 +40,9 @@ CartesianMeshGenerator::validParams() "iz", "Number of grids in all intervals in the Z direction (default to all one)"); params.addParam>("subdomain_id", "Block IDs (default to all zero)"); params.addClassDescription("This CartesianMeshGenerator creates a non-uniform Cartesian mesh."); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/PlaneIDMeshGenerator.C b/framework/src/meshgenerators/PlaneIDMeshGenerator.C index e32791bb3bf9..e29008e1a491 100644 --- a/framework/src/meshgenerators/PlaneIDMeshGenerator.C +++ b/framework/src/meshgenerators/PlaneIDMeshGenerator.C @@ -29,6 +29,9 @@ PlaneIDMeshGenerator::validParams() params.addRequiredParam("id_name", "Name of extra integer ID set"); params.addParam("tolerance", 1.0E-4, "Tolerance for plane coordinate check"); params.addClassDescription("Adds an extra element integer that identifies planes in a mesh."); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/RenameBoundaryGenerator.C b/framework/src/meshgenerators/RenameBoundaryGenerator.C index 65c668f1e9a6..43a2656b7b69 100644 --- a/framework/src/meshgenerators/RenameBoundaryGenerator.C +++ b/framework/src/meshgenerators/RenameBoundaryGenerator.C @@ -60,6 +60,8 @@ RenameBoundaryGenerator::validParams() "boundaries defined by either boundary ID or boundary name. The " "changes are independent of ordering. The merging of boundaries is supported."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h b/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h index f7cdcd7faa5c..c5b665db1d97 100644 --- a/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h +++ b/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h @@ -19,6 +19,8 @@ class ExtraElementIDCopyGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: std::unique_ptr & _input; }; diff --git a/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h b/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h index 3fdbe52a117e..4768ff48a8a8 100644 --- a/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h @@ -23,6 +23,8 @@ class HexagonConcentricCircleAdaptiveBoundaryMeshGenerator HexagonConcentricCircleAdaptiveBoundaryMeshGenerator(const InputParameters & parameters); + void generateData() override{}; + protected: /// Name of input mesh generator const std::vector _input_names; diff --git a/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h b/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h index 742d88375b94..30bb25e7afb4 100644 --- a/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h @@ -26,6 +26,8 @@ class PatternedHexMeshGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; + void generateData() override{}; + protected: /// The input meshes const std::vector *> _mesh_ptrs; diff --git a/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h b/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h index cf3ab619d465..6a0630e601a0 100644 --- a/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h @@ -25,6 +25,8 @@ class PeripheralRingMeshGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; + void generateData() override{}; + protected: /// Name of the mesh generator to get the input mesh const MeshGeneratorName _input_name; diff --git a/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h b/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h index 67ec6f7a75a6..69bf7ecf30e6 100644 --- a/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h @@ -22,6 +22,8 @@ class PeripheralTriangleMeshGenerator : public MeshGenerator std::unique_ptr generate() override; + void generateData() override{}; + protected: /// Name of the mesh generator to get the input mesh const MeshGeneratorName _input_name; diff --git a/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h b/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h index a3517c2fe646..749fd34cfa96 100644 --- a/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h @@ -21,4 +21,6 @@ class PolygonConcentricCircleMeshGenerator : public PolygonConcentricCircleMeshG static InputParameters validParams(); PolygonConcentricCircleMeshGenerator(const InputParameters & parameters); + + void generateData() override{}; }; diff --git a/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h b/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h index d9e000c15de3..7070b205d1fd 100644 --- a/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h +++ b/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h @@ -23,6 +23,8 @@ class SimpleHexagonGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; + void generateData() override{}; + protected: /// Type of elements to build the mesh const enum class ElemType { TRI, QUAD, HYBRID } _element_type; diff --git a/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C b/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C index 3083caa91455..e50980722c9c 100644 --- a/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C +++ b/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C @@ -23,6 +23,9 @@ ExtraElementIDCopyGenerator::validParams() params.addRequiredParam>("target_extra_element_ids", "The target extra element IDs"); params.addClassDescription("Copy an extra element ID to other extra element IDs."); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C b/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C index 1700aabaa651..88a36b149ef0 100644 --- a/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C @@ -50,6 +50,8 @@ HexagonConcentricCircleAdaptiveBoundaryMeshGenerator::validParams() "This HexagonConcentricCircleAdaptiveBoundaryMeshGenerator object is designed to generate " "hexagonal meshes with adaptive boundary to facilitate stitching."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C b/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C index 57b2fcbf0bd7..217c3f2b6972 100644 --- a/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C @@ -135,6 +135,8 @@ PatternedHexMeshGenerator::validParams() "This PatternedHexMeshGenerator source code assembles hexagonal meshes into a hexagonal grid " "and optionally forces the outer boundary to be hexagonal and/or adds a duct."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C b/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C index f6c6a1f1734b..b39e3240fa50 100644 --- a/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C @@ -97,6 +97,8 @@ PeripheralRingMeshGenerator::validParams() params.addClassDescription("This PeripheralRingMeshGenerator object adds a circular peripheral " "region to the input mesh."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C b/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C index e4328ef1fe31..5650f557db4c 100644 --- a/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C @@ -44,6 +44,9 @@ PeripheralTriangleMeshGenerator::validParams() params.addClassDescription("This PeripheralTriangleMeshGenerator object is designed to generate " "a triangulated mesh between a generated outer circle boundary " "and a provided inner mesh."); + + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C b/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C index 5934a18523c6..e18891d74423 100644 --- a/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C @@ -28,6 +28,8 @@ PolygonConcentricCircleMeshGenerator::validParams() params.addClassDescription("This PolygonConcentricCircleMeshGenerator object is designed to mesh " "a polygon geometry with optional rings centered inside."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C b/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C index e1dad892077f..dd732bbb3e30 100644 --- a/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C +++ b/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C @@ -53,6 +53,8 @@ SimpleHexagonGenerator::validParams() "only contains six simple azimuthal triangular elements, two quadrilateral elements, or six " "central azimuthal triangular elements plus a several layers of quadrilateral elements."); + // Declare that this generator has a generateData method + MeshGenerator::setHasGenerateData(params); return params; } From d9e6131ce009d96d54565c24becc2a41ee10722a Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Tue, 23 Jan 2024 21:38:03 -0500 Subject: [PATCH 16/23] Avoid declaring pin_block_name_map and pin_region_id_map metadata entries in data driven mode --- .../meshgenerators/AssemblyMeshGenerator.C | 8 +++++-- .../src/meshgenerators/PinMeshGenerator.C | 22 +++++++++++-------- .../gold/core_hex_2d_datadriven_out.json | 8 ------- .../gold/core_hex_datadriven_out.json | 16 -------------- .../gold/core_square_datadriven_out.json | 16 -------------- .../meshgenerators/core_mesh_generator/tests | 6 ++--- 6 files changed, 22 insertions(+), 54 deletions(-) diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 402c4f3aa37e..8bd016b31be7 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -435,8 +435,6 @@ AssemblyMeshGenerator::generateMetadata() { // Declare metadata for use in downstream mesh generators declareMeshProperty(RGMB::assembly_type, _assembly_type); - declareMeshProperty(RGMB::pin_region_id_map, _pin_region_id_map); - declareMeshProperty(RGMB::pin_block_name_map, _pin_block_name_map); declareMeshProperty(RGMB::pitch, getReactorParam(RGMB::assembly_pitch)); declareMeshProperty(RGMB::background_region_id, _background_region_id); declareMeshProperty(RGMB::background_block_name, _background_block_name); @@ -446,6 +444,12 @@ AssemblyMeshGenerator::generateMetadata() declareMeshProperty(RGMB::is_homogenized, false); declareMeshProperty(RGMB::is_single_pin, false); declareMeshProperty(RGMB::extruded, _extrude && _mesh_dimensions == 3); + // Following metadata is only relevant if an output mesh is generated by RGMB + if (!getReactorParam(RGMB::bypass_meshgen)) + { + declareMeshProperty(RGMB::pin_region_id_map, _pin_region_id_map); + declareMeshProperty(RGMB::pin_block_name_map, _pin_block_name_map); + } // Determine constituent pin names and define lattice as metadata std::vector> pin_name_lattice; diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 3857ee1e4510..0b37b5571b75 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -453,17 +453,21 @@ PinMeshGenerator::generateMetadata() if (_is_assembly) { declareMeshProperty(RGMB::assembly_type, _pin_type); - std::map>> pin_region_id_map; - pin_region_id_map.insert( - std::pair>>( - region_id_map.begin()->first, region_id_map.begin()->second)); - declareMeshProperty(RGMB::pin_region_id_map, pin_region_id_map); - std::map>> pin_block_name_map; - pin_block_name_map.insert(std::pair>>( - _pin_type, _block_names)); - declareMeshProperty(RGMB::pin_block_name_map, pin_block_name_map); declareMeshProperty(RGMB::background_block_name, std::vector()); declareMeshProperty(RGMB::duct_block_names, std::vector>()); + // Following metadata is only relevant if an output mesh is generated by RGMB + if (!getReactorParam(RGMB::bypass_meshgen)) + { + std::map>> pin_region_id_map; + pin_region_id_map.insert( + std::pair>>( + region_id_map.begin()->first, region_id_map.begin()->second)); + declareMeshProperty(RGMB::pin_region_id_map, pin_region_id_map); + std::map>> pin_block_name_map; + pin_block_name_map.insert(std::pair>>( + _pin_type, _block_names)); + declareMeshProperty(RGMB::pin_block_name_map, pin_block_name_map); + } } // Declare mesh properties that are only relevant to pin meshes else diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json index d664f0532bbe..20803557f4f7 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json @@ -57,10 +57,6 @@ "type": "bool", "value": false }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pin_lattice": { "type": "std::vector>", "value": [ @@ -85,10 +81,6 @@ "pin1" ] }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pitch": { "type": "double", "value": 3.7884 diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json index 6a84eee08e18..cd997052bd9a 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json @@ -55,10 +55,6 @@ "type": "bool", "value": false }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pin_lattice": { "type": "std::vector>", "value": [ @@ -83,10 +79,6 @@ "pin2" ] }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pitch": { "type": "double", "value": 7.10315 @@ -153,10 +145,6 @@ "type": "bool", "value": false }, - "MeshMetaData/amg2/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg2/pin_lattice": { "type": "std::vector>", "value": [ @@ -182,10 +170,6 @@ "pin3" ] }, - "MeshMetaData/amg2/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg2/pitch": { "type": "double", "value": 7.10315 diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json index b2042486328b..b7457b6186c6 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json @@ -49,10 +49,6 @@ "type": "bool", "value": false }, - "MeshMetaData/amg1/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pin_lattice": { "type": "std::vector>", "value": [ @@ -72,10 +68,6 @@ "pin2" ] }, - "MeshMetaData/amg1/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg1/pitch": { "type": "double", "value": 2.84126 @@ -120,10 +112,6 @@ "type": "bool", "value": false }, - "MeshMetaData/amg2/pin_block_name_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg2/pin_lattice": { "type": "std::vector>", "value": [ @@ -145,10 +133,6 @@ "pin2" ] }, - "MeshMetaData/amg2/pin_region_id_map": { - "type": "std::map>, std::less, std::allocator>>>>", - "value": [] - }, "MeshMetaData/amg2/pitch": { "type": "double", "value": 2.84126 diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 47dff03fce82..42ae88be9e56 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -17,7 +17,7 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] [square_metadata_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode and ElementGenerator as the data driven generator' + requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with another mesh generator as the data driven generator' type = 'JSONDiff' input = 'core_square_datadriven.i' cli_args = 'Mesh/inactive=transform' @@ -116,7 +116,7 @@ expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] [hex_metadata_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and generate a default mesh with the data driven generator' + requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' input = 'core_hex_datadriven.i' jsondiff = 'core_hex_datadriven_out.json' @@ -196,7 +196,7 @@ expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] [hex_metadata_2d_bypass_meshgen] - requirement = 'The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default mesh as the final generator' + requirement = 'The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' input = 'core_hex_2d_datadriven.i' jsondiff = 'core_hex_2d_datadriven_out.json' From 8419a96c37bccce51001bbe5e412ec02a6657f2c Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Wed, 24 Jan 2024 14:35:32 -0500 Subject: [PATCH 17/23] Create private param in ReactorMeshParams _bypass_meshgen to override calling RGMB sub generators based on the value of Mesh/data_driven_generator --- modules/reactor/src/meshgenerators/ReactorMeshParams.C | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index 9b74d87a7bb6..a400442c5167 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -43,6 +43,7 @@ ReactorMeshParams::validParams() params.addParam>( "axial_mesh_intervals", "Number of elements in the Z direction for each axial region"); + params.addPrivateParam("_bypass_meshgen", true); params.addClassDescription("This ReactorMeshParams object acts as storage for persistent " "information about the reactor geometry."); @@ -85,7 +86,10 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) const auto & moose_mesh = _app.actionWarehouse().getMesh(); const auto data_driven_generator = moose_mesh->parameters().get("data_driven_generator"); - const bool bypass_meshgen = (data_driven_generator != ""); + bool bypass_meshgen = (data_driven_generator != ""); + // Option to bypass mesh generation can be overriden by setting private "_bypass_meshgen" parameter to false + if (!getParam("_bypass_meshgen")) + bypass_meshgen = false; this->declareMeshProperty(RGMB::bypass_meshgen, bypass_meshgen); // Declare name id map only if RGMB is outputting a mesh From 9e18b9fb9a72a0880e62448328f6ab6b0d313476 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Wed, 24 Jan 2024 14:52:59 -0500 Subject: [PATCH 18/23] Revert having to define generateData method for dependencies of RGMB mesh generators --- framework/include/meshgenerators/AdvancedExtruderGenerator.h | 2 -- framework/include/meshgenerators/BlockDeletionGenerator.h | 1 - framework/include/meshgenerators/BoundaryDeletionGenerator.h | 2 -- framework/include/meshgenerators/CartesianMeshGenerator.h | 2 -- framework/include/meshgenerators/PlaneIDMeshGenerator.h | 2 -- framework/include/meshgenerators/RenameBoundaryGenerator.h | 2 -- framework/src/meshgenerators/AdvancedExtruderGenerator.C | 3 --- framework/src/meshgenerators/BlockDeletionGenerator.C | 2 -- framework/src/meshgenerators/BoundaryDeletionGenerator.C | 2 -- framework/src/meshgenerators/CartesianMeshGenerator.C | 3 --- framework/src/meshgenerators/PlaneIDMeshGenerator.C | 3 --- framework/src/meshgenerators/RenameBoundaryGenerator.C | 2 -- .../include/meshgenerators/ExtraElementIDCopyGenerator.h | 2 -- .../HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h | 2 -- .../reactor/include/meshgenerators/PatternedHexMeshGenerator.h | 2 -- .../include/meshgenerators/PeripheralRingMeshGenerator.h | 2 -- .../include/meshgenerators/PeripheralTriangleMeshGenerator.h | 2 -- .../meshgenerators/PolygonConcentricCircleMeshGenerator.h | 2 -- .../reactor/include/meshgenerators/SimpleHexagonGenerator.h | 2 -- .../reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C | 3 --- .../HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C | 2 -- modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C | 2 -- .../reactor/src/meshgenerators/PeripheralRingMeshGenerator.C | 2 -- .../src/meshgenerators/PeripheralTriangleMeshGenerator.C | 3 --- .../src/meshgenerators/PolygonConcentricCircleMeshGenerator.C | 2 -- modules/reactor/src/meshgenerators/ReactorMeshParams.C | 3 ++- modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C | 2 -- 27 files changed, 2 insertions(+), 57 deletions(-) diff --git a/framework/include/meshgenerators/AdvancedExtruderGenerator.h b/framework/include/meshgenerators/AdvancedExtruderGenerator.h index 9991cd0ae9bd..3e2d76e63fa9 100644 --- a/framework/include/meshgenerators/AdvancedExtruderGenerator.h +++ b/framework/include/meshgenerators/AdvancedExtruderGenerator.h @@ -25,8 +25,6 @@ class AdvancedExtruderGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: /// Mesh that comes from another generator std::unique_ptr & _input; diff --git a/framework/include/meshgenerators/BlockDeletionGenerator.h b/framework/include/meshgenerators/BlockDeletionGenerator.h index 17d281afeda7..415755f2a8bb 100644 --- a/framework/include/meshgenerators/BlockDeletionGenerator.h +++ b/framework/include/meshgenerators/BlockDeletionGenerator.h @@ -24,7 +24,6 @@ class BlockDeletionGenerator : public ElementDeletionGeneratorBase protected: virtual std::unique_ptr generate() override; virtual bool shouldDelete(const Elem * elem) override; - void generateData() override{}; private: /// Ids of the blocks to be removed diff --git a/framework/include/meshgenerators/BoundaryDeletionGenerator.h b/framework/include/meshgenerators/BoundaryDeletionGenerator.h index f994d6b8704e..b64ea95411d9 100644 --- a/framework/include/meshgenerators/BoundaryDeletionGenerator.h +++ b/framework/include/meshgenerators/BoundaryDeletionGenerator.h @@ -20,8 +20,6 @@ class BoundaryDeletionGenerator : public MeshGenerator virtual std::unique_ptr generate() override; - void generateData() override{}; - protected: ///The input mesh std::unique_ptr & _input; diff --git a/framework/include/meshgenerators/CartesianMeshGenerator.h b/framework/include/meshgenerators/CartesianMeshGenerator.h index 955f4bbb4475..8dd78544ed43 100644 --- a/framework/include/meshgenerators/CartesianMeshGenerator.h +++ b/framework/include/meshgenerators/CartesianMeshGenerator.h @@ -24,8 +24,6 @@ class CartesianMeshGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: /// The dimension of the mesh MooseEnum _dim; diff --git a/framework/include/meshgenerators/PlaneIDMeshGenerator.h b/framework/include/meshgenerators/PlaneIDMeshGenerator.h index f7982b7d9a59..1ee7a53be900 100644 --- a/framework/include/meshgenerators/PlaneIDMeshGenerator.h +++ b/framework/include/meshgenerators/PlaneIDMeshGenerator.h @@ -23,8 +23,6 @@ class PlaneIDMeshGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: /// get plane ID for given plane coordiantes int getPlaneID(const Point & p) const; diff --git a/framework/include/meshgenerators/RenameBoundaryGenerator.h b/framework/include/meshgenerators/RenameBoundaryGenerator.h index 569a0798de92..8d2080c84787 100644 --- a/framework/include/meshgenerators/RenameBoundaryGenerator.h +++ b/framework/include/meshgenerators/RenameBoundaryGenerator.h @@ -23,8 +23,6 @@ class RenameBoundaryGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: std::unique_ptr & _input; diff --git a/framework/src/meshgenerators/AdvancedExtruderGenerator.C b/framework/src/meshgenerators/AdvancedExtruderGenerator.C index b00d7428c39e..43da1b5b6631 100644 --- a/framework/src/meshgenerators/AdvancedExtruderGenerator.C +++ b/framework/src/meshgenerators/AdvancedExtruderGenerator.C @@ -119,9 +119,6 @@ AdvancedExtruderGenerator::validParams() 0, "Pitch for helicoidal extrusion around an axis going through the origin " "following the direction vector"); - - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/BlockDeletionGenerator.C b/framework/src/meshgenerators/BlockDeletionGenerator.C index 8f0524dce111..f9e48bf87216 100644 --- a/framework/src/meshgenerators/BlockDeletionGenerator.C +++ b/framework/src/meshgenerators/BlockDeletionGenerator.C @@ -24,8 +24,6 @@ BlockDeletionGenerator::validParams() params.addDeprecatedParam( "block_id", "The block to be deleted.", "Use block instead"); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/BoundaryDeletionGenerator.C b/framework/src/meshgenerators/BoundaryDeletionGenerator.C index f44f32d6ded4..7cd1f95c6e99 100644 --- a/framework/src/meshgenerators/BoundaryDeletionGenerator.C +++ b/framework/src/meshgenerators/BoundaryDeletionGenerator.C @@ -26,8 +26,6 @@ BoundaryDeletionGenerator::validParams() params.addRequiredParam>("boundary_names", "The boundaries to be deleted"); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/CartesianMeshGenerator.C b/framework/src/meshgenerators/CartesianMeshGenerator.C index 2909c5c97dc7..6066d6b35617 100644 --- a/framework/src/meshgenerators/CartesianMeshGenerator.C +++ b/framework/src/meshgenerators/CartesianMeshGenerator.C @@ -40,9 +40,6 @@ CartesianMeshGenerator::validParams() "iz", "Number of grids in all intervals in the Z direction (default to all one)"); params.addParam>("subdomain_id", "Block IDs (default to all zero)"); params.addClassDescription("This CartesianMeshGenerator creates a non-uniform Cartesian mesh."); - - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/PlaneIDMeshGenerator.C b/framework/src/meshgenerators/PlaneIDMeshGenerator.C index e29008e1a491..e32791bb3bf9 100644 --- a/framework/src/meshgenerators/PlaneIDMeshGenerator.C +++ b/framework/src/meshgenerators/PlaneIDMeshGenerator.C @@ -29,9 +29,6 @@ PlaneIDMeshGenerator::validParams() params.addRequiredParam("id_name", "Name of extra integer ID set"); params.addParam("tolerance", 1.0E-4, "Tolerance for plane coordinate check"); params.addClassDescription("Adds an extra element integer that identifies planes in a mesh."); - - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/framework/src/meshgenerators/RenameBoundaryGenerator.C b/framework/src/meshgenerators/RenameBoundaryGenerator.C index 43a2656b7b69..65c668f1e9a6 100644 --- a/framework/src/meshgenerators/RenameBoundaryGenerator.C +++ b/framework/src/meshgenerators/RenameBoundaryGenerator.C @@ -60,8 +60,6 @@ RenameBoundaryGenerator::validParams() "boundaries defined by either boundary ID or boundary name. The " "changes are independent of ordering. The merging of boundaries is supported."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h b/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h index c5b665db1d97..f7cdcd7faa5c 100644 --- a/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h +++ b/modules/reactor/include/meshgenerators/ExtraElementIDCopyGenerator.h @@ -19,8 +19,6 @@ class ExtraElementIDCopyGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: std::unique_ptr & _input; }; diff --git a/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h b/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h index 4768ff48a8a8..3fdbe52a117e 100644 --- a/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.h @@ -23,8 +23,6 @@ class HexagonConcentricCircleAdaptiveBoundaryMeshGenerator HexagonConcentricCircleAdaptiveBoundaryMeshGenerator(const InputParameters & parameters); - void generateData() override{}; - protected: /// Name of input mesh generator const std::vector _input_names; diff --git a/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h b/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h index 30bb25e7afb4..742d88375b94 100644 --- a/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PatternedHexMeshGenerator.h @@ -26,8 +26,6 @@ class PatternedHexMeshGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; - void generateData() override{}; - protected: /// The input meshes const std::vector *> _mesh_ptrs; diff --git a/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h b/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h index 6a0630e601a0..cf3ab619d465 100644 --- a/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PeripheralRingMeshGenerator.h @@ -25,8 +25,6 @@ class PeripheralRingMeshGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; - void generateData() override{}; - protected: /// Name of the mesh generator to get the input mesh const MeshGeneratorName _input_name; diff --git a/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h b/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h index 69bf7ecf30e6..67ec6f7a75a6 100644 --- a/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PeripheralTriangleMeshGenerator.h @@ -22,8 +22,6 @@ class PeripheralTriangleMeshGenerator : public MeshGenerator std::unique_ptr generate() override; - void generateData() override{}; - protected: /// Name of the mesh generator to get the input mesh const MeshGeneratorName _input_name; diff --git a/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h b/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h index 749fd34cfa96..a3517c2fe646 100644 --- a/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h +++ b/modules/reactor/include/meshgenerators/PolygonConcentricCircleMeshGenerator.h @@ -21,6 +21,4 @@ class PolygonConcentricCircleMeshGenerator : public PolygonConcentricCircleMeshG static InputParameters validParams(); PolygonConcentricCircleMeshGenerator(const InputParameters & parameters); - - void generateData() override{}; }; diff --git a/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h b/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h index 7070b205d1fd..d9e000c15de3 100644 --- a/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h +++ b/modules/reactor/include/meshgenerators/SimpleHexagonGenerator.h @@ -23,8 +23,6 @@ class SimpleHexagonGenerator : public PolygonMeshGeneratorBase std::unique_ptr generate() override; - void generateData() override{}; - protected: /// Type of elements to build the mesh const enum class ElemType { TRI, QUAD, HYBRID } _element_type; diff --git a/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C b/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C index e50980722c9c..3083caa91455 100644 --- a/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C +++ b/modules/reactor/src/meshgenerators/ExtraElementIDCopyGenerator.C @@ -23,9 +23,6 @@ ExtraElementIDCopyGenerator::validParams() params.addRequiredParam>("target_extra_element_ids", "The target extra element IDs"); params.addClassDescription("Copy an extra element ID to other extra element IDs."); - - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C b/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C index 88a36b149ef0..1700aabaa651 100644 --- a/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/HexagonConcentricCircleAdaptiveBoundaryMeshGenerator.C @@ -50,8 +50,6 @@ HexagonConcentricCircleAdaptiveBoundaryMeshGenerator::validParams() "This HexagonConcentricCircleAdaptiveBoundaryMeshGenerator object is designed to generate " "hexagonal meshes with adaptive boundary to facilitate stitching."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C b/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C index 217c3f2b6972..57b2fcbf0bd7 100644 --- a/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PatternedHexMeshGenerator.C @@ -135,8 +135,6 @@ PatternedHexMeshGenerator::validParams() "This PatternedHexMeshGenerator source code assembles hexagonal meshes into a hexagonal grid " "and optionally forces the outer boundary to be hexagonal and/or adds a duct."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C b/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C index b39e3240fa50..f6c6a1f1734b 100644 --- a/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PeripheralRingMeshGenerator.C @@ -97,8 +97,6 @@ PeripheralRingMeshGenerator::validParams() params.addClassDescription("This PeripheralRingMeshGenerator object adds a circular peripheral " "region to the input mesh."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C b/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C index 5650f557db4c..e4328ef1fe31 100644 --- a/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PeripheralTriangleMeshGenerator.C @@ -44,9 +44,6 @@ PeripheralTriangleMeshGenerator::validParams() params.addClassDescription("This PeripheralTriangleMeshGenerator object is designed to generate " "a triangulated mesh between a generated outer circle boundary " "and a provided inner mesh."); - - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C b/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C index e18891d74423..5934a18523c6 100644 --- a/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PolygonConcentricCircleMeshGenerator.C @@ -28,8 +28,6 @@ PolygonConcentricCircleMeshGenerator::validParams() params.addClassDescription("This PolygonConcentricCircleMeshGenerator object is designed to mesh " "a polygon geometry with optional rings centered inside."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index a400442c5167..15621fb613b2 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -87,7 +87,8 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) const auto data_driven_generator = moose_mesh->parameters().get("data_driven_generator"); bool bypass_meshgen = (data_driven_generator != ""); - // Option to bypass mesh generation can be overriden by setting private "_bypass_meshgen" parameter to false + // Option to bypass mesh generation can be overriden by setting private "_bypass_meshgen" + // parameter to false if (!getParam("_bypass_meshgen")) bypass_meshgen = false; this->declareMeshProperty(RGMB::bypass_meshgen, bypass_meshgen); diff --git a/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C b/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C index dd732bbb3e30..e1dad892077f 100644 --- a/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C +++ b/modules/reactor/src/meshgenerators/SimpleHexagonGenerator.C @@ -53,8 +53,6 @@ SimpleHexagonGenerator::validParams() "only contains six simple azimuthal triangular elements, two quadrilateral elements, or six " "central azimuthal triangular elements plus a several layers of quadrilateral elements."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } From 0c82503dba463a1f2098cb7941c2bdd88f9582d9 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 26 Feb 2024 10:23:07 -0500 Subject: [PATCH 19/23] Define is_single_pin metadata for pins acting as assemblies --- .../source/meshgenerators/ReactorMeshParams.md | 2 -- .../reactor/src/meshgenerators/PinMeshGenerator.C | 2 +- .../gold/core_hex_2d_datadriven_out.json | 4 ---- .../gold/core_hex_datadriven_out.json | 12 ------------ .../gold/core_square_datadriven_out.json | 12 ------------ 5 files changed, 1 insertion(+), 31 deletions(-) diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index be125b03ca45..71dc11ac77aa 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -15,8 +15,6 @@ The `ReactorMeshParams` object stores certain global mesh information as metadat - `axial_mesh_sizes`: Length of each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_regions). Only relevant for 3-D meshes. - `axial_mesh_intervals`: Number of elements in the axial dimension for each axial region, equivalent to [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/axial_mesh_intervals). Only relevant for 3-D meshes. -In addition, for applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter `[Mesh]`/[!param](/Mesh/MeshGeneratorMesh/data_driven_generator) can be set to the mesh generator that would generate an output mesh from RGMB metadata. - ## Example Syntax !listing modules/reactor/test/tests/meshgenerators/pin_mesh_generator/pin_square.i block=Mesh/rmp diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 0b37b5571b75..14ada90b71a7 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -455,6 +455,7 @@ PinMeshGenerator::generateMetadata() declareMeshProperty(RGMB::assembly_type, _pin_type); declareMeshProperty(RGMB::background_block_name, std::vector()); declareMeshProperty(RGMB::duct_block_names, std::vector>()); + declareMeshProperty(RGMB::is_single_pin, _is_assembly); // Following metadata is only relevant if an output mesh is generated by RGMB if (!getReactorParam(RGMB::bypass_meshgen)) { @@ -480,7 +481,6 @@ PinMeshGenerator::generateMetadata() // Set metadata to describe pin attributes declareMeshProperty(RGMB::pitch, _pitch); declareMeshProperty(RGMB::is_homogenized, _homogenized); - declareMeshProperty(RGMB::is_single_pin, _is_assembly); declareMeshProperty(RGMB::ring_radii, _ring_radii); declareMeshProperty(RGMB::duct_halfpitches, _duct_halfpitch); declareMeshProperty(RGMB::extruded, _extrude && _mesh_dimensions == 3); diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json index 20803557f4f7..e7ef5684e4a7 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_2d_datadriven_out.json @@ -159,10 +159,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin1/pin_block_names": { "type": "std::vector>", "value": [] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json index cd997052bd9a..17b92aa9c933 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_hex_datadriven_out.json @@ -251,10 +251,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin1/pin_block_names": { "type": "std::vector>", "value": [ @@ -345,10 +341,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin2/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin2/pin_block_names": { "type": "std::vector>", "value": [ @@ -425,10 +417,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin3/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin3/pin_block_names": { "type": "std::vector>", "value": [ diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json index b7457b6186c6..8655202c830d 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/gold/core_square_datadriven_out.json @@ -205,10 +205,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin1/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin1/pin_block_names": { "type": "std::vector>", "value": [] @@ -278,10 +274,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin2/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin2/pin_block_names": { "type": "std::vector>", "value": [] @@ -345,10 +337,6 @@ "type": "bool", "value": false }, - "MeshMetaData/pin3/is_single_pin": { - "type": "bool", - "value": false - }, "MeshMetaData/pin3/pin_block_names": { "type": "std::vector>", "value": [] From b4a0e0ef9a04a900a18b3d17e38f70197e5bd8e1 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 26 Feb 2024 10:38:02 -0500 Subject: [PATCH 20/23] Update code comments to add more clarity to calling sub generators and metadata that is defined when bypassing mesh generation --- .../include/meshgenerators/ReactorGeometryMeshBuilderBase.h | 2 +- modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C | 1 + modules/reactor/src/meshgenerators/CoreMeshGenerator.C | 1 + modules/reactor/src/meshgenerators/PinMeshGenerator.C | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index ce30f9399884..c330778ff499 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -53,7 +53,7 @@ static const std::string duct_region_ids = "duct_region_ids"; static const std::string duct_block_names = "duct_block_names"; static const std::string peripheral_ring_region_id = "peripheral_ring_region_id"; -// Quantities related to bypassing mesh generation +// Name of a boolean metadata that indicates whether or not we skipped mesh generation in favor of only generate the mesh metadata static const std::string bypass_meshgen = "bypass_meshgen"; } diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 8bd016b31be7..3ecafb47a2bf 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -243,6 +243,7 @@ AssemblyMeshGenerator::AssemblyMeshGenerator(const InputParameters & parameters) else _has_duct_block_names = false; + // No subgenerators will be called if option to bypass mesh generators is enabled if (!getReactorParam(RGMB::bypass_meshgen)) { // Declare dependency of inputs to sub generator calls. If mesh generation diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index 5b2b9a33f114..fad3e42a50a4 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -271,6 +271,7 @@ CoreMeshGenerator::CoreMeshGenerator(const InputParameters & parameters) } } + // No subgenerators will be called if option to bypass mesh generators is enabled if (!getReactorParam(RGMB::bypass_meshgen)) { // Declare that all of the meshes in the "inputs" parameter are to be used by diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 14ada90b71a7..565a3a1d6fb4 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -193,6 +193,7 @@ PinMeshGenerator::PinMeshGenerator(const InputParameters & parameters) std::string build_mesh_name; + // No subgenerators will be called if option to bypass mesh generators is enabled if (!getReactorParam(RGMB::bypass_meshgen)) { if (_homogenized) @@ -457,6 +458,7 @@ PinMeshGenerator::generateMetadata() declareMeshProperty(RGMB::duct_block_names, std::vector>()); declareMeshProperty(RGMB::is_single_pin, _is_assembly); // Following metadata is only relevant if an output mesh is generated by RGMB + // because it pertains to region & block ids of elements in the output mesh if (!getReactorParam(RGMB::bypass_meshgen)) { std::map>> pin_region_id_map; From 2d2513e66ea69e8bdda74f12eeac873520d9a07d Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Mon, 26 Feb 2024 11:42:41 -0500 Subject: [PATCH 21/23] Add unit tests to make sure output metadata are consistent when conducting and bypassing mesh generation --- .../ReactorGeometryMeshBuilderBase.h | 3 +- .../meshgenerators/AssemblyMeshGenerator.C | 5 ++- .../src/meshgenerators/CoreMeshGenerator.C | 5 ++- .../src/meshgenerators/PinMeshGenerator.C | 5 ++- .../meshgenerators/core_mesh_generator/tests | 39 +++++++++++++++++++ 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h index c330778ff499..98ce70b3a160 100644 --- a/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h +++ b/modules/reactor/include/meshgenerators/ReactorGeometryMeshBuilderBase.h @@ -53,7 +53,8 @@ static const std::string duct_region_ids = "duct_region_ids"; static const std::string duct_block_names = "duct_block_names"; static const std::string peripheral_ring_region_id = "peripheral_ring_region_id"; -// Name of a boolean metadata that indicates whether or not we skipped mesh generation in favor of only generate the mesh metadata +// Name of a boolean metadata that indicates whether or not we skipped mesh generation in favor of +// only generating the mesh metadata static const std::string bypass_meshgen = "bypass_meshgen"; } diff --git a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C index 3ecafb47a2bf..4c7ce0bc0102 100644 --- a/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/AssemblyMeshGenerator.C @@ -485,8 +485,9 @@ AssemblyMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() - // should not be called with this option specified + // If bypass_mesh is true, return a null mesh. In this mode, an output mesh is not + // generated and only metadata is defined on the generator, so logic related to + // generation of output mesh will not be called if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; diff --git a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C index fad3e42a50a4..d40272d0c930 100644 --- a/modules/reactor/src/meshgenerators/CoreMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/CoreMeshGenerator.C @@ -619,8 +619,9 @@ CoreMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() - // should not be called with this option specified + // If bypass_mesh is true, return a null mesh. In this mode, an output mesh is not + // generated and only metadata is defined on the generator, so logic related to + // generation of output mesh will not be called if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; diff --git a/modules/reactor/src/meshgenerators/PinMeshGenerator.C b/modules/reactor/src/meshgenerators/PinMeshGenerator.C index 565a3a1d6fb4..8b2a4e3012eb 100644 --- a/modules/reactor/src/meshgenerators/PinMeshGenerator.C +++ b/modules/reactor/src/meshgenerators/PinMeshGenerator.C @@ -529,8 +529,9 @@ PinMeshGenerator::generate() // Must be called to free the ReactorMeshParams mesh freeReactorMeshParams(); - // If mesh generation is requested and bypass_mesh is true, return a null mesh. generate() - // should not be called with this option specified + // If bypass_mesh is true, return a null mesh. In this mode, an output mesh is not + // generated and only metadata is defined on the generator, so logic related to + // generation of output mesh will not be called if (getReactorParam(RGMB::bypass_meshgen)) { auto null_mesh = nullptr; diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 42ae88be9e56..08c3b279f7f5 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -16,6 +16,19 @@ cli_args = "Mesh/cmg/show_rgmb_metadata=true" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Square.+axial_mesh_sizes: 1.+axial_mesh_intervals: 1.+Core-level metadata.+cmg.+assembly_names: amg2, amg1.+assembly_lattice:.+1, 0.+0, 1.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin3, pin1, pin2.+pin_lattice:.+0, 1.+1, 2.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 4.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 2' [] + [square_metadata_jsondiff] + requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in mesh generation mode' + type = 'JSONDiff' + input = 'core_square.i' + cli_args = 'Reporters/metadata/type=MeshMetaDataReporter + Outputs/json_out/type=JSON + Outputs/json_out/execute_on=FINAL + Outputs/json_out/execute_system_information_on=none + Outputs/json_out/file_base=core_square_datadriven_out' + jsondiff = 'core_square_datadriven_out.json' + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + recover = false + [] [square_metadata_bypass_meshgen] requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with another mesh generator as the data driven generator' type = 'JSONDiff' @@ -115,6 +128,19 @@ Outputs/file_base=core_hex_in" expect_out = 'Global metadata.+mesh_dimensions: 3.+mesh_geometry: Hex.+axial_mesh_sizes: 1, 1.+axial_mesh_intervals: 1, 1.+Core-level metadata.+cmg.+assembly_names: amg1, amg2.+assembly_lattice:.+-1, 1.+1, 0, -1.+-1, 1.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin2.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg2.+assembly_type: 2.+pin_names: pin1, pin3.+pin_lattice:.+0, 0.+0, 1, 0.+0, 0.+Pin-level metadata.+pin2.+pin_type: 2.+background_region_id: 21, 121.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 12, 112.+Pin-level metadata.+pin3.+pin_type: 3.+background_region_id: 32, 132' [] + [hex_metadata_jsondiff] + requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in mesh generation mode' + type = 'JSONDiff' + input = 'core_hex.i' + cli_args = 'Reporters/metadata/type=MeshMetaDataReporter + Outputs/json_out/type=JSON + Outputs/json_out/execute_on=FINAL + Outputs/json_out/execute_system_information_on=none + Outputs/json_out/file_base=core_hex_datadriven_out' + jsondiff = 'core_hex_datadriven_out.json' + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + recover = false + [] [hex_metadata_bypass_meshgen] requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' @@ -195,6 +221,19 @@ cli_args = "Mesh/cmg/show_rgmb_metadata=true" expect_out = 'Global metadata.+mesh_dimensions: 2.+mesh_geometry: Hex.+Core-level metadata.+cmg.+peripheral_ring_radius: 7.+peripheral_ring_region_id: 5.+assembly_names: amg1.+assembly_lattice:.+0, 0.+0, 0, 0.+0, 0.+Assembly-level metadata.+amg1.+assembly_type: 1.+pin_names: pin1.+pin_lattice:.+0, 0.+0, 0, 0.+0, 0.+Pin-level metadata.+pin1.+pin_type: 1.+background_region_id: 2' [] + [hex_metadata_2d_jsondiff] + requirement = 'The system shall output reactor-related metadata for a 2D hexagonal core mesh in mesh generation mode' + type = 'JSONDiff' + input = 'core_hex_2d.i' + cli_args = 'Reporters/metadata/type=MeshMetaDataReporter + Outputs/json_out/type=JSON + Outputs/json_out/execute_on=FINAL + Outputs/json_out/execute_system_information_on=none + Outputs/json_out/file_base=core_hex_2d_datadriven_out' + jsondiff = 'core_hex_2d_datadriven_out.json' + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + recover = false + [] [hex_metadata_2d_bypass_meshgen] requirement = 'The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' From f791eed1b5113cac8a1560790f197abf49398094 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 14 Mar 2024 11:14:28 -0400 Subject: [PATCH 22/23] Remove _bypass_meshgen private parameter in favor of isDataOnly call --- modules/reactor/src/meshgenerators/ReactorMeshParams.C | 10 +++------- .../tests/meshgenerators/core_mesh_generator/tests | 9 ++++++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/modules/reactor/src/meshgenerators/ReactorMeshParams.C b/modules/reactor/src/meshgenerators/ReactorMeshParams.C index 15621fb613b2..7afbae8d938a 100644 --- a/modules/reactor/src/meshgenerators/ReactorMeshParams.C +++ b/modules/reactor/src/meshgenerators/ReactorMeshParams.C @@ -43,7 +43,6 @@ ReactorMeshParams::validParams() params.addParam>( "axial_mesh_intervals", "Number of elements in the Z direction for each axial region"); - params.addPrivateParam("_bypass_meshgen", true); params.addClassDescription("This ReactorMeshParams object acts as storage for persistent " "information about the reactor geometry."); @@ -82,15 +81,12 @@ ReactorMeshParams::ReactorMeshParams(const InputParameters & parameters) this->declareMeshProperty(RGMB::mesh_geometry, std::string(_geom)); this->declareMeshProperty(RGMB::assembly_pitch, _assembly_pitch); - // Option to bypass mesh generation depends on existence of Mesh/data_driven_generator parameter + // Option to bypass mesh generation is controlled by presence of Mesh/data_driven_generator + // and whether the current generator is in data only mode const auto & moose_mesh = _app.actionWarehouse().getMesh(); const auto data_driven_generator = moose_mesh->parameters().get("data_driven_generator"); - bool bypass_meshgen = (data_driven_generator != ""); - // Option to bypass mesh generation can be overriden by setting private "_bypass_meshgen" - // parameter to false - if (!getParam("_bypass_meshgen")) - bypass_meshgen = false; + bool bypass_meshgen = (data_driven_generator != "") && isDataOnly(); this->declareMeshProperty(RGMB::bypass_meshgen, bypass_meshgen); // Declare name id map only if RGMB is outputting a mesh diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 08c3b279f7f5..7c5eaff9dcb8 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -26,7 +26,8 @@ Outputs/json_out/execute_system_information_on=none Outputs/json_out/file_base=core_square_datadriven_out' jsondiff = 'core_square_datadriven_out.json' - ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false [] [square_metadata_bypass_meshgen] @@ -138,7 +139,8 @@ Outputs/json_out/execute_system_information_on=none Outputs/json_out/file_base=core_hex_datadriven_out' jsondiff = 'core_hex_datadriven_out.json' - ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false [] [hex_metadata_bypass_meshgen] @@ -231,7 +233,8 @@ Outputs/json_out/execute_system_information_on=none Outputs/json_out/file_base=core_hex_2d_datadriven_out' jsondiff = 'core_hex_2d_datadriven_out.json' - ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen' + # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven + ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false [] [hex_metadata_2d_bypass_meshgen] From 3c5ecfd1b4532924ad6b1b58eb4f6a7d337b9245 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Fri, 15 Mar 2024 03:15:11 -0400 Subject: [PATCH 23/23] Revert changes to ElementGenerator and create custom ReactorTestApp object for testing data driven RGMB workflow --- .../include/meshgenerators/ElementGenerator.h | 2 - .../src/meshgenerators/ElementGenerator.C | 2 - ...tReactorGeometryMeshBuilderMeshGenerator.h | 33 +++++++++++ ...tReactorGeometryMeshBuilderMeshGenerator.C | 56 +++++++++++++++++++ .../core_hex_2d_datadriven.i | 13 +---- .../core_mesh_generator/core_hex_datadriven.i | 13 +---- .../core_square_datadriven.i | 15 ++--- .../meshgenerators/core_mesh_generator/tests | 12 ++++ 8 files changed, 111 insertions(+), 35 deletions(-) create mode 100644 modules/reactor/test/include/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.h create mode 100644 modules/reactor/test/src/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.C diff --git a/framework/include/meshgenerators/ElementGenerator.h b/framework/include/meshgenerators/ElementGenerator.h index 195c0a158e83..32679c77bbc3 100644 --- a/framework/include/meshgenerators/ElementGenerator.h +++ b/framework/include/meshgenerators/ElementGenerator.h @@ -25,8 +25,6 @@ class ElementGenerator : public MeshGenerator Elem * getElemType(const std::string & type); - void generateData() override{}; - protected: /// Mesh that possibly comes from another generator std::unique_ptr & _input; diff --git a/framework/src/meshgenerators/ElementGenerator.C b/framework/src/meshgenerators/ElementGenerator.C index bab4013ba4eb..6f17d0248e64 100644 --- a/framework/src/meshgenerators/ElementGenerator.C +++ b/framework/src/meshgenerators/ElementGenerator.C @@ -37,8 +37,6 @@ ElementGenerator::validParams() params.addClassDescription("Generates individual elements given a list of nodal positions."); - // Declare that this generator has a generateData method - MeshGenerator::setHasGenerateData(params); return params; } diff --git a/modules/reactor/test/include/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.h b/modules/reactor/test/include/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.h new file mode 100644 index 000000000000..d6c2d144b742 --- /dev/null +++ b/modules/reactor/test/include/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.h @@ -0,0 +1,33 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#pragma once + +#include "MeshGenerator.h" + +class TestReactorGeometryMeshBuilderMeshGenerator : public MeshGenerator +{ +public: + static InputParameters validParams(); + + TestReactorGeometryMeshBuilderMeshGenerator(const InputParameters & parameters); + + std::unique_ptr generate() override; + +private: + /// the input mesh name + const std::string _input; + + /// The final mesh that is generated by the subgenerators; + /// This mesh is pointed to by the input. We store it so we can later reset it in `generate`. + std::unique_ptr * _input_mesh; + + /// The final mesh that is generated by the subgenerators; + std::unique_ptr * _build_mesh; +}; diff --git a/modules/reactor/test/src/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.C b/modules/reactor/test/src/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.C new file mode 100644 index 000000000000..95a44bae5bea --- /dev/null +++ b/modules/reactor/test/src/meshgenerators/TestReactorGeometryMeshBuilderMeshGenerator.C @@ -0,0 +1,56 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#include "TestReactorGeometryMeshBuilderMeshGenerator.h" +#include "ReactorGeometryMeshBuilderBase.h" + +registerMooseObject("ReactorTestApp", TestReactorGeometryMeshBuilderMeshGenerator); + +InputParameters +TestReactorGeometryMeshBuilderMeshGenerator::validParams() +{ + InputParameters params = MeshGenerator::validParams(); + params.addRequiredParam("input", "Input core mesh"); + return params; +} + +TestReactorGeometryMeshBuilderMeshGenerator::TestReactorGeometryMeshBuilderMeshGenerator(const InputParameters & params) + : MeshGenerator(params), + _input(getParam("input")), + _input_mesh(&getMesh("input")) +{ + // Assumes input has been generated by CoreMeshGenerator and contains valid metadata for generation + const auto reactor_params_name = getMeshProperty(RGMB::reactor_params_name, _input); + + // Get assembly pitch from metadata and define a circular mesh that preserves volume of assembly structure + const auto assembly_pitch = getMeshProperty(RGMB::assembly_pitch, reactor_params_name); + const auto mesh_geometry = getMeshProperty(RGMB::mesh_geometry, reactor_params_name); + double vol_multiplier = (mesh_geometry == "Square") ? 1.0 : std::sqrt(3) / 2; + double equivalent_volume = vol_multiplier * assembly_pitch * assembly_pitch; + double equivalent_radius = std::sqrt(equivalent_volume / M_PI); + + { + auto mesh_params = _app.getFactory().getValidParams("AdvancedConcentricCircleGenerator"); + mesh_params.set>("ring_radii") = {equivalent_radius}; + mesh_params.set>("ring_intervals") = {1}; + mesh_params.set("num_sectors") = 8; + addMeshSubgenerator("AdvancedConcentricCircleGenerator", "eqv_core_circle", mesh_params); + + _build_mesh = &getMeshByName("eqv_core_circle"); + } +} + +std::unique_ptr +TestReactorGeometryMeshBuilderMeshGenerator::generate() +{ + // Input mesh is essentially a data store to build the equivalent core, so we reset it as it is no + // longer needed. The mesh we care about is the one created by the subgenerator + _input_mesh->reset(); + return std::move(*_build_mesh); +} diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i index cf5fbb3e880a..39430e4dcbcd 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_2d_datadriven.i @@ -48,18 +48,11 @@ periphery_num_layers = 1 desired_area = 5.0 [] - [elem_gen] - type = ElementGenerator + [test_rgmb] + type = TestReactorGeometryMeshBuilderMeshGenerator input = cmg - nodal_positions = '0 0 0 - 1 0 0 - 1 1 0 - 0 1 0' - - element_connectivity = '0 1 2 3' - elem_type = "QUAD4" [] - data_driven_generator = elem_gen + data_driven_generator = test_rgmb [] [Problem] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i index 8612d3be4e28..bb24901c2449 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_hex_datadriven.i @@ -87,18 +87,11 @@ 2 1' extrude = true [] - [elem_gen] - type = ElementGenerator + [test_rgmb] + type = TestReactorGeometryMeshBuilderMeshGenerator input = cmg - nodal_positions = '0 0 0 - 1 0 0 - 1 1 0 - 0 1 0' - - element_connectivity = '0 1 2 3' - elem_type = "QUAD4" [] - data_driven_generator = elem_gen + data_driven_generator = test_rgmb [] [Problem] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i index a626693e4bd2..742152060761 100644 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square_datadriven.i @@ -71,24 +71,17 @@ 0 1' extrude = true [] - [elem_gen] - type = ElementGenerator + [test_rgmb] + type = TestReactorGeometryMeshBuilderMeshGenerator input = cmg - nodal_positions = '0 0 0 - 1 0 0 - 1 1 0 - 0 1 0' - - element_connectivity = '0 1 2 3' - elem_type = "QUAD4" [] [transform] type = TransformGenerator - input = elem_gen + input = test_rgmb transform = scale vector_value = '1 1 1' [] - data_driven_generator = elem_gen + data_driven_generator = test_rgmb [] [Problem] diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index 7c5eaff9dcb8..e99f58b51719 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -29,6 +29,7 @@ # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false + allow_test_objects = true [] [square_metadata_bypass_meshgen] requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with another mesh generator as the data driven generator' @@ -36,12 +37,16 @@ input = 'core_square_datadriven.i' cli_args = 'Mesh/inactive=transform' jsondiff = 'core_square_datadriven_out.json' + allow_test_objects = true + recover = false [] [square_metadata_bypass_meshgen_append_generator] requirement = 'The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with an additional mesh generator appended to the data driven generator' type = 'JSONDiff' input = 'core_square_datadriven.i' jsondiff = 'core_square_datadriven_out.json' + allow_test_objects = true + recover = false [] [bypass_meshgen_err] requirement = 'The system shall throw an error in data driven mode with an RGMB mesh as the data driven generator' @@ -49,6 +54,7 @@ input = 'core_square_datadriven.i' cli_args = "Mesh/data_driven_generator=cmg" expect_err = 'A mesh was not generated by this generator' + allow_test_objects = true [] [core_shared_assembly_ids] requirement = 'The system shall throw an error if a core is composed of different assemblies with a shared assembly type id' @@ -142,12 +148,15 @@ # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false + allow_test_objects = true [] [hex_metadata_bypass_meshgen] requirement = 'The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' input = 'core_hex_datadriven.i' jsondiff = 'core_hex_datadriven_out.json' + allow_test_objects = true + recover = false [] [single_assembly_square_core] requirement = 'The system shall generate a full 3D square core mesh with 2 single assembly types' @@ -236,12 +245,15 @@ # Ignoring data that is only generated when the mesh is actually constructed, to compare with data-driven ignored_regex_items = '.*/.*/.*_meta|flat_side_up|control_drum_angles|control_drum_positions|quad_center_block_id|pin_block_name_map|pin_region_id_map|position_file_name|peripheral_modifier_compatible|pattern_size|.*_trimmability|name_id_map|bypass_meshgen|interface_boundary_ids|interface_boundaries' recover = false + allow_test_objects = true [] [hex_metadata_2d_bypass_meshgen] requirement = 'The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator' type = 'JSONDiff' input = 'core_hex_2d_datadriven.i' jsondiff = 'core_hex_2d_datadriven_out.json' + allow_test_objects = true + recover = false [] [hex_metadata_extra_assemblies] requirement = 'The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with extra assemblies not part of core lattice'