Manual for OpenFLUID 2.1.10

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  @file SimulatorSignature.hpp
35 
36  @author Jean-Christophe FABRE <jean-christophe.fabre@inra.fr>
37 */
38 
39 #ifndef __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
40 #define __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
41 
42 
43 #include <openfluid/config.hpp>
44 #include <openfluid/dllexport.hpp>
45 #include <openfluid/core/TypeDefs.hpp>
48 
49 
50 namespace openfluid { namespace ware {
51 
52 
53 typedef std::string SimMethod_t;
54 
55 typedef std::string SimProcess_t;
56 
57 typedef std::string SimDomain_t;
58 
59 
60 // =====================================================================
61 // =====================================================================
62 
63 
64 /**
65 Class for storage of the definition of data handled by the simulator.
66 */
68 {
69  public:
70 
71  std::string DataName;
72  std::string Description;
73  std::string DataUnit;
74 
76  DataName(""),Description(""),DataUnit("")
77  { }
78 
79  SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit) :
80  DataName(DName),Description(DDescription),DataUnit(DUnit)
81  { }
82 };
83 
84 
85 // =====================================================================
86 // =====================================================================
87 
88 
89 /**
90 Class for storage of the definition of data handled by the simulator.
91 */
93 {
94  public:
95 
97 
99  SignatureDataItem(), UnitsClass("")
100  { }
101 
103  std::string DDescription, std::string DUnit) :
104  SignatureDataItem(DName,DDescription,DUnit),UnitsClass(UClass)
105  { }
106 };
107 
108 
109 // =====================================================================
110 // =====================================================================
111 
112 
113 /**
114 Class for storage of the definition of typed data handled by the simulator.
115 */
117 {
118 
119  public:
120 
122 
124  SignatureSpatialDataItem(), DataType(openfluid::core::Value::NONE)
125  { }
126 
128  std::string DDescription, std::string DUnit);
129 };
130 
131 
132 // =====================================================================
133 // =====================================================================
134 
135 
136 /**
137  Class for storage of the definition of the data handled by the simulator. This is part of the signature.
138 */
140 {
141  public:
142 
143  // TODO use the same naming style for all members
144 
145  std::vector<SignatureDataItem> UsedParams;
146 
147  std::vector<SignatureDataItem> RequiredParams;
148 
149  std::vector<SignatureTypedSpatialDataItem> ProducedVars;
150 
151  std::vector<SignatureTypedSpatialDataItem> UpdatedVars;
152 
153  std::vector<SignatureTypedSpatialDataItem> RequiredVars;
154 
155  std::vector<SignatureTypedSpatialDataItem> UsedVars;
156 
157  std::vector<SignatureSpatialDataItem> ProducedAttribute;
158 
159  std::vector<SignatureSpatialDataItem> RequiredAttribute;
160 
161  std::vector<SignatureSpatialDataItem> UsedAttribute;
162 
163  std::vector<std::string> RequiredExtraFiles;
164 
165  std::vector<std::string> UsedExtraFiles;
166 
167  std::vector<openfluid::core::UnitsClass_t> UsedEventsOnUnits;
168 
169 
171  {
172  clear();
173  }
174 
175 
176  void clear()
177  {
178  UsedParams.clear();
179  RequiredParams.clear();
180  ProducedVars.clear();
181  UpdatedVars.clear();
182  RequiredVars.clear();
183  UsedVars.clear();
184  ProducedAttribute.clear();
185  RequiredAttribute.clear();
186  UsedAttribute.clear();
187  RequiredExtraFiles.clear();
188  UsedExtraFiles.clear();
189  UsedEventsOnUnits.clear();
190  }
191 
192 };
193 
194 
195 // =====================================================================
196 // =====================================================================
197 
198 
199 /**
200  Class for storage of the definition of spatial units handled by the simulator.
201 */
203 {
204  public:
205 
207 
208  std::string Description;
209 
211  UnitsClass(""),Description("")
212  { }
213 
214  SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass,std::string DDescription) :
215  UnitsClass(UClass),Description(DDescription)
216  { }
217 };
218 
219 
220 // =====================================================================
221 // =====================================================================
222 
223 
225 {
226  public:
227 
228  std::string UpdatedUnitsGraph;
229 
230  std::vector<SignatureUnitsClassItem> UpdatedUnitsClass;
231 
232 
234  {
235  clear();
236  }
237 
238 
239  void clear()
240  {
241  UpdatedUnitsGraph.clear();
242  UpdatedUnitsClass.clear();
243  }
244 };
245 
246 
247 // =====================================================================
248 // =====================================================================
249 
250 
252 {
253  public:
254 
255  enum SchedulingType { UNDEFINED, DEFAULT, FIXED, RANGE };
256 
258 
260 
262 
263 
265  {
266  setAsUndefined();
267  }
268 
270  {
271  Type = UNDEFINED;
272  Min = 0;
273  Max = 0;
274  }
275 
277  {
278  Type = DEFAULT;
279  Min = 0;
280  Max = 0;
281  }
282 
284  {
285  Type = FIXED;
286  Min = Val;
287  Max = Val;
288  }
289 
291  {
292  Type = RANGE;
293  Min = MinVal;
294  Max = MaxVal;
295  }
296 
297 };
298 
299 
300 // =====================================================================
301 // =====================================================================
302 
303 
304 /**
305  Class encapsulating the plugin signature,
306  returned from the plugin to the host app for registering
307 */
309 {
310 
311  public:
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 } } // namespaces
365 
366 
367 #endif
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:336
Definition: ApplicationException.hpp:47
Definition: SimulatorSignature.hpp:67
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:159
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:163
std::string SimDomain_t
Definition: SimulatorSignature.hpp:57
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:123
std::string UnitsClass_t
Definition: TypeDefs.hpp:98
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:155
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:276
Definition: SimulatorSignature.hpp:224
Definition: SimulatorSignature.hpp:116
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:331
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:228
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:167
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:261
std::uint64_t Duration_t
Definition: TypeDefs.hpp:312
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:259
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:283
Definition: SimulatorSignature.hpp:255
SignatureHandledData()
Definition: SimulatorSignature.hpp:170
Definition: WareSignature.hpp:52
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:121
SchedulingType
Definition: SimulatorSignature.hpp:255
SchedulingType Type
Definition: SimulatorSignature.hpp:257
Definition: SimulatorSignature.hpp:308
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:96
Definition: SimulatorSignature.hpp:202
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:157
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:79
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:210
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:149
SimMethod_t Method
Definition: SimulatorSignature.hpp:326
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:341
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:165
std::string SimProcess_t
Definition: SimulatorSignature.hpp:55
void setAsUndefined()
Definition: SimulatorSignature.hpp:269
Type
Definition: Value.hpp:68
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:147
SimDomain_t Domain
Definition: SimulatorSignature.hpp:316
SignatureDataItem()
Definition: SimulatorSignature.hpp:75
void clear()
Definition: SimulatorSignature.hpp:239
std::string SimMethod_t
Definition: SimulatorSignature.hpp:53
void clear()
Definition: SimulatorSignature.hpp:350
std::string Description
Definition: SimulatorSignature.hpp:72
std::string Description
Definition: SimulatorSignature.hpp:208
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:214
SimProcess_t Process
Definition: SimulatorSignature.hpp:321
std::string DataUnit
Definition: SimulatorSignature.hpp:73
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:264
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:98
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:145
void clear()
Definition: WareSignature.hpp:99
SimulatorSignature()
Definition: SimulatorSignature.hpp:344
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:290
#define OPENFLUID_API
Definition: dllexport.hpp:86
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:153
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:102
Definition: SimulatorSignature.hpp:92
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:233
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:161
std::string DataName
Definition: SimulatorSignature.hpp:71
void clear()
Definition: SimulatorSignature.hpp:176
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:151
Definition: SimulatorSignature.hpp:251
Definition: SimulatorSignature.hpp:139
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:230
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:206