24#ifndef INDIC_COMB_3D_H
25#define INDIC_COMB_3D_H
42template <
typename S,
template<
typename U>
class F>
46 std::shared_ptr<IndicatorF3D<S>>
_f;
47 std::shared_ptr<IndicatorF3D<S>>
_g;
50 bool operator() (
bool output[],
const S input[3]);
83template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
84 typename=
typename std::enable_if<std::is_base_of<IndicatorF3D<S>, F1<S>>::value>::type>
85std::shared_ptr<IndicatorF3D<S>>
operator+(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
87template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
88 typename=
typename std::enable_if<std::is_base_of<IndicatorF3D<S>, F1<S>>::value>::type>
89std::shared_ptr<IndicatorF3D<S>>
operator-(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
91template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
92 typename=
typename std::enable_if<std::is_base_of<IndicatorF3D<S>, F1<S>>::value>::type>
93std::shared_ptr<IndicatorF3D<S>>
operator*(std::shared_ptr<F1<S>> lhs, std::shared_ptr<F2<S>> rhs);
95template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
96 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity3D<S>, F1<S>>::value>::type>
97std::shared_ptr<IndicatorF3D<S>>
operator+(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
99template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
100 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity3D<S>, F1<S>>::value>::type>
101std::shared_ptr<IndicatorF3D<S>>
operator-(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
103template<
typename S,
template <
typename U>
class F1,
template <
typename V>
class F2,
104 typename=
typename std::enable_if<std::is_base_of<IndicatorIdentity3D<S>, F1<S>>::value>::type>
105std::shared_ptr<IndicatorF3D<S>>
operator*(F1<S> & lhs, std::shared_ptr<F2<S>> rhs);
IndicComb3D //////////////////////////////// arithmetic helper class for Indicator 3d functors.
std::shared_ptr< IndicatorF3D< S > > _f
std::shared_ptr< IndicatorF3D< S > > _g
IndicComb3D(std::shared_ptr< IndicatorF3D< S > > f, std::shared_ptr< IndicatorF3D< S > > g)
virtual S signedDistance(const Vector< S, 3 > &input)=0
Returns signed distance to the nearest point on the indicator surface.
bool operator()(bool output[], const S input[3])
S signedDistance(const Vector< S, 3 > &input) override
Returns signed distance to the nearest point on the indicator surface.
IndicMinus3D(std::shared_ptr< IndicatorF3D< S > > f, std::shared_ptr< IndicatorF3D< S > > g)
IndicMultiplication3D(std::shared_ptr< IndicatorF3D< S > > f, std::shared_ptr< IndicatorF3D< S > > g)
S signedDistance(const Vector< S, 3 > &input) override
Returns signed distance to the nearest point on the indicator surface.
S signedDistance(const Vector< S, 3 > &input) override
Returns signed distance to the nearest point on the indicator surface.
IndicPlus3D(std::shared_ptr< IndicatorF3D< S > > f, std::shared_ptr< IndicatorF3D< S > > g)
IndicatorF3D 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