Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "MeshGenerator.h" 13 : #include "SubChannelEnums.h" 14 : 15 : /** 16 : * Mesh generator that builds a detailed 3D mesh representing quadrilateral subchannels and pins 17 : */ 18 : class SCMDetailedQuadAssemblyMeshGenerator : public MeshGenerator 19 : { 20 : public: 21 : SCMDetailedQuadAssemblyMeshGenerator(const InputParameters & parameters); 22 : virtual std::unique_ptr<MeshBase> generate() override; 23 : 24 : protected: 25 : /// returns the type of the subchannel given the index 26 913 : EChannelType getSubchannelType(unsigned int index) const { return _subch_type[index]; } 27 : 28 : /// Generate one detailed fuel pin volume centered at the supplied point. 29 : void generatePin(std::unique_ptr<MeshBase> & mesh_base, const Point & center); 30 : 31 : /// unheated length of the fuel Pin at the entry of the assembly 32 : const Real _unheated_length_entry; 33 : /// heated length of the fuel Pin 34 : const Real _heated_length; 35 : /// unheated length of the fuel Pin at the exit of the assembly 36 : const Real _unheated_length_exit; 37 : /// axial location of nodes 38 : std::vector<Real> _z_grid; 39 : /// Distance between the neighbor fuel pins, pitch 40 : const Real _pitch; 41 : /// fuel Pin diameter 42 : const Real _pin_diameter; 43 : /// Number of cells in the axial direction 44 : const unsigned int _n_cells; 45 : /// Number of subchannels in the x direction 46 : const unsigned int _nx; 47 : /// Number of subchannels in the y direction 48 : const unsigned int _ny; 49 : /// Total number of subchannels 50 : unsigned int _n_channels; 51 : /** 52 : * The side gap, not to be confused with the gap between pins, this refers to the gap 53 : * next to the duct or else the distance between the subchannel centroid to the duct wall. 54 : * distance(edge pin center, duct wall) = pitch / 2 + side_gap [m]. 55 : */ 56 : const Real _side_gap; 57 : /// Number of azimuthal sectors used to discretize each circular pin cross section 58 : const unsigned int _num_sectors; 59 : /// Subchannel subdomain ID 60 : const unsigned int _subchannel_block_id; 61 : /// Pin subdomain ID 62 : const unsigned int _pin_block_id; 63 : /// Subchannel type 64 : std::vector<EChannelType> _subch_type; 65 : /// x,y coordinates of the subchannel centroids 66 : std::vector<std::vector<Real>> _subchannel_position; 67 : /// Counter for element numbering 68 : dof_id_type _elem_id; 69 : 70 : public: 71 : static InputParameters validParams(); 72 : };