Wonton::Jali_Mesh_Wrapper Class Reference

Jali_Mesh_Wrapper implements mesh methods for Jali. More...

#include <jali_mesh_wrapper.h>

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

Public Member Functions

 Jali_Mesh_Wrapper (Jali::Mesh const &mesh, bool request_sides=true, bool request_wedges=true, bool request_corners=true)
 
 Jali_Mesh_Wrapper (Jali_Mesh_Wrapper const &inmesh)=delete
 Copy constructor (Deleted) More...
 
Jali_Mesh_Wrapperoperator= (Jali_Mesh_Wrapper const &inmesh)=delete
 Assignment operator (Deleted) More...
 
 ~Jali_Mesh_Wrapper ()
 Empty destructor. More...
 
int space_dimension () const
 Dimension of space or mesh points. More...
 
int num_owned_cells () const
 Number of owned cells in the mesh. More...
 
int num_owned_faces () const
 Number of owned faces in the mesh. More...
 
int num_owned_nodes () const
 Number of owned nodes in the mesh. More...
 
int num_ghost_cells () const
 Number of ghost cells in the mesh. More...
 
int num_ghost_faces () const
 Number of ghost faces in the mesh. More...
 
int num_ghost_nodes () const
 Number of ghost nodes in the mesh. More...
 
Wonton::Entity_type cell_get_type (int const cellid) const
 
Wonton::Entity_type node_get_type (int const nodeid) const
 
Wonton::Element_type cell_get_element_type (int const cellid) const
 
void cell_get_faces_and_dirs (int const cellid, std::vector< int > *cfaces, std::vector< int > *cfdirs) const
 Get cell faces and the directions in which they are used. More...
 
void cell_get_nodes (int cellid, std::vector< int > *nodes) const
 Get list of nodes for a cell. More...
 
void cell_get_node_adj_cells (int const cellid, Entity_type const ptype, std::vector< int > *adjcells) const
 Get node connected neighbors of cell. More...
 
void face_get_nodes (int const faceid, std::vector< int > *fnodes) const
 Get nodes of a face. More...
 
void node_get_cells (int const nodeid, Entity_type const ptype, std::vector< int > *nodecells) const
 Get cells of a node. More...
 
GID_t get_global_id (int const id, Entity_kind const kind) const
 Get global id. More...
 
template<int D>
void node_get_coordinates (int const nodeid, Point< D > *pp) const
 coords of a node More...
 
- Public Member Functions inherited from Wonton::AuxMeshTopology< Jali_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< Jali_Mesh_Wrapper >
void build_aux_entities ()
 

Detailed Description

Jali_Mesh_Wrapper implements mesh methods for Jali.

Jali_Mesh_Wrapper implements methods required for Wonton mesh queries for the Jali mesh infrastructure. It is derived from a helper class, called AuxMeshTopology that provides the side/wedge/corner functionality. The helper class should be templated on this mesh wrapper itself because it relies on the mesh wrapper to answer some queries about the basic topology through a specific interface. This uses a template pattern called Curiously Recurring Template Pattern (CRTP) which allows this kind of mutual invocation. If the mesh wrapper has the auxiliary topology already, it can choose not to be derived from the helper class. See https://en.m.wikipedia.org/wiki/Curiously_recurring_template_pattern

Constructor & Destructor Documentation

◆ Jali_Mesh_Wrapper() [1/2]

Wonton::Jali_Mesh_Wrapper::Jali_Mesh_Wrapper ( Jali::Mesh const &  mesh,
bool  request_sides = true,
bool  request_wedges = true,
bool  request_corners = true 
)
inlineexplicit

Constructor

It is possible to construct this class with all, some or none of the auxiliary entities requested (usually to save memory)

◆ Jali_Mesh_Wrapper() [2/2]

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

Copy constructor (Deleted)

◆ ~Jali_Mesh_Wrapper()

Wonton::Jali_Mesh_Wrapper::~Jali_Mesh_Wrapper ( )
inline

Empty destructor.

Member Function Documentation

◆ cell_get_element_type()

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

Get the element type of a cell - TRI, QUAD, POLYGON, TET, HEX, PRISM OR POLYHEDRON

◆ cell_get_faces_and_dirs()

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

Get cell faces and the directions in which they are used.

◆ cell_get_node_adj_cells()

void Wonton::Jali_Mesh_Wrapper::cell_get_node_adj_cells ( int const  cellid,
Entity_type const  ptype,
std::vector< int > *  adjcells 
) const
inline

Get node connected neighbors of cell.

◆ cell_get_nodes()

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

Get list of nodes for a cell.

◆ cell_get_type()

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

Get the type of the cell - PARALLEL_OWNED or PARALLEL_GHOST Assumes a 1-1 correspondence between integer values of the enum types to avoid switch statements

◆ face_get_nodes()

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

Get nodes of a face.

◆ get_global_id()

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

Get global id.

◆ node_get_cells()

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

Get cells of a node.

◆ node_get_coordinates()

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

coords of a node

◆ node_get_type()

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

Get the type of the node - PARALLEL_OWNED or PARALLEL_GHOST Assumes a 1-1 correspondence between integer values of the enum types to avoid switch statements

◆ num_ghost_cells()

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

Number of ghost cells in the mesh.

◆ num_ghost_faces()

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

Number of ghost faces in the mesh.

◆ num_ghost_nodes()

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

Number of ghost nodes in the mesh.

◆ num_owned_cells()

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

Number of owned cells in the mesh.

◆ num_owned_faces()

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

Number of owned faces in the mesh.

◆ num_owned_nodes()

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

Number of owned nodes in the mesh.

◆ operator=()

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

Assignment operator (Deleted)

◆ space_dimension()

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

Dimension of space or mesh points.


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