31template <
typename S,
unsigned D>
46template <
typename S,
unsigned D>
50 this->_myMin = f->getMin();
51 this->_myMax = f->getMax();
54template <
typename S,
unsigned D>
57 return -this->_f->signedDistance(input);
60template <
typename S,
unsigned D>
67template <
typename S,
unsigned D>
70 _scalingFactor = scalingFactor;
71 this->_myMin = _f->getMin() - scalingFactor*_f->getMin();
72 this->_myMax = _f->getMax() + scalingFactor*_f->getMax();
75template <
typename S,
unsigned D>
78 return _scalingFactor;
81template <
typename S,
unsigned D>
84 return 0.5 * (_f->getMin() + _f->getMax());
88template <
typename S,
unsigned D>
93 return this->_f->signedDistance(input);
99template <
typename S,
unsigned D>
106template <
typename S,
unsigned D>
109 _elongation = elongation;
110 this->_myMin = _f->getMin() - elongation;
111 this->_myMax = _f->getMax() + elongation;
114template <
typename S,
unsigned D>
120template <
typename S,
unsigned D>
123 return 0.5 * (_f->getMin() + _f->getMax());
126template <
typename S,
unsigned D>
131 return this->_f->signedDistance(input);
Smart pointer for managing the various ways of passing functors around.
void setElongation(const Vector< S, D > &elongation)
Vector< S, D > getEstimatedCenter()
S signedDistance(const Vector< S, D > &input)
Vector< S, D > getElongation()
IndicElongation(FunctorPtr< IndicatorF< S, D > > f, const Vector< S, D > &elongation=Vector< S, D >(0.))
IndicInverse(FunctorPtr< IndicatorF< S, D > > f, PhysR< S, D > min, PhysR< S, D > max)
S signedDistance(const Vector< S, D > &input)
IndicScale(FunctorPtr< IndicatorF< S, D > > f, S scalingFactor=S {1})
S signedDistance(const Vector< S, D > &input)
Vector< S, D > getEstimatedCenter()
void setScalingFactor(const S scalingFactor)
T elongation(std::function< T(const Vector< T, 3 > &)> sdf, const Vector< T, 3 > &p, const Vector< T, 3 > &h, const Vector< T, 3 > ¢er=(T(0))) any_platform
Elongation splits the object in 2 (4 or 8) parts, moves them apart and connects them again The object...
T scale(std::function< T(const Vector< T, D > &)> sdf, const Vector< T, D > &p, T s, const Vector< T, D > ¢er=(T(0))) any_platform
Function to scale a geometry The object has to be placed in the origin of the coodinate system.
Top level namespace for all of OpenLB.
std::conditional_t< D==2, IndicatorF2D< T >, IndicatorF3D< T > > IndicatorF