SimulatorSignature.hpp
Go to the documentation of this file.
1 /*
2 
3  This file is part of OpenFLUID software
4  Copyright(c) 2007, INRA - Montpellier SupAgro
5 
6 
7  == GNU General Public License Usage ==
8 
9  OpenFLUID is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  OpenFLUID is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
21 
22 
23  == Other Usage ==
24 
25  Other Usage means a use of OpenFLUID that is inconsistent with the GPL
26  license, and requires a written agreement between You and INRA.
27  Licensees for Other Usage of OpenFLUID may use this file in accordance
28  with the terms contained in the written agreement between You and INRA.
29 
30 */
31 
32 
33 
34 /**
35  @file SimulatorSignature.hpp
36 
37  @author Jean-Christophe FABRE <jean-christophe.fabre@supagro.inra.fr>
38 */
39 
40 #ifndef __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
41 #define __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
42 
43 
44 #include <openfluid/config.hpp>
45 #include <openfluid/dllexport.hpp>
46 #include <openfluid/core/TypeDefs.hpp>
49 
50 
51 
52 namespace openfluid { namespace ware {
53 
54 
55 typedef std::string SimMethod_t;
56 
57 typedef std::string SimProcess_t;
58 
59 typedef std::string SimDomain_t;
60 
61 
62 // =====================================================================
63 // =====================================================================
64 
65 
66 /**
67 Class for storage of the definition of data handled by the simulator.
68 */
70 {
71  public:
72 
73  std::string DataName;
74  std::string Description;
75  std::string DataUnit;
76 
78  DataName(""),Description(""),DataUnit("")
79  { }
80 
81  SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit) :
82  DataName(DName),Description(DDescription),DataUnit(DUnit)
83  { }
84 };
85 
86 
87 // =====================================================================
88 // =====================================================================
89 
90 
91 /**
92 Class for storage of the definition of data handled by the simulator.
93 */
95 {
96  public:
97 
99 
101  SignatureDataItem(), UnitsClass("")
102  { }
103 
105  std::string DDescription, std::string DUnit) :
106  SignatureDataItem(DName,DDescription,DUnit),UnitsClass(UClass)
107  { }
108 };
109 
110 
111 // =====================================================================
112 // =====================================================================
113 
114 
115 /**
116 Class for storage of the definition of typed data handled by the simulator.
117 */
119 {
120 
121  public:
122 
124 
126  SignatureSpatialDataItem(), DataType(openfluid::core::Value::NONE) {}
127 
129  std::string DDescription, std::string DUnit);
130 };
131 
132 
133 // =====================================================================
134 // =====================================================================
135 
136 
137 /**
138  Class for storage of the definition of the data handled by the simulator. This is part of the signature.
139 */
141 {
142  public:
143 
144  // TODO use the same naming style for all members
145 
146  std::vector<SignatureDataItem> UsedParams;
147 
148  std::vector<SignatureDataItem> RequiredParams;
149 
150  std::vector<SignatureTypedSpatialDataItem> ProducedVars;
151 
152  std::vector<SignatureTypedSpatialDataItem> UpdatedVars;
153 
154  std::vector<SignatureTypedSpatialDataItem> RequiredVars;
155 
156  std::vector<SignatureTypedSpatialDataItem> UsedVars;
157 
158  std::vector<SignatureSpatialDataItem> ProducedAttribute;
159 
160  std::vector<SignatureSpatialDataItem> RequiredAttribute;
161 
162  std::vector<SignatureSpatialDataItem> UsedAttribute;
163 
164  std::vector<std::string> RequiredExtraFiles;
165 
166  std::vector<std::string> UsedExtraFiles;
167 
168  std::vector<openfluid::core::UnitsClass_t> UsedEventsOnUnits;
169 
170 
172  {
173  clear();
174  }
175 
176 
177  void clear()
178  {
179  UsedParams.clear();
180  RequiredParams.clear();
181  ProducedVars.clear();
182  UpdatedVars.clear();
183  RequiredVars.clear();
184  UsedVars.clear();
185  ProducedAttribute.clear();
186  RequiredAttribute.clear();
187  UsedAttribute.clear();
188  RequiredExtraFiles.clear();
189  UsedExtraFiles.clear();
190  UsedEventsOnUnits.clear();
191  }
192 
193 };
194 
195 
196 // =====================================================================
197 // =====================================================================
198 
199 
200 /**
201  Class for storage of the definition of spatial units handled by the simulator.
202 */
204 {
205  public:
206 
208  std::string Description;
209 
211  UnitsClass(""),Description("") {}
212 
214  std::string DDescription) :
215  UnitsClass(UClass),Description(DDescription) {}
216 };
217 
218 
219 // =====================================================================
220 // =====================================================================
221 
222 
224 {
225  public:
226 
227  std::string UpdatedUnitsGraph;
228 
229  std::vector<SignatureUnitsClassItem> UpdatedUnitsClass;
230 
231 
233  {
234  clear();
235  }
236 
237 
238  void clear()
239  {
240  UpdatedUnitsGraph.clear();
241  UpdatedUnitsClass.clear();
242  }
243 };
244 
245 
246 // =====================================================================
247 // =====================================================================
248 
249 
251 {
252  public:
253 
254  enum SchedulingType { UNDEFINED, DEFAULT, FIXED, RANGE };
255 
257 
259 
261 
262 
264  {
265  setAsUndefined();
266  }
267 
269  {
270  Type = UNDEFINED;
271  Min = 0;
272  Max = 0;
273  }
274 
276  {
277  Type = DEFAULT;
278  Min = 0;
279  Max = 0;
280  }
281 
283  {
284  Type = FIXED;
285  Min = Val;
286  Max = Val;
287  }
288 
290  {
291  Type = RANGE;
292  Min = MinVal;
293  Max = MaxVal;
294  }
295 
296 };
297 
298 
299 // =====================================================================
300 // =====================================================================
301 
302 
303 /**
304  Class encapsulating the plugin signature,
305  returned from the plugin to the host app for registering
306 */
308 {
309 
310  public:
311 
312 
313  /**
314  Plugin domain (i.e. hydrology, pop, erosion, ...)
315  */
316  SimDomain_t Domain;
317 
318  /**
319  Plugin simulated process (i.e. surface rainfall-runoff production, ditch infiltration, ...)
320  */
321  SimProcess_t Process;
322 
323  /**
324  Plugin involved method (i.e. morel-seytoux, hayami, ...)
325  */
326  SimMethod_t Method;
327 
328  /**
329  Handled data
330  */
332 
333  /**
334  Handled units graph
335  */
337 
338  /**
339  Time scheduling
340  */
342 
343 
345  {
346  clear();
347  }
348 
349 
350  void clear()
351  {
353  Domain.clear();
354  Process.clear();
355  Method.clear();
356  HandledData.clear();
357  HandledUnitsGraph.clear();
358  TimeScheduling.setAsUndefined();
359  }
360 
361 };
362 
363 
364 
365 } } // namespaces
366 
367 
368 
369 #endif
Definition: SimulatorSignature.hpp:140
SchedulingType
Definition: SimulatorSignature.hpp:254
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:158
SimulatorSignature()
Definition: SimulatorSignature.hpp:344
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:146
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:160
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:289
unsigned long long Duration_t
Definition: DateTime.hpp:68
SignatureHandledData()
Definition: SimulatorSignature.hpp:171
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:152
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:164
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:282
void clear()
Definition: SimulatorSignature.hpp:238
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:227
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:263
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:229
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:81
#define OPENFLUID_API
Definition: dllexport.hpp:87
std::string SimMethod_t
Definition: SimulatorSignature.hpp:55
std::string DataUnit
Definition: SimulatorSignature.hpp:75
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:125
Type
Definition: Value.hpp:68
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:98
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:168
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:232
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:213
SignatureDataItem()
Definition: SimulatorSignature.hpp:77
std::string SimProcess_t
Definition: SimulatorSignature.hpp:57
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:166
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:156
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:210
void clear()
Definition: WareSignature.hpp:98
Definition: SimulatorSignature.hpp:69
void setAsUndefined()
Definition: SimulatorSignature.hpp:268
Definition: ApplicationException.hpp:47
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:104
SimMethod_t Method
Definition: SimulatorSignature.hpp:326
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:260
Definition: SimulatorSignature.hpp:223
std::string UnitsClass_t
Definition: TypeDefs.hpp:71
SchedulingType Type
Definition: SimulatorSignature.hpp:256
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:258
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:150
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:207
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:341
std::string Description
Definition: SimulatorSignature.hpp:208
Definition: WareSignature.hpp:51
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:154
void clear()
Definition: SimulatorSignature.hpp:350
std::string DataName
Definition: SimulatorSignature.hpp:73
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:336
Definition: SimulatorSignature.hpp:118
SimDomain_t Domain
Definition: SimulatorSignature.hpp:316
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:162
std::string Description
Definition: SimulatorSignature.hpp:74
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:123
void clear()
Definition: SimulatorSignature.hpp:177
Definition: SimulatorSignature.hpp:307
SimProcess_t Process
Definition: SimulatorSignature.hpp:321
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:331
Definition: SimulatorSignature.hpp:203
Definition: SimulatorSignature.hpp:94
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:100
std::string SimDomain_t
Definition: SimulatorSignature.hpp:59
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:148
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:275
Definition: SimulatorSignature.hpp:250
Definition: SimulatorSignature.hpp:254