ESyS-Particle  2.3
HertzianViscoElasticInteraction.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 __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
Vec3 m_force
Definition: HertzianViscoElasticInteraction.h:66
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:126
Definition: vec3.h:46
double(CHertzianViscoElasticInteraction::* ScalarFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:49
CHertzianViscoElasticIGP ParameterType
Definition: HertzianViscoElasticInteraction.h:71
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:28
Vec3 m_cpos
Definition: HertzianViscoElasticInteraction.h:68
double m_nu
Poisson ratio.
Definition: HertzianViscoElasticInteraction.h:65
Vec3 getForce() const
Definition: HertzianViscoElasticInteraction.cpp:106
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:170
double getPotentialEnergy() const
Definition: HertzianViscoElasticInteraction.cpp:114
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: HertzianViscoElasticInteraction.cpp:150
CHertzianViscoElasticIGP()
default constructor
Definition: HertzianViscoElasticInteraction.cpp:26
Vec3(CHertzianViscoElasticInteraction::* VectorFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:51
double m_E
Definition: HertzianViscoElasticInteraction.h:28
double m_nu
Definition: HertzianViscoElasticInteraction.h:29
double m_A
Damping constant.
Definition: HertzianViscoElasticInteraction.h:63
Hertzian ViscoElastic Interaction between free particles.
Definition: HertzianViscoElasticInteraction.h:44
virtual void calcForces()
Definition: HertzianViscoElasticInteraction.cpp:66
virtual std::string getTypeString() const
Definition: HertzianViscoElasticInteraction.h:34
double m_A
Definition: HertzianViscoElasticInteraction.h:27
double m_E
Young's modulus.
Definition: HertzianViscoElasticInteraction.h:64
pair< bool, double >(CHertzianViscoElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: HertzianViscoElasticInteraction.h:54
Interaction group parameters for Hertzian viscoelastic interactions.
Definition: HertzianViscoElasticInteraction.h:24
double m_dn
Definition: HertzianViscoElasticInteraction.h:67
Class for a basic particle.
Definition: Particle.h:50
Abstract base class for 2-particle interactions.
Definition: Interaction.h:68
CHertzianViscoElasticInteraction(CParticle *, CParticle *, const CHertzianViscoElasticIGP &)
Definition: HertzianViscoElasticInteraction.cpp:48
virtual Vec3 getPos() const
Definition: HertzianViscoElasticInteraction.h:80
virtual ~CHertzianViscoElasticInteraction()
Definition: HertzianViscoElasticInteraction.h:78