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 );
270template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
281template<
typename T,
typename PARTICLETYPE,
299template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
310template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
322template<
typename T,
typename PARTICLETYPE,
339template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
350template<
typename T,
typename PARTICLETYPE,
typename PCONDITION=conditions::active_particles>
361template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
374template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
391template<
typename T,
typename PARTICLETYPE,
bool useCubicBounds=
false,
422template<
typename T,
typename PARTICLETYPE>
439template<
typename T,
typename PARTICLETYPE,
typename DEPOSITION_MODEL>
450 DEPOSITION_MODEL& _depositionModel;
Standard dynamics with wall capture.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
AnalyticalParticleDynamicsTranslationOnlyMaterialAwareWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, SuperIndicatorMaterial< T, PARTICLETYPE::d > &materialIndicator)
Constructor.
Analytical particle dynamics only considering translation (ignoring rotation)
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
AnalyticalParticleDynamicsTranslationOnly()
Constructor.
Standard dynamics with wall capture.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
EulerParticleDynamicsMaterialAwareWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, SuperIndicatorMaterial< T, PARTICLETYPE::d > &materialIndicator)
Constructor.
Verlet particle dynamics only considering translation (ignoring rotation)
EulerParticleDynamicsTranslationOnly()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics for particles.
EulerParticleDynamics()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
EulerSpheroidParticleDynamicsMaterialAwareWallCapturePeriodic(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, SuperIndicatorMaterial< T, PARTICLETYPE::d > &materialIndicator, Vector< int, 3 > direction)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
EulerSpheroidParticleDynamicsMaterialAwareWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, SuperIndicatorMaterial< T, PARTICLETYPE::d > &materialIndicator)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
Standard dynamics for ELER particles with periodicity in given direction (infinite pipe flow applicat...
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
EulerSpheroidParticleDynamicsPeriodic(Vector< int, 3 > periodic_direction)
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
EulerSpheroidParticleDynamicsWallCapture(SolidBoundary< T, PARTICLETYPE::d > &solidBoundary)
Constructor.
Standard dynamics for ELER particles.
EulerSpheroidParticleDynamics()
Constructor.
void process(Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
Procesisng step.
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.