ESyS-Particle  2.3
RotThermElasticInteraction.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __ROTTHERMELASTICINTERACTION_H
14 #define __ROTTHERMELASTICINTERACTION_H
15 
17 #include "Model/RotThermParticle.h"
18 #include "Model/IGParam.h"
19 
24 {
25  protected:
26  public:
28 
30  const std::string &name,
31  double normalK,
32  double diffusivity
33  );
34 
35  double m_kr;
36  double diffusivity ;
37 
38  virtual void packInto(CVarMPIBuffer*) const;
39  void setSpringConst(double k){m_kr=k;};
40  double getSpringConst() const{return m_kr;};
41 
42 
43  void setDiffusivity(double d){diffusivity = d;};
44  double getDiffusivity() const{return diffusivity ; };
45 
46 
47  friend ostream& operator<<(ostream&,const CRotThermElasticIGP&);
48 
49  virtual std::string getTypeString() const
50  {
51  return "RotThermElastic";
52  }
53 };
54 
57 
62 {
63 public:
64  typedef double (CRotThermElasticInteraction::* ScalarFieldFunction)() const;
65  typedef pair<bool,double> (CRotThermElasticInteraction::* CheckedScalarFieldFunction)() const;
67 
68  static ScalarFieldFunction getScalarFieldFunction(const string&);
70  static VectorFieldFunction getVectorFieldFunction(const string&);
71 
72 private:
73  double m_kr;
75  double m_nForce;
78  double m_diffusivity;
79 
80 public:
82 
86 
87  virtual Vec3 getPos() const {return m_cpos;};
88 
89  static string getType(){return "RotThermElastic";}
90 
91  virtual void calcForces();
92  void calcHeatTrans() ;
93 // void calcHeatFrict(){} ;
94 
95  Vec3 getForce() const;
96  double getPotentialEnergy() const;
97 //26/Mar added
98  Vec3 getBondedVector() const ;
99 
100  friend ostream& operator<<(ostream&,const CRotThermElasticInteraction&);
101 
102  // save/load of restart parameters
103  virtual void saveRestartData(std::ostream &oStream);
104  virtual void loadRestartData(std::istream &iStream);
105 };
106 #endif //__ELASTICINTERACTION_H
Vec3 getForce() const
Definition: RotThermElasticInteraction.cpp:77
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotThermElasticInteraction.cpp:196
static string getType()
Definition: RotThermElasticInteraction.h:89
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotThermElasticInteraction.cpp:182
double(CRotThermElasticInteraction::* ScalarFieldFunction)() const
Definition: RotThermElasticInteraction.h:64
Definition: RotThermParticle.h:54
Definition: vec3.h:46
double m_kr
Definition: RotThermElasticInteraction.h:35
double diffusivity
Definition: RotThermElasticInteraction.h:36
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:28
CRotThermElasticIGP()
Definition: RotThermElasticInteraction.cpp:17
double m_nForce
normal force, always >= 0
Definition: RotThermElasticInteraction.h:75
Vec3(CRotThermElasticInteraction::* VectorFieldFunction)() const
Definition: RotThermElasticInteraction.h:66
double getSpringConst() const
Definition: RotThermElasticInteraction.h:40
double m_diffusivity
thermal diffusivity
Definition: RotThermElasticInteraction.h:78
double getDiffusivity() const
Definition: RotThermElasticInteraction.h:44
friend ostream & operator<<(ostream &, const CRotThermElasticInteraction &)
Definition: RotThermElasticInteraction.cpp:240
CRotThermElasticIGP * extractRotThermElasticIGP(AMPIBuffer *)
Definition: RotThermElasticInteractionGroup.cpp:27
virtual std::string getTypeString() const
Definition: RotThermElasticInteraction.h:49
Definition: RotThermPairInteraction.h:23
void setDiffusivity(double d)
Definition: RotThermElasticInteraction.h:43
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotThermElasticInteraction.cpp:160
CRotThermElasticIGP * extractRotThermElasticIGP_p(AMPIBuffer *)
Definition: RotThermElasticInteractionGroup.cpp:40
virtual void loadRestartData(std::istream &iStream)
Definition: RotThermElasticInteraction.cpp:230
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:33
virtual void saveRestartData(std::ostream &oStream)
Definition: RotThermElasticInteraction.cpp:215
virtual Vec3 getPos() const
Definition: RotThermElasticInteraction.h:87
virtual void calcForces()
Definition: RotThermElasticInteraction.cpp:96
pair< bool, double >(CRotThermElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: RotThermElasticInteraction.h:65
virtual void packInto(CVarMPIBuffer *) const
Definition: RotThermElasticInteractionGroup.cpp:20
void setSpringConst(double k)
Definition: RotThermElasticInteraction.h:39
CRotThermElasticInteraction()
Definition: RotThermElasticInteraction.cpp:35
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:34
friend ostream & operator<<(ostream &, const CRotThermElasticIGP &)
Definition: RotThermElasticInteractionGroup.cpp:49
void calcHeatTrans()
Definition: RotThermElasticInteraction.cpp:131
double m_kr
spring constant
Definition: RotThermElasticInteraction.h:73
virtual ~CRotThermElasticInteraction()
Definition: RotThermElasticInteraction.h:85
CRotThermElasticIGP ParameterType
Definition: RotThermElasticInteraction.h:81
Vec3 m_force
caching force for E_pot
Definition: RotThermElasticInteraction.h:74
Definition: RotThermElasticInteraction.h:61
Vec3 m_cpos
current position
Definition: RotThermElasticInteraction.h:76
Vec3 m_D
initial positions of the particles
Definition: RotThermElasticInteraction.h:77
double getPotentialEnergy() const
Definition: RotThermElasticInteraction.cpp:148
Definition: RotThermElasticInteraction.h:23