24#ifndef SMOOTH_INDICATOR_F_3D_H
25#define SMOOTH_INDICATOR_F_3D_H
42template <
typename T,
typename S,
bool PARTICLE=false>
49 SmoothIndicatorCuboid3D(S xLength, S yLength, S zLength,
Vector<S,3> center, S epsilon,
Vector<S,3> theta =
Vector<S,3> (0.,0.,0.));
58template <
typename T,
typename S,
bool PARTICLE=false>
71 bool operator()(T output[],
const S input[])
override;
75template <
typename T,
typename S,
bool PARTICLE=false>
85 S
beta(S arg1, S arg2);
92 bool operator()(T output[],
const S input[])
override;
96template <
typename T,
typename S,
bool PARTICLE=false>
111template <
typename T,
typename S,
bool PARTICLE=false>
115 void initIndicatorCylinder3D(
Vector<S,3> theta, S length);
119 SmoothIndicatorCylinder3D(
Vector<S,3> center1,
Vector<S,3> center2, S radius, S epsilon,
Vector<S,3> theta =
Vector<S,3> (0.,0.,0.));
120 SmoothIndicatorCylinder3D(
Vector<S,3> center,
Vector<S,3> normal, S radius, S height, S epsilon,
Vector<S,3> theta =
Vector<S,3> (0.,0.,0.));
129template <
typename T,
typename S,
bool PARTICLE=false>
133 void initIndicatorCone3D(
Vector<S,3> theta, S length);
137 SmoothIndicatorCone3D(
Vector<S,3> center1,
Vector<S,3> center2, S radius1, S radius2, S epsilon,
Vector<S,3> theta =
Vector<S,3> (0.,0.,0.));
147template <
typename T,
typename W>
149template <
typename T,
typename BaseType>
154template <
typename T,
typename S,
bool PARTICLE=false>
157 std::shared_ptr<IndicatorF3D<T>> _indPtr;
159 const T _latticeSpacing;
165 std::unique_ptr<BlockData<3,T,BaseType<T>>> _blockData;
167 std::unique_ptr<BlockDataF3D<T,BaseType<T>>> _cacheFunctor;
169 std::unique_ptr<AnalyticalFfromBlockF3D<T,T>> _interpolateCache;
175 void calcCircumRadius();
191 bool operator()(T output[],
const S input[])
override;
195template <
typename T,
typename S,
bool PARTICLE=false>
201 SmoothIndicatorFactoredCircle3D(
Vector<S,3> center, S radius, S epsilon, S density=0,
Vector<S,3> vel =
Vector<S,3> (0.,0.,0.), S omega = 0, S factor = 1.);
202 bool operator() (T output[],
const S input[])
override;
Converts block functors to analytical functors.
BlockDataF3D can store data of any BlockFunctor3D.
A regular single 3D cuboid is the basic component of a 3D cuboid structure which defines the grid.
indicator function for a 3d frustum
indicator function for a 3d-cuboid, parallel to the planes x=0, y=0, z=0.
indicator function for a 3d-cylinder
indicator function for an ellipsoid
IndicatorF3D is an application from .
indicator function for a 3D-sphere
indicator function for a super ellipsoid
implements a smooth particle cone in 3D with an _epsilon sector
const S signedDistance(const PhysR< S, 3 > input) override
SmoothIndicatorCone3D(IndicatorCone3D< S > &indPtr, S epsilon, Vector< S, 3 > theta=Vector< S, 3 >(0., 0., 0.))
IndicatorCone3D< S > & getIndicator()
Vector< S, 4 > calcMofiAndMass(const S density) override
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
Vector< S, 3 > calcCenterOfMass() override
implements a smooth particle cuboid in 3D with an _epsilon sector.
Vector< S, 4 > calcMofiAndMass(const S density) override
SmoothIndicatorCuboid3D(IndicatorCuboid3D< S > &ind, S epsilon, Vector< S, 3 > theta=Vector< S, 3 >(0., 0., 0.))
const S signedDistance(const PhysR< S, 3 > input) override
IndicatorCuboid3D< S > & getIndicator()
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
SmoothIndicatorCustom3D(T latticeSpacing, std::shared_ptr< IndicatorF3D< T > > indPtr, Vector< T, 3 > pos, T epsilon, Vector< T, 3 > theta=Vector< T, 3 >(0.))
const S signedDistance(const PhysR< S, 3 > input) override
bool operator()(T output[], const S input[]) override
Vector< T, 3 > getLocalCenter()
Vector< T, 4 > calcMofiAndMass(T rhoP) override
bool regardCell(int input[3])
implements a smooth particle cylinder in 3D with an _epsilon sector.
const S signedDistance(const PhysR< S, 3 > input) override
SmoothIndicatorCylinder3D(IndicatorCylinder3D< S > &ind, S epsilon, Vector< S, 3 > theta=Vector< S, 3 >(0., 0., 0.))
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
Vector< S, 4 > calcMofiAndMass(const S density) override
IndicatorCylinder3D< S > & getIndicator()
implements a smooth particle ellipsoid in 3D with an _epsilon sector.
Vector< S, 4 > calcMofiAndMass(const S density) override
const S signedDistance(const PhysR< S, 3 > input) override
IndicatorEllipsoid3D< S > & getIndicator()
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
bool operator()(T output[], const S input[]) override
SmoothIndicatorEllipsoid3D(IndicatorEllipsoid3D< S > &ind, S epsilon, Vector< S, 3 > theta=Vector< S, 3 >(0., 0., 0.))
factorizable output smooth sphere in 3D with a tangiant or ramp epsilon sector
SmoothIndicatorFactoredCircle3D(Vector< S, 3 > center, S radius, S epsilon, S density=0, Vector< S, 3 > vel=Vector< S, 3 >(0., 0., 0.), S omega=0, S factor=1.)
bool operator()(T output[], const S input[]) override
Vector< S, 4 > calcMofiAndMass(const S density) override
implements a smooth sphere in 3D with an _epsilon sector
SmoothIndicatorSphere3D(IndicatorSphere3D< S > &ind, S epsilon)
const S signedDistance(const PhysR< S, 3 > input) override
IndicatorSphere3D< S > & getIndicator()
Vector< S, 4 > calcMofiAndMass(const S density) override
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
implements a smooth particle super-ellipsoid in 3D. The epsilon sector is currently missing.
SmoothIndicatorSuperEllipsoid3D(IndicatorSuperEllipsoid3D< S > &ind, S epsilon, Vector< S, 3 > theta=Vector< S, 3 >(0., 0., 0.))
const S signedDistance(const PhysR< S, 3 > input) override
IndicatorSuperEllipsoid3D< S > & getIndicator()
Vector< S, 3 > surfaceNormal(const Vector< S, 3 > &pos, const S meshSize) override
bool operator()(T output[], const S input[]) override
Vector< S, 4 > calcMofiAndMass(const S density) override
This file contains indicator functions.
Top level namespace for all of OpenLB.
Unit conversion handling – header file.
Input/Output in XML format – header file.