13 #include "spdlog/spdlog.h"
27 std::array<double, 3>
x{};
32 std::array<double, 3>
v{};
37 std::array<double, 3>
f{};
112 std::array<double, 3> x_arg, std::array<double, 3> v_arg,
double m_arg,
int type = 0,
double epsilon_arg = 5,
double sigma_arg = 1);
174 void initializeForceAccumulator(
int numberThreads);
182 void addForceToAccumulator(std::array<double, 3>&
force,
int threadId);
190 void subForceFromAccumulator(std::array<double, 3>&
force,
int threadId);
200 [[nodiscard]]
const std::array<double, 3> &
getX()
const;
202 [[nodiscard]]
const std::array<double, 3> &
getV()
const;
204 [[nodiscard]]
const std::array<double, 3> &
getF()
const;
206 [[nodiscard]]
const std::array<double, 3> &
getOldF()
const;
208 [[nodiscard]]
double getM()
const;
210 [[nodiscard]]
int getType()
const;
214 [[nodiscard]]
double getSigma()
const;
216 [[nodiscard]]
int getId()
const;
224 [[nodiscard]]
bool isFixed()
const;
226 void setOldF(
const std::array<double, 3> &oldF);
228 void setF(
const std::array<double, 3> &
f);
230 void setX(
const std::array<double, 3> &
x);
232 void setV(
const std::array<double, 3> &
v);
std::ostream & operator<<(std::ostream &stream, Particle &p)
Definition: Particle.cpp:199
Definition: Particle.h:16
void setF(const std::array< double, 3 > &f)
Definition: Particle.cpp:158
std::array< double, 3 > x
Definition: Particle.h:27
std::vector< std::array< double, 3 > > forceAccumulator
Definition: Particle.h:100
bool isFixed() const
Definition: Particle.cpp:150
double epsilon
Definition: Particle.h:58
std::array< double, 3 > v
Definition: Particle.h:32
std::vector< int > diagonalNeighbors
Definition: Particle.h:85
bool isDirectNeighbor(Particle &neighbor)
Check, if particle neighbor is a direct neighbor of this particle.
Definition: Particle.cpp:67
double getSigma() const
Definition: Particle.cpp:130
bool isMarked() const
Definition: Particle.cpp:138
const std::array< double, 3 > & getOldF() const
Definition: Particle.cpp:120
bool fixed
Definition: Particle.h:90
int type
Definition: Particle.h:53
void addDirectNeighbor(int idToAdd)
Definition: Particle.cpp:59
std::vector< bool > forceMarker
Definition: Particle.h:95
std::string toString() const
Definition: Particle.cpp:182
int getId() const
Definition: Particle.cpp:134
std::vector< int > directNeighbors
Definition: Particle.h:80
int id
Definition: Particle.h:75
std::vector< int > & getDiagonalNeighbors()
Definition: Particle.cpp:146
std::vector< int > & getDirectNeighbors()
Definition: Particle.cpp:142
void setMarked(bool status)
Definition: Particle.cpp:174
bool operator==(Particle &other) const
Definition: Particle.cpp:193
const std::array< double, 3 > & getF() const
Definition: Particle.cpp:118
std::array< double, 3 > f
Definition: Particle.h:37
double calculateEKinFlow(std::array< double, 3 > &avgVelocity) const
Calculate the current kinetic energy of the particle within a flow simulation.
Definition: Particle.cpp:54
int getType() const
Definition: Particle.cpp:124
Particle(int type=0)
Definition: Particle.cpp:14
static int nextId
Definition: Particle.h:22
static void resetID()
Reset Id for testing purposes.
Definition: Particle.cpp:189
std::array< double, 3 > old_f
Definition: Particle.h:42
void resetForce()
Set force to oldForce and set force to 0.
Definition: Particle.cpp:45
void setOldF(const std::array< double, 3 > &oldF)
Definition: Particle.cpp:154
double getM() const
Definition: Particle.cpp:122
double sigma
Definition: Particle.h:64
double calculateEKin() const
Calculate the current kinetic energy of the particle.
Definition: Particle.cpp:50
void setX(const std::array< double, 3 > &x)
Definition: Particle.cpp:162
void setV(const std::array< double, 3 > &v)
Definition: Particle.cpp:166
double getEpsilon() const
Definition: Particle.cpp:126
virtual ~Particle()
Definition: Particle.cpp:82
bool isDiagonalNeighbor(Particle &neighbor)
Check, if particle neighbor is a diagonal neighbor of this particle.
Definition: Particle.cpp:74
void setFixed(bool status)
Definition: Particle.cpp:178
const std::array< double, 3 > & getX() const
Definition: Particle.cpp:114
void setType(int type)
Definition: Particle.cpp:170
bool marked
Definition: Particle.h:70
void addDiagonalNeighbor(int idToAdd)
Definition: Particle.cpp:63
double m
Definition: Particle.h:47
const std::array< double, 3 > & getV() const
Definition: Particle.cpp:116
Enumeration class corresponding to the force schema type.
Definition: ConfigurationFile.h:6026
Enumeration class corresponding to the type schema type.
Definition: vtk-unstructured.h:2287
::xsd::cxx::tree::string< char, simple_type > string
C++ type corresponding to the string XML Schema built-in type.
Definition: vtk-unstructured.h:270