ESyS-Particle  4.0.1
InteractionGroup.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 __INTERACTIONGROUP_H
14 #define __INTERACTIONGROUP_H
15 
16 // -- project includes --
17 #include "Model/IGParam.h"
18 #include "Model/InteractionParam.h"
19 
20 // -- STL includes --
21 #include <set>
22 #include <utility>
23 
24 using std::set;
25 using std::pair;
26 
28 template <class T> class ParallelParticleArray;
29 
33 template <class T>
35 {
36 public:
37  virtual ~AInteractionGroup(){};
38 
39  virtual void Update(ParallelParticleArray<T>*)=0;
40  virtual void calcForces()=0;
41 
42  virtual void setTimeStepSize(double dt) = 0;
43 };
44 
53 template<class T>
55 {
56  protected:
63  set<pair<int,int> > m_set;
64  unsigned int m_update_timestamp;
65 
66  public:
67  bool isIn(int,int);
68  virtual void setExIG(AParallelInteractionStorage* eg){};
69 };
70 
71 #include "Model/InteractionGroup.hpp"
72 
73 #endif //__INTERACTIONGROUP_H