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

#include <particleOperations3D.h>

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

Public Member Functions

 RandomTruncatedWalkOperation3D (T dT, T diffusivity, T n)
 
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::RandomTruncatedWalkOperation3D< T, PARTICLETYPE >

Definition at line 58 of file particleOperations3D.h.

Constructor & Destructor Documentation

◆ RandomTruncatedWalkOperation3D()

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

Definition at line 56 of file particleOperations3D.hh.

57 : _dT(dT),
58 _randomNormal( 0, util::sqrt(2.*diffusivity*dT), n )
59{ }
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::RandomTruncatedWalkOperation3D< T, PARTICLETYPE >::applyParticleOperation ( typename std::deque< PARTICLETYPE< T > >::iterator p,
ParticleSystem3D< T, PARTICLETYPE > & pSys )
overridevirtual

Implements olb::ParticleOperation3D< T, PARTICLETYPE >.

Definition at line 62 of file particleOperations3D.hh.

64{
65 T posOldArray[] { p->getPos()[0], p->getPos()[1], p->getPos()[2] };
66 T posIncrementArray0[] {0., 0., 0.};
67 T posIncrementArray1[] {0., 0., 0.};
68 T posIncrementArray2[] {0., 0., 0.};
69 _randomNormal(posIncrementArray0, posOldArray);
70 _randomNormal(posIncrementArray1, posOldArray);
71 _randomNormal(posIncrementArray2, posOldArray);
72 std::vector<T> posNew { posOldArray[0]+posIncrementArray0[0], posOldArray[1]+posIncrementArray1[0], posOldArray[2]+posIncrementArray2[0] };
73 p->setPos(posNew);
74 p->setVel({ (posNew[0]-posOldArray[0])/_dT, (posNew[1]-posOldArray[1])/_dT, (posNew[2]-posOldArray[2])/_dT });
75}

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