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

#include <magneticForceForMagP3D.h>

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

Public Member Functions

 MagneticForceForMagP3D (AnalyticalF< 3, T, T > &getMagForce, AnalyticalF< 3, T, T > &getMagField, T scale=T(1.))
 
 ~MagneticForceForMagP3D () override
 
void applyForce (typename std::deque< PARTICLETYPE< T > >::iterator p, int pInt, ParticleSystem3D< T, PARTICLETYPE > &psSys) override
 
- Public Member Functions inherited from olb::Force3D< T, PARTICLETYPE >
 Force3D ()
 
 Force3D (Force3D< T, PARTICLETYPE > &)
 
 Force3D (const Force3D< T, PARTICLETYPE > &)
 
virtual ~Force3D ()
 

Additional Inherited Members

- Protected Attributes inherited from olb::Force3D< T, PARTICLETYPE >
OstreamManager clout
 

Detailed Description

template<typename T, template< typename U > class PARTICLETYPE, typename DESCRIPTOR>
class olb::MagneticForceForMagP3D< T, PARTICLETYPE, DESCRIPTOR >

Definition at line 48 of file magneticForceForMagP3D.h.

Constructor & Destructor Documentation

◆ MagneticForceForMagP3D()

template<typename T , template< typename U > class PARTICLETYPE, typename DESCRIPTOR >
olb::MagneticForceForMagP3D< T, PARTICLETYPE, DESCRIPTOR >::MagneticForceForMagP3D ( AnalyticalF< 3, T, T > & getMagForce,
AnalyticalF< 3, T, T > & getMagField,
T scale = T(1.) )

Definition at line 43 of file magneticForceForMagP3D.hh.

44 :
45 Force3D<T, PARTICLETYPE>(), _getMagForce(getMagForce), _getMagField(getMagField), _scale(scale)
46{ }

◆ ~MagneticForceForMagP3D()

template<typename T , template< typename U > class PARTICLETYPE, typename DESCRIPTOR >
olb::MagneticForceForMagP3D< T, PARTICLETYPE, DESCRIPTOR >::~MagneticForceForMagP3D ( )
inlineoverride

Definition at line 53 of file magneticForceForMagP3D.h.

53{};

Member Function Documentation

◆ applyForce()

template<typename T , template< typename U > class PARTICLETYPE, typename DESCRIPTOR >
void olb::MagneticForceForMagP3D< T, PARTICLETYPE, DESCRIPTOR >::applyForce ( typename std::deque< PARTICLETYPE< T > >::iterator p,
int pInt,
ParticleSystem3D< T, PARTICLETYPE > & psSys )
overridevirtual

Implements olb::Force3D< T, PARTICLETYPE >.

Definition at line 49 of file magneticForceForMagP3D.hh.

52{
53
54 T m_p = p->getMagnetisation();
55 T mu_0 = 4 * 3.14159265e-7;
56 T mu_i = 4. / 3.*M_PI * util::pow(p->getRad(), 3) * m_p; // norm mag. dipole moment
57
58 T pos[3] = { T(), T(), T() };
59 pos[0] = p->getPos()[0];
60 pos[1] = p->getPos()[1];
61 pos[2] = p->getPos()[2];
62
63 T forceHelp[3] = { T(), T(), T() };
64 _getMagForce(forceHelp, pos);
65 T fieldHelp[3] = { T(), T(), T() };
66 _getMagField(fieldHelp, pos);
67
68 Vector<T, 3> dMom(p->getMoment()); // orientation vector mag. dipole moment
69 dMom *= mu_i; // vector mag. dipole moment
70
71 Vector<T, 3> fieldVec(fieldHelp); // H-Field
72 Vector<T, 3> trq = crossProduct3D(dMom, fieldVec); // T = mu_0 mu x H
73 trq *= mu_0;
74
75 p->getTorque()[0] += trq[0];
76 p->getTorque()[1] += trq[1];
77 p->getTorque()[2] += trq[2];
78 p->getForce()[0] += forceHelp[0] * _scale;
79 p->getForce()[1] += forceHelp[1] * _scale;
80 p->getForce()[2] += forceHelp[2] * _scale;
81
82}
#define M_PI
cpu::simd::Pack< T > pow(cpu::simd::Pack< T > base, cpu::simd::Pack< T > exp)
Definition pack.h:112
constexpr Vector< T, 3 > crossProduct3D(const ScalarVector< T, 3, IMPL > &a, const ScalarVector< T, 3, IMPL_ > &b) any_platform
Definition vector.h:224

References olb::crossProduct3D(), M_PI, and olb::util::pow().

+ Here is the call graph for this function:

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