PlasCom2  1.0
XPACC Multi-physics simluation application
Boundary.H
Go to the documentation of this file.
1 #ifndef __BOUNDARY_H__
2 #define __BOUNDARY_H__
3 
4 namespace simulation {
5  namespace domain {
6  namespace boundary {
7 
8  namespace bc {
9 
10  enum BCType { HOLE=0,SPONGE, NUMBCTYPE };
11  static const char *bcNames[] = {"HOLE","SPONGE","UNKNOWN"};
12  int ResolveBCName(const std::string &inName);
13  std::string ResolveBCType(int inType);
14 
15  class base {
16 
17  public:
18 
21 
22  base() : bcType(0), paramPtr(NULL), myParams(true)
23  {
24  Create();
25  };
26 
27  void SetParams(StateType &inParams)
28  {
29  DestroyParams();
30  paramPtr = &inParams;
31  };
32 
34  {
35  if(myParams && (paramPtr != NULL))
36  delete paramPtr;
37  paramPtr = NULL;
38  myParams = false;
39  };
40 
41  void Destroy()
42  {
43  DestroyParams();
44  };
45 
46  void Create()
47  {
48  Destroy();
49  paramPtr = new StateType;
50  myParams = true;
51  };
52 
53 
54  StateType &Params() { return(*paramPtr); };
55  const StateType &Params() const { return(*paramPtr); };
56 
57  int BCType() const { return(bcType); };
58  void SetBCType(int inType) { bcType = inType; };
59 
60  std::string &BCName() { return(bcName); };
61  const std::string &BCName() const { return(bcName); };
62  void SetBCName(const std::string &inName){ bcName = inName; };
63 
64  DataDictionaryType &ParamDictionary() { return(paramDictionary); };
65  const DataDictionaryType &ParamDictionary() const { return(paramDictionary); };
66  DataDictionaryType &StateDictionary() { return(stateDictionary); };
67  const DataDictionaryType &StateDictionary() const { return(stateDictionary); };
68 
69  protected:
70 
71  int bcType;
72  std::string bcName;
73  StateType *paramPtr;
74 
75  DataDictionaryType stateDictionary;
76  DataDictionaryType paramDictionary;
77 
78  bool myParams;
79 
80  };
81 
82  }
83 
84 
85  class base {
86 
87  public:
88 
92 
93  base() : statePtr(NULL), paramPtr(NULL), bcPtr(NULL),
94  myState(true), myParams(true), myBC(true)
95  {
96  Create();
97  };
98 
99  void SetBC(BCType &inBC)
100  {
101  DestroyBC();
102  bcPtr = &inBC;
103  }
104 
105  void SetState(StateType &inState)
106  {
107  DestroyState();
108  statePtr = &inState;
109  };
110 
111  void SetParams(StateType &inParams)
112  {
113  DestroyParams();
114  paramPtr = &inParams;
115  };
116 
118  {
119  if(myState && (statePtr != NULL))
120  delete statePtr;
121  statePtr = NULL;
122  myState = false;
123  };
124 
126  {
127  if(myParams && (paramPtr != NULL))
128  delete paramPtr;
129  paramPtr = NULL;
130  myParams = false;
131  };
132 
133  void DestroyBC()
134  {
135  if(myBC && (bcPtr != NULL))
136  delete bcPtr;
137  bcPtr = NULL;
138  myBC = false;
139  };
140 
141  void Destroy()
142  {
143  DestroyState();
144  DestroyParams();
145  DestroyBC();
146  };
147 
148  void Create()
149  {
150  Destroy();
151  statePtr = new StateType;
152  myState = true;
153  paramPtr = new StateType;
154  myParams = true;
155  bcPtr = new BCType;
156  myBC = true;
157  };
158 
159 
160  StateType &State() { return(*statePtr); };
161  const StateType &State() const {return(*statePtr); };
162  StateType &Params() { return(*paramPtr); };
163  const StateType &Params() const { return(*paramPtr); };
164 
165  GridType &Grid() { return(*gridPtr); };
166  const GridType &Grid() const {return(*gridPtr); };
167  void SetGrid(GridType &inGrid) { gridPtr = &inGrid; };
168 
169  BCType &BC(){ return(*bcPtr); };
170  const BCType &BC() const {return(*bcPtr); };
171 
172  int GridRegionID() const {return(gridRegionID); };
173  void SetGridRegionID(int inID) { gridRegionID = inID; };
174 
175  const std::vector<pcpp::IndexIntervalType> &ThreadPartitionIntervals() const
176  { return(threadPartitionIntervals); };
177  std::vector<pcpp::IndexIntervalType> &ThreadPartitionIntervals()
178  { return(threadPartitionIntervals); };
179  const std::vector<pcpp::IndexIntervalType> &ThreadBufferIntervals() const
180  { return(threadBufferIntervals); };
181  std::vector<pcpp::IndexIntervalType> &ThreadBufferIntervals()
182  { return(threadBufferIntervals); };
184  { return(boundaryPartitionInterval);};
186  { return(boundaryPartitionInterval);};
188  { return(partitionBufferInterval); };
190  { return(partitionBufferInterval); };
191 
192  void SetName(const std::string &inName) { boundaryName = inName; };
193  const std::string &Name() const {return(boundaryName); };
194 
195  protected:
196 
197  int gridRegionID;
198  BCType *bcPtr;
199  StateType *statePtr;
200  StateType *paramPtr;
201  GridType *gridPtr;
202  std::string boundaryName;
203 
206  std::vector<pcpp::IndexIntervalType> threadPartitionIntervals;
207  std::vector<pcpp::IndexIntervalType> threadBufferIntervals;
208 
209  // StateType::MetaDataSetType stateDataDictionary;
210  // StateType::MetaDataSetType paramDataDictionary;
211 
212  bool myState;
213  bool myParams;
214  bool myBC;
215 
216  };
217 
218 
219 
220  }
221  }
222 }
223 #endif
DataDictionaryType paramDictionary
Definition: Boundary.H:76
const BCType & BC() const
Definition: Boundary.H:170
const pcpp::IndexIntervalType & BoundaryPartitionInterval() const
Definition: Boundary.H:183
void SetParams(StateType &inParams)
Definition: Boundary.H:111
const std::string & Name() const
Definition: Boundary.H:193
DataDictionaryType stateDictionary
Definition: Boundary.H:75
pcpp::IndexIntervalType & PartitionBufferInterval()
Definition: Boundary.H:189
simulation::state::base StateType
Definition: Boundary.H:19
const std::vector< pcpp::IndexIntervalType > & ThreadBufferIntervals() const
Definition: Boundary.H:179
int ResolveBCName(const std::string &inName)
Definition: Boundary.C:8
pcpp::IndexIntervalType & BoundaryPartitionInterval()
Definition: Boundary.H:185
const GridType & Grid() const
Definition: Boundary.H:166
const DataDictionaryType & ParamDictionary() const
Definition: Boundary.H:65
void SetParams(StateType &inParams)
Definition: Boundary.H:27
pcpp::IndexIntervalType boundaryPartitionInterval
Definition: Boundary.H:204
void SetBC(BCType &inBC)
Definition: Boundary.H:99
pcpp::IndexIntervalType partitionBufferInterval
Definition: Boundary.H:205
StateType::MetaDataSetType DataDictionaryType
Definition: Boundary.H:20
void SetGrid(GridType &inGrid)
Definition: Boundary.H:167
std::string ResolveBCType(int inType)
Definition: Boundary.C:17
simulation::domain::boundary::bc::base BCType
Definition: Boundary.H:91
DataDictionaryType & ParamDictionary()
Definition: Boundary.H:64
const StateType & State() const
Definition: Boundary.H:161
const std::string & BCName() const
Definition: Boundary.H:61
std::vector< pcpp::IndexIntervalType > threadBufferIntervals
Definition: Boundary.H:207
simulation::grid::parallel_blockstructured GridType
Definition: Boundary.H:90
simulation::state::base StateType
Definition: Boundary.H:89
void SetName(const std::string &inName)
Definition: Boundary.H:192
void SetBCName(const std::string &inName)
Definition: Boundary.H:62
static const char * bcNames[]
Definition: Boundary.H:11
DataDictionaryType & StateDictionary()
Definition: Boundary.H:66
std::vector< pcpp::IndexIntervalType > & ThreadPartitionIntervals()
Definition: Boundary.H:177
const pcpp::IndexIntervalType & PartitionBufferInterval() const
Definition: Boundary.H:187
const std::vector< pcpp::IndexIntervalType > & ThreadPartitionIntervals() const
Definition: Boundary.H:175
Simple Block Structured Mesh object.
Definition: IndexUtil.H:21
const StateType & Params() const
Definition: Boundary.H:55
std::vector< pcpp::IndexIntervalType > & ThreadBufferIntervals()
Definition: Boundary.H:181
const StateType & Params() const
Definition: Boundary.H:163
void SetState(StateType &inState)
Definition: Boundary.H:105
const DataDictionaryType & StateDictionary() const
Definition: Boundary.H:67
std::vector< pcpp::IndexIntervalType > threadPartitionIntervals
Definition: Boundary.H:206