ESyS-Particle  2.3.4
LocalDamping.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 MODEL_LOCALDAMPING_H
14 #define MODEL_LOCALDAMPING_H
15 
16 // -- project includes --
17 #include "Model/LocalDampingIGP.h"
18 #include "Foundation/vec3.h"
19 #include "Foundation/quintuple.h"
20 
21 class CVarMPIBuffer;
22 class AMPIBuffer;
23 
28 template <class T>
30 {
31 protected:
32  T *m_p;
33  double m_visc;
34  double m_dt;
35  double m_E_diss;
37 
38 public:
40 
41  typedef double (CLocalDamping::* ScalarFieldFunction)() const;
42  typedef pair<bool,double> (CLocalDamping::* CheckedScalarFieldFunction)() const;
43  typedef Vec3 (CLocalDamping::* VectorFieldFunction)() const;
44 
45  static ScalarFieldFunction getScalarFieldFunction(const string&);
47  static VectorFieldFunction getVectorFieldFunction(const string&);
48 
49  CLocalDamping(T*,double,double); // to be obsoleted
52  virtual ~CLocalDamping();
53 
54  void setTimeStepSize(double dt);
55  virtual void calcForces();
56 
57  virtual bool hasTag(int,int) const;
58  virtual Vec3 getPosFirst() const {return m_p->getPos();};
59  virtual Vec3 getPosSecond() const {return Vec3(0.0,0.0,0.0);};
60  virtual Vec3 getPos() const {return m_p->getPos();};
61  vector<int> getAllID() const;
62 
64  {
65  return
67  m_p->getPos(),
68  m_p->getRad(),
69  Vec3::ZERO,
70  0,
71  getPos()
72  );
73  }
74 
75  double getDissipatedEnergy() const;
76  Vec3 getForce() const;
77 };
78 
79 #include "Model/LocalDamping.hpp"
80 
81 #endif //__DAMPING_H
CLocalDamping::calcForces
virtual void calcForces()
Definition: LocalDamping.hpp:82
CLocalDamping::CheckedScalarFieldFunction
pair< bool, double >(CLocalDamping::* CheckedScalarFieldFunction)() const
Definition: LocalDamping.h:42
LocalDamping.hpp
CVarMPIBuffer
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:35
CLocalDamping::getPosSecond
virtual Vec3 getPosSecond() const
Definition: LocalDamping.h:59
CLocalDamping::hasTag
virtual bool hasTag(int, int) const
Definition: LocalDamping.hpp:198
LocalDampingIGP.h
CLocalDamping::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: LocalDamping.hpp:162
CLocalDamping::~CLocalDamping
virtual ~CLocalDamping()
Definition: LocalDamping.hpp:69
CLocalDamping::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: LocalDamping.hpp:125
AMPIBuffer
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:34
CLocalDamping::setTimeStepSize
void setTimeStepSize(double dt)
Definition: LocalDamping.hpp:73
CLocalDamping::m_dt
double m_dt
time step
Definition: LocalDamping.h:34
quintuple.h
CLocalDamping::getPosFirst
virtual Vec3 getPosFirst() const
Definition: LocalDamping.h:58
CLocalDamping::getDissipatedEnergy
double getDissipatedEnergy() const
Definition: LocalDamping.hpp:180
CLocalDamping::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: LocalDamping.hpp:145
CLocalDamping::ParameterType
CLocalDampingIGP ParameterType
Definition: LocalDamping.h:39
CLocalDamping::getAllID
vector< int > getAllID() const
Definition: LocalDamping.hpp:209
CLocalDamping::m_E_diss
double m_E_diss
dissipated energy
Definition: LocalDamping.h:35
CLocalDamping::getRaw2Data
esys::lsm::quintuple< Vec3, double, Vec3, double, Vec3 > getRaw2Data() const
Definition: LocalDamping.h:63
CLocalDamping::m_force
Vec3 m_force
current force
Definition: LocalDamping.h:36
CLocalDamping::ScalarFieldFunction
double(CLocalDamping::* ScalarFieldFunction)() const
Definition: LocalDamping.h:41
Vec3
Definition: vec3.h:47
vec3.h
Vec3::ZERO
static const Vec3 ZERO
Definition: vec3.h:52
CLocalDamping::getPos
virtual Vec3 getPos() const
Definition: LocalDamping.h:60
CLocalDamping
Local damping of the particle motion by a damping coefficient.
Definition: LocalDamping.h:30
CLocalDampingIGP
Interaction group parameters for CLocalDampingGroup.
Definition: LocalDampingIGP.h:28
CLocalDamping::m_visc
double m_visc
damping coefficient
Definition: LocalDamping.h:33
esys::lsm::quintuple
Definition: quintuple.h:25
CLocalDamping::CLocalDamping
CLocalDamping(T *, double, double)
Definition: LocalDamping.hpp:27
CLocalDamping::getForce
Vec3 getForce() const
Definition: LocalDamping.hpp:186
CLocalDamping::m_p
T * m_p
the particle
Definition: LocalDamping.h:32
CLocalDamping::VectorFieldFunction
Vec3(CLocalDamping::* VectorFieldFunction)() const
Definition: LocalDamping.h:43