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 3D mesh representing quadrilateral subchannels 17 : */ 18 : class SCMDetailedQuadSubChannelMeshGenerator : public MeshGenerator 19 : { 20 : public: 21 : SCMDetailedQuadSubChannelMeshGenerator(const InputParameters & parameters); 22 : virtual std::unique_ptr<MeshBase> generate() override; 23 : 24 : protected: 25 1240 : EChannelType getSubchannelType(unsigned int index) const { return _subch_type[index]; } 26 : std::vector<Real> getSubchannelPosition(unsigned int i) { return _subchannel_position[i]; } 27 : 28 : /// unheated length of the fuel Pin at the entry of the assembly 29 : const Real _unheated_length_entry; 30 : /// heated length of the fuel Pin 31 : const Real _heated_length; 32 : /// unheated length of the fuel Pin at the exit of the assembly 33 : const Real _unheated_length_exit; 34 : /// axial location of nodes 35 : std::vector<Real> _z_grid; 36 : /// Distance between the neighbor fuel pins, pitch 37 : const Real _pitch; 38 : /// fuel Pin diameter 39 : const Real _pin_diameter; 40 : /// Number of cells in the axial direction 41 : const unsigned int _n_cells; 42 : /// Number of subchannels in the x direction 43 : const unsigned int _nx; 44 : /// Number of subchannels in the y direction 45 : const unsigned int _ny; 46 : /// Total number of subchannels 47 : unsigned int _n_channels; 48 : /** 49 : * The side gap, not to be confused with the gap between pins, this refers to the gap 50 : * next to the duct or else the distance between the subchannel centroid to the duct wall. 51 : * distance(edge pin center, duct wall) = pitch / 2 + side_gap [m]. 52 : */ 53 : const Real _side_gap; 54 : /// Subchannel type 55 : std::vector<EChannelType> _subch_type; 56 : /// x,y coordinates of the subchannel centroids 57 : std::vector<std::vector<Real>> _subchannel_position; 58 : /// Subdomain ID used for the mesh block 59 : const unsigned int & _block_id; 60 : 61 : public: 62 : static InputParameters validParams(); 63 : };