ESyS-Particle  2.3.4
RotThermFricInteraction.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 __ROTTHERMFRICTIONINTERACTION_H
14 #define __ROTTHERMFRICTIONINTERACTION_H
15 
16 // -- project includes --
18 #include "Model/RotThermParticle.h"
19 #include "Model/InteractionParam.h"
20 #include "Foundation/vec3.h"
21 #include "Model/IGParam.h"
22 
23 // -- I/O includes --
24 #include <iostream>
25 using std::ostream;
26 
27 
28 //double calc_angle( double , double ) ;
29 
30 
35 {
37 
39  const std::string &name,
40  double k,
41  double mu_d,
42  double mu_s,
43  double k_s,
44  double diffusivity,
45  double dt
46  );
47 
48  double k;
49  double mu_d; // sliding frictional coefficient
50  double mu_s; // max static frictional coefficient
51  double k_s;
52  double dt;
53  double diffusivity ;
54 
55  virtual std::string getTypeString() const
56  {
57  return "RotThermFriction";
58  }
59 
60  inline void setTimeStepSize(double deltaT)
61  {
62  dt = deltaT;
63  }
64 };
65 
70 {
71  public: // types
73 
75  typedef pair<bool,double> (CRotThermFrictionInteraction::* CheckedScalarFieldFunction)() const;
77 
79  static ScalarFieldFunction getScalarFieldFunction(const string&);
80  static VectorFieldFunction getVectorFieldFunction(const string&);
81 
82  inline void setTimeStepSize(double deltaT)
83  {
84  m_dt = deltaT;
85  }
86 // protected:
87  private:
88 
89  double m_k;
90  double m_r0;
91  double m_mu_d;
92  double m_mu_s;
93  double m_ks;
94  double m_dt;
101  double m_E_diss;
102  double m_diffusivity;
104  //Quaternion m_init_q1, m_init_q2;
105  //Vec3 m_init_pos1 , m_init_pos2;
106 
107  public:
111 
112  static string getType() {return "RotThermFriction";};
113 
114  virtual void calcForces();
115  void calcHeatFrict();
116  void calcHeatTrans();
117  virtual bool isPersistent();
118 
119  void calcNormalForce();
120  double getAbsForceDeficit()const;
121  double getPotentialEnergy()const;
122  double getSlipping()const;
123  double getTouching()const;
124  double getSticking()const;
125  double getDissipatedEnergy() const;
126  inline Vec3 getDs() {return m_ds;}
127  virtual Vec3 getPos() const {return m_cpos;}
128  Vec3 getForce() const;
129  Vec3 getNormalForce() const;
130 
131  friend ostream& operator<<(ostream&,const CRotThermFrictionInteraction&);
133 
134  // checkpointing
135  virtual void saveRestartData(std::ostream &oStream);
136  virtual void loadRestartData(std::istream &iStream);
137 };
138 
139 #endif //__ROTFRICTIONINTERACTION_H
CRotThermFrictionInteraction::setTimeStepSize
void setTimeStepSize(double deltaT)
Definition: RotThermFricInteraction.h:82
InteractionParam.h
CRotThermFrictionIGP::getTypeString
virtual std::string getTypeString() const
Definition: RotThermFricInteraction.h:55
CRotThermFrictionInteraction::getDs
Vec3 getDs()
Definition: RotThermFricInteraction.h:126
CRotThermFrictionInteraction::m_force_deficit
Vec3 m_force_deficit
difference between fric. force & force necessary for slip
Definition: RotThermFricInteraction.h:96
CRotThermFrictionInteraction::operator<<
friend ostream & operator<<(ostream &, const CRotThermFrictionInteraction &)
Definition: RotThermFricInteraction.cpp:540
TML_PackedMessageInterface
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:29
CRotThermFrictionInteraction::calcHeatFrict
void calcHeatFrict()
Definition: RotThermFricInteraction.cpp:353
CRotThermParticle::applyHeatFrict
void applyHeatFrict(const double)
Definition: RotThermParticle.cpp:522
CRotThermFrictionInteraction::getPos
virtual Vec3 getPos() const
Definition: RotThermFricInteraction.h:127
CRotThermFrictionInteraction::loadRestartData
virtual void loadRestartData(std::istream &iStream)
Definition: RotThermFricInteraction.cpp:519
CRotParticleVi::getAngVel_t
const Vec3 getAngVel_t() const
Definition: RotParticleVi.h:164
CRotThermFrictionIGP::k_s
double k_s
Definition: RotThermFricInteraction.h:51
CRotThermFrictionInteraction::m_normal_force
Vec3 m_normal_force
current normal force
Definition: RotThermFricInteraction.h:98
CRotThermFrictionInteraction::isPersistent
virtual bool isPersistent()
Definition: RotThermFricInteraction.cpp:231
CRotThermFrictionInteraction::getAbsForceDeficit
double getAbsForceDeficit() const
Definition: RotThermFricInteraction.cpp:242
CThermParticle::getTemperature
double getTemperature() const
Definition: ThermParticle.h:81
AInteraction::Count
double Count() const
Definition: Interaction.h:56
CRotThermFrictionIGP::mu_s
double mu_s
Definition: RotThermFricInteraction.h:50
CRotThermFrictionInteraction::calcForces
virtual void calcForces()
Definition: RotThermFricInteraction.cpp:118
dot
VEC3_INLINE double dot(const Vec3 &v1, const Vec3 &v2)
Definition: vec3.hpp:196
CRotThermFrictionInteraction::getDissipatedEnergy
double getDissipatedEnergy() const
Definition: RotThermFricInteraction.cpp:311
CRotThermFrictionInteraction::m_is_slipping
bool m_is_slipping
static/dynamic status of the interaction
Definition: RotThermFricInteraction.h:99
CRotThermParticle::applyHeatTrans
void applyHeatTrans(const double)
Definition: RotThermParticle.cpp:516
console.h
CRotThermFrictionInteraction::m_mu_d
double m_mu_d
coefficient of dynamic friction
Definition: RotThermFricInteraction.h:91
CRotThermFrictionIGP::diffusivity
double diffusivity
Definition: RotThermFricInteraction.h:53
CRotThermFrictionInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotThermFricInteraction.cpp:417
CRotThermFrictionInteraction::getForce
Vec3 getForce() const
Definition: RotThermFricInteraction.cpp:316
TML_PackedMessageInterface::pop_int
virtual int pop_int()=0
CRotThermFrictionInteraction::m_k
double m_k
spring constant
Definition: RotThermFricInteraction.h:89
CRotThermFrictionInteraction::getSticking
double getSticking() const
Definition: RotThermFricInteraction.cpp:302
cross
VEC3_INLINE Vec3 cross(const Vec3 &lhs, const Vec3 &rhs)
Definition: vec3.hpp:187
Vec3::norm
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
RotThermParticle.h
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
CRotThermFrictionIGP
Definition: RotThermFricInteraction.h:35
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
CRotThermFrictionInteraction::getNormalForce
Vec3 getNormalForce() const
Definition: RotThermFricInteraction.cpp:325
TML_PackedMessageInterface::pop_double
virtual double pop_double()=0
ARotThermPairInteraction
Definition: RotThermPairInteraction.h:24
RotThermFricInteraction.h
CRotThermFrictionInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotThermFricInteraction.cpp:381
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
NULL
#define NULL
Definition: t_list.h:17
CRotThermFrictionInteraction::m_dt
double m_dt
time step
Definition: RotThermFricInteraction.h:94
CRotThermFrictionInteraction::ParameterType
CRotThermFrictionIGP ParameterType
Definition: RotThermFricInteraction.h:72
CRotThermFrictionInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: RotThermFricInteraction.cpp:270
CRotThermFrictionInteraction::m_r0
double m_r0
equilibrium distance
Definition: RotThermFricInteraction.h:90
CRotThermFrictionInteraction
Definition: RotThermFricInteraction.h:70
CRotThermFrictionInteraction::m_Ffric
Vec3 m_Ffric
current frictional force
Definition: RotThermFricInteraction.h:95
CRotThermParticle
Definition: RotThermParticle.h:55
packed_message_interface.h
TML_PackedMessageInterface::append
virtual void append(int)=0
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
CRotThermFrictionInteraction::m_diffusivity
double m_diffusivity
thermal diffusivity
Definition: RotThermFricInteraction.h:102
CRotThermFrictionInteraction::calcNormalForce
void calcNormalForce()
Definition: RotThermFricInteraction.cpp:250
CRotThermFrictionInteraction::m_E_diss
double m_E_diss
dissipated energy
Definition: RotThermFricInteraction.h:101
CRotThermFrictionIGP::k
double k
Definition: RotThermFricInteraction.h:48
CRotThermFrictionInteraction::~CRotThermFrictionInteraction
virtual ~CRotThermFrictionInteraction()
Definition: RotThermFricInteraction.cpp:111
ARotThermPairInteraction::m_p1
CRotThermParticle * m_p1
Definition: RotThermPairInteraction.h:26
Vec3
Definition: vec3.h:47
CRotThermFrictionIGP::CRotThermFrictionIGP
CRotThermFrictionIGP()
Definition: RotThermFricInteraction.cpp:22
CParticle::getDo2dCalculations
static bool getDo2dCalculations()
Definition: Particle.h:181
CRotThermFrictionInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotThermFricInteraction.cpp:405
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CRotThermFrictionInteraction::m_cpos
Vec3 m_cpos
contact position
Definition: RotThermFricInteraction.h:97
CRotParticleVi::applyMoment
void applyMoment(const Vec3 &)
Definition: RotParticleVi.cpp:355
CRotThermFrictionIGP::dt
double dt
Definition: RotThermFricInteraction.h:52
CParticle::getVel
Vec3 getVel() const
Definition: Particle.h:114
CRotThermFrictionIGP::setTimeStepSize
void setTimeStepSize(double deltaT)
Definition: RotThermFricInteraction.h:60
vec3.h
ARotThermPairInteraction::m_p2
CRotThermParticle * m_p2
Definition: RotThermPairInteraction.h:26
CRotThermFrictionInteraction::getTouching
double getTouching() const
Definition: RotThermFricInteraction.cpp:292
CRotThermFrictionInteraction::m_mu_s
double m_mu_s
coefficient of static friction
Definition: RotThermFricInteraction.h:92
CRotThermFrictionInteraction::CheckedScalarFieldFunction
pair< bool, double >(CRotThermFrictionInteraction::* CheckedScalarFieldFunction)() const
Definition: RotThermFricInteraction.h:75
CRotThermFrictionInteraction::CRotThermFrictionInteraction
CRotThermFrictionInteraction()
Definition: RotThermFricInteraction.cpp:52
Vec3::norm2
VEC3_INLINE double norm2() const
Definition: vec3.hpp:218
CRotThermFrictionInteraction::getSlipping
double getSlipping() const
Definition: RotThermFricInteraction.cpp:282
CRotThermFrictionInteraction::ScalarFieldFunction
double(CRotThermFrictionInteraction::* ScalarFieldFunction)() const
Definition: RotThermFricInteraction.h:74
CRotThermFrictionInteraction::saveRestartData
virtual void saveRestartData(std::ostream &oStream)
Definition: RotThermFricInteraction.cpp:492
CBasicParticle::getID
int getID() const
Definition: BasicParticle.h:65
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
CRotThermFrictionInteraction::m_is_touching
bool m_is_touching
contact status of the interaction
Definition: RotThermFricInteraction.h:100
CRotThermFrictionInteraction::getType
static string getType()
Definition: RotThermFricInteraction.h:112
CRotThermFrictionInteraction::VectorFieldFunction
Vec3(CRotThermFrictionInteraction::* VectorFieldFunction)() const
Definition: RotThermFricInteraction.h:76
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
CRotThermFrictionInteraction::calcHeatTrans
void calcHeatTrans()
Definition: RotThermFricInteraction.cpp:335
RotThermPairInteraction.h
AInteraction::m_id
vector< int > m_id
id's of the particles involved
Definition: Interaction.h:39
CRotThermFrictionIGP::mu_d
double mu_d
Definition: RotThermFricInteraction.h:49
operator<<
ostream & operator<<(ostream &ost, const CRotThermFrictionInteraction &BI)
Definition: RotThermFricInteraction.cpp:540
IGParam.h
CRotThermFrictionInteraction::m_ds
Vec3 m_ds
tangitial displacement at this time step
Definition: RotThermFricInteraction.h:103
calc_angle
double calc_angle(double, double)
Definition: RotBondedInteraction.cpp:22
CRotThermFrictionInteraction::m_ks
double m_ks
shear stiffness (Cundall)
Definition: RotThermFricInteraction.h:93