Zellij
All Classes Files Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Public Attributes | List of all members
UnitCell Class Reference

#include <UnitCell.h>

Public Member Functions

 UnitCell (std::shared_ptr< Ioss::Region > region)
 
 UnitCell (const UnitCell &)=delete
 
std::vector< int > categorize_nodes (bool neighbor_i, bool neighbor_j, bool all_faces=false) const
 
void generate_boundary_faces (unsigned int which_faces)
 
void categorize_z_nodes (std::vector< int > &categorized_nodes)
 Used by generate_boundary_faces() to categorize nodes on the +/- Z faces of unit cell.
 

Public Attributes

std::shared_ptr< Ioss::Region > m_region {nullptr}
 
std::array< GeneratedSideBlock, 6 > boundary_blocks {}
 
std::vector< int64_t > min_I_face {}
 
std::vector< int64_t > max_I_face {}
 
std::vector< int64_t > min_J_face {}
 
std::vector< int64_t > max_J_face {}
 
std::pair< double, double > minmax_x {}
 
std::pair< double, double > minmax_y {}
 
size_t cell_II {}
 
size_t cell_JJ {}
 
size_t cell_KK {}
 

Constructor & Destructor Documentation

◆ UnitCell() [1/2]

UnitCell::UnitCell ( std::shared_ptr< Ioss::Region >  region)
explicit

◆ UnitCell() [2/2]

UnitCell::UnitCell ( const UnitCell )
delete

Member Function Documentation

◆ categorize_nodes()

std::vector< int > UnitCell::categorize_nodes ( bool  neighbor_i,
bool  neighbor_j,
bool  all_faces = false 
) const

Create a vector of node_count length which has the following values:

  • 0: Node that is not shared with any neighbors.
  • 1: Node on min_I face
  • 2: Node on min_J face
  • 3: Node on min_I-min_J line If all_faces is true, then also categorize the max_I (4) and max_J (8) faces and don't consider neighbors (want all boundaries marked).

◆ categorize_z_nodes()

void UnitCell::categorize_z_nodes ( std::vector< int > &  categorized_nodes)

Used by generate_boundary_faces() to categorize nodes on the +/- Z faces of unit cell.

◆ generate_boundary_faces()

void UnitCell::generate_boundary_faces ( unsigned int  which_faces)

Member Data Documentation

◆ boundary_blocks

std::array<GeneratedSideBlock, 6> UnitCell::boundary_blocks {}

◆ cell_II

size_t UnitCell::cell_II {}

The outer boundary of a UnitCell has a structured-configuration of the boundary faces on the non-K faces. The cell_II, cell_JJ, and cell_KK variables give the dimensions of this structured face mesh for the min_I, max_I, min_J, and max_J faces. Note that the min_K and max_K faces are NOT structured, but they will have cell_II and cell_JJ nodes on the boundary of the faces.

◆ cell_JJ

size_t UnitCell::cell_JJ {}

The outer boundary of a UnitCell has a structured-configuration of the boundary faces on the non-K faces. The cell_II, cell_JJ, and cell_KK variables give the dimensions of this structured face mesh for the min_I, max_I, min_J, and max_J faces. Note that the min_K and max_K faces are NOT structured, but they will have cell_II and cell_JJ nodes on the boundary of the faces.

◆ cell_KK

size_t UnitCell::cell_KK {}

The outer boundary of a UnitCell has a structured-configuration of the boundary faces on the non-K faces. The cell_II, cell_JJ, and cell_KK variables give the dimensions of this structured face mesh for the min_I, max_I, min_J, and max_J faces. Note that the min_K and max_K faces are NOT structured, but they will have cell_II and cell_JJ nodes on the boundary of the faces.

◆ m_region

std::shared_ptr<Ioss::Region> UnitCell::m_region {nullptr}

◆ max_I_face

std::vector<int64_t> UnitCell::max_I_face {}

The local node ids of the nodes that are on each face of this unit cell. The I/J face nodes are in a structured configuration and these vectors are sorted such that the min_I_face and max_I_face nodes are at the same "parametric" location. In other words, the nodes in the max_I_face of one unit cell will line up with the nodes in the min_I_face of the neighboring cell. They are also ordered such that the first cell_KK nodes in the min_I_face and min_J_face lists should be the same and are the nodes at the intersection of those two faces.

◆ max_J_face

std::vector<int64_t> UnitCell::max_J_face {}

The local node ids of the nodes that are on each face of this unit cell. The I/J face nodes are in a structured configuration and these vectors are sorted such that the min_I_face and max_I_face nodes are at the same "parametric" location. In other words, the nodes in the max_I_face of one unit cell will line up with the nodes in the min_I_face of the neighboring cell. They are also ordered such that the first cell_KK nodes in the min_I_face and min_J_face lists should be the same and are the nodes at the intersection of those two faces.

◆ min_I_face

std::vector<int64_t> UnitCell::min_I_face {}

The local node ids of the nodes that are on each face of this unit cell. The I/J face nodes are in a structured configuration and these vectors are sorted such that the min_I_face and max_I_face nodes are at the same "parametric" location. In other words, the nodes in the max_I_face of one unit cell will line up with the nodes in the min_I_face of the neighboring cell. They are also ordered such that the first cell_KK nodes in the min_I_face and min_J_face lists should be the same and are the nodes at the intersection of those two faces.

◆ min_J_face

std::vector<int64_t> UnitCell::min_J_face {}

The local node ids of the nodes that are on each face of this unit cell. The I/J face nodes are in a structured configuration and these vectors are sorted such that the min_I_face and max_I_face nodes are at the same "parametric" location. In other words, the nodes in the max_I_face of one unit cell will line up with the nodes in the min_I_face of the neighboring cell. They are also ordered such that the first cell_KK nodes in the min_I_face and min_J_face lists should be the same and are the nodes at the intersection of those two faces.

◆ minmax_x

std::pair<double, double> UnitCell::minmax_x {}

A pair containing the minimum and maximum coordinate extent in the x and y directions.

◆ minmax_y

std::pair<double, double> UnitCell::minmax_y {}

A pair containing the minimum and maximum coordinate extent in the x and y directions.


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