ESyS-Particle  4.0.1
VWFrictionInteraction.h
1 
2 // //
3 // Copyright (c) 2003-2011 by The University of Queensland //
4 // Earth Systems Science Computational Centre (ESSCC) //
5 // http://www.uq.edu.au/esscc //
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 __VWFRICTION_H
14 #define __VWFRICTION_H
15 
16 // -- project includes --
17 #include "Model/FrictionInteraction.h"
18 
23 {
24  public:
25  double m_alpha;
26 
27  VWFrictionIGP();
28  VWFrictionIGP(const std::string&, double, double, double, double, double);
29 };
30 
36 {
37  public: // types
39 
40  typedef double (CVWFriction::* ScalarFieldFunction)() const;
41  typedef Vec3 (CVWFriction::* VectorFieldFunction)() const;
42  typedef pair<bool,double> (CVWFriction::* CheckedScalarFieldFunction)() const;
43 
44  private:
45  double m_alpha;
46 
47  public:
48  CVWFriction();
50  virtual ~CVWFriction();
51 
52  static string getType() {return "VWFriction";};
53 
54  virtual void calcForces();
55 
56  pair<bool,double> getCurrentMu() const;
57 
58  static ScalarFieldFunction getScalarFieldFunction(const string&);
59  static VectorFieldFunction getVectorFieldFunction(const string&);
60  static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string&);
61 
62  friend class TML_PackedMessageInterface;
63 };
64 #endif //__VWFRICTION_H