ESyS-Particle  2.3.4
RotThermParticle.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __ROTTHERMPARTICLE_H
14 #define __ROTTHERMPARTICLE_H
15 
16 // -- project includes --
17 #include "Foundation/vec3.h"
18 #include "Foundation/Matrix3.h"
19 #include "Model/ThermParticle.h"
20 #include "Foundation/Quaternion.h"
21 #include "Model/RotParticleVi.h"
22 
23 template <class T> class ParallelParticleArray;
24 class AMPISGBufferRoot;
25 class AMPIBuffer;
26 class AField;
27 
28 //--- MPIincludes ---
29 #include <mpi.h>
30 
31 //--- STL includes ---
32 #include <map>
33 #include <vector>
34 #include <utility>
35 #include <string>
36 
37 using std::map;
38 using std::vector;
39 using std::pair;
40 using std::string;
41 
42 namespace esys
43 {
44  namespace lsm
45  {
46  class SimpleParticleData;
47  }
48 }
49 
50 
55 {
56 
57  public: // types
58 
60  {
61  public:
63  : m_pos(),
64  m_initPos(),
65  m_vel(),
66  m_angVel(),
67  m_angVel_t(),
68  m_quat(),
69  m_temperature(),
71  {
72  }
73 
75  const Vec3 &pos,
76  const Vec3 &initPos,
77  const Vec3 &vel,
78  const Vec3 &AngVel,
79  const Vec3 &currAngVel,
80  const Quaternion &quat,
81  const double temperature,
82  const double temperature_ini
83  )
84  : m_pos(pos),
85  m_initPos(initPos),
86  m_vel(vel),
87  m_angVel(AngVel),
88  m_angVel_t(currAngVel),
89  m_quat(quat),
90  m_temperature(temperature),
91  m_temperature_ini(temperature_ini)
92  {
93  }
94  public:
101  double m_temperature ;
103 
105  };
106  typedef double (CRotThermParticle::* ScalarFieldFunction)() const;
108 
109 
110 
111 
112 
113 protected:
114 
115 // double m_tempa ;
116 // double m_Cp ;
117 // double m_density ;
118 // double m_heat_frict ;
119 // double m_heat_trans ;
120 
121 
122 public:
123 // static const CBasicParticle INVALID;
124 
127 
129 
130  CRotThermParticle(const CParticle &p);
131 
133  double rad,
134  double mass,
135  const Vec3& pos,
136  const Vec3& vel,
137  const Vec3& force,
138  int id,
139  bool is_dyn
140  );
141 
143  double rad,
144  double mass,
145  const Vec3& pos,
146  const Vec3& vel,
147  const Vec3& force,
148  int id,
149  Quaternion& quat,
150  double inertRot,
151  const Vec3& moment,
152  const Vec3& angvel,
153  const Vec3& angvel_t,
154  double temperature,
155  double temperature_ini,
156  double Cp,
157  double heat_frict,
158  double heat_trans,
159  double therm_expansion0,
160  double therm_expansion1,
161  double therm_expansion2
162  );
164  double rad,
165  double mass,
166  const Vec3& pos,
167  const Vec3& oldpos,
168  const Vec3& initpos,
169  const Vec3& vel,
170  const Vec3& force,
171  int id,
172  const Quaternion& quat,
173  const Quaternion& initquat,
174  double inertRot,
175  const Vec3& moment,
176  const Vec3& angvel,
177  const Vec3& angvel_t,
178  double temperature,
179  double temperature_ini,
180  double Cp,
181  double heat_frict,
182  double heat_trans,
183  double therm_expansion0,
184  double therm_expansion1,
185  double therm_expansion2
186 
187  );
188 
189 
191 
192  void applyHeatTrans(const double);
193  void applyHeatFrict(const double);
194  void integrateTherm(double);
195  void zeroHeat();
196  void thermExpansion() ;
197 
198  void integrate(double);
199  inline void setTemperature(double t){m_temperature=t; m_temperature_ini=t;} ;
200 // inline void setTemperatureIni(double t){m_temperature_ini=t;} ;
201  inline double get_y() {return m_pos.Y(); } ;
202  inline void setCp(double t) {m_Cp=t; } ;
203  inline void setThermExpansion0(double t) { m_therm_expansion0=t;} ;
204  inline void setThermExpansion1(double t) { m_therm_expansion1=t;} ;
205  inline void setThermExpansion2(double t) { m_therm_expansion2=t;} ;
206 
207  void setCircular(const Vec3& cv);
208 
211 
212 
213 
214  static ScalarFieldFunction getScalarFieldFunction(const string&);
215  static VectorFieldFunction getVectorFieldFunction(const string&);
216 
217  static map<string,AField*> generateFields(ParallelParticleArray<CRotThermParticle>*);
218 
219  friend ostream& operator<<(ostream&, const CRotThermParticle&);
220  void print(){cout << *this << endl << flush;};
221 
222 // virtual void saveCheckPointData(std::ostream& oStream);
223 // virtual void loadCheckPointData(std::istream& iStream);
224 
227 
228 
229  static void get_type() {cout <<" CRotThermParticle" ;};
231 
232  template <typename TmplVisitor>
233  void visit(TmplVisitor &visitor)
234  {
235  visitor.visitRotThermParticle(*this);
236  }
237 
238 };
239 
240 // ostream& operator<<(ostream&,const CRotThermParticle&);
241 
242 #endif //__ROTTHERMPARTICLE_H
CThermParticle::m_temperature
double m_temperature
Definition: ThermParticle.h:35
CRotThermParticle::setTemperature
void setTemperature(double t)
Definition: RotThermParticle.h:199
CRotThermParticle::generateFields
static map< string, AField * > generateFields(ParallelParticleArray< CRotThermParticle > *)
Definition: RotThermParticle.cpp:294
CRotParticleVi
Definition: RotParticleVi.h:53
CThermParticle::m_heat_frict
double m_heat_frict
Definition: ThermParticle.h:39
CRotParticleVi::m_moment
Vec3 m_moment
Angular velocity at time t.
Definition: RotParticleVi.h:104
CRotParticleVi::getAngVelNR
Vec3 getAngVelNR() const
Definition: RotParticleVi.h:166
CRotThermParticle::setCircular
void setCircular(const Vec3 &cv)
Definition: RotThermParticle.cpp:482
CBasicParticle::m_pos
Vec3 m_pos
position
Definition: BasicParticle.h:47
TML_PackedMessageInterface
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:29
CThermParticle::m_therm_expansion2
double m_therm_expansion2
Definition: ThermParticle.h:43
CRotThermParticle::exchangeType::m_angVel
Vec3 m_angVel
Definition: RotThermParticle.h:98
CRotThermParticle::applyHeatFrict
void applyHeatFrict(const double)
Definition: RotThermParticle.cpp:522
CParticle::getTotalDisplacement
Vec3 getTotalDisplacement() const
Definition: Particle.h:112
Quaternion::return_sca
QUATERNION_INLINE double return_sca() const
Definition: Quaternion.h:81
CRotThermParticle::VectorFieldFunction
Vec3(CRotThermParticle::* VectorFieldFunction)() const
Definition: RotThermParticle.h:107
CRotThermParticle::ScalarFieldFunction
double(CRotThermParticle::* ScalarFieldFunction)() const
Definition: RotThermParticle.h:106
CRotThermParticle::setCp
void setCp(double t)
Definition: RotThermParticle.h:202
CRotParticleVi::getKineticEnergy
double getKineticEnergy() const
Definition: RotParticleVi.h:201
CThermParticle::m_temperature_ini
double m_temperature_ini
Definition: ThermParticle.h:36
CThermParticle::getTemperature
double getTemperature() const
Definition: ThermParticle.h:81
CRotThermParticle::zeroHeat
void zeroHeat()
Definition: RotThermParticle.cpp:509
CRotThermParticle::exchangeType::m_quat
Quaternion m_quat
Definition: RotThermParticle.h:100
CParticle::getMass
double getMass() const
Definition: Particle.h:118
CBasicParticle::m_rad
double m_rad
radius
Definition: BasicParticle.h:48
CBasicParticle::m_global_id
int m_global_id
Definition: BasicParticle.h:49
CRotParticleVi::sigma_xx_2D
double sigma_xx_2D() const
Definition: RotParticleVi.h:231
CThermParticle::m_heat_trans
double m_heat_trans
Definition: ThermParticle.h:40
CRotThermParticle::applyHeatTrans
void applyHeatTrans(const double)
Definition: RotThermParticle.cpp:516
console.h
ThermParticle.h
CRotThermParticle::setThermExpansion1
void setThermExpansion1(double t)
Definition: RotThermParticle.h:204
CThermParticle::m_therm_expansion1
double m_therm_expansion1
Definition: ThermParticle.h:42
CRotThermParticle::thermExpansion
void thermExpansion()
Definition: RotThermParticle.cpp:540
CThermParticle::m_therm_expansion0
double m_therm_expansion0
Definition: ThermParticle.h:41
Matrix3.h
operator<<
ostream & operator<<(ostream &ost, const CRotThermParticle &CP)
Definition: RotThermParticle.cpp:570
CRotThermParticle::exchangeType::exchangeType
exchangeType()
Definition: RotThermParticle.h:62
AMPIBuffer
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:34
TML_PackedMessageInterface::pop_int
virtual int pop_int()=0
CParticle::getIDField
double getIDField() const
Definition: Particle.h:124
CRotThermParticle::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotThermParticle.cpp:411
CRotThermParticle::visit
void visit(TmplVisitor &visitor)
Definition: RotThermParticle.h:233
CRotParticleVi::integrate
void integrate(double)
Definition: RotParticleVi.cpp:260
CParticle::resetDisplacement
void resetDisplacement()
Definition: Particle.h:123
CRotThermParticle::exchangeType::m_temperature_ini
double m_temperature_ini
Definition: RotThermParticle.h:102
RotThermParticle.h
CRotParticleVi::sigma_yy_2D
double sigma_yy_2D() const
Definition: RotParticleVi.h:233
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
esys::lsm::SimpleParticleData
Definition: SimpleParticleData.h:28
esys
Definition: CheckPointable.cpp:17
CRotThermParticle::exchangeType::m_initPos
Vec3 m_initPos
Definition: RotThermParticle.h:96
CRotParticleVi::m_angVel_t
Vec3 m_angVel_t
Definition: RotParticleVi.h:103
CParticle::m_div_mass
double m_div_mass
Definition: Particle.h:91
ParallelParticleArray
parrallel particle storage array with neighborsearch and variable exchange
Definition: pp_array.h:75
CRotThermParticle::operator<<
friend ostream & operator<<(ostream &, const CRotThermParticle &)
Definition: RotThermParticle.cpp:570
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
CRotThermParticle::~CRotThermParticle
~CRotThermParticle()
Definition: RotThermParticle.h:190
CRotThermParticle::CRotThermParticle
CRotThermParticle()
Definition: RotThermParticle.cpp:21
CRotThermParticle::get_y
double get_y()
Definition: RotThermParticle.h:201
NULL
#define NULL
Definition: t_list.h:17
CParticle::getDisplacement
Vec3 getDisplacement() const
Definition: Particle.h:111
CThermParticle::m_rad_ini
double m_rad_ini
Definition: ThermParticle.h:44
CRotThermParticle::getDisplacement
Vec3 getDisplacement() const
Definition: RotThermParticle.h:209
Quaternion.h
CRotThermParticle::exchangeType::m_temperature
double m_temperature
Definition: RotThermParticle.h:101
CRotThermParticle::getExchangeValues
CRotThermParticle::exchangeType getExchangeValues()
Definition: RotThermParticle.cpp:303
CRotThermParticle
Definition: RotThermParticle.h:55
CRotParticleVi::m_initquat
Quaternion m_initquat
Definition: RotParticleVi.h:101
CParticle::m_force
Vec3 m_force
Definition: Particle.h:87
packed_message_interface.h
TML_PackedMessageInterface::pop_doubles
virtual void pop_doubles(double *, int)=0
CParticle::m_vel
Vec3 m_vel
Definition: Particle.h:87
TML_PackedMessageInterface::append
virtual void append(int)=0
CBasicParticle::m_tag
int m_tag
Definition: BasicParticle.h:50
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
CRotParticleVi::m_div_inertRot
double m_div_inertRot
Definition: RotParticleVi.h:106
CRotThermParticle::get_type
static void get_type()
Definition: RotThermParticle.h:229
CRotThermParticle::setThermExpansion0
void setThermExpansion0(double t)
Definition: RotThermParticle.h:203
CRotParticleVi::m_angVel
Vec3 m_angVel
Definition: RotParticleVi.h:102
CRotParticleVi::getAngVector
Vec3 getAngVector() const
Definition: RotParticleVi.cpp:493
CRotThermParticle::exchangeType::m_vel
Vec3 m_vel
Definition: RotThermParticle.h:97
RotParticleVi.h
CRotParticleVi::setCircular
void setCircular(const Vec3 &cv)
Definition: RotParticleVi.cpp:537
Quaternion
Definition: Quaternion.h:30
Vec3
Definition: vec3.h:47
CParticle::m_mass
double m_mass
Definition: Particle.h:91
CRotThermParticle::exchangeType::m_pos
Vec3 m_pos
Definition: RotThermParticle.h:95
CRotThermParticle::integrate
void integrate(double)
Definition: RotThermParticle.cpp:535
CRotThermParticle::integrateTherm
void integrateTherm(double)
Definition: RotThermParticle.cpp:530
CParticle::getVel
Vec3 getVel() const
Definition: Particle.h:114
CParticle::getForce
Vec3 getForce() const
Definition: Particle.h:120
vec3.h
CRotThermParticle::setThermExpansion2
void setThermExpansion2(double t)
Definition: RotThermParticle.h:205
CThermParticle::m_Cp
double m_Cp
Definition: ThermParticle.h:37
CRotThermParticle::exchangeType::m_angVel_t
Vec3 m_angVel_t
Definition: RotThermParticle.h:99
CParticle::sigma_d
double sigma_d() const
Definition: Particle.cpp:398
CRotThermParticle::setExchangeValues
void setExchangeValues(const CRotThermParticle::exchangeType &e)
Definition: RotThermParticle.cpp:323
CRotParticleVi::m_inertRot
double m_inertRot
Definition: RotParticleVi.h:105
CRotThermParticle::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotThermParticle.cpp:381
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
Quaternion::return_vec
QUATERNION_INLINE Vec3 return_vec() const
Definition: Quaternion.h:80
CRotParticleVi::m_quat
Quaternion m_quat
Definition: RotParticleVi.h:100
CRotThermParticle::exchangeType::exchangeType
exchangeType(const Vec3 &pos, const Vec3 &initPos, const Vec3 &vel, const Vec3 &AngVel, const Vec3 &currAngVel, const Quaternion &quat, const double temperature, const double temperature_ini)
Definition: RotThermParticle.h:74
CThermParticle::getCp
double getCp() const
Definition: ThermParticle.h:90
CRotThermParticle::resetDisplacement
void resetDisplacement()
Definition: RotThermParticle.h:210
CParticle::m_initpos
Vec3 m_initpos
position at time of construction
Definition: Particle.h:89
CParticle::m_oldpos
Vec3 m_oldpos
position at the time of last neighbor search
Definition: Particle.h:88
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
SimpleParticleData.h
CRotParticleVi::sigma_xy_2D
double sigma_xy_2D() const
Definition: RotParticleVi.h:232
CParticle
Class for a basic particle.
Definition: Particle.h:51
CRotThermParticle::exchangeType
Definition: RotThermParticle.h:60
CRotThermParticle::print
void print()
Definition: RotThermParticle.h:220
CThermParticle
Definition: ThermParticle.h:32
CParticle::m_circular_shift
Vec3 m_circular_shift
shift vector if particle is circular image
Definition: Particle.h:90
AMPISGBufferRoot
Abstract base class for scatter/gather buffer, root component.
Definition: mpisgbuf.h:29