ESyS-Particle  4.0.1
trimesh_pis_ne.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_NE_H
14 #define __TRIMESH_PIS_NE_H
15 
16 // --- project includes ---
17 #include "pis/trimesh_pis.h"
18 
29 template<class ParticleType,class IType>
30 class TriMesh_PIS_NE : public TriMesh_PIS<ParticleType>
31 {
32  protected:
33  typename IType::ParameterType m_param;
34 
35  set<pair<int,int> > m_tri_int_set; // for isIn
36  set<pair<int,int> > m_edge_int_set; // for isIn
37  set<pair<int,int> > m_corner_int_set; // for isIn
38  vector<typename IType::TriIntType> m_triangle_interactions;
39  vector<typename IType::EdgeIntType> m_edge_interactions;
40  vector<typename IType::CornerIntType> m_corner_interactions;
41 
42  public:
43  TriMesh_PIS_NE(TriMesh*,ParallelParticleArray<ParticleType>*,typename IType::ParameterType);
45 
46  virtual bool isIn(const vector<int>&);
47 
51  virtual void setTimeStepSize(double dt)
52  {
53  }
54 
55  virtual void calcForces();
56  virtual bool update();
57  virtual void exchange(){};
58  virtual void rebuild(){};
59  virtual void tryInsert(const vector<int>&){};
60 };
61 
62 #include "trimesh_pis_ne.hpp"
63 
64 #endif // __TRIMESH_PIS_NE_H