Wonton::Simple_Mesh_Wrapper Class Reference

A thin wrapper that implements mesh methods for Simple_Mesh. More...

#include <simple_mesh_wrapper.h>

Inheritance diagram for Wonton::Simple_Mesh_Wrapper:
Wonton::AuxMeshTopology< Simple_Mesh_Wrapper >

Public Member Functions

 Simple_Mesh_Wrapper (Simple_Mesh const &mesh, bool request_sides=true, bool request_wedges=true, bool request_corners=true)
 Constructor for the mesh wrapper. More...
 
 Simple_Mesh_Wrapper (Simple_Mesh_Wrapper const &inmesh)=delete
 Copy constructor (disabled). More...
 
Simple_Mesh_Wrapperoperator= (Simple_Mesh_Wrapper const &inmesh)=delete
 Assignment operator (disabled). More...
 
 ~Simple_Mesh_Wrapper ()=default
 Destructor. More...
 
int space_dimension () const
 The spatial dimension of the mesh. More...
 
int num_owned_cells () const
 The number of OWNED cells in the mesh. More...
 
int num_owned_faces () const
 The number of OWNED faces in the mesh. More...
 
int num_owned_nodes () const
 The number of ONWED nodes in the mesh. More...
 
int num_ghost_cells () const
 The number of GHOST cells in the mesh. More...
 
int num_ghost_faces () const
 The number of GHOST faces in the mesh. More...
 
int num_ghost_nodes () const
 The number of GHOST nodes in the mesh. More...
 
Entity_type cell_get_type (int const cellid) const
 Get the Entity_type (e.g. PARALLEL_OWNED) of a specific cell. More...
 
Entity_type node_get_type (int const nodeid) const
 Get the Entity_type (e.g. PARALLEL_OWNED) of a specific node. More...
 
Element_type cell_get_element_type (int const cellid) const
 Get the Element_type (e.g. HEX) of a specific cell. More...
 
void cell_get_faces_and_dirs (int const cellid, std::vector< int > *cfaces, std::vector< int > *cfdirs) const
 Get the list of face IDs and face normal directions for a specific cell. More...
 
void cell_get_nodes (int const cellid, std::vector< int > *nodes) const
 Get the list of node IDs for a specific cell. More...
 
void face_get_nodes (int const faceid, std::vector< int > *nodes) const
 Get the list of node IDs for a specific face. More...
 
void node_get_cells (int const nodeid, Entity_type const ptype, std::vector< int > *nodecells) const
 Get the list of IDs of all cells of a particular parallel type attached to a node. More...
 
GID_t get_global_id (int const id, Entity_kind const kind) const
 Get the global ID. NOTE: Simple_Mesh only has local IDs. More...
 
template<int D>
void node_get_coordinates (int const nodeid, Point< D > *pp) const
 Get the coordinates of a specific node as a Wonton::Point. More...
 
- Public Member Functions inherited from Wonton::AuxMeshTopology< Simple_Mesh_Wrapper >
 AuxMeshTopology (bool request_sides=true, bool request_wedges=true, bool request_corners=true)
 Constructor indicating which entities are wanted. More...
 
int num_owned_sides () const
 Number of owned sides in the mesh. More...
 
int num_owned_wedges () const
 Number of owned wedges in the mesh. More...
 
int num_owned_corners () const
 Number of owned corners in the mesh. More...
 
int num_ghost_sides () const
 Number of ghost sides in the mesh. More...
 
int num_ghost_wedges () const
 Number of ghost wedges in the mesh. More...
 
int num_ghost_corners () const
 Number of ghost corners in the mesh. More...
 
int num_entities (Entity_kind const entity, Entity_type const etype=Entity_type::ALL) const
 Number of items of given entity. More...
 
counting_iterator begin (Entity_kind const entity, Entity_type const etype=Entity_type::ALL) const
 Iterators on mesh entity - begin. More...
 
counting_iterator end (Entity_kind const entity, Entity_type const etype=Entity_type::ALL) const
 Iterator on mesh entity - end. More...
 
void cell_get_node_adj_cells (int const cellid, Entity_type const ptype, std::vector< int > *adjcells) const
 Get the list of cell IDs for all cells attached to a specific cell through its nodes. More...
 
void face_get_cells (int const faceid, Entity_type const etype, std::vector< int > *cells) const
 Get cells of given Entity_type connected to face (in no particular order) More...
 
int cell_get_face_adj_cell (int cell, int face) const
 Retrieve the cell incident to a given face of a given cell. More...
 
void cell_get_face_adj_cells (int const cellid, Entity_type const ptype, std::vector< int > *adjcells) const
 Get the list of cell IDs for all cells attached to a specific cell through its faces. More...
 
void node_get_cell_adj_nodes (int const nodeid, Entity_type const ptype, std::vector< int > *adjnodes) const
 Get the list of node IDs for all nodes attached to all cells attached to a specific node. More...
 
bool on_exterior_boundary (Entity_kind const entity, int const entity_id) const
 if entity is on exterior boundary More...
 
void cell_get_coordinates (int const cellid, std::vector< Point< D >> *pplist) const
 Coordinates of nodes of cell. More...
 
void cell_centroid (int const cellid, Point< D > *ccen) const
 Centroid of a cell. More...
 
double cell_volume (int const cellid) const
 Volume of a cell. More...
 
void face_centroid (int const faceid, Point< D > *fcen) const
 Centroid of a face. More...
 
int side_get_node (int const sideid, int const inode) const
 
int side_get_cell (int const sideid) const
 Cell of side. More...
 
int side_get_face (int const sideid) const
 Face of side. More...
 
int side_get_wedge (int const sideid, int iwedge) const
 
int side_get_opposite_side (int const sideid) const
 
void cell_get_sides (int const cellid, std::vector< int > *csides) const
 Get all the sides of a cell. More...
 
void side_get_coordinates (int const sideid, std::array< Point< 3 >, 4 > *scoords, bool posvol_order=false) const
 side coordinates in 3D More...
 
void side_get_coordinates (int const sideid, std::array< Point< 2 >, 3 > *scoords, bool posvol_order=false) const
 side coordinates in 2D More...
 
void side_get_coordinates (int const sideid, std::array< Point< 1 >, 2 > *scoords, bool posvol_order=false) const
 side coordinates in 1D More...
 
double side_volume (int const sideid) const
 Volume of a side. More...
 
int wedge_get_side (int const wedgeid) const
 Side of wedge. More...
 
int wedge_get_cell (int const wedgeid) const
 Cell of wedge. More...
 
int wedge_get_face (int const wedgeid) const
 Face of wedge. More...
 
int wedge_get_corner (int const wedgeid) const
 Corner of a wedge. More...
 
int wedge_get_node (int const wedgeid) const
 node of a wedge More...
 
int wedge_get_opposite_wedge (const int wedgeid) const
 
int wedge_get_adjacent_wedge (const int wedgeid) const
 
double wedge_volume (int const wedgeid) const
 Volume of a wedge - half its side volume. More...
 
void wedge_get_coordinates (int const wedgeid, std::array< Point< 3 >, 4 > *wcoords, bool posvol_order=false) const
 Wedge coordinates in 3D. More...
 
void wedge_get_coordinates (int const wedgeid, std::array< Point< 2 >, 3 > *wcoords, bool posvol_order=false) const
 Wedge coordinates in 2D. More...
 
void wedge_get_coordinates (int const wedgeid, std::array< Point< 1 >, 2 > *wcoords, bool posvol_order=false) const
 Wedge coordinates in 1D. More...
 
void cell_get_wedges (int const cellid, std::vector< int > *wedgeids) const
 Get all the wedges in a cell. More...
 
void node_get_wedges (int const nodeid, Entity_type const type, std::vector< int > *wedgeids) const
 Get wedges at a node. More...
 
int corner_get_node (const int cornerid) const
 Get node of corner. More...
 
int corner_get_cell (int const cornerid) const
 Get cell of corner. More...
 
void corner_get_wedges (int const cornerid, std::vector< int > *wedgeids) const
 Get wedges of a corner. More...
 
void node_get_corners (int const nodeid, Entity_type const type, std::vector< int > *cornerids) const
 Get corners connected to a node. More...
 
void cell_get_corners (int const cellid, std::vector< int > *cornerids) const
 Get corners in a cell. More...
 
int cell_get_corner_at_node (int const cellid, int const nodeid) const
 Get a cell's corner at a particular node of the cell. More...
 
double corner_volume (int const cornerid) const
 Volume of a corner. More...
 
void cell_get_facetization (int const cellid, std::vector< std::vector< int >> *facetpoints, std::vector< Point< 3 >> *points) const
 Get a triangular facetization of polyhedral cell boundary. More...
 
void dual_cell_get_facetization (int const nodeid, std::vector< std::vector< int >> *facetpoints, std::vector< Point< 3 >> *points) const
 
void decompose_cell_into_tets (int cellid, std::vector< std::array< Wonton::Point< 3 >, 4 >> *tcoords, const bool planar_hex) const
 Get the simplest possible decomposition of a 3D cell into tets. More...
 
void dual_cell_get_coordinates (int const nodeid, std::vector< Point< 2 >> *pplist) const
 2D version of coords of nodes of a dual cell More...
 
void dual_cell_get_coordinates (int const nodeid, std::vector< Point< 3 >> *pplist) const
 3D version of coords of nodes of a dual cell More...
 
void order_wedges_ccw (std::vector< int > *wedgeids) const
 Order wedges around a node in ccw manner. More...
 
bool ccw (Point< 2 > const &p1, Point< 2 > const &p2, Point< 2 > const &p3) const
 
std::vector< Point< 2 > > cellToXY (int cellID) const
 
void wedges_get_coordinates (int cellID, std::vector< std::array< Point< 3 >, 4 >> *wcoords) const
 Get coordinates of wedge in 3D. More...
 
void sides_get_coordinates (int cellID, std::vector< std::array< Point< 3 >, 4 >> *scoords) const
 Get coordinates of side in 3D. More...
 
void dual_cell_get_node_adj_cells (int const nodeid, Entity_type const ptype, std::vector< int > *adjnodes) const
 Get adjacent "dual cells" of a given "dual cell". More...
 
void dual_wedges_get_coordinates (int nodeid, std::vector< std::array< Point< 3 >, 4 >> *wcoords) const
 
void dual_cell_centroid (int nodeid, Point< D > *centroid) const
 Centroid of a dual cell. More...
 
double dual_cell_volume (int const nodeid) const
 Get the volume of dual cell by finding the corners that attach to the node. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Wonton::AuxMeshTopology< Simple_Mesh_Wrapper >
void build_aux_entities ()
 

Detailed Description

A thin wrapper that implements mesh methods for Simple_Mesh.

The methods implemented are those required elsewhere in Wonton to answer specific queries about the mesh. Simple_Mesh_Wrapper derives from the AuxMeshTopology class, which helps to build further mesh entities and connectivities (e.g. CORNERS and WEDGES) from the existant mesh entities. This uses a template pattern called the Curiously Recurring Template Pattern (CRTP) to allow the Simple_Mesh_Wrapper itself to answer queries within the AuxMeshTopology class. See https://en.m.wikipedia.org/wiki/Curiously_recurring_template_pattern

Constructor & Destructor Documentation

◆ Simple_Mesh_Wrapper() [1/2]

Wonton::Simple_Mesh_Wrapper::Simple_Mesh_Wrapper ( Simple_Mesh const &  mesh,
bool  request_sides = true,
bool  request_wedges = true,
bool  request_corners = true 
)
inlineexplicit

Constructor for the mesh wrapper.

Parameters
[in]meshThe Simple_Mesh we wish to wrap.
[in]request_sidesShould the AuxMeshTopology class build side datastructures?
[in]request_wedgesShould the AuxMeshTopology class build wedge datastructures?
[in]request_cornersShould the AuxMeshToplogy class build corner datastructures?

◆ Simple_Mesh_Wrapper() [2/2]

Wonton::Simple_Mesh_Wrapper::Simple_Mesh_Wrapper ( Simple_Mesh_Wrapper const &  inmesh)
delete

Copy constructor (disabled).

◆ ~Simple_Mesh_Wrapper()

Wonton::Simple_Mesh_Wrapper::~Simple_Mesh_Wrapper ( )
default

Destructor.

Member Function Documentation

◆ cell_get_element_type()

Element_type Wonton::Simple_Mesh_Wrapper::cell_get_element_type ( int const  cellid) const
inline

Get the Element_type (e.g. HEX) of a specific cell.

Parameters
[in]cellidThe ID of the cell.
Returns
The Element_type of this cell. NOTE: Simple_Mesh only has HEX cells.

◆ cell_get_faces_and_dirs()

void Wonton::Simple_Mesh_Wrapper::cell_get_faces_and_dirs ( int const  cellid,
std::vector< int > *  cfaces,
std::vector< int > *  cfdirs 
) const
inline

Get the list of face IDs and face normal directions for a specific cell.

Parameters
[in]cellidThe ID of the cell.
[out]cfacesThe vector of face IDs for the faces that make up cell cellid.
[out]cfdirsThe vector of face normal directions for the faces that make up cell cellid.

◆ cell_get_nodes()

void Wonton::Simple_Mesh_Wrapper::cell_get_nodes ( int const  cellid,
std::vector< int > *  nodes 
) const
inline

Get the list of node IDs for a specific cell.

Parameters
[in]cellidThe ID of the cell.
[out]nodesThe vector of node IDs for the nodes that make up cell cellid.

◆ cell_get_type()

Entity_type Wonton::Simple_Mesh_Wrapper::cell_get_type ( int const  cellid) const
inline

Get the Entity_type (e.g. PARALLEL_OWNED) of a specific cell.

Parameters
[in]cellidThe ID of the cell.
Returns
The Entity_type of this cell. NOTE: Simple_Mesh only has PARALLEL_OWNED data as it is a serial implementation

◆ face_get_nodes()

void Wonton::Simple_Mesh_Wrapper::face_get_nodes ( int const  faceid,
std::vector< int > *  nodes 
) const
inline

Get the list of node IDs for a specific face.

Parameters
[in]faceidThe ID of the face.
[out]Thelist of node IDs that make up face faceid.

◆ get_global_id()

GID_t Wonton::Simple_Mesh_Wrapper::get_global_id ( int const  id,
Entity_kind const  kind 
) const
inline

Get the global ID. NOTE: Simple_Mesh only has local IDs.

◆ node_get_cells()

void Wonton::Simple_Mesh_Wrapper::node_get_cells ( int const  nodeid,
Entity_type const  ptype,
std::vector< int > *  nodecells 
) const
inline

Get the list of IDs of all cells of a particular parallel type attached to a node.

Parameters
[in]nodeidThe ID of the node.
[in]ptypeThe Entity_type (e.g. PARALLEL_OWNED); NOTE: Simple_Mesh only contains PARALLEL_OWNED data, no ghosts.
[out]nodecellsThe list of IDs for cells of ptype attached to nodeid

◆ node_get_coordinates()

template<int D>
void Wonton::Simple_Mesh_Wrapper::node_get_coordinates ( int const  nodeid,
Point< D > *  pp 
) const
inline

Get the coordinates of a specific node as a Wonton::Point.

Template Parameters
DDimensionality – this is a specialization, as Simple_Mesh only supports 3D.
Parameters
[in]nodeidThe ID of the node.
[out]TheWonton::Point containing the coordiantes of node nodeid.

◆ node_get_type()

Entity_type Wonton::Simple_Mesh_Wrapper::node_get_type ( int const  nodeid) const
inline

Get the Entity_type (e.g. PARALLEL_OWNED) of a specific node.

Parameters
[in]nodeidThe ID of the node.
Returns
The Entity_type of this node. NOTE: Simple_Mesh only has PARALLEL_OWNED data as it is a serial implementation

◆ num_ghost_cells()

int Wonton::Simple_Mesh_Wrapper::num_ghost_cells ( ) const
inline

The number of GHOST cells in the mesh.

◆ num_ghost_faces()

int Wonton::Simple_Mesh_Wrapper::num_ghost_faces ( ) const
inline

The number of GHOST faces in the mesh.

◆ num_ghost_nodes()

int Wonton::Simple_Mesh_Wrapper::num_ghost_nodes ( ) const
inline

The number of GHOST nodes in the mesh.

◆ num_owned_cells()

int Wonton::Simple_Mesh_Wrapper::num_owned_cells ( ) const
inline

The number of OWNED cells in the mesh.

◆ num_owned_faces()

int Wonton::Simple_Mesh_Wrapper::num_owned_faces ( ) const
inline

The number of OWNED faces in the mesh.

◆ num_owned_nodes()

int Wonton::Simple_Mesh_Wrapper::num_owned_nodes ( ) const
inline

The number of ONWED nodes in the mesh.

◆ operator=()

Simple_Mesh_Wrapper& Wonton::Simple_Mesh_Wrapper::operator= ( Simple_Mesh_Wrapper const &  inmesh)
delete

Assignment operator (disabled).

◆ space_dimension()

int Wonton::Simple_Mesh_Wrapper::space_dimension ( ) const
inline

The spatial dimension of the mesh.


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