24#ifndef BUOYANCYFORCE_3D_HH
25#define BUOYANCYFORCE_3D_HH
31#define M_PI 3.14159265358979323846
36template<
typename T,
template<
typename U>
class PARTICLETYPE,
typename DESCRIPTOR>
39 std::vector<T> direction, T g) :
41 _direction(direction), _g(g), _physDensity(converter.getPhysDensity() )
46 for (
int i = 0; i < 3; ++i) {
47 _direction[i] /= directionNorm;
51template<
typename T,
template<
typename U>
class PARTICLETYPE,
typename DESCRIPTOR>
53 typename std::deque<PARTICLETYPE<T> >::iterator p,
int pInt,
61 for (
int j = 0; j < 3; ++j) {
62 p->getForce()[j] -= factor * _direction[j];
void applyForce(typename std::deque< PARTICLETYPE< T > >::iterator p, int pInt, ParticleSystem3D< T, PARTICLETYPE > &psSys) override
BuoyancyForce3D(UnitConverter< T, DESCRIPTOR > const &converter, std::vector< T > direction, T g=9.81)
Prototype for all particle forces.
Conversion between physical and lattice units, as well as discretization.
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
cpu::simd::Pack< T > pow(cpu::simd::Pack< T > base, cpu::simd::Pack< T > exp)
Top level namespace for all of OpenLB.