Cardinal
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
HexagonalSubchannelMesh Class Reference

#include <HexagonalSubchannelMesh.h>

Inheritance diagram for HexagonalSubchannelMesh:
[legend]

Public Member Functions

 HexagonalSubchannelMesh (const InputParameters &parameters)
 
virtual std::unique_ptr< MooseMesh > safeClone () const override
 
virtual void buildMesh () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void getInteriorPoints ()
 
void getEdgePoints ()
 
void getCornerPoints ()
 
void addPrismElem (const Point &pt1, const Point &pt2, const Point &pt3, const Real &zmin, const Real &zmax, const SubdomainID &id)
 
void addTriElem (const Point &pt1, const Point &pt2, const Point &pt3, const Real &z, const SubdomainID &id)
 
const Point rotatePoint (const Point &p, const Real &theta) const
 

Protected Attributes

const unsigned int & _theta_res
 Number of nodes on each pin's quarter circumference. More...
 
const unsigned int & _gap_res
 Number of nodes on each gap. More...
 
const unsigned int & _n_axial
 Number of axial cells to build. More...
 
const Real & _height
 Height of assembly. More...
 
const SubdomainID & _interior_id
 Subdomain ID to set for the interior channels. More...
 
const SubdomainID & _edge_id
 Subdomain ID to set for the edge channels. More...
 
const SubdomainID & _corner_id
 Subdomain ID to set for the corner channels. More...
 
const bool & _volume_mesh
 
std::vector< Point > _interior_points
 Node positions for a single upward-facing interior subchannel with a centroid at (0, 0, 0) More...
 
std::vector< Point > _edge_points
 Node positions for a single upward-facing edge subchannel with a centroid at (0, 0, 0) More...
 
std::vector< Point > _corner_points
 Node positions for a single, top-right, corner subchannel with a centroid at (0, 0, 0) More...
 
int _elems_per_interior
 Number of elements per interior channel. More...
 
int _elems_per_edge
 Number of elements per edge channel. More...
 
int _elems_per_corner
 Number of elements per corner channel. More...
 
const Real & _bundle_pitch
 Bundle pitch (distance across bundle measured flat-to-flat on the inside of the duct) More...
 
const Real & _pin_pitch
 Pin pitch. More...
 
const Real & _pin_diameter
 Pin diameter. More...
 
const unsigned int & _n_rings
 Total number of rings of pins. More...
 
const unsigned int _axis
 Vertical axis of the bundle along which the pins are aligned. More...
 
HexagonalLatticeUtils _hex_lattice
 Utility providing hexagonal lattice geometry calculations. More...
 
const std::vector< Point > & _pin_centers
 Coordinates for the pin centers. More...
 
int _elem_id_counter
 Element ID. More...
 
int _node_id_counter
 Node ID. More...
 

Static Protected Attributes

static const Real SIN30 = 0.5
 
static const Real COS30 = std::sqrt(3.0) / 2.0
 
static const unsigned int NODES_PER_PRISM = 6
 Number of nodes per prism6 element. More...
 
static const unsigned int NUM_SIDES = 6
 Number of sides in a hexagon. More...
 

Detailed Description

Mesh of a triangular lattice of pins enclosed in a hexagonal duct; this mesh should ONLY be used for visualization purposes - there is no node connectivity, so you cannot solve any continuous finite element problems on this mesh (nor it is recommended because the element creation pays no attention to normal physics requirements/recommendation, like resolving near boundaries or using near-equal element sizes).

Constructor & Destructor Documentation

◆ HexagonalSubchannelMesh()

HexagonalSubchannelMesh::HexagonalSubchannelMesh ( const InputParameters &  parameters)

Member Function Documentation

◆ addPrismElem()

void HexagonalSubchannelMesh::addPrismElem ( const Point &  pt1,
const Point &  pt2,
const Point &  pt3,
const Real &  zmin,
const Real &  zmax,
const SubdomainID &  id 
)
protected

Add a prism6 element for given points in triangle and between two axial planes

Parameters
[in]pt1point in triangle
[in]pt2point in triangle
[in]pt3point in triangle
[in]zminminimum z-coordinate for layer
[in]zmaxmaximum z-coordinate for layer
[in]idsubdomain ID

◆ addTriElem()

void HexagonalSubchannelMesh::addTriElem ( const Point &  pt1,
const Point &  pt2,
const Point &  pt3,
const Real &  z,
const SubdomainID &  id 
)
protected

Add a tri3 element for given points in triangle on a given axial plane

Parameters
[in]pt1point in triangle
[in]pt2point in triangle
[in]pt3point in triangle
[in]zz-coordinate for layer
[in]idsubdomain ID

◆ buildMesh()

void HexagonalSubchannelMesh::buildMesh ( )
overridevirtual

◆ getCornerPoints()

void HexagonalSubchannelMesh::getCornerPoints ( )
protected

Get the node positions for a single, upper-right, corner subchannel with a centroid at (0, 0, 0)

◆ getEdgePoints()

void HexagonalSubchannelMesh::getEdgePoints ( )
protected

Get the node positions for a single, downwards-facing, edge subchannel with a centroid at (0, 0, 0)

◆ getInteriorPoints()

void HexagonalSubchannelMesh::getInteriorPoints ( )
protected

Get the node positions for a single, upwards-facing, interior subchannel with a centroid at (0, 0, 0)

◆ rotatePoint()

const Point HexagonalSubchannelMeshBase::rotatePoint ( const Point &  p,
const Real &  theta 
) const
protectedinherited

Rotate a point counterclockwise about the z axis

Parameters
[in]ppoint
[in]thetaangle (radians) by which to rotate
Returns
rotated point

◆ safeClone()

std::unique_ptr< MooseMesh > HexagonalSubchannelMesh::safeClone ( ) const
overridevirtual

◆ validParams()

InputParameters HexagonalSubchannelMesh::validParams ( )
static

Member Data Documentation

◆ _axis

const unsigned int HexagonalSubchannelMeshBase::_axis
protectedinherited

Vertical axis of the bundle along which the pins are aligned.

◆ _bundle_pitch

const Real& HexagonalSubchannelMeshBase::_bundle_pitch
protectedinherited

Bundle pitch (distance across bundle measured flat-to-flat on the inside of the duct)

◆ _corner_id

const SubdomainID& HexagonalSubchannelMesh::_corner_id
protected

Subdomain ID to set for the corner channels.

◆ _corner_points

std::vector<Point> HexagonalSubchannelMesh::_corner_points
protected

Node positions for a single, top-right, corner subchannel with a centroid at (0, 0, 0)

◆ _edge_id

const SubdomainID& HexagonalSubchannelMesh::_edge_id
protected

Subdomain ID to set for the edge channels.

◆ _edge_points

std::vector<Point> HexagonalSubchannelMesh::_edge_points
protected

Node positions for a single upward-facing edge subchannel with a centroid at (0, 0, 0)

◆ _elem_id_counter

int HexagonalSubchannelMeshBase::_elem_id_counter
protectedinherited

Element ID.

◆ _elems_per_corner

int HexagonalSubchannelMesh::_elems_per_corner
protected

Number of elements per corner channel.

◆ _elems_per_edge

int HexagonalSubchannelMesh::_elems_per_edge
protected

Number of elements per edge channel.

◆ _elems_per_interior

int HexagonalSubchannelMesh::_elems_per_interior
protected

Number of elements per interior channel.

◆ _gap_res

const unsigned int& HexagonalSubchannelMesh::_gap_res
protected

Number of nodes on each gap.

◆ _height

const Real& HexagonalSubchannelMesh::_height
protected

Height of assembly.

◆ _hex_lattice

HexagonalLatticeUtils HexagonalSubchannelMeshBase::_hex_lattice
protectedinherited

Utility providing hexagonal lattice geometry calculations.

◆ _interior_id

const SubdomainID& HexagonalSubchannelMesh::_interior_id
protected

Subdomain ID to set for the interior channels.

◆ _interior_points

std::vector<Point> HexagonalSubchannelMesh::_interior_points
protected

Node positions for a single upward-facing interior subchannel with a centroid at (0, 0, 0)

◆ _n_axial

const unsigned int& HexagonalSubchannelMesh::_n_axial
protected

Number of axial cells to build.

◆ _n_rings

const unsigned int& HexagonalSubchannelMeshBase::_n_rings
protectedinherited

Total number of rings of pins.

◆ _node_id_counter

int HexagonalSubchannelMeshBase::_node_id_counter
protectedinherited

Node ID.

◆ _pin_centers

const std::vector<Point>& HexagonalSubchannelMeshBase::_pin_centers
protectedinherited

Coordinates for the pin centers.

◆ _pin_diameter

const Real& HexagonalSubchannelMeshBase::_pin_diameter
protectedinherited

Pin diameter.

◆ _pin_pitch

const Real& HexagonalSubchannelMeshBase::_pin_pitch
protectedinherited

Pin pitch.

◆ _theta_res

const unsigned int& HexagonalSubchannelMesh::_theta_res
protected

Number of nodes on each pin's quarter circumference.

◆ _volume_mesh

const bool& HexagonalSubchannelMesh::_volume_mesh
protected

Whether to create a volume mesh (such that the volumes of the subchannels are represented) or a surface mesh (which will create a 2-D mesh on n_axial + 1 planes through the assembly).

◆ COS30

const Real HexagonalSubchannelMeshBase::COS30 = std::sqrt(3.0) / 2.0
staticprotectedinherited

◆ NODES_PER_PRISM

const unsigned int HexagonalSubchannelMeshBase::NODES_PER_PRISM = 6
staticprotectedinherited

Number of nodes per prism6 element.

◆ NUM_SIDES

const unsigned int HexagonalSubchannelMeshBase::NUM_SIDES = 6
staticprotectedinherited

Number of sides in a hexagon.

◆ SIN30

const Real HexagonalSubchannelMeshBase::SIN30 = 0.5
staticprotectedinherited

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