WARPXM v1.10.0
|
#include <wmudggeometry.h>
Public Types | |
typedef std::map< std::string, std::vector< int > > | boundaryFacesMap_t |
typedef std::map< std::string, std::vector< std::unique_ptr< face_t > > > | bcFaceMap_t |
Public Member Functions | |
WmUDGGeometry (const WmUnstructuredPatch &patch, const std::vector< std::string > &boundaryNames, const WmBasisArraySet &dgBasisSet, const bool useLimiter=false) | |
~WmUDGGeometry () | |
const boundaryFacesMap_t & | getBoundaryFaces () const |
int | getNumFaces () const |
int | getNumFaces_Interior () const |
int | getNumFaces_Boundary () const |
int | getNumFaces_Shared () const |
int | getNumElements () const |
int | getNumElements_Inclusive () const |
int | getNumElements_Interpatch_Elements_Group () const |
const real * | getGeometryArray_Face () const |
const real * | getGeometryArray_Element () const |
the "element geometry array" | |
const real * | getGeometryArray_Jacobian () const |
const real * | getGeometryArray_Limiter () const |
int | getGeometryArray_Face_BlockSize () const |
int | getGeometryArray_Element_BlockSize () const |
the block size of the element geometry array | |
int | getGeometryArray_Jacobian_BlockSize () const |
int | getGeometryArray_Limiter_BlockSize () const |
int | getGeometryArray_Face_Size () const |
int | getGeometryArray_Element_Size () const |
int | getGeometryArray_Jacobian_Size () const |
int | getGeometryArray_Limiter_Size () const |
const int * | getReconstructionArray_StencilIndexes () const |
const real * | getReconstructionArray_Weights () const |
const real * | getReconstructionArray_Reconstruction () const |
const real * | getReconstructionArray_Correction () const |
int | getReconstructionArray_StencilIndexes_BlockSize () const |
int | getReconstructionArray_Weights_BlockSize () const |
int | getReconstructionArray_Reconstruction_BlockSize () const |
int | getReconstructionArray_Correction_BlockSize () const |
int | getReconstructionArray_StencilIndexes_Size () const |
int | getReconstructionArray_Weights_Size () const |
int | getReconstructionArray_Reconstruction_Size () const |
int | getReconstructionArray_Correction_Size () const |
const int * | getFaceNodeIndexes_Interconnected () const |
const int * | getFaceElementIndexes_Interconnected () const |
const int * | getFaceElementIndexes_InterconnectedNoMinusOne () const |
const int * | getFaceNodeIndexes_Composite () const |
const int * | getGlobalFaceNodeIndexes_Composite () const |
int | getFaceElementIndexes_Interconnected_BlockSize () const |
Returns block size of interconnectedFaceElementIndexes. | |
int | getFaceNodeIndexes_Interconnected_BlockSize () const |
int | getFaceNodeIndexes_Composite_BlockSize () const |
int | getFaceElementIndexes_Interconnected_Size () const |
int | getFaceNodeIndexes_Interconnected_Size () const |
int | getFaceNodeIndexes_Composite_Size () const |
int | getElementIndexes_NumInLayers (int lowerLayer, int upperLayer) const |
int | getFaceIndexes_NumInLayers (int lowerLayer, int upperLayer) const |
int | getElementIndexes_StartIndexForLayer (int layer) const |
int | getFaceIndexes_StartIndexForLayer (int layer) const |
bool | hasBoundary (const std::string &boundary) const |
int | isBoundaryFace (int faceIndex) const |
int | isPatchBoundaryFace (int faceIndex) const |
const real * | getCommonNormal (int faceIndex) const |
const WmUnstructuredPatch & | getPatch () const |
const WmUnstructuredGeometry * | get_unstructured_geometry () const |
const face_t & | get_face (const int global_face_index) const |
int | get_global_face_from_element_local_face (int global_element_index, int local_face_index) const |
void | printFaceInformation (int global_face_index) const |
void | printElementInformation (int global_element_index) |
int | getNumL1Elements () const |
Grab number of layer 1 elements. | |
void | getElementGlobalNodePositionsAndIndexes (const int element_index, int *global_node_indexes, real *global_node_positions) const |
Grab the global node positions and indexes for an element. | |
int | getGlobalNodeIndexAtPosition (const real *global_node_positions, const int *global_node_indexes, const real position[3]) const |
Find the global node index of a position given global_node_indexes and global_node_positions of an element. | |
void | printDGNeighborhood (std::stringstream &ss) const |
Print _dg_neighborhood into a stringstream. | |
void | printElementwiseFaceInsideOutsideNodes (std::stringstream &ss) const |
Print _inside_outside_global_node_indexes into a stringstream. | |
const int * | getDGNeighborhood () const |
Get raw pointer to _dg_neighborhood. | |
const int * | getLocalDGNeighborhood (const int element_index) const |
Get raw pointer to _dg_neighborhood at a particular element index. | |
int | getNeighborLocalFaceIndex (const int element_index, const int local_face_index) const |
Get neighboring element local face index at a particular local face index of an element index Returns 0 when unstructured geometry returns -1. | |
int | getFaceOrientation (const int element_index, const int local_face_index) const |
Get the orientation at a particular local face index of an element index Returns 0 when unstructured geometry returns -1. | |
const int * | getFaceNodeGlobalInsideOutsideIndexes (const int element_index, const int local_face_index, const int local_node_index) const |
Get raw pointer to _inside_outside_global_node_indexes at a particular element index, local face index, and local node index The 0 element of the returned pointer should be the inside node index The 1 element of the returned pointer should be the outside node index. | |
void | printCompositeFaceNodeIndexesArray (std::stringstream &ss) const |
std::shared_ptr< WxRange > | ownElementRange () const |
The range of elements belonging to this patch. | |
template<typename Func > | |
void | forEachNode (Func f) |
Iterate over every node in this geometry and call the provided function. | |
Protected Attributes | |
const WmUnstructuredPatch & | _patch |
const WmUnstructuredGeometry * | _uG |
const WmBasisArraySet & | _basisSet |
std::vector< std::string > | _boundaryNames |
boundaryFacesMap_t | _boundaryFaceIndexes |
std::vector< std::shared_ptr< face_t > > | _interior_faces |
std::vector< std::shared_ptr< face_t > > | _all_faces |
bcFaceMap_t | _boundary_faces |
bcFaceMap_t | _shared_faces |
int | _numFaces |
int | _numBoundaryFaces |
int | _numSharedFaces |
int | _numInteriorFaces |
int | _numElements_PEG |
int | _numElements_PIPEG |
int | _numElements_PIPBCEG |
int | _faceGeometryBlockSize |
int | _elementGeometryBlockSize |
int | _jacobianGeometryBlockSize |
int | _limiterGeometryBlockSize |
std::vector< real > | _faceGeometry |
std::vector< real > | _elementGeometry |
std::vector< real > | _jacobianGeometry |
std::vector< real > | _limiterGeometry |
int | _reconstruction_stencilIndexes_blockSize |
int | _reconstruction_w_blockSize |
int | _reconstruction_lInverse_blockSize |
int | _reconstruction_b_blockSize |
std::vector< int > | _reconstruction_stencilIndexes |
std::vector< real > | _reconstruction_w |
std::vector< real > | _reconstruction_lInverse |
std::vector< real > | _reconstruction_b |
int | _interconnectedFaceNodeIndexesBlockSize |
int | _interconnectedFaceElementIndexesBlockSize |
int | _compositeFaceNodeIndexesBlockSize |
std::vector< int > | _numFacesPerLayer |
std::vector< int > | _interconnectedFaceNodeIndexes |
std::vector< int > | _interconnectedFaceElementIndexes |
std::vector< int > | _interconnectedFaceElementIndexesNoMinusOne |
std::vector< int > | _compositeFaceNodeIndexes |
std::vector< int > | _compositeGlobalFaceNodeIndexes |
std::vector< int > | _isBoundaryFaceArray |
std::vector< int > | _isPatchBoundaryFaceArray |
std::vector< real > | _commonNormals |
std::vector< real > | _globalFaceNumbersOfGlobalElementNumbers |
std::vector< int > | _l1_elements |
std::vector< real > | _numerical_flux_multipliers |
std::vector< int > | _dg_neighborhood |
Neighborhood of elements [_numElements X _numFacesPerElement] However ghost elements are given a number (not -1) | |
std::vector< int > | _dg_neighbor_local_face |
Local faces of neighboring elements written by face [_numElements X _numFacesPerElement] However ghost elements are given 0 (not -1) | |
std::vector< int > | _dg_orientations |
Get orientations for each elements by face [_numElements X _numFacesPerElement] However ghost elements are given 0 (not -1) | |
std::vector< int > | _inside_outside_global_node_indexes |
This gives the element and facewise inside and outside global node indexes [_numElements_PEG X numFacesPerElement X numFaceNodes * 2] That is for each element for each face for each face node there is an "inside" and "outside" global node index from the perspective of the current ("inside") element. | |
typedef std::map<std::string, std::vector<std::unique_ptr<face_t> > > WmUDGGeometry::bcFaceMap_t |
typedef std::map<std::string, std::vector<int> > WmUDGGeometry::boundaryFacesMap_t |
WmUDGGeometry::WmUDGGeometry | ( | const WmUnstructuredPatch & | patch, |
const std::vector< std::string > & | boundaryNames, | ||
const WmBasisArraySet & | dgBasisSet, | ||
const bool | useLimiter = false |
||
) |
WmUDGGeometry::~WmUDGGeometry | ( | ) |
|
inline |
Iterate over every node in this geometry and call the provided function.
For every node in the geometry, this will call f
with the following arguments:
ndims
holding the x, y, z coordinates of the node.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get raw pointer to _dg_neighborhood.
void WmUDGGeometry::getElementGlobalNodePositionsAndIndexes | ( | const int | element_index, |
int * | global_node_indexes, | ||
real * | global_node_positions | ||
) | const |
Grab the global node positions and indexes for an element.
element_index | |
global_node_indexes | set by this function |
global_node_positions | set by this function |
int WmUDGGeometry::getElementIndexes_NumInLayers | ( | int | lowerLayer, |
int | upperLayer | ||
) | const |
int WmUDGGeometry::getElementIndexes_StartIndexForLayer | ( | int | layer | ) | const |
|
inline |
|
inline |
Returns block size of interconnectedFaceElementIndexes.
(the array that gives the inside and outside element indexes for each face) -> should be 2
|
inline |
|
inline |
int WmUDGGeometry::getFaceIndexes_NumInLayers | ( | int | lowerLayer, |
int | upperLayer | ||
) | const |
int WmUDGGeometry::getFaceIndexes_StartIndexForLayer | ( | int | layer | ) | const |
|
inline |
Get raw pointer to _inside_outside_global_node_indexes at a particular element index, local face index, and local node index The 0 element of the returned pointer should be the inside node index The 1 element of the returned pointer should be the outside node index.
element_index | global element index |
local_face_index | local face index |
local_node_index | face node |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get the orientation at a particular local face index of an element index Returns 0 when unstructured geometry returns -1.
element_index | |
local_face_index | (or element index) |
|
inline |
the "element geometry array"
This array contains the x, y, z positions of every node in the geometry. It has dimensions (ndims, nodes_per_elt+1, num_elements), and is laid out in memory accordingly.
The quantity ndims * (nodes_per_elt+1) is calculated and available in getGeometryArray_Element_BlockSize
, and is the stride to use for accessing geometry on an element-by-element pattern.
Within each element block, the first ndims
entries are the first ndims
values of (dx, 0, 0). dx
is the element width.
The following (nodes_per_elt * ndims)
entries in the element block are the positions of each node in the block, laid out with the physical dimension in the innermost array index, then the node.
|
inline |
the block size of the element geometry array
Equal to (nodes_per_elt + 1) * ndims
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
int WmUDGGeometry::getGlobalNodeIndexAtPosition | ( | const real * | global_node_positions, |
const int * | global_node_indexes, | ||
const real | position[3] | ||
) | const |
Find the global node index of a position given global_node_indexes and global_node_positions of an element.
global_node_positions | |
global_node_indexes | |
position |
|
inline |
Get raw pointer to _dg_neighborhood at a particular element index.
element_index |
|
inline |
Get neighboring element local face index at a particular local face index of an element index Returns 0 when unstructured geometry returns -1.
element_index | |
local_face_index | (or element index) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Grab number of layer 1 elements.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
bool WmUDGGeometry::hasBoundary | ( | const std::string & | boundary | ) | const |
|
inline |
|
inline |
std::shared_ptr< WxRange > WmUDGGeometry::ownElementRange | ( | ) | const |
The range of elements belonging to this patch.
void WmUDGGeometry::printCompositeFaceNodeIndexesArray | ( | std::stringstream & | ss | ) | const |
void WmUDGGeometry::printDGNeighborhood | ( | std::stringstream & | ss | ) | const |
Print _dg_neighborhood into a stringstream.
ss | stringstream reference object |
|
inline |
void WmUDGGeometry::printElementwiseFaceInsideOutsideNodes | ( | std::stringstream & | ss | ) | const |
Print _inside_outside_global_node_indexes into a stringstream.
ss | stringstream reference object |
|
inline |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Local faces of neighboring elements written by face [_numElements X _numFacesPerElement] However ghost elements are given 0 (not -1)
|
protected |
Neighborhood of elements [_numElements X _numFacesPerElement] However ghost elements are given a number (not -1)
|
protected |
Get orientations for each elements by face [_numElements X _numFacesPerElement] However ghost elements are given 0 (not -1)
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
This gives the element and facewise inside and outside global node indexes [_numElements_PEG X numFacesPerElement X numFaceNodes * 2] That is for each element for each face for each face node there is an "inside" and "outside" global node index from the perspective of the current ("inside") element.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |