MAIA bb96820c
Multiphysics at AIA
|
#include <geometry.h>
Public Member Functions | |
Geometry (const MInt solverId_, const MPI_Comm comm) | |
virtual | ~Geometry ()=default |
MInt | solverId () const |
MPI_Comm | mpiComm () const |
MInt | domainId () const |
MInt | noDomains () const |
GeometryContext & | geometryContext () |
void | getBoundingBox (MFloat *const bBox) const |
Returns the bounding box for the geometry. More... | |
const MFloat * | boundingBox () const |
void | setHaloElementOffset (MInt off) |
MInt | getHaloElementOffset () const |
MBool | isOnGeometry (const MFloat, const MFloat *, MString) |
MBool | vectorsEqual (MFloat *a, MFloat *b) |
Compares two vectors entry by entry. More... | |
MFloat | calcCircumference (MFloat **bndVs, MInt num) |
Returns the circumference of a segment. More... | |
virtual MInt | boundaryCheck (MFloat *, MFloat, MFloat *, MInt *) |
virtual MInt | getIntersectionElements (MFloat *, std::vector< MInt > &) |
virtual MInt | getIntersectionElements (MFloat *, std::vector< MInt > &, MFloat, const MFloat *const) |
virtual MInt | getLineIntersectionElementsOld1 (MFloat *, std::vector< MInt > &) |
virtual MInt | getLineIntersectionElementsOld2 (MFloat *, MInt *, std::vector< MInt > &) |
virtual MInt | getLineIntersectionElements (MFloat *, std::vector< MInt > &) |
virtual MInt | getLineIntersectionElements (MFloat *) |
virtual MBool | getClosestLineIntersectionLength (MInt, const std::vector< MInt > &, MFloat *, MFloat *) |
void | getLineIntersectingElementsBcIds (const MFloat *const line, std::set< MInt > &bcIds) |
Return the set of boundary condition ids of the elements cut by the given line. More... | |
virtual MBool | edgeTriangleIntersection (MFloat *, MFloat *, MFloat *, MFloat *, MFloat *) |
virtual MBool | edgeTriangleIntersectionLB (MFloat *, MFloat *, MFloat *, MFloat *, MFloat *) |
virtual MBool | getLineTriangleIntersectionSimple (MFloat *, MFloat *, MFloat *, MFloat *, MFloat *) |
virtual MBool | getLineTriangleIntersectionSimpleDistance (MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *) |
virtual MBool | getLineTriangleIntersection (const MFloat *const, const MFloat *const, const MFloat, const MFloat *const, const MFloat *const, const MFloat *const, MFloat *, MFloat *, MFloat *, MFloat *) |
void | getBoundingBoxMB (MFloat *const bBox) const |
virtual MInt | getIntersectionMBElements (MFloat *, std::vector< MInt > &) |
virtual MInt | getLineIntersectionMBElements (MFloat *, std::vector< MInt > &) |
virtual MInt | getLineIntersectionMBElements2 (MFloat *, MInt *, std::vector< MInt > &, MInt) |
virtual MInt | getSphereIntersectionMBElements (MFloat *, MFloat, std::vector< MInt > &) |
virtual void | MoveAllMBElementVertex (MFloat *) |
virtual void | MoveMBElementVertex (MInt, MInt, MFloat *) |
virtual void | ReplaceMBElementVertex (MInt, MInt, MFloat *) |
virtual void | UpdateMBNormalVector (MInt) |
virtual void | UpdateMBBoundingBox () |
virtual void | UpdateADT () |
virtual void | collectGlobalMemoryUsage () |
virtual void | writeSTL (const MChar *) |
virtual void | writeADTAndSTLToNetCDF (const MChar *) |
virtual void | writeSTLMB (const MChar *, MInt &, MInt *&) |
virtual void | readSTLNetCDF (const MChar *) |
virtual void | logStatistics () |
virtual MInt | GetNoElements () |
virtual MInt | GetNoSegments () |
virtual MInt * | GetBoundaryIds (MInt *noAllBcs) |
virtual MFloat ** | GetBoundaryVertices (MInt, MFloat *, MInt *, MInt, MInt *) |
virtual MBool | isEdgeAlreadyInCollection (std::vector< std::pair< MFloat *, MFloat * > >, MFloat *, MFloat *, MInt *) |
virtual MFloat | GetBoundarySize (MInt) |
virtual MFloat | GetBoundarySize (MFloat *, MInt *, MInt) |
virtual void | determineSegmentOwnership (MInt, MInt *, MInt *, MInt *, MInt *) |
virtual MFloat | getBndMaxRadius (MFloat **, MInt) |
virtual void | rebuildAdtTree () |
virtual void | calculateBoundingBox () |
virtual void | writeParallelGeometryVTK (MString) |
virtual void | addElement (MFloat *) |
virtual void | copyElement (MInt, MInt) |
virtual void | resizeCollector (MInt) |
MBool | pointIsInside (const MFloat *const coordinates) |
Determines if a point is inside of the geometry. More... | |
MBool | pointIsInside (const MFloat *const coordinates, MInt *numcutsperdir) |
Determines if a point is inside of the geometry. More... | |
MBool | pointIsInside2 (const MFloat *const coordinates, MInt *numcutsperdir=nullptr) |
Determines if a point is in or outside the geometry. More... | |
MBool | pointIsInsideMBElements (const MFloat *const coordinates, MInt *, MInt *, MInt) |
MBool | pointIsInsideMBElements2 (const MFloat *const coordinates, MInt *, MInt *, MInt) |
void | determineRayIntersectedElements (const MFloat *const coordinates, std::vector< std::vector< MInt > > *resultnodes) |
returns the geometry elements that have a cut with rays originating in the provided coordinates More... | |
MInt | noBoundaryIds () |
Public Attributes | |
std::vector< MInt > | m_segmentOffsets |
std::vector< MInt > | m_segmentOffsetsWithoutMB |
Collector< element< nDim > > * | m_elements |
element< nDim > * | elements |
GeometryAdt< nDim > * | m_adt |
Collector< element< nDim > > * | m_mbelements |
element< nDim > * | mbelements |
std::array< MFloat, 2 *nDim > | m_mbminMax {} |
MFloat | m_mbMidPnt [3] |
MBool * | m_ownSegmentId = nullptr |
std::set< MInt > | m_uniqueOriginalTriId |
MFloat | m_parGeomMemFactor |
MString | m_inOutTest |
MBool | m_parallelGeometry = false |
MBool | m_debugParGeom = false |
MString | m_parallelGeomFileName |
Protected Member Functions | |
virtual void | readSegments () |
virtual void | writeSegmentsToDX () |
Protected Attributes | |
MInt | m_noSegments |
std::array< MFloat, 2 *nDim > | m_minMax {} |
MInt | m_noElements |
MString | m_segmentBaseName |
bodyMap | m_bodyMap |
bodyIterator | m_bodyIt |
MInt | m_noMBElements |
MInt | m_noBoundaryIds |
MInt * | m_boundaryIds |
MInt * | m_allBCs = nullptr |
MInt | m_noAllBCs |
MBool | m_flowSolver |
Private Attributes | |
const MInt | m_solverId |
const MPI_Comm | m_mpiComm |
MInt | m_domainId |
MInt | m_noDomains |
GeometryContext | m_geometryContext |
MInt | m_haloElementOffset |
Friends | |
template<MInt nDim_> | |
class | GeometryAdt |
Basic implementation
Definition at line 36 of file geometry.h.
Geometry< nDim >::Geometry | ( | const MInt | solverId_, |
const MPI_Comm | comm | ||
) |
|
inlinevirtual |
Definition at line 59 of file geometry.h.
Definition at line 50 of file geometry.h.
[in] | bndVs | holds the edges of the boundary |
[in] | num | size of the input array |
Definition at line 133 of file geometry.cpp.
void Geometry< nDim >::determineRayIntersectedElements | ( | const MFloat *const | coordinates, |
std::vector< std::vector< MInt > > * | resultnodes | ||
) |
The algorithm does the following
[in] | coordinates | the original coordinates to cast rays from |
[in] | resultnodes | contains the intersected elements per direction |
Definition at line 696 of file geometry.cpp.
Definition at line 46 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 82 of file geometry.h.
|
inline |
Definition at line 48 of file geometry.h.
|
inlinevirtual |
Definition at line 146 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry3D.
Definition at line 151 of file geometry.h.
Definition at line 84 of file geometry.cpp.
Definition at line 92 of file geometry.cpp.
Definition at line 52 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 63 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 64 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 119 of file geometry.h.
void Geometry< nDim >::getLineIntersectingElementsBcIds | ( | const MFloat *const | line, |
std::set< MInt > & | bcIds | ||
) |
Definition at line 733 of file geometry.cpp.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 73 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 69 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 120 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry3D.
Definition at line 105 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry3D.
Definition at line 101 of file geometry.h.
Definition at line 144 of file geometry.h.
Definition at line 145 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry2D, and Geometry3D.
Definition at line 125 of file geometry.h.
|
inlinevirtual |
Reimplemented in Geometry3D.
Definition at line 155 of file geometry.h.
MBool Geometry< nDim >::isOnGeometry | ( | const MFloat | cellHalfLength, |
const MFloat * | coordinates, | ||
MString | gridCutTest | ||
) |
Definition at line 748 of file geometry.cpp.
Definition at line 45 of file geometry.h.
Definition at line 221 of file geometry.h.
Definition at line 47 of file geometry.h.
[in] | coordinates | the coordinates to test for inside/outside |
[out] | numcutsperdir | the number of cuts per direction |
Definition at line 158 of file geometry.cpp.
MBool Geometry< nDim >::pointIsInside | ( | const MFloat *const | coordinates, |
MInt * | numcutsperdir | ||
) |
[in] | coordinates | the coordinates to test for inside/outside |
[out] | numcutsperdir | the number of cuts per direction |
Definition at line 172 of file geometry.cpp.
MBool Geometry< nDim >::pointIsInside2 | ( | const MFloat *const | coordinates, |
MInt * | numcutsperdir = nullptr |
||
) |
[in] | coordinates | the coordinates to test for inside/outside |
[in] | the | number of cuts per direction to be retunred |
Definition at line 213 of file geometry.cpp.
MBool Geometry< nDim >::pointIsInsideMBElements | ( | const MFloat *const | coordinates, |
MInt * | bodyBndryCndIds, | ||
MInt * | setToBodiesTable, | ||
MInt | noBodiesInSet | ||
) |
Definition at line 326 of file geometry.cpp.
MBool Geometry< nDim >::pointIsInsideMBElements2 | ( | const MFloat *const | coordinates, |
MInt * | bodyBndryCndIds, | ||
MInt * | setToBodiesTable, | ||
MInt | noBodiesInSet | ||
) |
Definition at line 442 of file geometry.cpp.
Definition at line 51 of file geometry.h.
Definition at line 44 of file geometry.h.
[in] | a | vector a |
[in] | b | vector b return if both input vectors are equal |
Definition at line 114 of file geometry.cpp.
Definition at line 99 of file geometry.cpp.
Definition at line 39 of file geometry.h.
Definition at line 215 of file geometry.h.
GeometryAdt<nDim>* Geometry< nDim >::m_adt |
Definition at line 216 of file geometry.h.
Definition at line 198 of file geometry.h.
|
protected |
Definition at line 193 of file geometry.h.
Definition at line 192 of file geometry.h.
Definition at line 197 of file geometry.h.
Definition at line 229 of file geometry.h.
Definition at line 206 of file geometry.h.
Definition at line 214 of file geometry.h.
Definition at line 201 of file geometry.h.
|
private |
Definition at line 208 of file geometry.h.
Definition at line 209 of file geometry.h.
Definition at line 225 of file geometry.h.
Definition at line 217 of file geometry.h.
Definition at line 220 of file geometry.h.
Definition at line 219 of file geometry.h.
Definition at line 187 of file geometry.h.
Definition at line 205 of file geometry.h.
Definition at line 199 of file geometry.h.
Definition at line 196 of file geometry.h.
Definition at line 207 of file geometry.h.
Definition at line 189 of file geometry.h.
Definition at line 195 of file geometry.h.
Definition at line 185 of file geometry.h.
Definition at line 222 of file geometry.h.
Definition at line 228 of file geometry.h.
Definition at line 230 of file geometry.h.
Definition at line 224 of file geometry.h.
Definition at line 191 of file geometry.h.
Definition at line 212 of file geometry.h.
Definition at line 213 of file geometry.h.
Definition at line 204 of file geometry.h.
Definition at line 223 of file geometry.h.
Definition at line 218 of file geometry.h.