25#ifndef INDIC_CALC_2D_H
26#define INDIC_CALC_2D_H
58 bool operator() (
bool output[],
const S input[])
override;
66 bool operator() (
bool output[],
const S input[])
override;
74 bool operator() (
bool output[],
const S input[])
override;
81template <
typename S,
template<
typename>
class F>
85 std::shared_ptr<IndicatorF2D<S>>
_f;
86 std::shared_ptr<IndicatorF2D<S>>
_g;
89 bool operator() (
bool output[],
const S input[3]);
116template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
117 typename=
typename std::enable_if<std::is_base_of<IndicatorF2D<S>, F1<S>>::value>::type>
118std::shared_ptr<IndicatorF2D<S>>
operator+(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
120template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
121 typename=
typename std::enable_if<std::is_base_of<IndicatorF2D<S>, F1<S>>::value>::type>
122std::shared_ptr<IndicatorF2D<S>>
operator-(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
124template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
125 typename=
typename std::enable_if<std::is_base_of<IndicatorF2D<S>, F1<S>>::value>::type>
126std::shared_ptr<IndicatorF2D<S>>
operator*(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
128template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
129 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity2D<S>, F1<S>>::value>::type>
130std::shared_ptr<IndicatorF2D<S>>
operator+(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
132template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
133 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity2D<S>, F1<S>>::value>::type>
134std::shared_ptr<IndicatorF2D<S>>
operator-(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
136template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
137 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity2D<S>, F1<S>>::value>::type>
138std::shared_ptr<IndicatorF2D<S>>
operator*(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
IndicCalc1D //////////////////////////////// arithmetic helper class for Indicator 1d functors.
IndicCalc1D(IndicatorF1D< S > &f, IndicatorF1D< S > &g)
indicCalc2D //////////////////////////////// arithmetic helper class for Indicator 2D functors
virtual S signedDistance(const Vector< S, 2 > &input)=0
Returns signed distance to the nearest point on the indicator surface.
std::shared_ptr< IndicatorF2D< S > > _f
std::shared_ptr< IndicatorF2D< S > > _g
bool operator()(bool output[], const S input[3])
IndicCalc2D(std::shared_ptr< IndicatorF2D< S > > f, std::shared_ptr< IndicatorF2D< S > > g)
subtraction functor acts as without
IndicMinus1D(IndicatorF1D< S > &f, IndicatorF1D< S > &g)
bool operator()(bool output[], const S input[]) override
has to be implemented for 'every' derived class
S signedDistance(const Vector< S, 2 > &input) override
Returns signed distance to the nearest point on the indicator surface.
IndicMinus2D(std::shared_ptr< IndicatorF2D< S > > f, std::shared_ptr< IndicatorF2D< S > > g)
multiplication functor acts as intersection
bool operator()(bool output[], const S input[]) override
has to be implemented for 'every' derived class
IndicMultiplication1D(IndicatorF1D< S > &f, IndicatorF1D< S > &g)
IndicMultiplication2D(std::shared_ptr< IndicatorF2D< S > > f, std::shared_ptr< IndicatorF2D< S > > g)
S signedDistance(const Vector< S, 2 > &input) override
Returns signed distance to the nearest point on the indicator surface.
addition functor acts as union
IndicPlus1D(IndicatorF1D< S > &f, IndicatorF1D< S > &g)
bool operator()(bool output[], const S input[]) override
has to be implemented for 'every' derived class
IndicPlus2D(std::shared_ptr< IndicatorF2D< S > > f, std::shared_ptr< IndicatorF2D< S > > g)
S signedDistance(const Vector< S, 2 > &input) override
Returns signed distance to the nearest point on the indicator surface.
IndicatorF1D is an application from .
IndicatorF2D is an application from .
Top level namespace for all of OpenLB.
constexpr meta::enable_if_arithmetic_t< U, Vector< T, D > > operator-(U a, const ScalarVector< T, D, IMPL > &b) any_platform
constexpr meta::enable_if_arithmetic_t< U, Vector< T, D > > operator+(U a, const ScalarVector< T, D, IMPL > &b) any_platform
constexpr meta::enable_if_arithmetic_t< U, Vector< decltype(T{} *U{}), D > > operator*(U a, const ScalarVector< T, D, IMPL > &b) any_platform