Memosa-FVM  0.2
Field.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 _FIELD_H_
6 #define _FIELD_H_
7 
8 #include "IContainer.h"
9 #include "StorageSite.h"
10 #include "ArrayBase.h"
11 
12 
13 
14 class Field : public IContainer
15 {
16 public:
17  typedef map<const StorageSite*, shared_ptr<ArrayBase> > ArrayMap;
18  typedef map<const StorageSite*, vector<const StorageSite*>* > ChildSitesMap;
19  typedef pair<const StorageSite*, const StorageSite*> EntryIndex;
20  typedef map<EntryIndex, shared_ptr<ArrayBase> > GhostArrayMap;
21 
22  Field(const string& name);
23 
24  virtual ~Field();
25 
26  DEFINE_TYPENAME("Field");
27 
28  Field& operator=(const Field& oField);
29 
30  const ArrayBase& operator[](const StorageSite&) const;
32 
33  shared_ptr<ArrayBase> getArrayPtr(const StorageSite&);
34  void addArray(const StorageSite&, shared_ptr<ArrayBase> a);
35  void removeArray(const StorageSite&);
36  void removeArrays(const StorageSiteList& sites);
37 
38  virtual void copyFrom(const IContainer& a);
39  virtual void zero();
40 
41  virtual shared_ptr<IContainer> newCopy() const;
42  virtual shared_ptr<IContainer> newClone() const;
43 
44  bool hasArray(const StorageSite& s) const;
45 
46  void syncLocal();
47 
49 
52 
53  static void syncLocalVectorFields(std::vector<Field*>& dsf);
54 
55 
56 
57  const string getName() const {return _name;}
58 
59  void clear();
60 
61 private:
62 
63  Field(const Field&);
64  void createSyncGatherArrays(const StorageSite& site);
65  void syncScatter(const StorageSite& site);
66  void syncGather(const StorageSite& site);
67  void createSyncGatherArraysLevel1(const StorageSite& site);
68  void syncScatterLevel1(const StorageSite& site);
69  void syncGatherLevel1(const StorageSite& site);
70  int get_request_size();
73 
74  static void createSyncGatherArraysVectorFields(const StorageSite& site, Field& field, const size_t numDir);
75  static void syncScatterVectorFields(const StorageSite& site, std::vector<Field*> & dsf);
76  static void syncGatherVectorFields(const StorageSite& site, std::vector<Field*>& dsf);
77  static void createSyncGatherArraysVectorFieldsLevel1(const StorageSite& site, Field& field, const size_t numDir);
78  static void syncScatterVectorFieldsLevel1(const StorageSite& site, std::vector<Field*> & dsf);
79  static void syncGatherVectorFieldsLevel1(const StorageSite& site, std::vector<Field*>& dsf);
80 
81  static int get_request_size(Field& field);
82  static int get_request_size_level1(Field& field);
83 
84  void syncLocalLevel1();
85  static void syncLocalVectorFieldsLevel1(std::vector<Field*>& dsf);
86 
87 
88  //ArrayBase& getGhostArray(const StorageSite&);
89 
90  const string _name;
94 
96 
97  ArrayBase& _create(const StorageSite& site);
98 
99 };
100 
101 #endif
Field & operator=(const Field &oField)
Definition: Field.cpp:177
Field(const string &name)
Definition: Field.cpp:22
static void syncScatterVectorFields(const StorageSite &site, std::vector< Field * > &dsf)
Definition: Field.cpp:569
const string _name
Definition: Field.h:90
static void syncGatherVectorFields(const StorageSite &site, std::vector< Field * > &dsf)
Definition: Field.cpp:633
bool hasArray(const StorageSite &s) const
Definition: Field.cpp:37
vector< const StorageSite * > StorageSiteList
Definition: StorageSite.h:114
ArrayMap _arrays
Definition: Field.h:91
ArrayMap & getArrayMap()
Definition: Field.h:48
ChildSitesMap _childSitesMap
Definition: Field.h:95
map< const StorageSite *, vector< const StorageSite * > * > ChildSitesMap
Definition: Field.h:18
pair< const StorageSite *, const StorageSite * > EntryIndex
Definition: Field.h:19
Definition: Field.h:14
virtual shared_ptr< IContainer > newClone() const
Definition: Field.cpp:141
static void createSyncGatherArraysVectorFields(const StorageSite &site, Field &field, const size_t numDir)
Definition: Field.cpp:528
map< EntryIndex, shared_ptr< ArrayBase > > GhostArrayMap
Definition: Field.h:20
void removeArray(const StorageSite &)
Definition: Field.cpp:79
void syncScatter(const StorageSite &site)
Definition: Field.cpp:234
static void syncGatherVectorFieldsLevel1(const StorageSite &site, std::vector< Field * > &dsf)
Definition: Field.cpp:668
virtual void copyFrom(const IContainer &a)
Definition: Field.cpp:187
static void syncLocalVectorFieldsLevel1(std::vector< Field * > &dsf)
Definition: Field.cpp:770
int get_request_size()
Definition: Field.cpp:397
static void createSyncGatherArraysVectorFieldsLevel1(const StorageSite &site, Field &field, const size_t numDir)
Definition: Field.cpp:548
const string getName() const
Definition: Field.h:57
void clear()
Definition: Field.cpp:105
GhostArrayMap _ghostArraysLevel1
Definition: Field.h:93
void syncGather(const StorageSite &site)
Definition: Field.cpp:280
void createSyncGatherArrays(const StorageSite &site)
Definition: Field.cpp:195
const ArrayBase & operator[](const StorageSite &) const
Definition: Field.cpp:44
GhostArrayMap _ghostArrays
Definition: Field.h:92
GhostArrayMap & getGhostArrayMapLevel1()
Definition: Field.h:51
void addArray(const StorageSite &, shared_ptr< ArrayBase > a)
Definition: Field.cpp:72
void syncScatterLevel1(const StorageSite &site)
Definition: Field.cpp:257
int get_request_size_scatter_level1()
Definition: Field.cpp:486
void syncGatherLevel1(const StorageSite &site)
Definition: Field.cpp:307
int get_request_size_gather_level1()
Definition: Field.cpp:506
static void syncLocalVectorFields(std::vector< Field * > &dsf)
Definition: Field.cpp:702
void createSyncGatherArraysLevel1(const StorageSite &site)
Definition: Field.cpp:214
GhostArrayMap & getGhostArrayMap()
Definition: Field.h:50
static void syncScatterVectorFieldsLevel1(const StorageSite &site, std::vector< Field * > &dsf)
Definition: Field.cpp:600
void syncLocalLevel1()
Definition: Field.cpp:417
ArrayBase & _create(const StorageSite &site)
Definition: Field.cpp:114
virtual ~Field()
Definition: Field.cpp:30
map< const StorageSite *, shared_ptr< ArrayBase > > ArrayMap
Definition: Field.h:17
shared_ptr< ArrayBase > getArrayPtr(const StorageSite &)
Definition: Field.cpp:63
virtual void zero()
Definition: Field.cpp:168
void syncLocal()
Definition: Field.cpp:334
DEFINE_TYPENAME("Field")
static int get_request_size_level1(Field &field)
Definition: Field.cpp:863
virtual shared_ptr< IContainer > newCopy() const
Definition: Field.cpp:155
void removeArrays(const StorageSiteList &sites)
Definition: Field.cpp:96