25 std::unique_ptr<MeshBase>
generate()
override;
83 std::unique_ptr<ReplicatedMesh>
85 const Real ring_offset,
87 const std::vector<unsigned int> ring_intervals,
89 const bool preserve_volumes,
90 const unsigned int num_sectors_per_side,
91 const unsigned int background_intervals,
92 const std::vector<subdomain_id_type> block_ids_new,
103 template <
typename T>
104 std::vector<std::vector<T>>
107 std::vector<std::vector<T>>
value = {{}, {}, {}};
111 const auto & param_value = getParam<std::vector<std::vector<T>>>(param_name);
112 if (param_value.size() == 1)
113 value = {param_value[0], param_value[0], param_value[0]};
114 else if (param_value.size() == 3)
116 else if (param_value.size() != 0)
117 paramError(param_name,
"This parameter must have a size of one or three.");
const std::string _external_boundary_name
Boundary name of mesh's external boundary.
AssmOrient
Assembly orientation option.
const std::vector< std::vector< unsigned int > > _ring_intervals
Numbers of radial layers in each ring region in the three diamond sections.
enum TriPinHexAssemblyGenerator::AssmOrient _assembly_orientation
const std::vector< subdomain_id_type > _background_block_ids
Block ids of the background region.
const unsigned int _num_sectors_per_side
Mesh sector number of each polygon side.
const std::vector< std::vector< SubdomainName > > _ring_block_names
Block names of the ring regions in the three diamond sections.
const Real _ring_offset
Offset distance of the circle centers from the center of each diamond section.
const bool _preserve_volumes
Whether the radii need to be corrected for polygonization during meshing.
const PolygonSizeStyle _hexagon_size_style
Type of hexagon_size parameter.
bool isParamValid(const std::string &name) const
const std::vector< dof_id_type > _pin_id_values
Values of extra integer ID to be assigned to each of the three pin domains.
This TriPinHexAssemblyGenerator object is a base class to be inherited for polygon mesh generators...
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
const unsigned int _background_intervals
Numbers of radial intervals of the background regions.
const std::vector< std::vector< Real > > _ring_radii
Radii of concentric circles in the three diamond sections.
const std::vector< bool > _has_rings
Whether the generated mesh contains ring regions.
dof_id_type & _node_id_background_meta
MeshMetaData: maximum node id of the background region.
void paramError(const std::string ¶m, Args... args) const
const std::vector< std::vector< subdomain_id_type > > _ring_block_ids
Block ids of the ring regions in the three diamond sections.
std::unique_ptr< MeshBase > generate() override
const boundary_id_type _external_boundary_id
Boundary ID of mesh's external boundary.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string ring_radii
const std::vector< SubdomainName > _background_block_names
Block names of the background region.
const Real _side_length
Length of the side of the hexagon.
std::unique_ptr< ReplicatedMesh > buildSinglePinSection(const Real side_length, const Real ring_offset, const std::vector< Real > ring_radii, const std::vector< unsigned int > ring_intervals, const bool has_rings, const bool preserve_volumes, const unsigned int num_sectors_per_side, const unsigned int background_intervals, const std::vector< subdomain_id_type > block_ids_new, dof_id_type &node_id_background_meta)
Generates a single-pin diamond section mesh, which is one-third of the triple-pin hexagonal assembly ...
std::vector< std::vector< T > > getRingParamValues(const std::string ¶m_name) const
Helper for getting a parameter that describes rings.
A base class that contains common members for Reactor module mesh generators.
TriPinHexAssemblyGenerator(const InputParameters ¶meters)
const std::string _pin_id_name
Name of extra integer ID to be assigned to each of the three pin domains.
const InputParameters & parameters() const
PolygonSizeStyle
An enum class for style of input polygon size.
static InputParameters validParams()