$treeview $search $mathjax
|
Palabos
Version 1.1
$projectbrief
|
$projectbrief
|
$searchbox |
#include <triangleBoundary3D.h>


Public Member Functions | |
| TriangleFlowShape3D (TriangleBoundary3D< T > const &boundary_, BoundaryProfiles3D< T, SurfaceData > const &profiles_) | |
| virtual bool | isInside (Dot3D const &location) const |
| Decide whether a given discrete lattice node is inside the solid shape. | |
| virtual bool | pointOnSurface (Array< T, 3 > const &fromPoint, Array< T, 3 > const &direction, Array< T, 3 > &locatedPoint, T &distance, Array< T, 3 > &wallNormal, SurfaceData &surfaceData, OffBoundary::Type &bdType, plint &id) const |
| virtual Array< T, 3 > | computeContinuousNormal (Array< T, 3 > const &p, plint id, bool isAreaWeighted=false) const |
| virtual bool | intersectsSurface (Array< T, 3 > const &p1, Array< T, 3 > const &p2, plint &id) const |
| Say if a given segment intersects the surface. | |
| virtual plint | getTag (plint id) const |
| virtual bool | distanceToSurface (Array< T, 3 > const &point, T &distance, bool &isBehind) const |
| virtual TriangleFlowShape3D< T, SurfaceData > * | clone () const |
| Plain clone function. | |
| virtual TriangleFlowShape3D< T, SurfaceData > * | clone (std::vector< AtomicBlock3D * > args) const |
| Use this clone function to provide the meshed data to this object. | |
| plb::TriangleFlowShape3D< T, SurfaceData >::TriangleFlowShape3D | ( | TriangleBoundary3D< T > const & | boundary_, | |
| BoundaryProfiles3D< T, SurfaceData > const & | profiles_ | |||
| ) | [inline] |
| TriangleFlowShape3D< T, SurfaceData > * plb::TriangleFlowShape3D< T, SurfaceData >::clone | ( | std::vector< AtomicBlock3D * > | args | ) | const [inline, virtual] |
Use this clone function to provide the meshed data to this object.
The arguments are: 0: The voxel flags (ScalarField3D<T>), 1: The hash container (AtomicContainerBlock3D), 2: The boundary argument: an additional argument needed by BoundaryProfiles in order to compute the boundary condition. In dynamic walls this is for example often a MultiParticleField, used to determined the wall velocity.
Reimplemented from plb::BoundaryShape3D< T, SurfaceData >.
References PLB_ASSERT, and PLB_PRECONDITION.
| TriangleFlowShape3D< T, SurfaceData > * plb::TriangleFlowShape3D< T, SurfaceData >::clone | ( | ) | const [inline, virtual] |
Plain clone function.
Implements plb::BoundaryShape3D< T, SurfaceData >.
| Array< T, 3 > plb::TriangleFlowShape3D< T, SurfaceData >::computeContinuousNormal | ( | Array< T, 3 > const & | p, | |
| plint | id, | |||
| bool | isAreaWeighted = false | |||
| ) | const [inline, virtual] |
Given a point p on the surface of the shape, determine its "continuous normal". If the shape is for example piecewise linear, the normal is adjusted to vary continuously over the surface.
Implements plb::BoundaryShape3D< T, SurfaceData >.
| bool plb::TriangleFlowShape3D< T, SurfaceData >::distanceToSurface | ( | Array< T, 3 > const & | point, | |
| T & | distance, | |||
| bool & | isBehind | |||
| ) | const [inline, virtual] |
Get the shortest distance to the wall. Returns true in case of success. The flag isBehind indicates if the point is "behind" the wall, i.e. in the direction opposite to the wall normal.
Implements plb::BoundaryShape3D< T, SurfaceData >.
References plb::TriangleHash< T >::getTriangles(), and PLB_PRECONDITION.
| plint plb::TriangleFlowShape3D< T, SurfaceData >::getTag | ( | plint | id | ) | const [inline, virtual] |
Return the tag (id of boundary-portion with specific boundary, condition); the id is the one returned by pointOnSurface.
Implements plb::BoundaryShape3D< T, SurfaceData >.
| bool plb::TriangleFlowShape3D< T, SurfaceData >::intersectsSurface | ( | Array< T, 3 > const & | p1, | |
| Array< T, 3 > const & | p2, | |||
| plint & | id | |||
| ) | const [inline, virtual] |
Say if a given segment intersects the surface.
Implements plb::BoundaryShape3D< T, SurfaceData >.
References plb::TriangleHash< T >::getTriangles(), PLB_PRECONDITION, and plb::TriangleFlowShape3D< T, SurfaceData >::pointOnSurface().
| bool plb::TriangleFlowShape3D< T, SurfaceData >::isInside | ( | Dot3D const & | location | ) | const [inline, virtual] |
Decide whether a given discrete lattice node is inside the solid shape.
The reason why there is an isInside function instead of a isOutside one is that while there exists only one voxelFlag::inside flag, there are several flags which count as outside: undetermined, outside, and borderline. This is particularly important for the undetermined flag, because the outer envelopes in a multi-block structure have no special meaning and are default-initialized to undetermined.
Implements plb::BoundaryShape3D< T, SurfaceData >.
References plb::ScalarField3D< T >::get(), plb::AtomicBlock3D::getLocation(), plb::voxelFlag::insideFlag(), PLB_PRECONDITION, plb::Dot3D::x, plb::Dot3D::y, and plb::Dot3D::z.
| bool plb::TriangleFlowShape3D< T, SurfaceData >::pointOnSurface | ( | Array< T, 3 > const & | fromPoint, | |
| Array< T, 3 > const & | direction, | |||
| Array< T, 3 > & | locatedPoint, | |||
| T & | distance, | |||
| Array< T, 3 > & | wallNormal, | |||
| SurfaceData & | surfaceData, | |||
| OffBoundary::Type & | bdType, | |||
| plint & | id | |||
| ) | const [inline, virtual] |
Get the distance to the wall, and the velocity value on the wall, from a given real-valued position (in lattice units), and along a given direction. Returns true if there exists an intersection along the indicated direction. ATTENTION: The id is an in-and-out value. If you know the right id of the surface intersection (e.g. the triangle ID in case of a triangular mesh) you can provide it to speed up the calculation. However, if you don't know it, you MUST provide the value -1, because otherwise the result might be wrong.
Implements plb::BoundaryShape3D< T, SurfaceData >.
References plb::TriangleHash< T >::getTriangles(), and PLB_PRECONDITION.
Referenced by plb::TriangleFlowShape3D< T, SurfaceData >::intersectsSurface().
1.6.3
1.6.3