ESyS-Particle  2.3.4
HertzianViscoElasticInteraction.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 __HERTZIANVISCOELASTICINTERACTION_H
14 #define __HERTZIANVISCOELASTICINTERACTION_H
15 
16 #include "Model/IGParam.h"
17 #include "Model/Interaction.h"
18 #include "Model/Particle.h"
19 
20 
25 {
26 public:
27  double m_A;
28  double m_E;
29  double m_nu; // poisson ratio
30 
32  CHertzianViscoElasticIGP(const std::string&,double,double,double);
33 
34  virtual std::string getTypeString() const {return "HertzianViscoElastic";}
35 };
36 
45 {
46 public:
47 
48  typedef
50  typedef
52  typedef
53  pair<bool,double>
55 
56  static ScalarFieldFunction getScalarFieldFunction(const string&);
57  static VectorFieldFunction getVectorFieldFunction(const string&);
59  const string&
60  );
61 
62 private:
63  double m_A;
64  double m_E;
65  double m_nu;
66  Vec3 m_force; // caching force for E_pot
67  double m_dn; // caching displacement for E_pot
68  Vec3 m_cpos; // center position
69 
70 public:
72 
74  CParticle*,
75  CParticle*,
77  );
79 
80  virtual Vec3 getPos() const {return m_cpos;};
81  double getPotentialEnergy() const;
82 
83  virtual void calcForces();
84  Vec3 getForce() const;
85 };
86 #endif //__HERTZIANVISCOELASTICINTERACTION_H
CHertzianViscoElasticInteraction::ParameterType
CHertzianViscoElasticIGP ParameterType
Definition: HertzianViscoElasticInteraction.h:71
APairInteraction
Abstract base class for 2-particle interactions.
Definition: Interaction.h:69
APairInteraction::m_p2
CParticle * m_p2
Definition: Interaction.h:71
HertzianViscoElasticInteraction.h
CHertzianViscoElasticInteraction::m_cpos
Vec3 m_cpos
Definition: HertzianViscoElasticInteraction.h:68
CHertzianViscoElasticInteraction::~CHertzianViscoElasticInteraction
virtual ~CHertzianViscoElasticInteraction()
Definition: HertzianViscoElasticInteraction.h:78
CHertzianViscoElasticIGP
Interaction group parameters for Hertzian viscoelastic interactions.
Definition: HertzianViscoElasticInteraction.h:25
CHertzianViscoElasticIGP::m_nu
double m_nu
Definition: HertzianViscoElasticInteraction.h:29
CHertzianViscoElasticInteraction::m_A
double m_A
Damping constant.
Definition: HertzianViscoElasticInteraction.h:63
AInteraction::Count
double Count() const
Definition: Interaction.h:56
CHertzianViscoElasticInteraction::m_E
double m_E
Young's modulus.
Definition: HertzianViscoElasticInteraction.h:64
Vec3::unit
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225
CHertzianViscoElasticInteraction::ScalarFieldFunction
double(CHertzianViscoElasticInteraction::* ScalarFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:49
CHertzianViscoElasticInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:170
APairInteraction::m_p1
CParticle * m_p1
Definition: Interaction.h:71
Interaction.h
CHertzianViscoElasticInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: HertzianViscoElasticInteraction.cpp:114
Vec3::norm
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
CHertzianViscoElasticInteraction::calcForces
virtual void calcForces()
Definition: HertzianViscoElasticInteraction.cpp:66
CHertzianViscoElasticIGP::getTypeString
virtual std::string getTypeString() const
Definition: HertzianViscoElasticInteraction.h:34
CHertzianViscoElasticInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:126
NULL
#define NULL
Definition: t_list.h:17
CHertzianViscoElasticIGP::m_A
double m_A
Definition: HertzianViscoElasticInteraction.h:27
CHertzianViscoElasticInteraction::VectorFieldFunction
Vec3(CHertzianViscoElasticInteraction::* VectorFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:51
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
CHertzianViscoElasticInteraction::m_dn
double m_dn
Definition: HertzianViscoElasticInteraction.h:67
Vec3
Definition: vec3.h:47
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CParticle::getVel
Vec3 getVel() const
Definition: Particle.h:114
CHertzianViscoElasticInteraction::CheckedScalarFieldFunction
pair< bool, double >(CHertzianViscoElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:54
CHertzianViscoElasticInteraction::CHertzianViscoElasticInteraction
CHertzianViscoElasticInteraction(CParticle *, CParticle *, const CHertzianViscoElasticIGP &)
Definition: HertzianViscoElasticInteraction.cpp:48
CHertzianViscoElasticInteraction::getForce
Vec3 getForce() const
Definition: HertzianViscoElasticInteraction.cpp:106
CHertzianViscoElasticInteraction
Hertzian ViscoElastic Interaction between free particles.
Definition: HertzianViscoElasticInteraction.h:45
CHertzianViscoElasticInteraction::m_nu
double m_nu
Poisson ratio.
Definition: HertzianViscoElasticInteraction.h:65
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
CHertzianViscoElasticInteraction::m_force
Vec3 m_force
Definition: HertzianViscoElasticInteraction.h:66
CHertzianViscoElasticIGP::CHertzianViscoElasticIGP
CHertzianViscoElasticIGP()
default constructor
Definition: HertzianViscoElasticInteraction.cpp:26
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
CHertzianViscoElasticInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:150
CParticle
Class for a basic particle.
Definition: Particle.h:51
CHertzianViscoElasticIGP::m_E
double m_E
Definition: HertzianViscoElasticInteraction.h:28
IGParam.h
Particle.h
CHertzianViscoElasticInteraction::getPos
virtual Vec3 getPos() const
Definition: HertzianViscoElasticInteraction.h:80