ESyS-Particle  2.3
ViscWallIG.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __VISCWALLIG_H
14 #define __VISCWALLIG_H
15 
16 //--- project includes ---
18 #include "Model/EWallInteraction.h"
19 #include "Model/WallIG.h"
21 
22 //--- STL includes ---
23 #include <map>
24 
25 using std::map;
26 
27 template <class T> class ParallelParticleArray;
28 
32 class CVWallIGP : public CEWallIGP
33 {
34  protected:
35  int m_tag;
36  double m_nu;
37 
38  public:
39  CVWallIGP(const string&,const string&,double,double,int);
40  virtual void packInto(CVarMPIBuffer*) const;
41  void setTag(int tag){m_tag=tag;};
42  int getTag()const{return m_tag;};
43  void setNu(double nu){m_nu=nu;};
44  double getNu()const{return m_nu;};
45 
46  friend ostream& operator<<(ostream&,const CVWallIGP&);
47 };
48 
50 
51 // --- Forward decl ---
52 template <class T> class CViscWallIG;
53 template <class T> ostream& operator<<(ostream &, const CViscWallIG<T> &);
54 
58 template<class T>
59 class CViscWallIG : public AWallInteractionGroup<T>
60 {
61 protected:
62  vector<CViscWallInteraction<T> > m_visc_interactions;
63  vector<CElasticWallInteraction<T> > m_elastic_interactions;
64  double m_k;
65  double m_nu;
66  int m_tag;
67 
68 public:
71  virtual ~CViscWallIG(){}
72 
76  virtual void setTimeStepSize(double dt)
77  {
78  }
79 
80  virtual void calcForces();
81  virtual void applyForce(const Vec3&);
82  virtual void setVelocity(const Vec3&);
83  virtual void Update(ParallelParticleArray<T>*);
84 
85  friend ostream& operator<< <>(ostream &, const CViscWallIG &);
86 };
87 
88 #include "Model/ViscWallIG.hpp"
89 
90 #endif // __VISCWALLIG_H
friend ostream & operator<<(ostream &, const CVWallIGP &)
Definition: ViscWallIG.cpp:45
CViscWallIG(TML_Comm *)
Definition: ViscWallIG.hpp:20
virtual void setTimeStepSize(double dt)
Definition: ViscWallIG.h:76
virtual void Update(ParallelParticleArray< T > *)
Definition: ViscWallIG.hpp:141
int m_tag
Definition: ViscWallIG.h:66
Definition: vec3.h:46
double m_nu
Definition: ViscWallIG.h:65
CVWallIGP(const string &, const string &, double, double, int)
Definition: ViscWallIG.cpp:29
double m_k
spring constant
Definition: ViscWallIG.h:64
void setTag(int tag)
Definition: ViscWallIG.h:41
virtual void applyForce(const Vec3 &)
Definition: ViscWallIG.hpp:85
Class for a group of viscous and elastic interactions between particles and a wall.
Definition: ViscWallIG.h:52
vector< CElasticWallInteraction< T > > m_elastic_interactions
elastic interactions all particles
Definition: ViscWallIG.h:63
virtual ~CViscWallIG()
Definition: ViscWallIG.h:71
virtual void setVelocity(const Vec3 &)
Definition: ViscWallIG.hpp:73
base class for all walls
Definition: Wall.h:39
vector< CViscWallInteraction< T > > m_visc_interactions
visc interactions for tagged particles
Definition: ViscWallIG.h:62
parrallel particle storage array with neighborsearch and variable exchange
Definition: SubLattice.h:61
double m_nu
Definition: ViscWallIG.h:36
Abstract Base class for a group of interactions between particles and a wall.
Definition: WallIG.h:30
virtual void packInto(CVarMPIBuffer *) const
Definition: ViscWallIG.cpp:36
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:32
int m_tag
Definition: ViscWallIG.h:35
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:33
virtual void calcForces()
Definition: ViscWallIG.hpp:45
int getTag() const
Definition: ViscWallIG.h:42
double getNu() const
Definition: ViscWallIG.h:44
abstract base class for communicator
Definition: comm.h:46
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:34
CVWallIGP * extractVWallIGP(AMPIBuffer *)
Definition: ViscWallIG.cpp:54
void setNu(double nu)
Definition: ViscWallIG.h:43
Interaction group parameters for CBWallInteractionGroups.
Definition: ViscWallIG.h:32