ESyS-Particle  2.3.4
BondedInteraction.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 __BONDEDINTERACTION_H
14 #define __BONDEDINTERACTION_H
15 
16 // -- project includes --
17 #include "Model/IGParam.h" // keep this one first - it drags in mpi.h
18 #include "Model/Interaction.h"
19 #include "Model/Particle.h"
21 #include "Foundation/vec3.h"
22 
23 // -- I/O includes --
24 #include <iostream>
25 using std::ostream;
26 
27 // -- STL includes --
28 #include <utility>
29 
30 using std::pair;
31 
39 class CBondedIGP : public AIGParam
40 {
41 public:
42  CBondedIGP();
43 
44  CBondedIGP(const std::string &name, int tag, double normalK, double breakDistance, bool scaling=true);
45 
46  virtual std::string getTypeString() const
47  {
48  return "Bonded";
49  }
50 
51  double k;
52  double rbreak;
53  int tag;
54  bool m_scaling;
55 };
56 
65 {
66  public: // types
72 
73  typedef double (CBondedInteraction::* ScalarFieldFunction)() const;
74  typedef pair<bool,double> (CBondedInteraction::* CheckedScalarFieldFunction)() const;
76 
77  protected:
78  double m_k;
79  double m_r0;
80  double m_dist;
81  double m_break;
84  int m_tag;
85  bool m_scaling;
86 
88 
89  public:
92  CParticle *particle1,
93  CParticle *particle2,
94  const CBondedIGP &params
95  );
96 
97  virtual ~CBondedInteraction();
98 
99  static ScalarFieldFunction getScalarFieldFunction(const string&);
101  static VectorFieldFunction getVectorFieldFunction(const string&);
102 
103  static string getType() {return "Bonded";};
104 
105  virtual void calcForces();
106  void setBreak(double);
107  bool broken();
108 
109  inline int getTag() const {return m_tag;}
110  inline void setTag(int tag) {m_tag = tag;}
111 
112  double getCriterion() const;
113  double getPotentialEnergy() const;
114  double getStrain() const;
115  Vec3 getForce() const;
116 
117  virtual Vec3 getPos() const {return m_cpos;};
118  virtual void saveCheckPointData(std::ostream &oStream);
119 
120  friend ostream& operator<<(ostream&,const CBondedInteraction&);
122 
123  // save/load of restart parameters
124  virtual void saveRestartData(std::ostream &oStream);
125  virtual void loadRestartData(std::istream &iStream);
126 };
127 
128 #endif //__BONDEDINTERACTION_H
CBondedInteraction::m_dist
double m_dist
current distance, cached from last calcForces()
Definition: BondedInteraction.h:80
CBondedInteraction::setBreak
void setBreak(double)
Definition: BondedInteraction.cpp:118
CBondedInteraction::m_break
double m_break
breaking distance
Definition: BondedInteraction.h:81
CBondedInteraction::getTag
int getTag() const
Definition: BondedInteraction.h:109
APairInteraction
Abstract base class for 2-particle interactions.
Definition: Interaction.h:69
APairInteraction::m_p2
CParticle * m_p2
Definition: Interaction.h:71
TML_PackedMessageInterface
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:29
CBondedInteraction::m_scaling
bool m_scaling
scaling k with particle radius
Definition: BondedInteraction.h:85
CBondedInteraction::ScalarFieldFunction
double(CBondedInteraction::* ScalarFieldFunction)() const
Definition: BondedInteraction.h:73
CBondedInteraction
Elastic interaction between bonded particles.
Definition: BondedInteraction.h:65
CBondedInteraction::m_tag
int m_tag
Interaction tag;.
Definition: BondedInteraction.h:84
AInteraction::Count
double Count() const
Definition: Interaction.h:56
CBondedInteraction::getForce
Vec3 getForce() const
Definition: BondedInteraction.cpp:168
CBondedInteraction::setTag
void setTag(int tag)
Definition: BondedInteraction.h:110
console.h
CBondedInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: BondedInteraction.cpp:178
BondedInteraction.h
CBondedInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: BondedInteraction.cpp:203
CBondedInteraction::loadRestartData
virtual void loadRestartData(std::istream &iStream)
Definition: BondedInteraction.cpp:300
CBondedInteraction::m_k
double m_k
spring constant
Definition: BondedInteraction.h:78
CBondedInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: BondedInteraction.cpp:147
TML_PackedMessageInterface::pop_int
virtual int pop_int()=0
APairInteraction::m_p1
CParticle * m_p1
Definition: Interaction.h:71
CBondedInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: BondedInteraction.cpp:222
CBondedInteraction::operator<<
friend ostream & operator<<(ostream &, const CBondedInteraction &)
Definition: BondedInteraction.cpp:314
CBondedInteraction::calcForces
virtual void calcForces()
Definition: BondedInteraction.cpp:126
Interaction.h
operator<<
ostream & operator<<(ostream &ost, const CBondedInteraction &BI)
Definition: BondedInteraction.cpp:314
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
CParticle::setFlag
void setFlag(bool b=true)
Definition: Particle.h:140
CBondedInteraction::m_force
Vec3 m_force
current force, cached for E_pot calculation
Definition: BondedInteraction.h:82
CBondedInteraction::ParameterType
CBondedIGP ParameterType
Definition: BondedInteraction.h:67
TML_PackedMessageInterface::pop_double
virtual double pop_double()=0
BondedInteractionCpData.h
CBondedInteraction::m_r0
double m_r0
equilibrium distance
Definition: BondedInteraction.h:79
NULL
#define NULL
Definition: t_list.h:17
CBondedInteraction::broken
bool broken()
Definition: BondedInteraction.cpp:89
BondedInteractionCpData
Definition: BondedInteractionCpData.h:26
CBondedInteraction::getCriterion
double getCriterion() const
Definition: BondedInteraction.cpp:108
packed_message_interface.h
TML_PackedMessageInterface::append
virtual void append(int)=0
CBondedInteraction::getStrain
double getStrain() const
Definition: BondedInteraction.cpp:158
CBondedInteraction::CheckPointable
BondedInteractionCpData CheckPointable
Definition: BondedInteraction.h:71
Vec3
Definition: vec3.h:47
CParticle::getDo2dCalculations
static bool getDo2dCalculations()
Definition: Particle.h:181
CBondedIGP::CBondedIGP
CBondedIGP()
Definition: BondedInteraction.cpp:20
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CBondedInteraction::CBondedInteraction
CBondedInteraction()
Definition: BondedInteraction.cpp:33
vec3.h
CBondedIGP::m_scaling
bool m_scaling
Definition: BondedInteraction.h:54
BondedInteractionCpData::saveCheckPointData
virtual void saveCheckPointData(std::ostream &oStream)
Definition: BondedInteractionCpData.cpp:85
CBondedInteraction::CheckedScalarFieldFunction
pair< bool, double >(CBondedInteraction::* CheckedScalarFieldFunction)() const
Definition: BondedInteraction.h:74
CBondedIGP::tag
int tag
Definition: BondedInteraction.h:53
CBondedIGP::k
double k
Spring constant.
Definition: BondedInteraction.h:51
CBondedInteraction::m_cpos
Vec3 m_cpos
Definition: BondedInteraction.h:83
CBondedInteraction::getType
static string getType()
Definition: BondedInteraction.h:103
CBondedInteraction::getPos
virtual Vec3 getPos() const
Definition: BondedInteraction.h:117
CBondedIGP::getTypeString
virtual std::string getTypeString() const
Definition: BondedInteraction.h:46
CBondedInteraction::~CBondedInteraction
virtual ~CBondedInteraction()
Definition: BondedInteraction.cpp:85
CBondedIGP::rbreak
double rbreak
Breaking strain.
Definition: BondedInteraction.h:52
CBasicParticle::getID
int getID() const
Definition: BasicParticle.h:65
CBondedInteraction::saveRestartData
virtual void saveRestartData(std::ostream &oStream)
Definition: BondedInteraction.cpp:283
CBondedInteraction::saveCheckPointData
virtual void saveCheckPointData(std::ostream &oStream)
Definition: BondedInteraction.cpp:273
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
AInteraction::m_id
vector< int > m_id
id's of the particles involved
Definition: Interaction.h:39
CBondedIGP
Interaction parameters for bonded interaction.
Definition: BondedInteraction.h:40
CParticle
Class for a basic particle.
Definition: Particle.h:51
CBondedInteraction::VectorFieldFunction
Vec3(CBondedInteraction::* VectorFieldFunction)() const
Definition: BondedInteraction.h:75
IGParam.h
Particle.h