ESyS-Particle  2.3.4
HertzianElasticInteraction.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 __HERTZIANELASTICINTERACTION_H
14 #define __HERTZIANELASTICINTERACTION_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_E;
28  double m_nu; // poisson ratio
29 
31  CHertzianElasticIGP(const std::string&,double,double);
32 
33  virtual std::string getTypeString() const {return "HertzianElastic";}
34 };
35 
44 {
45 public:
46 
47  typedef double (CHertzianElasticInteraction::* ScalarFieldFunction)() const;
49  typedef pair<bool,double> (CHertzianElasticInteraction::* CheckedScalarFieldFunction)() const;
50 
51  static ScalarFieldFunction getScalarFieldFunction(const string&);
52  static VectorFieldFunction getVectorFieldFunction(const string&);
54 
55 private:
56  double m_E;
57  double m_nu;
58  Vec3 m_force; // caching force for E_pot
59  double m_dn; // caching displacement for E_pot
60  Vec3 m_cpos; // center position
61 
62 public:
64 
67 
68  virtual Vec3 getPos() const {return m_cpos;};
69  double getPotentialEnergy() const;
70 
71  virtual void calcForces();
72  Vec3 getForce() const;
73 };
74 #endif //__HERTZIANELASTICINTERACTION_H
CHertzianElasticIGP::CHertzianElasticIGP
CHertzianElasticIGP()
default constructor
Definition: HertzianElasticInteraction.cpp:21
CHertzianElasticInteraction::CheckedScalarFieldFunction
pair< bool, double >(CHertzianElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: HertzianElasticInteraction.h:49
APairInteraction
Abstract base class for 2-particle interactions.
Definition: Interaction.h:69
CHertzianElasticInteraction
Hertzian Elastic Interaction between free particles.
Definition: HertzianElasticInteraction.h:44
APairInteraction::m_p2
CParticle * m_p2
Definition: Interaction.h:71
CHertzianElasticInteraction::getForce
Vec3 getForce() const
Definition: HertzianElasticInteraction.cpp:72
CHertzianElasticInteraction::m_dn
double m_dn
Definition: HertzianElasticInteraction.h:59
AInteraction::Count
double Count() const
Definition: Interaction.h:56
HertzianElasticInteraction.h
CHertzianElasticIGP::m_E
double m_E
Definition: HertzianElasticInteraction.h:27
Vec3::unit
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225
CHertzianElasticInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: HertzianElasticInteraction.cpp:91
CHertzianElasticIGP::m_nu
double m_nu
Definition: HertzianElasticInteraction.h:28
CHertzianElasticInteraction::getPos
virtual Vec3 getPos() const
Definition: HertzianElasticInteraction.h:68
APairInteraction::m_p1
CParticle * m_p1
Definition: Interaction.h:71
Interaction.h
Vec3::norm
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
CHertzianElasticInteraction::calcForces
virtual void calcForces()
Definition: HertzianElasticInteraction.cpp:47
NULL
#define NULL
Definition: t_list.h:17
CHertzianElasticInteraction::m_cpos
Vec3 m_cpos
Definition: HertzianElasticInteraction.h:60
CHertzianElasticInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: HertzianElasticInteraction.cpp:112
CHertzianElasticIGP::getTypeString
virtual std::string getTypeString() const
Definition: HertzianElasticInteraction.h:33
CHertzianElasticInteraction::m_nu
double m_nu
Poisson ratio.
Definition: HertzianElasticInteraction.h:57
Vec3
Definition: vec3.h:47
CHertzianElasticIGP
Interaction group parameters for Hertzian elastic interactions.
Definition: HertzianElasticInteraction.h:25
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CHertzianElasticInteraction::m_force
Vec3 m_force
Definition: HertzianElasticInteraction.h:58
CHertzianElasticInteraction::ScalarFieldFunction
double(CHertzianElasticInteraction::* ScalarFieldFunction)() const
Definition: HertzianElasticInteraction.h:47
CHertzianElasticInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: HertzianElasticInteraction.cpp:129
CHertzianElasticInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: HertzianElasticInteraction.cpp:80
CHertzianElasticInteraction::~CHertzianElasticInteraction
virtual ~CHertzianElasticInteraction()
Definition: HertzianElasticInteraction.h:66
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
CHertzianElasticInteraction::VectorFieldFunction
Vec3(CHertzianElasticInteraction::* VectorFieldFunction)() const
Definition: HertzianElasticInteraction.h:48
CHertzianElasticInteraction::m_E
double m_E
Young's modulus.
Definition: HertzianElasticInteraction.h:56
CParticle
Class for a basic particle.
Definition: Particle.h:51
IGParam.h
Particle.h
CHertzianElasticInteraction::ParameterType
CHertzianElasticIGP ParameterType
Definition: HertzianElasticInteraction.h:63
CHertzianElasticInteraction::CHertzianElasticInteraction
CHertzianElasticInteraction(CParticle *, CParticle *, const CHertzianElasticIGP &)
Definition: HertzianElasticInteraction.cpp:35