ESyS-Particle  4.0.1
FractalFriction.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 __FRACTALFRICTION_H
14 #define __FRACTALFRICTION_H
15 
16 // -- project includes --
17 #include "Model/FrictionInteraction.h"
18 
19 #include <boost/shared_ptr.hpp>
20 
26 {
27 public:
28  virtual std::string getTypeString() const {return "FractalFriction";}
29 
30  void setTimeStepSize(double timeStepSize)
31  {
32  this->dt = timeStepSize;
33  }
34 
35  double k;
36  double mu_0;
37  double k_s;
38  double dt;
39  boost::shared_ptr<double> mu;
40  double x0,y0,dx,dy;
41  int nx,ny;
42 
46 
47  FractalFrictionIGP &operator=(const FractalFrictionIGP &);
48 };
49 
55 {
56  public: // types
58 
59  typedef double (CFractalFriction::* ScalarFieldFunction)() const;
60  typedef Vec3 (CFractalFriction::* VectorFieldFunction)() const;
61  typedef pair<bool,double> (CFractalFriction::* CheckedScalarFieldFunction)() const;
62  private:
63 
64  public:
67  virtual ~CFractalFriction();
68 
69  static string getType() {return "FractalFriction";};
70 
71  static ScalarFieldFunction getScalarFieldFunction(const string&);
72  static VectorFieldFunction getVectorFieldFunction(const string&);
73  static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string&);
74  friend ostream& operator<<(ostream&,const CFractalFriction&);
75  friend class TML_PackedMessageInterface;
76 };
77 
78 #endif //__FRACTALFRICTION_H