Memosa-FVM  0.2
StorageSite.h
Go to the documentation of this file.
1 // This file os part of FVM
2 // Copyright (c) 2012 FVM Authors
3 // See LICENSE file for terms.
4 
5 #ifndef _STORAGESITE_H_
6 #define _STORAGESITE_H_
7 
8 #include <map>
9 #include <vector>
10 #include "misc.h"
11 #include "RLogInterface.h"
12 #include "Array.h"
13 #include <cassert>
14 
15 class OneToOneIndexMap;
16 class Mesh;
17 
19 {
20 public:
21 
22 
23  typedef map< const StorageSite*, shared_ptr< Array<int> > > ScatterMap;
24  typedef map< const StorageSite*, shared_ptr< Array<int> > > GatherMap;
25  typedef map< const StorageSite*, shared_ptr< Array<int> > > CommonMap;
26  typedef map< const StorageSite*, const Mesh* > MeshMap;
27  //finally cellcell2 keep information in global numbering
28  //field or multifield
29  typedef map< const StorageSite*, map<int,int> > ScatterIndex;
30 
31 
32 
33  StorageSite(const int selfCount, const int nGhost=0,
34  const int offset=0, const StorageSite* parent=0);
35  virtual ~StorageSite();
36 
37  DEFINE_TYPENAME("StorageSite");
38 
39  int getCount() const {return _count;}
40  int getSelfCount() const {return _selfCount;}
41 
42  void setCount(const int selfCount, const int nGhost=0)
43  {
44  _count = selfCount+nGhost;
45  _selfCount = selfCount;
47  }
48 
49 
50 
51  void setScatterProcID( int proc_id ) { _scatterProcID = proc_id; }
52  void setGatherProcID( int proc_id ) { _gatherProcID = proc_id; }
53  void setTag( int tag) { _tag = tag;}
54 
55  void setMesh( const Mesh* mesh) { _meshMap[this] = mesh; }
56  const Mesh& getMesh() const { return *_meshMap[this]; }
57 
58  const ScatterMap& getScatterMap () const { return _scatterMap;}
59  const GatherMap& getGatherMap () const { return _gatherMap;}
60  const CommonMap & getCommonMap () const { return _commonMap; }
61  const ScatterIndex& getScatterIndex () const { return _scatterIndex; }
62 
67 
68  //methods for Level1 layer creation
69  void setCountLevel1( const int countLevel1 ) {
70  _countLevel1 = countLevel1;
71  }
72  int getCountLevel1() const {return _countLevel1;}
74  const GatherMap& getGatherMapLevel1() const { return _gatherMapLevel1 ;}
75 
78 
79 
81 
82  int getScatterProcID() const { return _scatterProcID;}
83  int getGatherProcID() const { return _gatherProcID; }
84  int getTag() const { return _tag; }
85 
86  const StorageSite* const getParent() const {return _parent;}
87  int getOffset() const {return _offset;}
88 
89 
90 private:
91  StorageSite(const StorageSite&);
92  int _count;
94  const int _offset;
95  const StorageSite* const _parent;
96 
101 
102  mutable MeshMap _meshMap;
103 
107 
110  int _tag;
111 
112 };
113 
114 typedef vector<const StorageSite*> StorageSiteList;
115 
116 #endif
int getSelfCount() const
Definition: StorageSite.h:40
virtual ~StorageSite()
Definition: StorageSite.cpp:23
DEFINE_TYPENAME("StorageSite")
ScatterIndex _scatterIndex
Definition: StorageSite.h:100
vector< const StorageSite * > StorageSiteList
Definition: StorageSite.h:114
const int _offset
Definition: StorageSite.h:94
void setScatterProcID(int proc_id)
Definition: StorageSite.h:51
ScatterMap & getScatterMap()
Definition: StorageSite.h:63
const ScatterIndex & getScatterIndex() const
Definition: StorageSite.h:61
void setTag(int tag)
Definition: StorageSite.h:53
const GatherMap & getGatherMapLevel1() const
Definition: StorageSite.h:74
const ScatterMap & getScatterMapLevel1() const
Definition: StorageSite.h:73
Definition: Mesh.h:49
const CommonMap & getCommonMap() const
Definition: StorageSite.h:60
const StorageSite *const _parent
Definition: StorageSite.h:95
int _gatherProcID
Definition: StorageSite.h:109
GatherMap & getGatherMap()
Definition: StorageSite.h:64
void setCount(const int selfCount, const int nGhost=0)
Definition: StorageSite.h:42
int _countLevel1
Definition: StorageSite.h:104
void setMesh(const Mesh *mesh)
Definition: StorageSite.h:55
ScatterMap _scatterMapLevel1
Definition: StorageSite.h:105
MeshMap _meshMap
Definition: StorageSite.h:102
int _scatterProcID
Definition: StorageSite.h:108
int getTag() const
Definition: StorageSite.h:84
int getScatterProcID() const
Definition: StorageSite.h:82
int getGatherProcID() const
Definition: StorageSite.h:83
ScatterMap _scatterMap
Definition: StorageSite.h:97
int _selfCount
Definition: StorageSite.h:93
map< const StorageSite *, shared_ptr< Array< int > > > CommonMap
Definition: StorageSite.h:25
const Mesh & getMesh() const
Definition: StorageSite.h:56
StorageSite(const int selfCount, const int nGhost=0, const int offset=0, const StorageSite *parent=0)
Definition: StorageSite.cpp:9
int getCountLevel1() const
Definition: StorageSite.h:72
GatherMap _gatherMapLevel1
Definition: StorageSite.h:106
ScatterMap & getScatterMapLevel1()
Definition: StorageSite.h:76
const ScatterMap & getScatterMap() const
Definition: StorageSite.h:58
map< const StorageSite *, shared_ptr< Array< int > > > ScatterMap
Definition: StorageSite.h:23
void setGatherProcID(int proc_id)
Definition: StorageSite.h:52
int getOffset() const
Definition: StorageSite.h:87
const StorageSite *const getParent() const
Definition: StorageSite.h:86
ScatterIndex & getScatterIndex()
Definition: StorageSite.h:66
const GatherMap & getGatherMap() const
Definition: StorageSite.h:59
map< const StorageSite *, const Mesh * > MeshMap
Definition: StorageSite.h:26
map< const StorageSite *, map< int, int > > ScatterIndex
Definition: StorageSite.h:29
GatherMap & getGatherMapLevel1()
Definition: StorageSite.h:77
CommonMap _commonMap
Definition: StorageSite.h:99
int getCount() const
Definition: StorageSite.h:39
CommonMap & getCommonMap()
Definition: StorageSite.h:65
map< const StorageSite *, shared_ptr< Array< int > > > GatherMap
Definition: StorageSite.h:24
void clearGatherScatterMaps()
Definition: StorageSite.cpp:30
void setCountLevel1(const int countLevel1)
Definition: StorageSite.h:69
GatherMap _gatherMap
Definition: StorageSite.h:98