https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
SCMQuadInterWrapperMeshGenerator Class Reference

Class for Subchannel mesh generation in the square lattice geometry. More...

#include <SCMQuadInterWrapperMeshGenerator.h>

Inheritance diagram for SCMQuadInterWrapperMeshGenerator:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 SCMQuadInterWrapperMeshGenerator (const InputParameters &parameters)
 
std::unique_ptr< MeshBase > generate () override
 
std::unique_ptr< MeshBase > generateInternal ()
 
const std::set< MeshGeneratorName > & getRequestedMeshGenerators () const
 
const std::set< MeshGeneratorName > & getRequestedMeshGeneratorsForSub () const
 
void addParentMeshGenerator (const MeshGenerator &mg, const AddParentChildKey)
 
void addChildMeshGenerator (const MeshGenerator &mg, const AddParentChildKey)
 
const std::set< const MeshGenerator *, Comparator > & getParentMeshGenerators () const
 
const std::set< const MeshGenerator *, Comparator > & getChildMeshGenerators () const
 
const std::set< const MeshGenerator *, Comparator > & getSubMeshGenerators () const
 
bool isParentMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const
 
bool isChildMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const
 
bool isNullMeshName (const MeshGeneratorName &name) const
 
bool hasSaveMesh () const
 
bool hasOutput () const
 
const std::string & getSavedMeshName () const
 
bool hasGenerateData () const
 
bool isDataOnly () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static bool hasGenerateData (const InputParameters &params)
 
static void setHasGenerateData (InputParameters &params)
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

static const std::string data_only_param
 
static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

virtual void generateData ()
 
T & copyMeshProperty (const std::string &target_data_name, const std::string &source_data_name, const std::string &source_mesh)
 
T & copyMeshProperty (const std::string &source_data_name, const std::string &source_mesh)
 
std::unique_ptr< MeshBase > & getMesh (const std::string &param_name, const bool allow_invalid=false)
 
std::vector< std::unique_ptr< MeshBase > *> getMeshes (const std::string &param_name)
 
std::unique_ptr< MeshBase > & getMeshByName (const MeshGeneratorName &mesh_generator_name)
 
std::vector< std::unique_ptr< MeshBase > *> getMeshesByName (const std::vector< MeshGeneratorName > &mesh_generator_names)
 
void declareMeshForSub (const std::string &param_name)
 
void declareMeshesForSub (const std::string &param_name)
 
void declareMeshForSubByName (const MeshGeneratorName &mesh_generator_name)
 
void declareMeshesForSubByName (const std::vector< MeshGeneratorName > &mesh_generator_names)
 
std::unique_ptr< MeshBase > buildMeshBaseObject (unsigned int dim=libMesh::invalid_uint)
 
std::unique_ptr< ReplicatedMesh > buildReplicatedMesh (unsigned int dim=libMesh::invalid_uint)
 
std::unique_ptr< DistributedMesh > buildDistributedMesh (unsigned int dim=libMesh::invalid_uint)
 
void addMeshSubgenerator (const std::string &type, const std::string &name, Ts... extra_input_parameters)
 
void addMeshSubgenerator (const std::string &type, const std::string &name, InputParameters params)
 
void declareNullMeshName (const MeshGeneratorName &name)
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
T & declareMeshProperty (const std::string &data_name, Args &&... args)
 
T & declareMeshProperty (const std::string &data_name, const T &data_value)
 
T & declareMeshProperty (const std::string &data_name, Args &&... args)
 
T & declareMeshProperty (const std::string &data_name, const T &data_value)
 
T & setMeshProperty (const std::string &data_name, Args &&... args)
 
T & setMeshProperty (const std::string &data_name, const T &data_value)
 
T & setMeshProperty (const std::string &data_name, Args &&... args)
 
T & setMeshProperty (const std::string &data_name, const T &data_value)
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

const Real _assembly_pitch
 Distance between the neighbor fuel assemblies, assembly pitch. More...
 
const Real _assembly_side_x
 Sides of the assemblies in the x and y direction. More...
 
const Real _assembly_side_y
 
const Real _unheated_length_entry
 unheated length of the inter-wrapper section at the entry of the assembly More...
 
const Real _heated_length
 heated length of the inter-wrapper section More...
 
const Real _unheated_length_exit
 unheated length of the inter-wrapper section at the exit of the assembly More...
 
const Real_kij
 Lateral form loss coefficient. More...
 
const unsigned int _n_cells
 number of axial cells More...
 
unsigned int _nx
 Number of assemblies in the x direction. More...
 
unsigned int _ny
 Number of assemblies in the y direction. More...
 
const Real _side_bypass_length
 Extra bypass lengths in the sides of the assembly. More...
 
const unsigned int _n_channels
 Total number of flow channels. More...
 
const unsigned int _n_gaps
 Number of gaps per layer. More...
 
const unsigned int _n_assemblies
 Number of assemblies. More...
 
const unsigned int _block_id
 block index More...
 
std::vector< Real_z_grid
 axial location of nodes More...
 
std::vector< std::vector< Real > > _k_grid
 axial form loss coefficient per computational cell More...
 
unsigned int _n_blocks
 number of axial blocks More...
 
std::vector< std::vector< Node * > > _nodes
 Channel nodes. More...
 
std::vector< std::vector< Node * > > _gapnodes
 Nodes of the gaps. More...
 
std::vector< std::pair< unsigned int, unsigned int > > _gap_to_chan_map
 Defining the channel maps. More...
 
std::vector< std::vector< unsigned int > > _chan_to_gap_map
 
std::vector< std::vector< unsigned int > > _chan_to_pin_map
 
std::vector< std::vector< unsigned int > > _pin_to_chan_map
 
std::vector< std::vector< double > > _sign_id_crossflow_map
 Matrix used to give local sign to crossflow quantities. More...
 
std::vector< double > _gij_map
 Vector to store gap size. More...
 
std::vector< EChannelType_subch_type
 Subchannel type. More...
 
MooseMesh *const _mesh
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const Parallel::Communicator & _communicator
 

Friends

class SCMQuadPinMeshGenerator
 

Detailed Description

Class for Subchannel mesh generation in the square lattice geometry.

Definition at line 19 of file SCMQuadInterWrapperMeshGenerator.h.

Constructor & Destructor Documentation

◆ SCMQuadInterWrapperMeshGenerator()

SCMQuadInterWrapperMeshGenerator::SCMQuadInterWrapperMeshGenerator ( const InputParameters parameters)

Definition at line 44 of file SCMQuadInterWrapperMeshGenerator.C.

45  : MeshGenerator(params),
46  _assembly_pitch(getParam<Real>("assembly_pitch")),
47  _assembly_side_x(getParam<Real>("assembly_side_x")),
48  _assembly_side_y(getParam<Real>("assembly_side_y")),
49  _unheated_length_entry(getParam<Real>("unheated_length_entry")),
50  _heated_length(getParam<Real>("heated_length")),
51  _unheated_length_exit(getParam<Real>("unheated_length_exit")),
52  _kij(getParam<Real>("Kij")),
53  _n_cells(getParam<unsigned int>("n_cells")),
54  _nx(getParam<unsigned int>("nx")),
55  _ny(getParam<unsigned int>("ny")),
56  _side_bypass_length(getParam<Real>("side_bypass")),
57  _n_channels((_nx + 1) * (_ny + 1)),
58  _n_gaps(_nx * (_ny + 1) + _ny * (_nx + 1)),
60  _block_id(getParam<unsigned int>("block_id"))
61 {
62  // Converting number of assemblies into number of inter-wrapper flow channels
63  _nx += 1;
64  _ny += 1;
65 
66  if (_nx < 2 && _ny < 2)
67  mooseError(name(), ": The number of assemblies cannot be less than one in any direction. ");
68 
69  // Defining the total length from 3 axial sections
71 
72  // Defining the dz based in the total length and the specified number of axial cells
73  Real dz = L / _n_cells;
74  for (unsigned int i = 0; i < _n_cells + 1; i++)
75  _z_grid.push_back(dz * i);
76 
77  // Defining the array for axial resistances
78  _k_grid.resize(_n_channels, std::vector<Real>(_n_cells + 1));
79 
80  // Defining the size of the maps
81  _gap_to_chan_map.resize(_n_gaps);
82  _gapnodes.resize(_n_gaps);
87  _gij_map.resize(_n_gaps);
88 
89  // Defining the signs for positive and negative flows
90  Real positive_flow = 1.0;
91  Real negative_flow = -1.0;
92 
93  // Defining the subchannel types
94  _subch_type.resize(_n_channels);
95  for (unsigned int iy = 0; iy < _ny; iy++)
96  {
97  for (unsigned int ix = 0; ix < _nx; ix++)
98  {
99  unsigned int i_ch = _nx * iy + ix;
100  bool is_corner = (ix == 0 && iy == 0) || (ix == _nx - 1 && iy == 0) ||
101  (ix == 0 && iy == _ny - 1) || (ix == _nx - 1 && iy == _ny - 1);
102  bool is_edge = (ix == 0 || iy == 0 || ix == _nx - 1 || iy == _ny - 1);
103 
104  if (is_corner)
106  else if (is_edge)
108  else
110  }
111  }
112 
113  // Index the east-west gaps.
114  unsigned int i_gap = 0;
115  for (unsigned int iy = 0; iy < _ny; iy++)
116  {
117  for (unsigned int ix = 0; ix < _nx - 1; ix++)
118  {
119  unsigned int i_ch = _nx * iy + ix;
120  unsigned int j_ch = _nx * iy + (ix + 1);
121  _gap_to_chan_map[i_gap] = {i_ch, j_ch};
122  _chan_to_gap_map[i_ch].push_back(i_gap);
123  _chan_to_gap_map[j_ch].push_back(i_gap);
124  _sign_id_crossflow_map[i_ch].push_back(positive_flow);
125  _sign_id_crossflow_map[j_ch].push_back(negative_flow);
126 
127  // make a gap size map
128  if (iy == 0 || iy == _ny - 1)
130  else
132  ++i_gap;
133  }
134  }
135 
136  // Index the north-south gaps.
137  for (unsigned int iy = 0; iy < _ny - 1; iy++)
138  {
139  for (unsigned int ix = 0; ix < _nx; ix++)
140  {
141  unsigned int i_ch = _nx * iy + ix;
142  unsigned int j_ch = _nx * (iy + 1) + ix;
143  _gap_to_chan_map[i_gap] = {i_ch, j_ch};
144  _chan_to_gap_map[i_ch].push_back(i_gap);
145  _chan_to_gap_map[j_ch].push_back(i_gap);
146  _sign_id_crossflow_map[i_ch].push_back(positive_flow);
147  _sign_id_crossflow_map[j_ch].push_back(negative_flow);
148 
149  // make a gap size map
150  if (ix == 0 || ix == _nx - 1)
152  else
154  ++i_gap;
155  }
156  }
157 
158  // Make assembly to channel map
159  for (unsigned int iy = 0; iy < _ny - 1; iy++)
160  {
161  for (unsigned int ix = 0; ix < _nx - 1; ix++)
162  {
163  unsigned int i_pin = (_nx - 1) * iy + ix;
164  unsigned int i_chan_1 = _nx * iy + ix;
165  unsigned int i_chan_2 = _nx * (iy + 1) + ix;
166  unsigned int i_chan_3 = _nx * (iy + 1) + (ix + 1);
167  unsigned int i_chan_4 = _nx * iy + (ix + 1);
168  _pin_to_chan_map[i_pin].push_back(i_chan_1);
169  _pin_to_chan_map[i_pin].push_back(i_chan_2);
170  _pin_to_chan_map[i_pin].push_back(i_chan_3);
171  _pin_to_chan_map[i_pin].push_back(i_chan_4);
172  }
173  }
174 
175  // Make channel to assembly map
176  for (unsigned int iy = 0; iy < _ny; iy++) // row
177  {
178  for (unsigned int ix = 0; ix < _nx; ix++) // column
179  {
180  unsigned int i_ch = _nx * iy + ix;
181  // Corners contact 1/4 of one pin
182  if (iy == 0 && ix == 0)
183  {
184  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix);
185  }
186  else if (iy == _ny - 1 && ix == 0)
187  {
188  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix);
189  }
190  else if (iy == 0 && ix == _nx - 1)
191  {
192  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix - 1);
193  }
194  else if (iy == _ny - 1 && ix == _nx - 1)
195  {
196  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix - 1);
197  }
198  // Sides contact 1/4 of two pins
199  else if (iy == 0)
200  {
201  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix);
202  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix - 1);
203  }
204  else if (iy == _ny - 1)
205  {
206  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix);
207  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix - 1);
208  }
209  else if (ix == 0)
210  {
211  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix);
212  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix);
213  }
214  else if (ix == _nx - 1)
215  {
216  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix - 1);
217  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix - 1);
218  }
219  // interior contacts 1/4 of 4 pins
220  else
221  {
222  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix);
223  _chan_to_pin_map[i_ch].push_back((_nx - 1) * iy + ix - 1);
224  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix);
225  _chan_to_pin_map[i_ch].push_back((_nx - 1) * (iy - 1) + ix - 1);
226  }
227  }
228  }
229 
230  // Reduce reserved memory in the channel-to-gap map.
231  for (auto & gap : _chan_to_gap_map)
232  gap.shrink_to_fit();
233 
234  // Reduce reserved memory in the channel-to-pin map.
235  for (auto & pin : _chan_to_pin_map)
236  pin.shrink_to_fit();
237 
238  // Reduce reserved memory in the pin-to-channel map.
239  for (auto & pin : _pin_to_chan_map)
240  pin.shrink_to_fit();
241 
242  _console << "Inter-wrapper quad mesh initialized" << std::endl;
243 }
const Real & _kij
Lateral form loss coefficient.
std::vector< std::vector< Real > > _k_grid
axial form loss coefficient per computational cell
std::vector< EChannelType > _subch_type
Subchannel type.
std::vector< std::vector< double > > _sign_id_crossflow_map
Matrix used to give local sign to crossflow quantities.
std::vector< double > _gij_map
Vector to store gap size.
std::vector< std::pair< unsigned int, unsigned int > > _gap_to_chan_map
Defining the channel maps.
std::vector< std::vector< unsigned int > > _chan_to_gap_map
unsigned int _nx
Number of assemblies in the x direction.
const Real _unheated_length_exit
unheated length of the inter-wrapper section at the exit of the assembly
std::vector< std::vector< unsigned int > > _pin_to_chan_map
MeshGenerator(const InputParameters &parameters)
virtual const std::string & name() const
const Real _assembly_side_x
Sides of the assemblies in the x and y direction.
const Real _side_bypass_length
Extra bypass lengths in the sides of the assembly.
unsigned int _ny
Number of assemblies in the y direction.
const unsigned int _n_gaps
Number of gaps per layer.
const Real _heated_length
heated length of the inter-wrapper section
std::vector< Real > _z_grid
axial location of nodes
const unsigned int _n_channels
Total number of flow channels.
std::vector< std::vector< Node * > > _gapnodes
Nodes of the gaps.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const unsigned int _n_assemblies
Number of assemblies.
const unsigned int _n_cells
number of axial cells
void mooseError(Args &&... args) const
const Real _assembly_pitch
Distance between the neighbor fuel assemblies, assembly pitch.
const Real _unheated_length_entry
unheated length of the inter-wrapper section at the entry of the assembly
const ConsoleStream _console
std::vector< std::vector< unsigned int > > _chan_to_pin_map

Member Function Documentation

◆ generate()

std::unique_ptr< MeshBase > SCMQuadInterWrapperMeshGenerator::generate ( )
overridevirtual

Implements MeshGenerator.

Definition at line 246 of file SCMQuadInterWrapperMeshGenerator.C.

247 {
248  auto mesh_base = buildMeshBaseObject();
249  BoundaryInfo & boundary_info = mesh_base->get_boundary_info();
250  mesh_base->set_spatial_dimension(3);
251  mesh_base->reserve_elem(_n_cells * _ny * _nx);
252  mesh_base->reserve_nodes((_n_cells + 1) * _ny * _nx);
253  _nodes.resize(_nx * _ny);
254  // Add the points in the shape of a rectilinear grid. The grid is regular
255  // on the xy-plane with a spacing of `pitch` between points. The grid along
256  // z is irregular to account for Pin spacers. Store pointers in the _nodes
257  // array so we can keep track of which points are in which channels.
258  Real offset_x = (_nx - 1) * _assembly_pitch / 2.0;
259  Real offset_y = (_ny - 1) * _assembly_pitch / 2.0;
260  unsigned int node_id = 0;
261  for (unsigned int iy = 0; iy < _ny; iy++)
262  {
263  for (unsigned int ix = 0; ix < _nx; ix++)
264  {
265  int i_ch = _nx * iy + ix;
266  _nodes[i_ch].reserve(_n_cells);
267  for (unsigned int iz = 0; iz < _n_cells + 1; iz++)
268  {
269  _nodes[i_ch].push_back(mesh_base->add_point(
270  Point(_assembly_pitch * ix - offset_x, _assembly_pitch * iy - offset_y, _z_grid[iz]),
271  node_id++));
272  }
273  }
274  }
275 
276  // Add the elements which in this case are 2-node edges that link each
277  // subchannel's nodes vertically.
278  unsigned int elem_id = 0;
279  for (unsigned int iy = 0; iy < _ny; iy++)
280  {
281  for (unsigned int ix = 0; ix < _nx; ix++)
282  {
283  for (unsigned int iz = 0; iz < _n_cells; iz++)
284  {
285  Elem * elem = new Edge2;
286  elem->subdomain_id() = _block_id;
287  elem->set_id(elem_id++);
288  elem = mesh_base->add_elem(elem);
289  const int indx1 = ((_n_cells + 1) * _nx) * iy + (_n_cells + 1) * ix + iz;
290  const int indx2 = ((_n_cells + 1) * _nx) * iy + (_n_cells + 1) * ix + (iz + 1);
291  elem->set_node(0, mesh_base->node_ptr(indx1));
292  elem->set_node(1, mesh_base->node_ptr(indx2));
293 
294  if (iz == 0)
295  boundary_info.add_side(elem, 0, 0);
296  if (iz == _n_cells - 1)
297  boundary_info.add_side(elem, 1, 1);
298  }
299  }
300  }
301 
302  boundary_info.sideset_name(0) = "inlet";
303  boundary_info.sideset_name(1) = "outlet";
304  boundary_info.nodeset_name(0) = "inlet";
305  boundary_info.nodeset_name(1) = "outlet";
306  mesh_base->subdomain_name(_block_id) = name();
307  mesh_base->prepare_for_use();
308 
309  // move the meta data into QuadInterWrapperMesh
310  auto & sch_mesh = static_cast<QuadInterWrapperMesh &>(*_mesh);
312 
313  sch_mesh._assembly_pitch = _assembly_pitch;
314  sch_mesh._assembly_side_x = _assembly_side_x;
315  sch_mesh._assembly_side_y = _assembly_side_y;
316  sch_mesh._heated_length = _heated_length;
317  sch_mesh._unheated_length_exit = _unheated_length_exit;
318  sch_mesh._z_grid = _z_grid;
319  sch_mesh._k_grid = _k_grid;
320  sch_mesh._kij = _kij;
321  sch_mesh._n_cells = _n_cells;
322  sch_mesh._nx = _nx;
323  sch_mesh._ny = _ny;
324  sch_mesh._side_bypass_length = _side_bypass_length;
325  sch_mesh._n_channels = _n_channels;
326  sch_mesh._n_gaps = _n_gaps;
327  sch_mesh._n_assemblies = _n_assemblies;
328  sch_mesh._nodes = _nodes;
329  sch_mesh._gapnodes = _gapnodes;
330  sch_mesh._gap_to_chan_map = _gap_to_chan_map;
331  sch_mesh._chan_to_gap_map = _chan_to_gap_map;
332  sch_mesh._chan_to_pin_map = _chan_to_pin_map;
333  sch_mesh._pin_to_chan_map = _pin_to_chan_map;
334  sch_mesh._sign_id_crossflow_map = _sign_id_crossflow_map;
335  sch_mesh._gij_map = _gij_map;
336  sch_mesh._subch_type = _subch_type;
337 
338  _console << "Inter-wrapper quad mesh generated" << std::endl;
339 
340  return mesh_base;
341 }
const Real & _kij
Lateral form loss coefficient.
std::vector< std::vector< Real > > _k_grid
axial form loss coefficient per computational cell
Real _unheated_length_entry
unheated length of the fuel Pin at the entry of the assembly
std::vector< EChannelType > _subch_type
Subchannel type.
std::vector< std::vector< double > > _sign_id_crossflow_map
Matrix used to give local sign to crossflow quantities.
std::vector< double > _gij_map
Vector to store gap size.
std::vector< std::pair< unsigned int, unsigned int > > _gap_to_chan_map
Defining the channel maps.
std::vector< std::vector< unsigned int > > _chan_to_gap_map
unsigned int _nx
Number of assemblies in the x direction.
const Real _unheated_length_exit
unheated length of the inter-wrapper section at the exit of the assembly
std::vector< std::vector< unsigned int > > _pin_to_chan_map
virtual const std::string & name() const
const Real _assembly_side_x
Sides of the assemblies in the x and y direction.
const Real _side_bypass_length
Extra bypass lengths in the sides of the assembly.
unsigned int _ny
Number of assemblies in the y direction.
const unsigned int _n_gaps
Number of gaps per layer.
const Real _heated_length
heated length of the inter-wrapper section
std::vector< Real > _z_grid
axial location of nodes
const unsigned int _n_channels
Total number of flow channels.
Creates the mesh of an inter-wrapper around square assemblies.
std::vector< std::vector< Node * > > _gapnodes
Nodes of the gaps.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const unsigned int _n_assemblies
Number of assemblies.
const unsigned int _n_cells
number of axial cells
std::vector< std::vector< Node * > > _nodes
Channel nodes.
const Real _assembly_pitch
Distance between the neighbor fuel assemblies, assembly pitch.
const Real _unheated_length_entry
unheated length of the inter-wrapper section at the entry of the assembly
const ConsoleStream _console
std::unique_ptr< MeshBase > buildMeshBaseObject(unsigned int dim=libMesh::invalid_uint)
std::vector< std::vector< unsigned int > > _chan_to_pin_map

◆ validParams()

InputParameters SCMQuadInterWrapperMeshGenerator::validParams ( )
static

Definition at line 22 of file SCMQuadInterWrapperMeshGenerator.C.

23 {
25  params.addClassDescription("Creates a mesh for the inter-wrapper around square subassemblies");
26  params.addRequiredParam<Real>("assembly_pitch", "Assembly Pitch [m]");
27  params.addRequiredParam<Real>("assembly_side_x",
28  "Outer side lengths of assembly in x [m] - including duct");
29  params.addRequiredParam<Real>("assembly_side_y",
30  "Outer side lengths of assembly in y [m] - including duct");
31  params.addParam<Real>("unheated_length_entry", 0.0, "Unheated length at entry [m]");
32  params.addRequiredParam<Real>("heated_length", "Heated length [m]");
33  params.addParam<Real>("unheated_length_exit", 0.0, "Unheated length at exit [m]");
34  params.addParam<Real>("Kij", 0.5, "Lateral form loss coefficient [-]");
35  params.addRequiredParam<unsigned int>("n_cells", "The number of cells in the axial direction");
36  params.addRequiredParam<unsigned int>("nx", "Number of assemblies in the x direction [-]");
37  params.addRequiredParam<unsigned int>("ny", "Number of assemblies in the y direction [-]");
38  params.addRequiredParam<Real>("side_bypass",
39  "Extra size of the bypass for the side assemblies [m]");
40  params.addParam<unsigned int>("block_id", 0, "Domain Index");
41  return params;
42 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)

Friends And Related Function Documentation

◆ SCMQuadPinMeshGenerator

friend class SCMQuadPinMeshGenerator
friend

Definition at line 88 of file SCMQuadInterWrapperMeshGenerator.h.

Member Data Documentation

◆ _assembly_pitch

const Real SCMQuadInterWrapperMeshGenerator::_assembly_pitch
protected

Distance between the neighbor fuel assemblies, assembly pitch.

Definition at line 27 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _assembly_side_x

const Real SCMQuadInterWrapperMeshGenerator::_assembly_side_x
protected

Sides of the assemblies in the x and y direction.

Definition at line 29 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _assembly_side_y

const Real SCMQuadInterWrapperMeshGenerator::_assembly_side_y
protected

◆ _block_id

const unsigned int SCMQuadInterWrapperMeshGenerator::_block_id
protected

block index

Definition at line 54 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate().

◆ _chan_to_gap_map

std::vector<std::vector<unsigned int> > SCMQuadInterWrapperMeshGenerator::_chan_to_gap_map
protected

◆ _chan_to_pin_map

std::vector<std::vector<unsigned int> > SCMQuadInterWrapperMeshGenerator::_chan_to_pin_map
protected

◆ _gap_to_chan_map

std::vector<std::pair<unsigned int, unsigned int> > SCMQuadInterWrapperMeshGenerator::_gap_to_chan_map
protected

Defining the channel maps.

Definition at line 71 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _gapnodes

std::vector<std::vector<Node *> > SCMQuadInterWrapperMeshGenerator::_gapnodes
protected

Nodes of the gaps.

Definition at line 68 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _gij_map

std::vector<double> SCMQuadInterWrapperMeshGenerator::_gij_map
protected

Vector to store gap size.

Definition at line 81 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _heated_length

const Real SCMQuadInterWrapperMeshGenerator::_heated_length
protected

heated length of the inter-wrapper section

Definition at line 34 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _k_grid

std::vector<std::vector<Real> > SCMQuadInterWrapperMeshGenerator::_k_grid
protected

axial form loss coefficient per computational cell

Definition at line 59 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _kij

const Real& SCMQuadInterWrapperMeshGenerator::_kij
protected

Lateral form loss coefficient.

Definition at line 38 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate().

◆ _n_assemblies

const unsigned int SCMQuadInterWrapperMeshGenerator::_n_assemblies
protected

Number of assemblies.

Definition at line 52 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _n_blocks

unsigned int SCMQuadInterWrapperMeshGenerator::_n_blocks
protected

number of axial blocks

Definition at line 61 of file SCMQuadInterWrapperMeshGenerator.h.

◆ _n_cells

const unsigned int SCMQuadInterWrapperMeshGenerator::_n_cells
protected

number of axial cells

Definition at line 40 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _n_channels

const unsigned int SCMQuadInterWrapperMeshGenerator::_n_channels
protected

Total number of flow channels.

Definition at line 48 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _n_gaps

const unsigned int SCMQuadInterWrapperMeshGenerator::_n_gaps
protected

Number of gaps per layer.

Definition at line 50 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _nodes

std::vector<std::vector<Node *> > SCMQuadInterWrapperMeshGenerator::_nodes
protected

Channel nodes.

Definition at line 66 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate().

◆ _nx

unsigned int SCMQuadInterWrapperMeshGenerator::_nx
protected

Number of assemblies in the x direction.

Definition at line 42 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _ny

unsigned int SCMQuadInterWrapperMeshGenerator::_ny
protected

Number of assemblies in the y direction.

Definition at line 44 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _pin_to_chan_map

std::vector<std::vector<unsigned int> > SCMQuadInterWrapperMeshGenerator::_pin_to_chan_map
protected

◆ _side_bypass_length

const Real SCMQuadInterWrapperMeshGenerator::_side_bypass_length
protected

Extra bypass lengths in the sides of the assembly.

Definition at line 46 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _sign_id_crossflow_map

std::vector<std::vector<double> > SCMQuadInterWrapperMeshGenerator::_sign_id_crossflow_map
protected

Matrix used to give local sign to crossflow quantities.

Definition at line 79 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _subch_type

std::vector<EChannelType> SCMQuadInterWrapperMeshGenerator::_subch_type
protected

Subchannel type.

Definition at line 83 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _unheated_length_entry

const Real SCMQuadInterWrapperMeshGenerator::_unheated_length_entry
protected

unheated length of the inter-wrapper section at the entry of the assembly

Definition at line 32 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _unheated_length_exit

const Real SCMQuadInterWrapperMeshGenerator::_unheated_length_exit
protected

unheated length of the inter-wrapper section at the exit of the assembly

Definition at line 36 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().

◆ _z_grid

std::vector<Real> SCMQuadInterWrapperMeshGenerator::_z_grid
protected

axial location of nodes

Definition at line 57 of file SCMQuadInterWrapperMeshGenerator.h.

Referenced by generate(), and SCMQuadInterWrapperMeshGenerator().


The documentation for this class was generated from the following files: