ESyS-Particle  2.3.4
Damping.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_DAMPING_H
14 #define MODEL_DAMPING_H
15 
16 // -- project includes --
17 #include "Model/DampingIGP.h"
18 #include "Foundation/vec3.h"
19 #include "Foundation/quintuple.h"
20 
21 class CVarMPIBuffer;
22 class AMPIBuffer;
23 
28 template <class T>
29 class CDamping
30 {
31 protected:
32  T *m_p;
34  double m_visc;
35  double m_dt;
36  int m_maxiter;
37  double m_E_diss;
39 
40  static double s_limit2;
41  static int s_flops;
42 
43 public:
45 
46  typedef double (CDamping::* ScalarFieldFunction)() const;
47  typedef pair<bool,double> (CDamping::* CheckedScalarFieldFunction)() const;
48  typedef Vec3 (CDamping::* VectorFieldFunction)() const;
49 
50  static ScalarFieldFunction getScalarFieldFunction(const string&);
52  static VectorFieldFunction getVectorFieldFunction(const string&);
53 
54  CDamping(T*,const Vec3&,double,double,int); // to be obsoleted
55  CDamping(T*,const CDampingIGP&);
56  CDamping(T*,CDampingIGP*);
57  virtual ~CDamping();
58 
59  inline void setLimit(double limit){s_limit2=limit*limit;};
60  void setTimeStepSize(double dt);
61  virtual void calcForces();
62  virtual bool hasTag(int,int) const;
63  virtual Vec3 getPosFirst() const {return m_p->getPos();};
64  virtual Vec3 getPosSecond() const {return Vec3(0.0,0.0,0.0);};
65  virtual Vec3 getPos() const {return m_p->getPos();};
66  vector<int> getAllID() const;
68  {
69  return
71  m_p->getPos(),
72  m_p->getRad(),
73  Vec3::ZERO,
74  0,
75  getPos()
76  );
77  }
78 
79  static void zeroFlops(){s_flops=0;};
80  static int Flops(){return s_flops;};
81 
82  double getDissipatedEnergy() const;
83  Vec3 getForce() const;
84 };
85 
86 #include "Model/Damping.hpp"
87 
88 #endif //__DAMPING_H
CDamping::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: Damping.hpp:132
CDamping::zeroFlops
static void zeroFlops()
Definition: Damping.h:79
CDamping::hasTag
virtual bool hasTag(int, int) const
Definition: Damping.hpp:205
CDamping::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: Damping.hpp:152
CVarMPIBuffer
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:35
CDamping::m_p
T * m_p
the particle
Definition: Damping.h:32
CDamping::getRaw2Data
esys::lsm::quintuple< Vec3, double, Vec3, double, Vec3 > getRaw2Data() const
Definition: Damping.h:67
CDamping::m_force
Vec3 m_force
current force
Definition: Damping.h:38
Damping.hpp
CDamping::s_limit2
static double s_limit2
square error limit for iteration
Definition: Damping.h:40
CDamping::Flops
static int Flops()
Definition: Damping.h:80
CDamping::setTimeStepSize
void setTimeStepSize(double dt)
Definition: Damping.hpp:88
CDamping::setLimit
void setLimit(double limit)
Definition: Damping.h:59
AMPIBuffer
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:34
CDamping::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: Damping.hpp:169
CDamping::m_dt
double m_dt
time step
Definition: Damping.h:35
CDamping::getPosFirst
virtual Vec3 getPosFirst() const
Definition: Damping.h:63
CDamping::CDamping
CDamping(T *, const Vec3 &, double, double, int)
Definition: Damping.hpp:36
quintuple.h
CDamping::m_maxiter
int m_maxiter
iteration limit
Definition: Damping.h:36
CDamping
Damping of the particle motion by an artificial viscosity.
Definition: Damping.h:30
CDamping::getForce
Vec3 getForce() const
Definition: Damping.hpp:193
CDamping::VectorFieldFunction
Vec3(CDamping::* VectorFieldFunction)() const
Definition: Damping.h:48
CDamping::m_E_diss
double m_E_diss
dissipated energy
Definition: Damping.h:37
CDamping::ScalarFieldFunction
double(CDamping::* ScalarFieldFunction)() const
Definition: Damping.h:46
CDamping::getAllID
vector< int > getAllID() const
Definition: Damping.hpp:216
Vec3
Definition: vec3.h:47
DampingIGP.h
CDamping::getPos
virtual Vec3 getPos() const
Definition: Damping.h:65
CDamping::getDissipatedEnergy
double getDissipatedEnergy() const
Definition: Damping.hpp:187
vec3.h
CDamping::~CDamping
virtual ~CDamping()
Definition: Damping.hpp:84
Vec3::ZERO
static const Vec3 ZERO
Definition: vec3.h:52
CDamping::CheckedScalarFieldFunction
pair< bool, double >(CDamping::* CheckedScalarFieldFunction)() const
Definition: Damping.h:47
CDamping::getPosSecond
virtual Vec3 getPosSecond() const
Definition: Damping.h:64
CDamping::s_flops
static int s_flops
Definition: Damping.h:41
CDamping::m_visc
double m_visc
artificial viscosity
Definition: Damping.h:34
CDamping::m_vref
Vec3 m_vref
reference velocity
Definition: Damping.h:33
CDampingIGP
Interaction group parameters for CDampingGroup.
Definition: DampingIGP.h:28
CDamping::calcForces
virtual void calcForces()
Definition: Damping.hpp:99
esys::lsm::quintuple
Definition: quintuple.h:25
CDamping::ParameterType
CDampingIGP ParameterType
Definition: Damping.h:44