MAIA bb96820c
Multiphysics at AIA
|
#include <geometry3d.h>
Public Member Functions | |
Geometry3D (const MInt solverId_, const MPI_Comm comm) | |
Geometry3D (const MInt solverId_, const MString &filename, const MPI_Comm comm) | |
~Geometry3D () | |
MInt | getIntersectionElements (MFloat *targetRegion, std::vector< MInt > &nodeList, MFloat cellHalfLength, const MFloat *const cell_coords) override |
Determines all elements that are inside or intersect the target region with the separating axis theorem (SAT). More... | |
MInt | getIntersectionElements (MFloat *targetRegion, std::vector< MInt > &nodeList) override |
Determines all elements that are inside or intersect the target region. More... | |
virtual MInt | getIntersectionElementsTetraeder (MFloat *targetRegion, std::vector< MInt > &nodeList) |
Determines all elements that are inside or intersect the target region. More... | |
MInt | getLineIntersectionElementsOld2 (MFloat *targetRegion, MInt *spaceDirection, std::vector< MInt > &nodeList) override |
Returns the ids of all elements, cut by a orthogonal line (or rectangular region) More... | |
MInt | getLineIntersectionElements (MFloat *targetRegion, std::vector< MInt > &nodeList) override |
Returns the ids of all elements, cut by a ray by using the perp-dot operator. More... | |
MInt | getLineIntersectionElements (MFloat *targetRegion) override |
MBool | getClosestLineIntersectionLength (MInt bndCndId, const std::vector< MInt > &nodeList, MFloat *targetRegion, MFloat *dist) override |
MBool | edgeTriangleIntersection (MFloat *trianglePoint1, MFloat *trianglePoint2, MFloat *trianglePoint3, MFloat *edgePoint1, MFloat *edgePoint2) override |
Determine intersection between an edge and a triangle. More... | |
MBool | edgeTriangleIntersectionLB (MFloat *trianglePoint1, MFloat *trianglePoint2, MFloat *trianglePoint3, MFloat *edgePoint1, MFloat *edgePoint2) override |
Determine intersection between an edge and a triangle. More... | |
MBool | getLineTriangleIntersectionSimple (MFloat *p1, MFloat *p2, MFloat *v1, MFloat *v2, MFloat *v3) override |
This function determines if a line crosses a triangle. More... | |
MBool | getLineTriangleIntersectionSimpleDistance (MFloat *p1, MFloat *p2, MFloat *v1, MFloat *v2, MFloat *v3, MFloat *dist) override |
This function determines if a line crosses a triangle. More... | |
MBool | getLineTriangleIntersection (const MFloat *const p1, const MFloat *const p2, const MFloat radius, const MFloat *const v1, const MFloat *const v2, const MFloat *const v3, MFloat *intersection, MFloat *normal, MFloat *lambda2, MFloat *dist) override |
This function determines if a line crosses a triangle. More... | |
MInt | getIntersectionMBElements (MFloat *targetRegion, std::vector< MInt > &nodeList) override |
MInt | getLineIntersectionMBElements (MFloat *targetRegion, std::vector< MInt > &nodeList) override |
MInt | getLineIntersectionMBElements2 (MFloat *targetRegion, MInt *spaceDirection, std::vector< MInt > &nodeList, MInt bcIc) override |
MInt | getSphereIntersectionMBElements (MFloat *P, MFloat radius, std::vector< MInt > &nodeList) override |
void | MoveAllMBElementVertex (MFloat *dx) override |
void | MoveMBElementVertex (MInt e, MInt v, MFloat *dx) override |
void | ReplaceMBElementVertex (MInt e, MInt v, MFloat *np) override |
void | UpdateMBNormalVector (MInt e) override |
void | UpdateMBBoundingBox () override |
void | UpdateADT () override |
void | writeSTL (const char *fileName) override |
void | writeSTLMB (const char *fileName, MInt &noNodes, MInt *&nodeList) override |
void | writeADTAndSTLToNetCDF (const char *fileName) override |
void | readSTLNetCDF (const char *fileName) override |
void | logStatistics () override |
MFloat ** | GetBoundaryVertices (MInt segmentId, MFloat *tri_vx, MInt *keepOffsets, MInt size, MInt *num) override |
This function gets all boundary vertices of an element<3> in a circular order. More... | |
virtual std::vector< std::pair< MFloat *, MFloat * > > | GetUniqueSegmentEdgesParGeom (MFloat *tri_vx, MInt *keepOffsets, MInt size) |
Returns unique edges of a given set segment id for parallel geometry. More... | |
virtual std::vector< std::pair< MFloat *, MFloat * > > | GetUniqueSegmentEdges (MInt segmentId) |
Returns unique edges of a given set segment id. More... | |
MBool | isEdgeAlreadyInCollection (std::vector< std::pair< MFloat *, MFloat * > > tmp_edges, MFloat *p1, MFloat *p2, MInt *pos) override |
Checks if an edge given by two points is in a vector. More... | |
MFloat | GetBoundarySize (MInt segmentId) override |
Returns the area of a segment. More... | |
MFloat | GetBoundarySize (MFloat *vertices, MInt *keepOffset, MInt size) override |
Returns the area of a segment. More... | |
void | determineSegmentOwnership (MInt segmentId, MInt *own, MInt *sumowners, MInt *firstOwner, MInt *owners) override |
Determines the ownership of a segment. More... | |
MFloat | getBndMaxRadius (MFloat **vertices, MInt num) override |
This function gets the maximal radius for a boundary segment. More... | |
Public Member Functions inherited from Geometry< 3 > | |
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 () |
Protected Member Functions | |
void | readSegments () override |
reads the STL segments from file More... | |
virtual void | correctVertexCoordinates () |
virtual void | swap4BytesToBE (char *buf) |
swaps 4 bytes from little to big endian More... | |
virtual MInt | is_big_endian () |
determines the CPU type big or little endian More... | |
virtual Collector< element< 3 > > * | readSegmentsSerial () |
reads the segments in serial More... | |
virtual Collector< element< 3 > > * | readSegmentsParallel () |
virtual void | countSegmentTrianglesASCII (MString fileName, MInt *noElements) |
counts the number of triangles in an ASCII STL file More... | |
virtual void | countSegmentTrianglesBINARY (MString fileName, MInt *noElements) |
counts the number of triangles in a BINARY STL file More... | |
virtual void | countSegmentTrianglesNETCDF (MString fileName, MInt *noElements, const MPI_Comm comm) |
counts the number of triangles in a NETCDF STL file More... | |
virtual void | readSegmentTrianglesASCII (MString fileName, Collector< element< 3 > > *elemCollector, MInt bndCndId, MInt segmentId, MInt *offset) |
reads triangles from an ASCII file More... | |
virtual void | readSegmentTrianglesBINARY_BE (MString fileName, Collector< element< 3 > > *elemCollector, MInt bndCndId, MInt segmentId, MInt *offset) |
reads triangles from a BINARY file and swaps to big endian More... | |
virtual void | readSegmentTrianglesBINARY_LE (MString fileName, Collector< element< 3 > > *elemCollector, MInt bndCndId, MInt segmentId, MInt *offset) |
reads triangles from a BINARY file and swaps to little endian More... | |
virtual void | readSegmentTrianglesNETCDF (MString fileName, Collector< element< 3 > > *elemCollector, MInt bndCndId, MInt segmentId, MInt *offset, const MPI_Comm comm) |
reads triangles from a BINARY file More... | |
void | rebuildAdtTree () override |
Rebuilds the ADT tree. More... | |
void | calculateBoundingBox () override |
Calculates the global bounding box of the geometry. More... | |
void | writeParallelGeometryVTK (MString filename) override |
Write the current geometry to a VTK file for parallel computation. More... | |
void | printMemoryUsage () |
prints the current memory usage of this object More... | |
void | collectGlobalMemoryUsage () override |
void | addElement (MFloat *tri) override |
Adds an element<3> to the collector. More... | |
void | copyElement (MInt from, MInt to) override |
Copies an element<3> from one poistion to another. More... | |
void | copyElement (MInt from, MInt to, element< 3 > *fromPtr, element< 3 > *toPtr) |
Copies an element<3> from one poistion to another. More... | |
void | resizeCollector (MInt new_size) override |
deletes the current element<3> collector and reinitializes More... | |
Protected Member Functions inherited from Geometry< 3 > | |
virtual void | readSegments () |
virtual void | writeSegmentsToDX () |
Protected Attributes | |
MInt | otherCalls = 0 |
MBool | m_GFieldInitFromSTL = false |
MInt | m_levelSetIntfBndId = 0 |
MInt * | m_levelSetIntfBndIds {} |
MInt | m_noLevelSetIntfBndIds = 0 |
MBool | m_forceBoundingBox = false |
MString | m_gridCutTest |
MString | m_geomFileType |
MString | m_gridFileName |
MInt | m_noAllTriangles {} |
MInt | m_getLIE2CallCounter = 0 |
MInt | getLIE2CommCounter = 0 |
MInt | getIECallCounter = 0 |
MInt | getIECommCounter = 0 |
MInt | getIETCallCounter = 0 |
MInt | edgeTICallCounter = 0 |
MBool | m_communicateSegmentsSerial = true |
Protected Attributes inherited from Geometry< 3 > | |
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 |
MInt | m_noAllBCs |
MBool | m_flowSolver |
Static Protected Attributes | |
static constexpr const MInt | nDim = 3 |
Private Attributes | |
MInt | m_tg_geometry {} |
MInt | m_t_geometryAll {} |
MInt | m_t_readGeometry {} |
Additional Inherited Members | |
Public Attributes inherited from Geometry< 3 > | |
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 |
std::set< MInt > | m_uniqueOriginalTriId |
MFloat | m_parGeomMemFactor |
MString | m_inOutTest |
MBool | m_parallelGeometry |
MBool | m_debugParGeom |
MString | m_parallelGeomFileName |
Specialized 3D implementation
Definition at line 15 of file geometry3d.h.
Geometry3D::Geometry3D | ( | const MInt | solverId_, |
const MPI_Comm | comm | ||
) |
Definition at line 270 of file geometry3d.cpp.
Geometry3D::~Geometry3D | ( | ) |
Definition at line 297 of file geometry3d.cpp.
|
overrideprotectedvirtual |
[in] | tri | conatins the following information in MFloat: originalId, segmentId, bndCndId, normal, vertices |
Reimplemented from Geometry< 3 >.
Definition at line 5064 of file geometry3d.cpp.
|
overrideprotectedvirtual |
Works for both, parallel and serial geometry.
Reimplemented from Geometry< 3 >.
Definition at line 1598 of file geometry3d.cpp.
|
overrideprotectedvirtual |
Reimplemented from Geometry< 3 >.
Definition at line 341 of file geometry3d.cpp.
[in] | from | the location to copy the element<3> from |
[in] | to | the location to copy the element<3> to |
Reimplemented from Geometry< 3 >.
Definition at line 5108 of file geometry3d.cpp.
|
protected |
[in] | from | the location to copy the element<3> from |
[in] | to | the location to copy the element<3> to |
[in] | fromPtr | the pointer to the from array |
[in] | toPtr | the pointer to the to array |
Definition at line 5138 of file geometry3d.cpp.
|
protectedvirtual |
Definition at line 1709 of file geometry3d.cpp.
|
inlineprotectedvirtual |
[in] | fileName | the name of the file to open |
[in] | the | number of entries to be returned (gets nulled in function again) |
Definition at line 418 of file geometry3d.cpp.
|
inlineprotectedvirtual |
This function detects the file size in byte and substracts the header information (80 bytes) and the the information on the number of triangles (4 bytes). Each triangle carries a total of 50 bytes.
[in] | fileName | the name of the file to open |
[in] | the | number of entries to be returned (gets nulled in function again) |
Definition at line 457 of file geometry3d.cpp.
|
inlineprotectedvirtual |
This is stored in the file in the variable noTriangles.
[in] | fileName | the name of the file to open |
[in] | the | number of entries to be returned (gets nulled in function again) |
Definition at line 485 of file geometry3d.cpp.
|
overridevirtual |
[in] | segmentId | the segment id |
[in] | own | pointer to the result of this domain owns the segment |
[in] | sumowners | pointer to the result of the sum of the owners |
[in] | firstOwner | pointer to the result of which is the first owner in the communicator |
[in] | owners | array holding information which domain holds the segment |
Reimplemented from Geometry< 3 >.
Definition at line 4903 of file geometry3d.cpp.
|
inlineoverridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 2434 of file geometry3d.cpp.
|
inlineoverridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 2552 of file geometry3d.cpp.
This function first determines the area for all projections XY, XZ, YZ according to
\[A_{xy} = \frac{1}{2}\sum_{i=0}^{n-1}\left(x_i y_{i+1} - x_{i+1} y_i\right)\]
\[A_{xz} = \frac{1}{2}\sum_{i=0}^{n-1}\left(x_i z_{i+1} - x_{i+1} z_i\right)\]
\[A_{xy} = \frac{1}{2}\sum_{i=0}^{n-1}\left(y_i z_{i+1} - y_{i+1} z_i\right)\]
Based on the obtained size of the areas with the consideration of the special cases that some areas can be zero the center of gravity is calculated using:;;;
\[ c_{\alpha}=\frac{1}{6A_{\alpha\beta}}\sum_{i=0}^{n-1}\left(\alpha_i + \alpha_{i+1}\right)\left(\alpha_i *\beta_{i+1}-\alpha_{i+1} \beta_i\right)\]
,
where \(A_{ab}\neq 0\) and \(\alpha,\beta\in\{x,y,z\}\).
[in] | vertices | the vertices as pointer to a pointer |
[in] | num | the number of vertices |
Reimplemented from Geometry< 3 >.
Definition at line 4947 of file geometry3d.cpp.
|
overridevirtual |
[in] | vertices | the vertices as an array (v00,v01,v02,v10,v11,v12,v20,v21,v22,...) |
[in] | size | the size of the array return the area of the segment |
Reimplemented from Geometry< 3 >.
Definition at line 4847 of file geometry3d.cpp.
[in] | segmentId | the id of the segment return the area of the segment |
Reimplemented from Geometry< 3 >.
Definition at line 4798 of file geometry3d.cpp.
|
overridevirtual |
The algorithm is devided into two parts. First, all border edges are extracted by running over all triangles of the segment and checking which edge appears only in one triangle. Then, the vertices are extracted in a cirular order by running over all extracted edges and doing a walkthrough element<3> by element<3>.
param[in] segmentId the id of the segment (only for serial geometry) param[in] tri_vx the triangles in one array (v00,v01,v02,v10,v11,v12,v20,v21,v22,...) (only for parallel geometry) param[in] keepOffsets only consider the triangles at the given offsets (only for parallel geometry) param[in] num the size of the first dimension of the returned 2D array return the circular ordered edges of the segment
Reimplemented from Geometry< 3 >.
Definition at line 4717 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 3457 of file geometry3d.cpp.
|
overridevirtual |
Target region in this case means the gridcell.
Reimplemented from Geometry< 3 >.
Definition at line 1910 of file geometry3d.cpp.
|
overridevirtual |
The separating axis theorem (SAT) states, that two convex polyhedra, that are to be tested against intersection are disjoint, if they can be separated along either an axis parallel to a normal of a face of the first or the second polyhedra, or along an axis formed from the cross product of an edge from them.
To make things simpler, an axis aligned gridcell is considered centered in the origin. Therefore, the triangle is translated accordingly.
Algorithm:
1) Create for all grid directions the normal with the triangle edges Then project the triangle vertices \(v0,v1,v2\) onto these edges and the box as well. For latter purpose create a radius defined by:
\[r = h_x|a_x| + h_y|a_y| + h_z|a_z|,\]
where \(h_i\) is the halflength of the box and \(a_i\) is the grid direction. One of the directions for \(a_i\) is 0, which reduces the above to:
\begin{eqnarray*} r_x = h_y|a_y| + h_z|a_z|\\ r_y = h_x|a_x| + h_z|a_z|\ \ r_z = h_x|a_x| + h_y|a_y| \end{eqnarray*}
Then check the projected triangle points against the radius
If all tests pass, the the box and the triangle are intersecting!
This function replaces Geometry3D::getIntersectionElements.
Reimplemented from Geometry< 3 >.
Definition at line 1784 of file geometry3d.cpp.
|
virtual |
Definition at line 2208 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 3626 of file geometry3d.cpp.
Reimplemented from Geometry< 3 >.
Definition at line 3284 of file geometry3d.cpp.
|
overridevirtual |
Let the following be definded:
The perp-dot operator is defined by
\begin{eqnarray*} v^\perp = n \times v = (u*v)v - (v*v)u\\ u^\perp = n \times u = (u*u)v - (u*v)u \end{eqnarray*}
Then we get:
\begin{eqnarray*} & w & = su + tv\\ \Leftrightarrow & n * v^\perp & = su * v^\perp + tv * v^\perp = su * v^\perp\\ \Leftrightarrow & s & = \frac{w\times v^\perp}{u\times v^\perp}\\ & & =\frac{(u*v)(w*v) - (v*v)(w*u)}{(u*v)(u*v) - (u*u)(v*v)} \end{eqnarray*}
\begin{eqnarray*} & w & = su + tv\\ \Leftrightarrow & n * u^\perp & = su * u^\perp + tv * u^\perp = su * u^\perp\\ \Leftrightarrow & t & = \frac{w\times u^\perp}{u\times u^\perp}\\ & & =\frac{(u*v)(w*u) - (u*u)(w*v)}{(u*v)(u*v) - (u*u)(v*v)} \end{eqnarray*}
Reimplemented from Geometry< 3 >.
Definition at line 3147 of file geometry3d.cpp.
|
overridevirtual |
Test is evaluated by the barycentric coordinates of the intersection point. Therefore a 3 by 3 linear equation system is solved with Cramers rule. This function replaces Geometry3D::getLineIntersectionElementsOld1.
Reimplemented from Geometry< 3 >.
Definition at line 2989 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4039 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4068 of file geometry3d.cpp.
|
overridevirtual |
The algorithm consists of the following steps:
[in] | p1 | point 1 of the line |
[in] | p2 | point 2 of the line |
[in] | radius | the radius of a particle |
[in] | v1 | vertex 1 of the triangle |
[in] | v2 | vertex 2 of the triangle |
[in] | v3 | vertex 3 of the triangle |
[in] | intersection | the intersection point to be returned |
[in] | normal | the normal of the cutting triagle to be returned |
[in] | relative | distance to cutpoint |
Reimplemented from Geometry< 3 >.
Definition at line 2765 of file geometry3d.cpp.
|
overridevirtual |
This is the simple case of getLineTriangleIntersection(...).
[in] | p1 | point 1 of the line |
[in] | p2 | point 2 of the line |
[in] | v1 | vertex 1 of the triangle |
[in] | v2 | vertex 2 of the triangle |
[in] | v3 | vertex 3 of the triangle |
Reimplemented from Geometry< 3 >.
Definition at line 2678 of file geometry3d.cpp.
|
overridevirtual |
This is the simple case of getLineTriangleIntersection(...), additionally returns the distance.
[in] | p1 | point 1 of the line |
[in] | p2 | point 2 of the line |
[in] | v1 | vertex 1 of the triangle |
[in] | v2 | vertex 2 of the triangle |
[in] | v3 | vertex 3 of the triangle |
[in] | dist | the distance to the triangle |
Reimplemented from Geometry< 3 >.
Definition at line 2708 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 3914 of file geometry3d.cpp.
|
inlinevirtual |
param[in] segmentId the id of the segment (only for serial geometry) return the edges of the segment
Definition at line 4580 of file geometry3d.cpp.
|
inlinevirtual |
The vertices are proviced by an array (see parameters)
param[in] tri_vx the triangles in one array (v00,v01,v02,v10,v11,v12,v20,v21,v22,...) param[in] keepOffsets only consider the triangles at the given offsets param[in] size the number of triangles in the input array return the edges of the segment
Definition at line 4620 of file geometry3d.cpp.
|
protectedvirtual |
Definition at line 608 of file geometry3d.cpp.
|
inlineoverridevirtual |
[in] | edges | the vector containing the collection of edges |
[in] | p1 | point 1 of the edge |
[in] | p2 | point 2 of the edge return if the edge is already contained |
Reimplemented from Geometry< 3 >.
Definition at line 4660 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4877 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4202 of file geometry3d.cpp.
Reimplemented from Geometry< 3 >.
Definition at line 4217 of file geometry3d.cpp.
|
protected |
Definition at line 328 of file geometry3d.cpp.
|
overrideprotectedvirtual |
Calls the according function to read the geometry.
Reimplemented from Geometry< 3 >.
Definition at line 1338 of file geometry3d.cpp.
Iterates over all segments in the geometry file and first counts the number of elements to be read. Then allocates the according memory and fills the geometry from the infomation in file. Depending on the file type of the geomtry a different method is used for counting an reading.
Definition at line 855 of file geometry3d.cpp.
|
inlineprotectedvirtual |
[in] | fileName | the name of the file to open |
[in] | elemCollector | pointer to the collector holding the triangles |
[in] | bndCndId | the boundary condition id associated with this segment |
[in] | segmenId | the id of the segment |
[in] | the | pointer to the segment offset for later computation |
Definition at line 509 of file geometry3d.cpp.
|
inlineprotectedvirtual |
This function is called on big endian machines like the Juqueen.
[in] | fileName | the name of the file to open |
[in] | elemCollector | pointer to the collector holding the triangles |
[in] | bndCndId | the boundary condition id associated with this segment |
[in] | segmenId | the id of the segment |
[in] | the | pointer to the segment offset for later computation |
Definition at line 631 of file geometry3d.cpp.
|
inlineprotectedvirtual |
This function is called on little endian machines.
[in] | fileName | the name of the file to open |
[in] | elemCollector | pointer to the collector holding the triangles |
[in] | bndCndId | the boundary condition id associated with this segment |
[in] | segmenId | the id of the segment |
[in] | the | pointer to the segment offset for later computation |
Definition at line 717 of file geometry3d.cpp.
|
inlineprotectedvirtual |
[in] | fileName | the name of the file to open |
[in] | elemCollector | pointer to the collector holding the triangles |
[in] | bndCndId | the boundary condition id associated with this segment |
[in] | segmenId | the id of the segment |
[in] | the | pointer to the segment offset for later computation |
Definition at line 783 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4464 of file geometry3d.cpp.
|
overrideprotectedvirtual |
Reimplemented from Geometry< 3 >.
Definition at line 313 of file geometry3d.cpp.
Reimplemented from Geometry< 3 >.
Definition at line 4228 of file geometry3d.cpp.
|
overrideprotectedvirtual |
[in] | new_size | the new size of the collector |
Reimplemented from Geometry< 3 >.
Definition at line 5036 of file geometry3d.cpp.
|
inlineprotectedvirtual |
[in] | buf | a pointer to a char array of 4 bytes |
Definition at line 592 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4282 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4259 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4239 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4354 of file geometry3d.cpp.
|
overrideprotectedvirtual |
[in] | filename | the name of the file without extension |
Reimplemented from Geometry< 3 >.
Definition at line 1508 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4290 of file geometry3d.cpp.
|
overridevirtual |
Reimplemented from Geometry< 3 >.
Definition at line 4322 of file geometry3d.cpp.
|
protected |
Definition at line 130 of file geometry3d.h.
|
protected |
Definition at line 127 of file geometry3d.h.
|
protected |
Definition at line 128 of file geometry3d.h.
|
protected |
Definition at line 129 of file geometry3d.h.
|
protected |
Definition at line 126 of file geometry3d.h.
|
protected |
Definition at line 133 of file geometry3d.h.
|
protected |
Definition at line 117 of file geometry3d.h.
|
protected |
Definition at line 121 of file geometry3d.h.
|
protected |
Definition at line 125 of file geometry3d.h.
|
protected |
Definition at line 113 of file geometry3d.h.
|
protected |
Definition at line 119 of file geometry3d.h.
|
protected |
Definition at line 122 of file geometry3d.h.
|
protected |
Definition at line 114 of file geometry3d.h.
|
protected |
Definition at line 115 of file geometry3d.h.
|
protected |
Definition at line 123 of file geometry3d.h.
|
protected |
Definition at line 116 of file geometry3d.h.
|
private |
Definition at line 138 of file geometry3d.h.
|
private |
Definition at line 139 of file geometry3d.h.
|
private |
Definition at line 137 of file geometry3d.h.
|
staticconstexprprotected |
Definition at line 131 of file geometry3d.h.
|
protected |
Definition at line 111 of file geometry3d.h.