ESyS-Particle  2.3
BWallInteractionGroup.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 
14 #ifndef __BWALLINTERACTIONGROUP_H
15 #define __BWALLINTERACTIONGROUP_H
16 
17 //--- project includes ---
18 #include "Model/BWallInteraction.h"
19 #include "Model/EWallInteraction.h"
20 #include "Model/WallIG.h"
22 
23 //--- STL includes ---
24 #include <map>
25 
26 using std::map;
27 
28 template <class T> class ParallelParticleArray;
29 
38 class CBWallIGP : public CEWallIGP
39 {
40  protected:
41  int m_tag;
42  int m_mask;
43 
44  public:
45  CBWallIGP(const std::string&,const std::string&,double,int,int);
46  virtual void packInto(CVarMPIBuffer*) const;
47  int getTag()const{return m_tag;};
48  int getMask()const{return m_mask;};
49 
50  friend ostream& operator<<(ostream&,const CBWallIGP&);
51 };
52 
54 
55 // --- Forward decl ---
56 template <class T> class CBWallInteractionGroup;
57 template <class T> ostream& operator<<(ostream &, const CBWallInteractionGroup<T> &);
58 
67 template<class T>
69 {
70  protected:
71  vector<CBondedWallInteraction<T> > m_bonded_interactions;
72  vector<CElasticWallInteraction<T> > m_elastic_interactions;
73  double m_k;
74  int m_tag;
75  int m_mask;
76 
77  public:
81 
82  virtual void calcForces();
83  virtual void applyForce(const Vec3&);
84  virtual void Update(ParallelParticleArray<T>*);
85 
86  friend ostream& operator<< <> (ostream &, const CBWallInteractionGroup &);
87 };
88 
90 
91 #endif //__BWALLINTERACTIONGROUP_H
virtual void Update(ParallelParticleArray< T > *)
Definition: BWallInteractionGroup.hpp:153
CBWallInteractionGroup(TML_Comm *)
Definition: BWallInteractionGroup.hpp:20
virtual void packInto(CVarMPIBuffer *) const
Definition: BWallInteractionGroup.cpp:36
Definition: vec3.h:46
int m_mask
Definition: BWallInteractionGroup.h:75
CBWallIGP * extractBWallIGP(AMPIBuffer *)
Definition: BWallInteractionGroup.cpp:56
int m_tag
Definition: BWallInteractionGroup.h:41
double m_k
spring constant
Definition: BWallInteractionGroup.h:73
friend ostream & operator<<(ostream &, const CBWallIGP &)
Definition: BWallInteractionGroup.cpp:45
virtual void applyForce(const Vec3 &)
Definition: BWallInteractionGroup.hpp:71
base class for all walls
Definition: Wall.h:39
parrallel particle storage array with neighborsearch and variable exchange
Definition: SubLattice.h:61
Interaction group parameters for CBWallInteractionGroups.
Definition: BWallInteractionGroup.h:38
Abstract Base class for a group of interactions between particles and a wall.
Definition: WallIG.h:30
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:32
int getMask() const
Definition: BWallInteractionGroup.h:48
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:33
int getTag() const
Definition: BWallInteractionGroup.h:47
virtual ~CBWallInteractionGroup()
Definition: BWallInteractionGroup.h:80
abstract base class for communicator
Definition: comm.h:46
vector< CElasticWallInteraction< T > > m_elastic_interactions
elastic interactions for the rest
Definition: BWallInteractionGroup.h:72
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:34
virtual void calcForces()
Definition: BWallInteractionGroup.hpp:44
CBWallIGP(const std::string &, const std::string &, double, int, int)
Definition: BWallInteractionGroup.cpp:29
int m_tag
Definition: BWallInteractionGroup.h:74
Class for a group of bonded,elastic interactions between particles and a wall.
Definition: BWallInteractionGroup.h:56
int m_mask
Definition: BWallInteractionGroup.h:42
vector< CBondedWallInteraction< T > > m_bonded_interactions
bonded interactions for tagged particles
Definition: BWallInteractionGroup.h:71