ESyS-Particle  4.0.1
trimesh_pis_eb.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 __TRIMESH_PIS_EB_H
14 #define __TRIMESH_PIS_EB_H
15 
16 // --- STL includes ---
17 #include <vector>
18 
19 // --- project includes ---
20 #include "tml/comm/cart_comm.h"
21 #include "pis/trimesh_pis.h"
22 
28 template<class ParticleType,class IType>
29 class TriMesh_PIS_EB : public TriMesh_PIS<ParticleType>
30 {
31  private:
32  static const int m_exchg_tag;
33  void exchange_boundary(int,int);
34 
35  protected:
36  typename IType::ParameterType m_param;
37 
38  TML_CartComm m_comm;
39  set<pair<int,int> > m_tri_int_set; // for isIn, <TID,PID> pairs
40  list<typename IType::TriIntType> m_triangle_interactions;
41 
42  public:
43  TriMesh_PIS_EB(TriMesh*,ParallelParticleArray<ParticleType>*,typename IType::ParameterType);
44 
45  virtual bool isIn(const vector<int>&);
46  virtual void setTimeStepSize(double dt);
47  virtual void calcForces();
48  virtual bool update();
49  virtual void exchange();
50  virtual void rebuild();
51  virtual void tryInsert(const typename IType::TriIntType&);
52  virtual void tryInsert(const vector<int>&);
53 
54  virtual void saveSnapShotData(std::ostream&);
55 
56  void buildFromPPATagged(int,int);
57  void buildFromPPAByGap(double);
58 };
59 
60 #include "pis/trimesh_pis_eb.hpp"
61 
62 #endif // __TRIMESH_PIS_EB_H