OpenLB 1.7
Searching...
No Matches
olb::RegularCachedIndicatorF3D< S > Class Template Reference

`#include <indicatorBaseF3D.h>`

Inheritance diagram for olb::RegularCachedIndicatorF3D< S >:
Collaboration diagram for olb::RegularCachedIndicatorF3D< S >:

## 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)

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.

signedDistance (const Vector< S, 3 > &input) override
Returns signed distance to the nearest point on the indicator surface.

Vector< S, 3 > surfaceNormal (const Vector< S, 3 > &pos, const S meshSize) override
Return surface normal.

Public Member Functions inherited from olb::IndicatorF3D< S >
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.

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

Public Member Functions inherited from olb::GenericF< bool, S >
virtual ~GenericF ()=default

int getSourceDim () const

int getTargetDim () const

std::string & getName ()

std::string const & getName () const

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)

Public Types inherited from olb::GenericF< bool, S >
using targetType

using sourceType

Public Attributes inherited from olb::GenericF< bool, S >
std::shared_ptr< GenericF< bool, S > > _ptrCalcC
memory management, frees resouces (calcClass)

Protected Member Functions inherited from olb::IndicatorF3D< S >
IndicatorF3D ()

Protected Member Functions inherited from olb::GenericF< bool, S >
GenericF (int targetDim, int sourceDim)

Protected Attributes inherited from olb::IndicatorF3D< S >
Vector< S, 3 > _myMin

Vector< S, 3 > _myMax

## Detailed Description

template<typename S>
class olb::RegularCachedIndicatorF3D< S >

Definition at line 87 of file indicatorBaseF3D.h.

## ◆ RegularCachedIndicatorF3D()

template<typename S >
 olb::RegularCachedIndicatorF3D< S >::RegularCachedIndicatorF3D ( IndicatorF3D< S > & indicatorF, S deltaR )
inline

Definition at line 97 of file indicatorBaseF3D.h.

97 :
98 _indicatorF(indicatorF),
99 _deltaR(deltaR),
100 _cacheCuboid(indicatorF.getMin()[0], indicatorF.getMin()[1], indicatorF.getMin()[2], deltaR,
101 (int)((indicatorF.getMax()[0] - indicatorF.getMin()[0]) / deltaR + 1.5),
102 (int)((indicatorF.getMax()[1] - indicatorF.getMin()[1]) / deltaR + 1.5),
103 (int)((indicatorF.getMax()[2] - indicatorF.getMin()[2]) / deltaR + 1.5)),
104 _cacheBlock(_cacheCuboid.getExtent(), 0),
105 _cache(_cacheBlock.getNcells())
106 { }
std::size_t getNcells() const
Get number of cells.
Vector< int, 3 > const getExtent() const
Definition cuboid3D.hh:165

## ◆ distance() [1/5]

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::distance ( S & distance, const S input[] )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 152 of file indicatorBaseF3D.h.

152 {
153 return _indicatorF.distance(distance, input);
154 }
bool distance(S &distance, const Vector< S, 3 > &origin, S precision, const Vector< S, 3 > &direction) override
Here is the call graph for this function:

## ◆ distance() [2/5]

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::distance ( S & distance, const Vector< S, 3 > & origin )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 149 of file indicatorBaseF3D.h.

149 {
150 return _indicatorF.distance(distance, origin);
151 }
Here is the call graph for this function:

## ◆ distance() [3/5]

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::distance ( S & distance, const Vector< S, 3 > & origin, const Vector< S, 3 > & direction, int iC = -1 )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 146 of file indicatorBaseF3D.h.

146 {
147 return _indicatorF.distance(distance, origin, direction, iC);
148 }
Here is the call graph for this function:

## ◆ distance() [4/5]

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::distance ( S & distance, const Vector< S, 3 > & origin, const Vector< S, 3 > & direction, S precision, S pitch )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 143 of file indicatorBaseF3D.h.

143 {
144 return _indicatorF.distance(distance, origin, direction, precision, pitch);
145 }
Here is the call graph for this function:

## ◆ distance() [5/5]

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::distance ( S & distance, const Vector< S, 3 > & origin, S precision, const Vector< S, 3 > & direction )
inlineoverridevirtual
Returns
false or true and pos. distance if there was one found for a given origin and direction. Mind that the default computation is done by a numerical approximation which searches .. [TODO: CYRIL]

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 140 of file indicatorBaseF3D.h.

140 {
141 return _indicatorF.distance(distance, origin, precision, direction);
142 }
Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ getMax()

template<typename S >
 Vector< S, 3 > & olb::RegularCachedIndicatorF3D< S >::getMax ( )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 137 of file indicatorBaseF3D.h.

137 {
138 return _indicatorF.getMax();
139 }

References olb::IndicatorF3D< S >::getMax().

Here is the call graph for this function:

## ◆ getMin()

template<typename S >
 Vector< S, 3 > & olb::RegularCachedIndicatorF3D< S >::getMin ( )
inlineoverridevirtual

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 134 of file indicatorBaseF3D.h.

134 {
135 return _indicatorF.getMin();
136 }

References olb::IndicatorF3D< S >::getMin().

Here is the call graph for this function:

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::load ( std::string fileName )
inline

Definition at line 130 of file indicatorBaseF3D.h.

130 {
132 }

Here is the call graph for this function:

## ◆ normal()

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::normal ( Vector< S, 3 > & normal, const Vector< S, 3 > & origin, const Vector< S, 3 > & direction, int iC = -1 )
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 155 of file indicatorBaseF3D.h.

155 {
156 return _indicatorF.normal(normal, origin, direction, iC);
157 }
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
Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ operator()()

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::operator() ( bool output[1], const S input[3] )
inlineoverridevirtual

Returns true if input is inside the indicator.

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 108 of file indicatorBaseF3D.h.

108 {
109 Vector<int,3> latticeR{};
110 if (_cacheCuboid.getLatticeR(input, latticeR)) {
111 std::size_t iCell = _cacheBlock.getCellId(latticeR);
112 if (_cache[iCell] == 0) {
113 bool result;
114 _indicatorF(&result, input);
115 _cache[iCell] = result ? 1 : 2;
116 output[0] = result;
117 return true;
118 } else {
119 output[0] = _cache[iCell] == 1;
120 return true;
121 }
122 } else {
123 return _indicatorF(output, input);
124 }
125 }
CellID getCellId(LatticeR< D > latticeR) const
Get 1D cell ID.
bool getLatticeR(Vector< T, 3 > physR, Vector< int, 3 > &latticeR, T eps=1e-5)
Definition cuboid3D.h:128
Here is the call graph for this function:

## ◆ rotOnAxis()

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::rotOnAxis ( Vector< S, 3 > & vec_rot, const Vector< S, 3 > & vec, const Vector< S, 3 > & axis, S & theta )
inlineoverridevirtual

Rotate vector around axis by angle theta.

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 158 of file indicatorBaseF3D.h.

158 {
159 return _indicatorF.rotOnAxis(vec_rot, vec, axis, theta);
160 }

References olb::IndicatorF3D< S >::rotOnAxis().

Here is the call graph for this function:

## ◆ save()

template<typename S >
 bool olb::RegularCachedIndicatorF3D< S >::save ( std::string fileName )
inline

Definition at line 127 of file indicatorBaseF3D.h.

127 {
128 return _cache.save(fileName);
129 }

References olb::Serializable::save().

Here is the call graph for this function:

## ◆ signedDistance()

template<typename S >
 S olb::RegularCachedIndicatorF3D< S >::signedDistance ( const Vector< S, 3 > & input )
inlineoverridevirtual

Returns signed distance to the nearest point on the indicator surface.

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 162 of file indicatorBaseF3D.h.

162 {
163 return _indicatorF.signedDistance(input);
164 }

References olb::IndicatorF3D< S >::signedDistance().

Here is the call graph for this function:

## ◆ surfaceNormal()

template<typename S >
 Vector< S, 3 > olb::RegularCachedIndicatorF3D< S >::surfaceNormal ( const Vector< S, 3 > & pos, const S meshSize )
inlineoverridevirtual

Return surface normal.

Reimplemented from olb::IndicatorF3D< S >.

Definition at line 165 of file indicatorBaseF3D.h.

165 {
166 return _indicatorF.surfaceNormal(pos, meshSize);
167 }

References olb::IndicatorF3D< S >::surfaceNormal().

Here is the call graph for this function:

The documentation for this class was generated from the following file: