OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION > Class Template Reference

Standard dynamics for particles. More...

#include <particleDynamicsBase.h>

+ Inheritance diagram for olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION >:
+ Collaboration diagram for olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION >:

Public Member Functions

 VerletParticleDynamics ()
 Constructor.
 
void process (Particle< T, PARTICLETYPE > &particle, T timeStepSize) override
 Procesisng step.
 
- Public Member Functions inherited from olb::particles::dynamics::ParticleDynamics< T, PARTICLETYPE >
virtual ~ParticleDynamics ()
 Destructor: virtual to enable inheritance.
 
std::string & getName ()
 read and write access to name
 
std::string const & getName () const
 read only access to name
 

Detailed Description

template<typename T, typename PARTICLETYPE, typename PCONDITION = conditions::active_particles>
class olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION >

Standard dynamics for particles.

Definition at line 60 of file particleDynamicsBase.h.

Constructor & Destructor Documentation

◆ VerletParticleDynamics()

template<typename T , typename PARTICLETYPE , typename PCONDITION >
olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION >::VerletParticleDynamics ( )

Constructor.

Definition at line 61 of file particleDynamicsBase.hh.

62{
63 this->getName() = "VerletParticleDynamics";
64}
std::string & getName()
read and write access to name

Member Function Documentation

◆ process()

template<typename T , typename PARTICLETYPE , typename PCONDITION >
void olb::particles::dynamics::VerletParticleDynamics< T, PARTICLETYPE, PCONDITION >::process ( Particle< T, PARTICLETYPE > & particle,
T timeStepSize )
overridevirtual

Procesisng step.

Implements olb::particles::dynamics::ParticleDynamics< T, PARTICLETYPE >.

Reimplemented in olb::particles::dynamics::VerletParticleDynamicsVelocityWallReflection< T, PARTICLETYPE, useCubicBounds, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsWallCapture< T, PARTICLETYPE, useCubicBounds, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsMaterialCapture< T, PARTICLETYPE, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsMaterialAwareWallCapture< T, PARTICLETYPE, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsEscape< T, PARTICLETYPE, useCubicBounds, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsMaterialEscape< T, PARTICLETYPE, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsMaterialAwareEscape< T, PARTICLETYPE, PCONDITION >, olb::particles::dynamics::VerletParticleDynamicsMaterialCaptureAndEscape< T, PARTICLETYPE, PCONDITION >, and olb::particles::dynamics::VerletParticleDynamicsMaterialAwareWallCaptureAndEscape< T, PARTICLETYPE, PCONDITION >.

Definition at line 67 of file particleDynamicsBase.hh.

69{
70 using namespace particles::access;
71 //Check for particle condition
72 doWhenMeetingCondition<T,PARTICLETYPE,PCONDITION>( particle,[&](){
73 //Calculate acceleration
74 auto acceleration = getAcceleration( particle );
75 //Check for angular components
76 if constexpr ( providesAngle<PARTICLETYPE>() ) {
77 //Calculate angular acceleration
78 auto angularAcceleration = getAngAcceleration( particle );
79 //Verlet algorithm
81 particle, timeStepSize, acceleration, angularAcceleration );
82 //Check if rotation matrix provided
83 if constexpr ( providesRotationMatrix<PARTICLETYPE>() ) {
84 //Update rotation matrix
85 updateRotationMatrix( particle );
86 }
87 }
88 else {
89 //Verlet algorithm without rotation
91 timeStepSize, timeStepSize*timeStepSize, acceleration );
92 }
93 }); //doWhenMeetingCondition<T,PARTICLETYPE,PCONDITION>
94}
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getAngAcceleration(Particle< T, PARTICLETYPE > particle)
Vector< T, PARTICLETYPE::d > getAcceleration(Particle< T, PARTICLETYPE > particle)
void velocityVerletTranslation(Particle< T, PARTICLETYPE > &particle, T delTime, T delTime2, Vector< T, PARTICLETYPE::d > acceleration)
void velocityVerletIntegration(Particle< T, PARTICLETYPE > &particle, T delTime, Vector< T, PARTICLETYPE::d > acceleration, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angularAcceleration)
void updateRotationMatrix(Particle< T, PARTICLETYPE > &particle)

References olb::particles::dynamics::updateRotationMatrix(), olb::particles::dynamics::velocityVerletIntegration(), and olb::particles::dynamics::velocityVerletTranslation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: