ESyS-Particle  2.3.2
RotBondedInteraction.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 __ROTBONDEDINTERACTION_H
14 #define __ROTBONDEDINTERACTION_H
15 
16 // -- project includes --
18 #include "Model/RotParticle.h"
20 #include "Model/IGParam.h"
21 #include "Foundation/vec3.h"
22 
23 // -- I/O includes --
24 #include <iostream>
25 using std::ostream;
26 
35  double calc_angle( double , double ) ;
36 
37 class CRotBondedIGP : public AIGParam
38 {
39 public:
40  CRotBondedIGP();
42  const std::string &name,
43  double kr,
44  double ks,
45  double kt,
46  double kb,
47  double max_nForce,
48  double max_shForce,
49  double max_tMoment,
50  double max_bMoment,
51  int tag,
52  bool scaling,
53  bool AmeanR_scaling,
54  double truncated,
55  double beta1,
56  double beta2
57  );
58 
60  const std::string &name,
61  double youngsModulus,
62  double poissonsRatio,
63  double cohesion,
64  double tanAngle,
65  int tag,
66  bool AmeanR_scaling,
67  double truncated,
68  double beta1,
69  double beta2
70  );
71 
72  virtual std::string getTypeString() const
73  {
74  return "RotBonded";
75  }
76 
77  double kr,ks,kt,kb ;
79  int tag;
80  bool scaling;
82  double truncated;
83  double beta1;
84  double beta2;
85 };
86 
95 {
96  public: // types
98 
103 
104  typedef double (CRotBondedInteraction::* ScalarFieldFunction)() const;
105  typedef pair<bool,double> (CRotBondedInteraction::* CheckedScalarFieldFunction)() const;
107 
108  private:
109 
110  // protected:
111  double m_dist;
112  double m_r0;
113 
114  double m_kr ;
115  double m_ks ;
116  double m_kb ;
117  double m_kt ;
118 
119  double m_max_nForce; // always >0
120  double m_max_shForce ;
121  double m_max_tMoment ;
122  double m_max_bMoment ;
123 
124  double m_nForce; // >0, pulling; <0 , compressing
125  double m_shForce ; // always >0
126  double m_tMoment ;
127  double m_bMoment ;
128 
131 
132  Vec3 m_cpos; // ?
134  int m_tag;
135  bool m_scaling;
137  double m_truncated;
138  double m_beta1;
139  double m_beta2;
140 
141  public:
142 
145  virtual ~CRotBondedInteraction();
146 
147  static ScalarFieldFunction getScalarFieldFunction(const string&);
149  static VectorFieldFunction getVectorFieldFunction(const string&);
150 
151  static string getType(){return "RotBonded";};
152 
153  int getTag() const;
154  void setTag(int tag);
155 
156  void calcForces();
157  //void setBreak(double);
158  bool broken();
159 
160  double getPotentialEnergy() const;
161  double getNormalPotentialEnergy() const;
162  double getShearPotentialEnergy() const;
163  double getTwistPotentialEnergy() const;
164  double getBendPotentialEnergy() const;
165  double getCriterion() const;
166  Vec3 getForce() const;
167  Vec3 getNormalForce() const;
168  Vec3 getTangentialForce() const;
169  virtual Vec3 getPos() const {return m_cpos;};
170 
171  Vec3 getCentrePtDiff() const;
173  Vec3 getInitialMidPoint() const;
174 
175  Vec3 getP2ShearForcePt() const;
176  Vec3 getP1ShearForcePt() const;
177  Vec3 getContactPoint() const;
178 
179  Vec3 getShearDiff() const;
180 
181  friend ostream& operator<<(ostream&,const CRotBondedInteraction&);
183 
184  virtual void saveCheckPointData(std::ostream &oStream);
185 
186  virtual void loadCheckPointData(std::istream &iStream);
187 
188  // save/load of restart parameters
189  virtual void saveRestartData(std::ostream &oStream);
190  virtual void loadRestartData(std::istream &iStream);
191 };
192 
193 #endif //__BONDEDINTERACTION_H
Class for a rotational particle.
Definition: RotParticle.h:53
bool broken()
Definition: RotBondedInteraction.cpp:240
Abstract base class interactions between 2 rotational particles.
Definition: RotPairInteraction.h:28
double m_beta2
Definition: RotBondedInteraction.h:139
Definition: BondedInteractionCpData.h:25
int m_tag
Definition: RotBondedInteraction.h:134
Vec3(CRotBondedInteraction::* VectorFieldFunction)() const
Definition: RotBondedInteraction.h:106
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:601
virtual void loadRestartData(std::istream &iStream)
Definition: RotBondedInteraction.cpp:741
void calcForces()
Definition: RotBondedInteraction.cpp:372
Definition: vec3.h:46
double max_nForce
Definition: RotBondedInteraction.h:78
double m_kr
spring constant
Definition: RotBondedInteraction.h:114
double ks
Definition: RotBondedInteraction.h:77
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:28
Vec3 getTangentialForce() const
Definition: RotBondedInteraction.cpp:560
int getTag() const
Definition: RotBondedInteraction.cpp:221
Vec3 m_D
initial positions of the particles
Definition: RotBondedInteraction.h:133
double kt
Definition: RotBondedInteraction.h:77
double getNormalPotentialEnergy() const
Definition: RotBondedInteraction.cpp:528
double m_max_tMoment
Definition: RotBondedInteraction.h:121
bool meanR_scaling
Definition: RotBondedInteraction.h:81
Vec3 getP2ShearForcePt() const
Definition: RotBondedInteraction.cpp:311
double m_kb
Definition: RotBondedInteraction.h:116
CRotBondedInteraction()
Definition: RotBondedInteraction.cpp:140
double m_bMoment
Definition: RotBondedInteraction.h:127
virtual std::string getTypeString() const
Definition: RotBondedInteraction.h:72
double m_kt
Definition: RotBondedInteraction.h:117
double m_ks
Definition: RotBondedInteraction.h:115
double max_bMoment
Definition: RotBondedInteraction.h:78
double max_tMoment
Definition: RotBondedInteraction.h:78
void setTag(int tag)
Definition: RotBondedInteraction.cpp:226
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:570
Elastic interaction between bonded particles between rotational particles.
Definition: RotBondedInteraction.h:94
double getCriterion() const
Definition: RotBondedInteraction.cpp:286
double kr
Definition: RotBondedInteraction.h:77
virtual void saveCheckPointData(std::ostream &oStream)
Definition: RotBondedInteraction.cpp:634
BondedInteractionCpData CheckPointable
Definition: RotBondedInteraction.h:102
double getShearPotentialEnergy() const
Definition: RotBondedInteraction.cpp:533
double m_max_nForce
Definition: RotBondedInteraction.h:119
CRotBondedIGP()
Definition: RotBondedInteraction.cpp:53
Vec3 m_force
current force, cached for E_pot calculation
Definition: RotBondedInteraction.h:129
Vec3 getContactPoint() const
Definition: RotBondedInteraction.cpp:330
double beta2
Definition: RotBondedInteraction.h:84
double m_nForce
Definition: RotBondedInteraction.h:124
double m_r0
equilibrium separation
Definition: RotBondedInteraction.h:112
virtual void loadCheckPointData(std::istream &iStream)
Definition: RotBondedInteraction.cpp:639
double beta1
Definition: RotBondedInteraction.h:83
Vec3 m_moment
Definition: RotBondedInteraction.h:130
bool scaling
Definition: RotBondedInteraction.h:80
double max_shForce
Definition: RotBondedInteraction.h:78
bool m_scaling
Definition: RotBondedInteraction.h:135
friend ostream & operator<<(ostream &, const CRotBondedInteraction &)
Definition: RotBondedInteraction.cpp:765
Interaction parameters for bonded interaction between rotational particles.
Definition: RotBondedInteraction.h:37
double m_shForce
Definition: RotBondedInteraction.h:125
double m_tMoment
Definition: RotBondedInteraction.h:126
Vec3 getNormalForce() const
Definition: RotBondedInteraction.cpp:553
Vec3 getShearDiff() const
Definition: RotBondedInteraction.cpp:321
virtual void saveRestartData(std::ostream &oStream)
Definition: RotBondedInteraction.cpp:714
bool m_meanR_scaling
Definition: RotBondedInteraction.h:136
double getBendPotentialEnergy() const
Definition: RotBondedInteraction.cpp:543
Vec3 m_cpos
Definition: RotBondedInteraction.h:132
int tag
Definition: RotBondedInteraction.h:79
virtual Vec3 getPos() const
Definition: RotBondedInteraction.h:169
Vec3 getInitialMidPoint() const
Definition: RotBondedInteraction.cpp:304
Vec3 getCentrePtDiff() const
Definition: RotBondedInteraction.cpp:299
double m_max_bMoment
Definition: RotBondedInteraction.h:122
Vec3 getP1ShearForcePt() const
Definition: RotBondedInteraction.cpp:316
virtual ~CRotBondedInteraction()
Definition: RotBondedInteraction.cpp:231
static string getType()
Definition: RotBondedInteraction.h:151
double getPotentialEnergy() const
Definition: RotBondedInteraction.cpp:517
pair< bool, double >(CRotBondedInteraction::* CheckedScalarFieldFunction)() const
Definition: RotBondedInteraction.h:105
double getTwistPotentialEnergy() const
Definition: RotBondedInteraction.cpp:538
double(CRotBondedInteraction::* ScalarFieldFunction)() const
Definition: RotBondedInteraction.h:104
double kb
Definition: RotBondedInteraction.h:77
Vec3 getForce() const
Definition: RotBondedInteraction.cpp:548
double calc_angle(double, double)
Definition: RotBondedInteraction.cpp:22
double m_truncated
Definition: RotBondedInteraction.h:137
CRotBondedIGP ParameterType
Definition: RotBondedInteraction.h:97
double truncated
Definition: RotBondedInteraction.h:82
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:624
double m_beta1
Definition: RotBondedInteraction.h:138
double m_max_shForce
Definition: RotBondedInteraction.h:120
Vec3 getInitialCentrePtDiff() const
Definition: RotBondedInteraction.cpp:294
double m_dist
current distance, cached from last calcForces()
Definition: RotBondedInteraction.h:111
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:28