![]() |
OpenLB 1.8.1
|
#include <indicatorBaseF3D.h>
Public Member Functions | |
RegularCachedIndicatorF3D (IndicatorF3D< S > &indicatorF, S deltaR) | |
bool | operator() (bool output[1], const S input[3]) override |
Returns true if input is inside the indicator. | |
bool | save (std::string fileName) |
bool | load (std::string fileName) |
Vector< S, 3 > & | getMin () override |
Vector< S, 3 > & | getMax () override |
bool | distance (S &distance, const Vector< S, 3 > &origin, S precision, const Vector< S, 3 > &direction) override |
bool | distance (S &distance, const Vector< S, 3 > &origin, const Vector< S, 3 > &direction, S precision, S pitch) override |
bool | distance (S &distance, const Vector< S, 3 > &origin, const Vector< S, 3 > &direction, int iC=-1) override |
bool | distance (S &distance, const Vector< S, 3 > &origin) override |
bool | distance (S &distance, const S input[]) override |
bool | normal (Vector< S, 3 > &normal, const Vector< S, 3 > &origin, const Vector< S, 3 > &direction, int iC=-1) override |
returns true and the normal if there was one found for an given origin and direction | |
bool | rotOnAxis (Vector< S, 3 > &vec_rot, const Vector< S, 3 > &vec, const Vector< S, 3 > &axis, S &theta) override |
Rotate vector around axis by angle theta. | |
S | signedDistance (const Vector< S, 3 > &input) override |
Returns signed distance to the nearest point on the indicator surface Uses the fastest, but potentially less accurate method. | |
Vector< S, 3 > | surfaceNormal (const Vector< S, 3 > &pos, const S meshSize) override |
Return surface normal Uses the fastest, but potentially less accurate method. | |
![]() | |
virtual S | signedDistanceExact (const Vector< S, 3 > &input) |
Returns exact signed distance to the nearest point on the indicator surface Uses the most accurate, but slower method This is usually sufficient for fluid-wall interactions. | |
Vector< S, 3 > | surfaceNormal (const Vector< S, 3 > &pos, const S meshSize, std::function< Vector< S, 3 >(const Vector< S, 3 > &)> transformPos) |
Return surface normal after possible translation and rotation Uses the fastest, but potentially less accurate method. | |
virtual Vector< S, 3 > | surfaceNormalExact (const Vector< S, 3 > &pos, const S meshSize) |
Return surface normal Uses the most accurate, but slower method This is likely necessary for particle-wall interactions. | |
Vector< S, 3 > | surfaceNormalExact (const Vector< S, 3 > &pos, const S meshSize, std::function< Vector< S, 3 >(const Vector< S, 3 > &)> transformPos) |
Return surface normal after possible translation and rotation Uses the fastest, but potentially less accurate method. | |
bool | isInsideBox (Vector< S, 3 > point) |
Returns true if point is inside a cube with corners _myMin and _myMax | |
virtual Vector< S, 3 > | getSample (const std::function< S()> &randomness) const |
![]() | |
virtual | ~GenericF ()=default |
int | getSourceDim () const |
read only access to member variable _m | |
int | getTargetDim () const |
read only access to member variable _n | |
std::string & | getName () |
read and write access to name | |
std::string const & | getName () const |
read only access to name | |
virtual bool | operator() (bool output[], const S input[])=0 |
has to be implemented for 'every' derived class | |
bool | operator() (bool output[]) |
wrapper that call the pure virtual operator() (T output[], const S input[]) from above | |
bool | operator() (bool output[], S input0) |
bool | operator() (bool output[], S input0, S input1) |
bool | operator() (bool output[], S input0, S input1, S input2) |
bool | operator() (bool output[], S input0, S input1, S input2, S input3) |
Additional Inherited Members | |
![]() | |
using | targetType |
using | sourceType |
![]() | |
std::shared_ptr< GenericF< bool, S > > | _ptrCalcC |
memory management, frees resouces (calcClass) | |
![]() | |
IndicatorF3D () | |
![]() | |
GenericF (int targetDim, int sourceDim) | |
![]() | |
Vector< S, 3 > | _myMin |
Vector< S, 3 > | _myMax |
Definition at line 105 of file indicatorBaseF3D.h.
|
inline |
Definition at line 115 of file indicatorBaseF3D.h.
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 170 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::distance().
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 167 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::distance().
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 164 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::distance().
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 161 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::distance().
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 158 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::distance().
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 155 of file indicatorBaseF3D.h.
|
inlineoverridevirtual |
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 152 of file indicatorBaseF3D.h.
|
inline |
Definition at line 148 of file indicatorBaseF3D.h.
References olb::Serializable::load().
|
inlineoverridevirtual |
returns true and the normal if there was one found for an given origin and direction
(mind that the default computation is done by a numerical approximation which searches .. [TODO])
find perpendicular vector to direction
Loop 3 times to find three points on the surface to use for normal calc. orthogonal to direction vector 120 degree to each other
rotate directionPerpN through 3 angles {0,120,240}
Find 'positive' angle
Calculate Normal
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 173 of file indicatorBaseF3D.h.
References olb::RegularCachedIndicatorF3D< S >::normal().
|
inlineoverridevirtual |
Returns true if input is inside the indicator.
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 126 of file indicatorBaseF3D.h.
References olb::BlockStructureD< D >::getCellId(), and olb::Cuboid< T, D >::getLatticeR().
|
inlineoverridevirtual |
Rotate vector around axis by angle theta.
http://mathworld.wolfram.com/RodriguesRotationFormula.html https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 176 of file indicatorBaseF3D.h.
|
inline |
Definition at line 145 of file indicatorBaseF3D.h.
References olb::Serializable::save().
|
inlineoverridevirtual |
Returns signed distance to the nearest point on the indicator surface Uses the fastest, but potentially less accurate method.
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 180 of file indicatorBaseF3D.h.
|
inlineoverridevirtual |
Return surface normal Uses the fastest, but potentially less accurate method.
Reimplemented from olb::IndicatorF3D< S >.
Definition at line 183 of file indicatorBaseF3D.h.