ESyS-Particle  2.3
LinearDashpotInteraction.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 __LINEARDASHPOTINTERACTION_H
14 #define __LINEARDASHPOTINTERACTION_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_damp;
28  double m_cutoff;
29 
31  CLinearDashpotIGP(const std::string&,double,double);
32 
33  virtual std::string getTypeString() const {return "LinearDashpot";}
34 };
35 
44 {
45 public:
46 
47  typedef double (CLinearDashpotInteraction::* ScalarFieldFunction)() const;
49  typedef pair<bool,double> (CLinearDashpotInteraction::* CheckedScalarFieldFunction)() const;
50 
51  static ScalarFieldFunction getScalarFieldFunction(const string&);
52  static VectorFieldFunction getVectorFieldFunction(const string&);
54 
55 private:
56  double m_damp;
57  double m_cutoff;
58  double m_cross_section;
59  Vec3 m_force; // caching force 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
double getPotentialEnergy() const
Definition: vec3.h:46
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:28
pair< bool, double >(CLinearDashpotInteraction::* CheckedScalarFieldFunction)() const
Definition: LinearDashpotInteraction.h:49
double m_damp
Definition: LinearDashpotInteraction.h:27
CLinearDashpotIGP()
default constructor
Definition: LinearDashpotInteraction.cpp:21
double m_cutoff
interaction distance cutoff, relative to particle radii
Definition: LinearDashpotInteraction.h:57
CLinearDashpotInteraction(CParticle *, CParticle *, const CLinearDashpotIGP &)
Definition: LinearDashpotInteraction.cpp:36
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: LinearDashpotInteraction.cpp:108
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: LinearDashpotInteraction.cpp:125
double(CLinearDashpotInteraction::* ScalarFieldFunction)() const
Definition: LinearDashpotInteraction.h:47
Vec3(CLinearDashpotInteraction::* VectorFieldFunction)() const
Definition: LinearDashpotInteraction.h:48
virtual Vec3 getPos() const
Definition: LinearDashpotInteraction.h:68
Vec3 m_force
Definition: LinearDashpotInteraction.h:59
virtual std::string getTypeString() const
Definition: LinearDashpotInteraction.h:33
double m_cutoff
Definition: LinearDashpotInteraction.h:28
Linear Dashpot Interaction between free or bonded particles (to be used in addition to an elastic or ...
Definition: LinearDashpotInteraction.h:43
Vec3 m_cpos
Definition: LinearDashpotInteraction.h:60
Vec3 getForce() const
Definition: LinearDashpotInteraction.cpp:78
Class for a basic particle.
Definition: Particle.h:50
virtual void calcForces()
Definition: LinearDashpotInteraction.cpp:55
Abstract base class for 2-particle interactions.
Definition: Interaction.h:68
virtual ~CLinearDashpotInteraction()
Definition: LinearDashpotInteraction.h:66
CLinearDashpotIGP ParameterType
Definition: LinearDashpotInteraction.h:63
Interaction group parameters for Linear Dashpot interactions.
Definition: LinearDashpotInteraction.h:24
double m_damp
spring constant
Definition: LinearDashpotInteraction.h:56
double m_cross_section
cross section of dashpot, calculated from particle radii
Definition: LinearDashpotInteraction.h:58
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: LinearDashpotInteraction.cpp:89