24#ifndef PARTICLE_DYNAMICS_BASE_H
25#define PARTICLE_DYNAMICS_BASE_H
35template<
typename T,
typename PARTICLETYPE>
44 std::string
const&
getName()
const;
50template<
typename T,
typename PARTICLETYPE>
59template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
69template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
79template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
88template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
100template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
114template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
129template<
typename T,
typename PARTICLETYPE,
140 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _materialIndicator;
145template<
typename T,
typename PARTICLETYPE,
157 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _materialIndicator;
162template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
177template<
typename T,
typename PARTICLETYPE,
188 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _materialIndicator;
193template<
typename T,
typename PARTICLETYPE,
205 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _materialIndicator;
211template<
typename T,
typename PARTICLETYPE,
223 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _captureMaterialIndicator;
224 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _escapeMaterialIndicator;
229template<
typename T,
typename PARTICLETYPE,
242 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _captureMaterialIndicator;
243 std::shared_ptr<SuperIndicatorMaterial<T,PARTICLETYPE::d>> _escapeMaterialIndicator;
251template<
typename T,
typename PARTICLETYPE>
258 T tiltThreshold = 0.3*
M_PI );
277template<
typename T,
typename PARTICLETYPE>
294template<
typename T,
typename PARTICLETYPE,
typename DEPOSITION_MODEL>
305 DEPOSITION_MODEL& _depositionModel;
No particle dynamics equivalent to no lattice dynamics.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Processing step.
NoParticleDynamics(T rhoDummy)
Verlet dynamics for particles aware of their DYNAMIC_STATE.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
ParticleDetachmentDynamics(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, Vector< T, PARTICLETYPE::d > &mainFlowDirection, T tiltThreshold=0.3 *M_PI)
Constructor.
Velocity verlet particle dynamics with limitation of position and velocity by checking domain bounds ...
VerletParticleDynamicsCubicBoundsAdhesion(PhysR< T, PARTICLETYPE::d > &domainMin, PhysR< T, PARTICLETYPE::d > &domainMax)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Velocity verlet particle dynamics with deposition modelling by checking domain bounds in cartesion di...
VerletParticleDynamicsCubicBoundsDeposition(PhysR< T, PARTICLETYPE::d > &domainMin, PhysR< T, PARTICLETYPE::d > &domainMax, DEPOSITION_MODEL &depositionModel)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics with escape.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsEscape(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary)
Constructor.
Standard dynamics with wall capture and material number checks.
VerletParticleDynamicsMaterialAwareEscape(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > materialIndicator)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics with wall capture nd escape and material number checks.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsMaterialAwareWallCaptureAndEscape(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > captureMaterialIndicator, std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > escapeMaterialIndicator)
Constructor.
Standard dynamics with wall capture and material number checks.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsMaterialAwareWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > >)
Constructor.
Standard dynamics with material capture and escape.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsMaterialCaptureAndEscape(std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > captureMaterialIndicator, std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > escapeMaterialIndicator)
Constructor.
Standard dynamics with material capture.
VerletParticleDynamicsMaterialCapture(std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > >)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics with material capture.
VerletParticleDynamicsMaterialEscape(std::shared_ptr< SuperIndicatorMaterial< T, PARTICLETYPE::d > > materialIndicator)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Verlet particle dynamics only considering rotation (ignoring translation)
VerletParticleDynamicsRotationOnly()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsRotor(Vector< T, PARTICLETYPE::d > angVel)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Verlet particle dynamics only considering translation (ignoring rotation)
VerletParticleDynamicsTranslationOnly()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics with wall reflection.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsVelocityWallReflection(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary)
Constructor.
Standard dynamics with wall capture.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
VerletParticleDynamicsWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary)
Constructor.
Standard dynamics for particles.
VerletParticleDynamics()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Top level namespace for all of OpenLB.
std::conditional_t< D==2, SuperIndicatorMaterial2D< T >, SuperIndicatorMaterial3D< T > > SuperIndicatorMaterial
std::string & getName()
read and write access to name
virtual void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize)=0
Implementation of the processing step.
virtual ~ParticleDynamics()
Destructor: virtual to enable inheritance.