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
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:164
std::string UnitsClass_t
Definition: TypeDefs.hpp:71
unsigned long long Duration_t
Definition: DateTime.hpp:68
std::string DataName
Definition: SimulatorSignature.hpp:73
Definition: SimulatorSignature.hpp:118
SchedulingType
Definition: SimulatorSignature.hpp:254
std::string SimProcess_t
Definition: SimulatorSignature.hpp:57
Definition: SimulatorSignature.hpp:94
SimProcess_t Process
Definition: SimulatorSignature.hpp:321
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:166
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:258
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:282
Definition: SimulatorSignature.hpp:69
Definition: SimulatorSignature.hpp:254
void clear()
Definition: SimulatorSignature.hpp:177
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:260
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:160
void clear()
Definition: SimulatorSignature.hpp:350
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:336
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:289
std::string SimDomain_t
Definition: SimulatorSignature.hpp:59
SimMethod_t Method
Definition: SimulatorSignature.hpp:326
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:207
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:104
SignatureHandledData()
Definition: SimulatorSignature.hpp:171
SimulatorSignature()
Definition: SimulatorSignature.hpp:344
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:152
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:150
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:156
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:331
Definition: SimulatorSignature.hpp:140
SchedulingType Type
Definition: SimulatorSignature.hpp:256
Definition: SimulatorSignature.hpp:223
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:81
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:154
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:100
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:229
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:98
std::string Description
Definition: SimulatorSignature.hpp:208
Type
Definition: Value.hpp:68
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:125
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:275
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:123
std::string DataUnit
Definition: SimulatorSignature.hpp:75
Definition: ApplicationException.hpp:47
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:341
Definition: SimulatorSignature.hpp:307
#define OPENFLUID_API
Definition: dllexport.hpp:87
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:232
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:146
void clear()
Definition: SimulatorSignature.hpp:238
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:162
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:263
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:210
std::string Description
Definition: SimulatorSignature.hpp:74
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:213
std::string SimMethod_t
Definition: SimulatorSignature.hpp:55
Definition: SimulatorSignature.hpp:203
Definition: SimulatorSignature.hpp:250
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:148
void setAsUndefined()
Definition: SimulatorSignature.hpp:268
SimDomain_t Domain
Definition: SimulatorSignature.hpp:316
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:158
SignatureDataItem()
Definition: SimulatorSignature.hpp:77
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:168
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:227
Definition: WareSignature.hpp:51
void clear()
Definition: WareSignature.hpp:98