ESyS-Particle  2.3
SoftBWallInteractionGroup.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 __SOFTBWALLINTERACTIONGROUP_H
14 #define __SOFTBWALLINTERACTIONGROUP_H
15 
16 //--- project includes ---
18 #include "Model/WallIG.h"
20 
21 //--- STL includes ---
22 #include <map>
23 
24 using std::map;
25 
26 template <class T> class ParallelParticleArray;
27 
31 class CSoftBWallIGP : public CBWallIGP
32 {
33  protected:
34  double m_shearK;
35  bool m_scaling;
36  public:
37  CSoftBWallIGP(const std::string&,const std::string&,double,double,int,int,bool);
38  virtual void packInto(CVarMPIBuffer*) const;
39  double getNormalK()const{return m_k;};
40  double getShearK()const{return m_shearK;};
41  bool getScaling()const{return m_scaling;};
42 
43  friend ostream& operator<<(ostream&,const CSoftBWallIGP&);
44 };
45 
47 
48 // --- Forward decl ---
49 template <class T> class CSoftBWallInteractionGroup;
50 template <class T> ostream& operator<<(ostream &, const CSoftBWallInteractionGroup<T> &);
51 
52 
57 template<class T>
59 {
60  protected:
61  vector<CSoftBondedWallInteraction<T> > m_interactions;
63  int m_tag;
64  int m_mask;
65  bool m_scaling;
66 
67  public:
71 
75  virtual void setTimeStepSize(double dt)
76  {
77  }
78 
79  virtual void calcForces();
80  virtual void applyForce(const Vec3&);
81  virtual void Update(ParallelParticleArray<T>*);
82 
83  friend ostream& operator<< <>(ostream &, const CSoftBWallInteractionGroup &);
84 };
85 
87 
88 #endif //__BSOFTWALLINTERACTIONGROUP_H
virtual ~CSoftBWallInteractionGroup()
Definition: SoftBWallInteractionGroup.h:70
CSoftBWallInteractionGroup(TML_Comm *)
Definition: SoftBWallInteractionGroup.hpp:20
Definition: vec3.h:46
bool m_scaling
Definition: SoftBWallInteractionGroup.h:35
bool getScaling() const
Definition: SoftBWallInteractionGroup.h:41
virtual void packInto(CVarMPIBuffer *) const
Definition: SoftBWallInteractionGroup.cpp:39
Class for a group of bonded, elastic interactions with per-direction spring constants between particl...
Definition: SoftBWallInteractionGroup.h:49
base class for all walls
Definition: Wall.h:39
CSoftBWallIGP * extractSoftBWallIGP(AMPIBuffer *)
Definition: SoftBWallInteractionGroup.cpp:64
parrallel particle storage array with neighborsearch and variable exchange
Definition: SubLattice.h:61
double m_normalK
Definition: SoftBWallInteractionGroup.h:62
CSoftBWallIGP(const std::string &, const std::string &, double, double, int, int, bool)
Definition: SoftBWallInteractionGroup.cpp:32
virtual void calcForces()
Definition: SoftBWallInteractionGroup.hpp:46
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
vector< CSoftBondedWallInteraction< T > > m_interactions
Definition: SoftBWallInteractionGroup.h:61
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:33
double m_k
Definition: ElasticInteraction.h:28
double getShearK() const
Definition: SoftBWallInteractionGroup.h:40
virtual void applyForce(const Vec3 &)
Definition: SoftBWallInteractionGroup.hpp:67
abstract base class for communicator
Definition: comm.h:46
friend ostream & operator<<(ostream &, const CSoftBWallIGP &)
Definition: SoftBWallInteractionGroup.cpp:55
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:34
Interaction group parameters for CSoftBWallInteractionGroups.
Definition: SoftBWallInteractionGroup.h:31
int m_mask
Definition: SoftBWallInteractionGroup.h:64
double m_shearK
Definition: SoftBWallInteractionGroup.h:34
virtual void Update(ParallelParticleArray< T > *)
Definition: SoftBWallInteractionGroup.hpp:130
bool m_scaling
Definition: SoftBWallInteractionGroup.h:65
virtual void setTimeStepSize(double dt)
Definition: SoftBWallInteractionGroup.h:75
double getNormalK() const
Definition: SoftBWallInteractionGroup.h:39
double m_shearK
spring constants for each direction
Definition: SoftBWallInteractionGroup.h:62
int m_tag
Definition: SoftBWallInteractionGroup.h:63