ESyS-Particle  2.3.4
TempPartStore.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 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.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __TEMPPARTSTORE_H
14 #define __TEMPPARTSTORE_H
15 
16 // --- Project includes ---
17 #include "vec3.h"
18 
19 // --- STL includes ---
20 #include <map>
21 #include <utility>
22 
23 using std::map;
24 using std::multimap;
25 using std::pair;
26 using std::make_pair;
27 
33 {
34  public:
35  virtual ~ATempPartStore() {}
36  virtual void addSlaveID(int,int,int,int)=0;
37  virtual void addConnection(int,int,int)=0;
38 };
39 
46 template<typename T>
48 {
49  private:
50  multimap<int,T> m_mmap;
51  map<int,typename multimap<int,T>::iterator> m_by_id;
52  map<int,int> m_slave_id_map;
53 
55  int m_nx,m_ny,m_nz;
56 
57  int coordsToIndex(int,int,int);
58  int posToIndex(const Vec3&);
59 
60  public:
61  TTempPartStore(const Vec3&,const Vec3&, int,int,int);
62 
63  virtual void addSlaveID(int,int,int,int);
64  virtual void addParticle(const T&);
65  virtual void addConnection(int,int,int);
66 
67  const multimap<int,T>& getMap() const {return m_mmap;};
68 };
69 
70 #include "TempPartStore.hpp"
71 
72 #endif //__TEMPPARTSTORE_H
TTempPartStore::addSlaveID
virtual void addSlaveID(int, int, int, int)
Definition: TempPartStore.hpp:77
TTempPartStore::coordsToIndex
int coordsToIndex(int, int, int)
Definition: TempPartStore.hpp:48
TTempPartStore::m_by_id
map< int, typename multimap< int, T >::iterator > m_by_id
Definition: TempPartStore.h:51
TTempPartStore::TTempPartStore
TTempPartStore(const Vec3 &, const Vec3 &, int, int, int)
Definition: TempPartStore.hpp:23
TTempPartStore
class for the temporary storage and distribution of particle data
Definition: TempPartStore.h:48
TTempPartStore::m_xsize
double m_xsize
Definition: TempPartStore.h:54
ATempPartStore::addConnection
virtual void addConnection(int, int, int)=0
TTempPartStore::addConnection
virtual void addConnection(int, int, int)
Definition: TempPartStore.hpp:108
TTempPartStore::posToIndex
int posToIndex(const Vec3 &)
Definition: TempPartStore.hpp:60
TTempPartStore::m_nx
int m_nx
Definition: TempPartStore.h:55
TTempPartStore::m_ysize
double m_ysize
Definition: TempPartStore.h:54
TTempPartStore::m_zsize
double m_zsize
Definition: TempPartStore.h:54
TempPartStore.hpp
TTempPartStore::m_zmin
double m_zmin
Definition: TempPartStore.h:54
TTempPartStore::m_mmap
multimap< int, T > m_mmap
Definition: TempPartStore.h:50
TTempPartStore::m_slave_id_map
map< int, int > m_slave_id_map
Definition: TempPartStore.h:52
TTempPartStore::m_nz
int m_nz
Definition: TempPartStore.h:55
ATempPartStore::addSlaveID
virtual void addSlaveID(int, int, int, int)=0
TTempPartStore::m_ny
int m_ny
Definition: TempPartStore.h:55
Vec3
Definition: vec3.h:47
TTempPartStore::m_ymin
double m_ymin
Definition: TempPartStore.h:54
ATempPartStore::~ATempPartStore
virtual ~ATempPartStore()
Definition: TempPartStore.h:35
TTempPartStore::getMap
const multimap< int, T > & getMap() const
Definition: TempPartStore.h:67
TTempPartStore::addParticle
virtual void addParticle(const T &)
Definition: TempPartStore.hpp:89
TTempPartStore::m_xmin
double m_xmin
Definition: TempPartStore.h:54
ATempPartStore
pure virtual base for TTempPartStore
Definition: TempPartStore.h:33