17 #include "Foundation/Quaternion.h"
18 #include "Foundation/vec3.h"
19 #include "Foundation/Matrix3.h"
20 #include "Model/BasicParticle.h"
21 #include "Parallel/CheckPointable.h"
43 class SimpleParticleData;
81 typedef double (
CParticle::* ScalarFieldFunction)()
const;
91 double m_mass,m_div_mass;
96 void setForce(
const Vec3 &force) {m_force = force;}
110 inline void setInitPos(
const Vec3 &initPos) {
m_initpos = initPos;}
113 inline const Vec3 &getOldPos()
const {
return m_oldpos;};
114 inline Vec3 getVel()
const {
return m_vel;};
115 inline double getAbsVel()
const {
return m_vel.norm();};
116 inline void setVel(
const Vec3 &V){m_vel=V;};
117 inline void setMass(
double mass) {m_mass = mass; m_div_mass = 1.0/m_mass;}
118 inline double getMass()
const {
return m_mass;};
119 inline double getInvMass()
const {
return m_div_mass;};
120 inline Vec3 getForce()
const {
return m_force;};
124 double getIDField()
const {
return double(m_global_id);};
125 double getTagField()
const {
return double(getTag());};
128 virtual void integrateTherm(
double dt){}
130 virtual void zeroHeat() {}
131 virtual void thermExpansion() {}
136 virtual void setNonDynamic() {m_is_dynamic=
false;};
137 virtual void setNonDynamicLinear() {m_is_dynamic=
false;};
138 virtual void setNonDynamicRot(){};
140 void setFlag(
bool b=
true){flag=b;};
141 bool isFlagged()
const {
return flag;};
144 friend ostream& operator<<(ostream&,
const CParticle&);
145 void print(){cout << *
this << endl << flush;};
166 virtual void applyMoment(
const Vec3&){};
168 static void get_type() {cout <<
" CParticle" ;};
172 template <
typename TmplVisitor>
173 void visit(TmplVisitor &visitor)
175 visitor.visitParticle(*
this);
180 inline static void setDo2dCalculations(
bool do2dCalculations) {s_do2Calculations = do2dCalculations;}
181 inline static bool getDo2dCalculations() {
return s_do2Calculations;}
184 static bool s_do2Calculations;
192 #endif //__PARTICLE_H