ESyS-Particle  2.2.2
RotBondedInteraction.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2013 by The University of Queensland //
4 // Earth Systems Science Computational Centre (ESSCC) //
5 // http://www.uq.edu.au/esscc //
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  );
56 
58  const std::string &name,
59  double youngsModulus,
60  double poissonsRatio,
61  double cohesion,
62  double tanAngle,
63  int tag,
64  bool AmeanR_scaling,
65  double truncated
66  );
67 
68  virtual std::string getTypeString() const
69  {
70  return "RotBonded";
71  }
72 
73  double kr,ks,kt,kb ;
75  int tag;
76  bool scaling;
78  double truncated;
79 };
80 
89 {
90  public: // types
92 
97 
98  typedef double (CRotBondedInteraction::* ScalarFieldFunction)() const;
99  typedef pair<bool,double> (CRotBondedInteraction::* CheckedScalarFieldFunction)() const;
101 
102  private:
103 
104  // protected:
105  double m_dist;
106 
107  double m_kr ;
108  double m_ks ;
109  double m_kb ;
110  double m_kt ;
111 
112  double m_max_nForce; // always >0
113  double m_max_shForce ;
114  double m_max_tMoment ;
115  double m_max_bMoment ;
116 
117  double m_nForce; // >0, pulling; <0 , compressing
118  double m_shForce ; // always >0
119  double m_tMoment ;
120  double m_bMoment ;
121 
124 
125  Vec3 m_cpos; // ?
127  int m_tag;
128  bool m_scaling;
130  double m_truncated;
131 
132  public:
133 
136  virtual ~CRotBondedInteraction();
137 
138  static ScalarFieldFunction getScalarFieldFunction(const string&);
140  static VectorFieldFunction getVectorFieldFunction(const string&);
141 
142  static string getType(){return "RotBonded";};
143 
144  int getTag() const;
145  void setTag(int tag);
146 
147  void calcForces();
148  //void setBreak(double);
149  bool broken();
150 
151  double getPotentialEnergy() const;
152  double getNormalPotentialEnergy() const;
153  double getShearPotentialEnergy() const;
154  double getTwistPotentialEnergy() const;
155  double getBendPotentialEnergy() const;
156  double getCriterion() const;
157  Vec3 getForce() const;
158  Vec3 getNormalForce() const;
159  Vec3 getTangentialForce() const;
160  virtual Vec3 getPos() const {return m_cpos;};
161 
162  Vec3 getCentrePtDiff() const;
164  Vec3 getInitialMidPoint() const;
165 
166  Vec3 getP2ShearForcePt() const;
167  Vec3 getP1ShearForcePt() const;
168  Vec3 getContactPoint() const;
169 
170  Vec3 getShearDiff() const;
171 
172  friend ostream& operator<<(ostream&,const CRotBondedInteraction&);
174 
175  virtual void saveCheckPointData(std::ostream &oStream);
176 
177  virtual void loadCheckPointData(std::istream &iStream);
178 
179  // save/load of restart parameters
180  virtual void saveRestartData(std::ostream &oStream);
181  virtual void loadRestartData(std::istream &iStream);
182 };
183 
184 #endif //__BONDEDINTERACTION_H
Class for a rotational particle.
Definition: RotParticle.h:53
Vec3(CRotBondedInteraction::* VectorFieldFunction)() const
Definition: RotBondedInteraction.h:100
bool broken()
Definition: RotBondedInteraction.cpp:225
Abstract base class interactions between 2 rotational particles.
Definition: RotPairInteraction.h:28
Definition: BondedInteractionCpData.h:25
int m_tag
Definition: RotBondedInteraction.h:127
double(CRotBondedInteraction::* ScalarFieldFunction)() const
Definition: RotBondedInteraction.h:98
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:585
virtual void loadRestartData(std::istream &iStream)
Definition: RotBondedInteraction.cpp:719
void calcForces()
Definition: RotBondedInteraction.cpp:357
Definition: vec3.h:46
double max_nForce
Definition: RotBondedInteraction.h:74
double m_kr
spring constant
Definition: RotBondedInteraction.h:107
double ks
Definition: RotBondedInteraction.h:73
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:28
Vec3 getTangentialForce() const
Definition: RotBondedInteraction.cpp:544
int getTag() const
Definition: RotBondedInteraction.cpp:206
double calc_angle(double s_in, double c_os)
Definition: RotBondedInteraction.cpp:22
Vec3 m_D
initial positions of the particles
Definition: RotBondedInteraction.h:126
double kt
Definition: RotBondedInteraction.h:73
double getNormalPotentialEnergy() const
Definition: RotBondedInteraction.cpp:512
double m_max_tMoment
Definition: RotBondedInteraction.h:114
bool meanR_scaling
Definition: RotBondedInteraction.h:77
Vec3 getP2ShearForcePt() const
Definition: RotBondedInteraction.cpp:296
double m_kb
Definition: RotBondedInteraction.h:109
CRotBondedInteraction()
Definition: RotBondedInteraction.cpp:130
double m_bMoment
Definition: RotBondedInteraction.h:120
virtual std::string getTypeString() const
Definition: RotBondedInteraction.h:68
double m_kt
Definition: RotBondedInteraction.h:110
double m_ks
Definition: RotBondedInteraction.h:108
double max_bMoment
Definition: RotBondedInteraction.h:74
double max_tMoment
Definition: RotBondedInteraction.h:74
void setTag(int tag)
Definition: RotBondedInteraction.cpp:211
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:554
Elastic interaction between bonded particles between rotational particles.
Definition: RotBondedInteraction.h:88
double getCriterion() const
Definition: RotBondedInteraction.cpp:271
double kr
Definition: RotBondedInteraction.h:73
virtual void saveCheckPointData(std::ostream &oStream)
Definition: RotBondedInteraction.cpp:618
BondedInteractionCpData CheckPointable
Definition: RotBondedInteraction.h:96
double getShearPotentialEnergy() const
Definition: RotBondedInteraction.cpp:517
double m_max_nForce
Definition: RotBondedInteraction.h:112
CRotBondedIGP()
Definition: RotBondedInteraction.cpp:53
Vec3 m_force
current force, cached for E_pot calculation
Definition: RotBondedInteraction.h:122
Vec3 getContactPoint() const
Definition: RotBondedInteraction.cpp:315
double m_nForce
Definition: RotBondedInteraction.h:117
virtual void loadCheckPointData(std::istream &iStream)
Definition: RotBondedInteraction.cpp:623
Vec3 m_moment
Definition: RotBondedInteraction.h:123
bool scaling
Definition: RotBondedInteraction.h:76
double max_shForce
Definition: RotBondedInteraction.h:74
bool m_scaling
Definition: RotBondedInteraction.h:128
friend ostream & operator<<(ostream &, const CRotBondedInteraction &)
Definition: RotBondedInteraction.cpp:741
Interaction parameters for bonded interaction between rotational particles.
Definition: RotBondedInteraction.h:37
double m_shForce
Definition: RotBondedInteraction.h:118
double m_tMoment
Definition: RotBondedInteraction.h:119
Vec3 getNormalForce() const
Definition: RotBondedInteraction.cpp:537
Vec3 getShearDiff() const
Definition: RotBondedInteraction.cpp:306
virtual void saveRestartData(std::ostream &oStream)
Definition: RotBondedInteraction.cpp:694
bool m_meanR_scaling
Definition: RotBondedInteraction.h:129
double getBendPotentialEnergy() const
Definition: RotBondedInteraction.cpp:527
Vec3 m_cpos
Definition: RotBondedInteraction.h:125
int tag
Definition: RotBondedInteraction.h:75
virtual Vec3 getPos() const
Definition: RotBondedInteraction.h:160
Vec3 getInitialMidPoint() const
Definition: RotBondedInteraction.cpp:289
Vec3 getCentrePtDiff() const
Definition: RotBondedInteraction.cpp:284
double m_max_bMoment
Definition: RotBondedInteraction.h:115
Vec3 getP1ShearForcePt() const
Definition: RotBondedInteraction.cpp:301
virtual ~CRotBondedInteraction()
Definition: RotBondedInteraction.cpp:216
static string getType()
Definition: RotBondedInteraction.h:142
double getPotentialEnergy() const
Definition: RotBondedInteraction.cpp:501
double getTwistPotentialEnergy() const
Definition: RotBondedInteraction.cpp:522
double kb
Definition: RotBondedInteraction.h:73
Vec3 getForce() const
Definition: RotBondedInteraction.cpp:532
pair< bool, double >(CRotBondedInteraction::* CheckedScalarFieldFunction)() const
Definition: RotBondedInteraction.h:99
double m_truncated
Definition: RotBondedInteraction.h:130
CRotBondedIGP ParameterType
Definition: RotBondedInteraction.h:91
double truncated
Definition: RotBondedInteraction.h:78
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotBondedInteraction.cpp:608
double m_max_shForce
Definition: RotBondedInteraction.h:113
Vec3 getInitialCentrePtDiff() const
Definition: RotBondedInteraction.cpp:279
double m_dist
current distance, cached from last calcForces()
Definition: RotBondedInteraction.h:105
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:28