ESyS-Particle  2.3.4
ViscWallIG.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 __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>
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
CWall
base class for all walls
Definition: Wall.h:40
AMPIBuffer::pop_int
virtual int pop_int()=0
CViscWallIG::~CViscWallIG
virtual ~CViscWallIG()
Definition: ViscWallIG.h:71
CViscWallIG::applyForce
virtual void applyForce(const Vec3 &)
Definition: ViscWallIG.hpp:85
CViscWallIG
Class for a group of viscous and elastic interactions between particles and a wall.
Definition: ViscWallIG.h:60
ViscWallIG.hpp
CVarMPIBuffer
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:35
AMPIBuffer::pop_double
virtual double pop_double()=0
CVWallIGP::m_nu
double m_nu
Definition: ViscWallIG.h:36
operator<<
ostream & operator<<(ostream &, const CViscWallIG< T > &)
Definition: ViscWallIG.hpp:177
CViscWallIG::m_k
double m_k
spring constant
Definition: ViscWallIG.h:64
console.h
EWallInteraction.h
EWallInteractionGroup.h
CVarMPIBuffer::append
virtual void append(int)
Definition: mpivbuf.cpp:152
CVWallIGP::m_tag
int m_tag
Definition: ViscWallIG.h:35
CViscWallIG::m_elastic_interactions
vector< CElasticWallInteraction< T > > m_elastic_interactions
elastic interactions all particles
Definition: ViscWallIG.h:63
AMPIBuffer
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:34
AWallInteractionGroup
Abstract Base class for a group of interactions between particles and a wall.
Definition: WallIG.h:31
CEWallIGP
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:33
CViscWallIG::calcForces
virtual void calcForces()
Definition: ViscWallIG.hpp:45
CVWallIGP::getNu
double getNu() const
Definition: ViscWallIG.h:44
ParallelParticleArray
parrallel particle storage array with neighborsearch and variable exchange
Definition: pp_array.h:75
Console::XDebug
Console & XDebug()
set verbose level of next message to "xdg"
CVWallIGP::CVWallIGP
CVWallIGP(const string &, const string &, double, double, int)
Definition: ViscWallIG.cpp:29
WallIG.h
extractVWallIGP
CVWallIGP * extractVWallIGP(AMPIBuffer *B)
Definition: ViscWallIG.cpp:54
CElasticIGP::m_k
double m_k
Definition: ElasticInteraction.h:28
CEWallIGP::packInto
virtual void packInto(CVarMPIBuffer *) const
Definition: EWallInteractionGroup.cpp:38
CVWallIGP::setNu
void setNu(double nu)
Definition: ViscWallIG.h:43
extractVWallIGP
CVWallIGP * extractVWallIGP(AMPIBuffer *)
Definition: ViscWallIG.cpp:54
CViscWallIG::Update
virtual void Update(ParallelParticleArray< T > *)
Definition: ViscWallIG.hpp:141
CViscWallIG::m_nu
double m_nu
Definition: ViscWallIG.h:65
ViscWallInteraction.h
Vec3
Definition: vec3.h:47
TML_Comm
abstract base class for communicator
Definition: comm.h:47
CVWallIGP::operator<<
friend ostream & operator<<(ostream &, const CVWallIGP &)
Definition: ViscWallIG.cpp:45
CViscWallIG::setTimeStepSize
virtual void setTimeStepSize(double dt)
Definition: ViscWallIG.h:76
CVWallIGP::packInto
virtual void packInto(CVarMPIBuffer *) const
Definition: ViscWallIG.cpp:36
operator<<
ostream & operator<<(ostream &ost, const CVWallIGP &I)
Definition: ViscWallIG.cpp:45
CViscWallIG::m_visc_interactions
vector< CViscWallInteraction< T > > m_visc_interactions
visc interactions for tagged particles
Definition: ViscWallIG.h:62
ViscWallIG.h
CViscWallIG::m_tag
int m_tag
Definition: ViscWallIG.h:66
CViscWallIG::CViscWallIG
CViscWallIG(TML_Comm *)
Definition: ViscWallIG.hpp:20
CVWallIGP::getTag
int getTag() const
Definition: ViscWallIG.h:42
CVWallIGP
Interaction group parameters for CBWallInteractionGroups.
Definition: ViscWallIG.h:33
console
Console console
Definition: console.cpp:25
CVWallIGP::setTag
void setTag(int tag)
Definition: ViscWallIG.h:41
AMPIBuffer::pop_string
virtual std::string pop_string()=0
CViscWallIG::setVelocity
virtual void setVelocity(const Vec3 &)
Definition: ViscWallIG.hpp:73