OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::RandomWalkOperation3D< T, PARTICLETYPE > Class Template Referencefinal

#include <particleOperations3D.h>

+ Inheritance diagram for olb::RandomWalkOperation3D< T, PARTICLETYPE >:
+ Collaboration diagram for olb::RandomWalkOperation3D< T, PARTICLETYPE >:

Public Member Functions

 RandomWalkOperation3D (T dT, T diffusivity)
 
virtual void applyParticleOperation (typename std::deque< PARTICLETYPE< T > >::iterator p, ParticleSystem3D< T, PARTICLETYPE > &pSys) override
 

Additional Inherited Members

- Protected Member Functions inherited from olb::ParticleOperation3D< T, PARTICLETYPE >
 ParticleOperation3D ()
 

Detailed Description

template<typename T, template< typename U > class PARTICLETYPE>
class olb::RandomWalkOperation3D< T, PARTICLETYPE >

Definition at line 48 of file particleOperations3D.h.

Constructor & Destructor Documentation

◆ RandomWalkOperation3D()

template<typename T , template< typename U > class PARTICLETYPE>
olb::RandomWalkOperation3D< T, PARTICLETYPE >::RandomWalkOperation3D ( T dT,
T diffusivity )

Definition at line 37 of file particleOperations3D.hh.

38 : _dT(dT),
39 _randomNormal( 0, util::sqrt(2.*diffusivity*dT) )
40{ }
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
Definition pack.h:100

Member Function Documentation

◆ applyParticleOperation()

template<typename T , template< typename U > class PARTICLETYPE>
void olb::RandomWalkOperation3D< T, PARTICLETYPE >::applyParticleOperation ( typename std::deque< PARTICLETYPE< T > >::iterator p,
ParticleSystem3D< T, PARTICLETYPE > & pSys )
overridevirtual

Implements olb::ParticleOperation3D< T, PARTICLETYPE >.

Definition at line 43 of file particleOperations3D.hh.

45{
46 T posOldArray[] { p->getPos()[0], p->getPos()[1], p->getPos()[2] };
47 T posIncrementArray[] {0., 0., 0.};
48 _randomNormal(posIncrementArray, posOldArray);
49 std::vector<T> posNew { posOldArray[0]+posIncrementArray[0], posOldArray[1]+posIncrementArray[1], posOldArray[2]+posIncrementArray[2] };
50 p->setPos(posNew);
51 p->setVel({ (posNew[0]-posOldArray[0])/_dT, (posNew[1]-posOldArray[1])/_dT, (posNew[2]-posOldArray[2])/_dT });
52}

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