ESyS-Particle  2.3.4
RotDamping.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 __ROT_DAMPING_H
14 #define __ROT_DAMPING_H
15 
16 // -- project includes --
17 #include "Model/DampingIGP.h"
18 #include "Foundation/vec3.h"
19 #include "Foundation/quintuple.h"
21 
26 template <class T>
28 {
29 protected:
30  T *m_p;
32  double m_visc;
33  double m_dt;
34  int m_maxiter;
35  double m_E_diss;
37 
38  static double s_limit2;
39  static int s_flops;
40 
41 public:
43 
44  typedef double (CRotDamping::* ScalarFieldFunction)() const;
45  typedef pair<bool,double> (CRotDamping::* CheckedScalarFieldFunction)() const;
46  typedef Vec3 (CRotDamping::* VectorFieldFunction)() const;
47 
48  static ScalarFieldFunction getScalarFieldFunction(const string&);
50  static VectorFieldFunction getVectorFieldFunction(const string&);
51 
53  virtual ~CRotDamping();
54 
55  inline void setLimit(double limit){s_limit2=limit*limit;};
56  virtual void calcForces();
57  void setTimeStepSize(double dt);
58  virtual bool hasTag(int,int) const;
59  virtual Vec3 getPosFirst() const {return m_p->getPos();};
60  virtual Vec3 getPosSecond() const {return Vec3(0.0,0.0,0.0);};
61  virtual Vec3 getPos() const {return m_p->getPos();};
62  vector<int> getAllID() const;
64  {
65  return
67  m_p->getPos(),
68  m_p->getRad(),
69  Vec3::ZERO,
70  0,
71  getPos()
72  );
73  }
74 
75  static void zeroFlops(){s_flops=0;};
76  static int Flops(){return s_flops;};
77 
78  double getDissipatedEnergy() const;
79  Vec3 getForce() const;
80 };
81 
82 #include "Model/RotDamping.hpp"
83 
84 #endif //__ROT_DAMPING_H
CRotDamping::getRaw2Data
quintuple< Vec3, double, Vec3, double, Vec3 > getRaw2Data() const
Definition: RotDamping.h:63
CRotDamping::CheckedScalarFieldFunction
pair< bool, double >(CRotDamping::* CheckedScalarFieldFunction)() const
Definition: RotDamping.h:45
CRotDamping::Flops
static int Flops()
Definition: RotDamping.h:76
CRotDamping::~CRotDamping
virtual ~CRotDamping()
Definition: RotDamping.hpp:42
CRotDamping::setTimeStepSize
void setTimeStepSize(double dt)
Definition: RotDamping.hpp:47
CRotDamping::zeroFlops
static void zeroFlops()
Definition: RotDamping.h:75
CRotDamping::m_visc
double m_visc
artificial viscosity
Definition: RotDamping.h:32
CRotDamping::s_limit2
static double s_limit2
square error limit for iteration
Definition: RotDamping.h:38
CRotDamping::CRotDamping
CRotDamping(T *, CDampingIGP *)
Definition: RotDamping.hpp:29
CRotDamping::getDissipatedEnergy
double getDissipatedEnergy() const
Definition: RotDamping.hpp:147
CRotDamping::m_E_diss
double m_E_diss
dissipaed energy
Definition: RotDamping.h:35
CRotDamping::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotDamping.hpp:112
CRotDamping::getForce
Vec3 getForce() const
Definition: RotDamping.hpp:153
RotDamping.hpp
CRotDamping::m_force
Vec3 m_force
current force
Definition: RotDamping.h:36
CRotDamping::VectorFieldFunction
Vec3(CRotDamping::* VectorFieldFunction)() const
Definition: RotDamping.h:46
quintuple.h
CRotDamping::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotDamping.hpp:92
CRotDamping::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotDamping.hpp:129
CRotDamping::getPos
virtual Vec3 getPos() const
Definition: RotDamping.h:61
CRotDamping
Damping of the rotational part of the particle motion by an artificial viscosity.
Definition: RotDamping.h:28
CRotDamping::getPosSecond
virtual Vec3 getPosSecond() const
Definition: RotDamping.h:60
CRotDamping::calcForces
virtual void calcForces()
Definition: RotDamping.hpp:58
Vec3
Definition: vec3.h:47
DampingIGP.h
CRotDamping::m_vref
Vec3 m_vref
reference velocity
Definition: RotDamping.h:31
vec3.h
CRotDamping::m_p
T * m_p
the particle
Definition: RotDamping.h:30
CRotDamping::s_flops
static int s_flops
Definition: RotDamping.h:39
Vec3::ZERO
static const Vec3 ZERO
Definition: vec3.h:52
CRotDamping::ParameterType
CDampingIGP ParameterType
Definition: RotDamping.h:42
CRotDamping::hasTag
virtual bool hasTag(int, int) const
Definition: RotDamping.hpp:165
CRotDamping::m_dt
double m_dt
time step
Definition: RotDamping.h:33
CDampingIGP
Interaction group parameters for CDampingGroup.
Definition: DampingIGP.h:28
CRotDamping::ScalarFieldFunction
double(CRotDamping::* ScalarFieldFunction)() const
Definition: RotDamping.h:44
esys::lsm::quintuple
Definition: quintuple.h:25
CRotDamping::getAllID
vector< int > getAllID() const
Definition: RotDamping.hpp:176
CRotDamping::setLimit
void setLimit(double limit)
Definition: RotDamping.h:55
CRotDamping::m_maxiter
int m_maxiter
iteration limit
Definition: RotDamping.h:34
CRotDamping::getPosFirst
virtual Vec3 getPosFirst() const
Definition: RotDamping.h:59