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 
127  std::string DDescription, std::string DUnit);
128 };
129 
130 
131 // =====================================================================
132 // =====================================================================
133 
134 
135 /**
136  Class for storage of the definition of the data handled by the simulator. This is part of the signature.
137 */
139 {
140  public:
141 
142  // TODO use the same naming style for all members
143 
144  std::vector<SignatureDataItem> UsedParams;
145 
146  std::vector<SignatureDataItem> RequiredParams;
147 
148  std::vector<SignatureTypedSpatialDataItem> ProducedVars;
149 
150  std::vector<SignatureTypedSpatialDataItem> UpdatedVars;
151 
152  std::vector<SignatureTypedSpatialDataItem> RequiredVars;
153 
154  std::vector<SignatureTypedSpatialDataItem> UsedVars;
155 
156  std::vector<SignatureSpatialDataItem> ProducedAttribute;
157 
158  std::vector<SignatureSpatialDataItem> RequiredAttribute;
159 
160  std::vector<SignatureSpatialDataItem> UsedAttribute;
161 
162  std::vector<std::string> RequiredExtraFiles;
163 
164  std::vector<std::string> UsedExtraFiles;
165 
166  std::vector<openfluid::core::UnitsClass_t> UsedEventsOnUnits;
167 
168 
170  {
171  clear();
172  }
173 
174 
175  void clear()
176  {
177  UsedParams.clear();
178  RequiredParams.clear();
179  ProducedVars.clear();
180  UpdatedVars.clear();
181  RequiredVars.clear();
182  UsedVars.clear();
183  ProducedAttribute.clear();
184  RequiredAttribute.clear();
185  UsedAttribute.clear();
186  RequiredExtraFiles.clear();
187  UsedExtraFiles.clear();
188  UsedEventsOnUnits.clear();
189  }
190 
191 };
192 
193 
194 // =====================================================================
195 // =====================================================================
196 
197 
198 /**
199  Class for storage of the definition of spatial units handled by the simulator.
200 */
202 {
203  public:
204 
206  std::string Description;
207 
209  UnitsClass(""),Description("") {}
210 
212  std::string DDescription) :
213  UnitsClass(UClass),Description(DDescription) {}
214 };
215 
216 
217 // =====================================================================
218 // =====================================================================
219 
220 
222 {
223  public:
224 
225  std::string UpdatedUnitsGraph;
226 
227  std::vector<SignatureUnitsClassItem> UpdatedUnitsClass;
228 
229 
231  {
232  clear();
233  }
234 
235 
236  void clear()
237  {
238  UpdatedUnitsGraph.clear();
239  UpdatedUnitsClass.clear();
240  }
241 };
242 
243 
244 // =====================================================================
245 // =====================================================================
246 
247 
249 {
250  public:
251 
252  enum SchedulingType { UNDEFINED, DEFAULT, FIXED, RANGE };
253 
255 
257 
259 
260 
262  {
263  setAsUndefined();
264  }
265 
267  {
268  Type = UNDEFINED;
269  Min = 0;
270  Max = 0;
271  }
272 
274  {
275  Type = DEFAULT;
276  Min = 0;
277  Max = 0;
278  }
279 
281  {
282  Type = FIXED;
283  Min = Val;
284  Max = Val;
285  }
286 
288  {
289  Type = RANGE;
290  Min = MinVal;
291  Max = MaxVal;
292  }
293 
294 };
295 
296 
297 // =====================================================================
298 // =====================================================================
299 
300 
301 /**
302  Class encapsulating the plugin signature,
303  returned from the plugin to the host app for registering
304 */
306 {
307 
308  public:
309 
310 
311  /**
312  Plugin domain (i.e. hydrology, pop, erosion, ...)
313  */
314  SimDomain_t Domain;
315 
316  /**
317  Plugin simulated process (i.e. surface rainfall-runoff production, ditch infiltration, ...)
318  */
319  SimProcess_t Process;
320 
321  /**
322  Plugin involved method (i.e. morel-seytoux, hayami, ...)
323  */
324  SimMethod_t Method;
325 
326  /**
327  Handled data
328  */
330 
331  /**
332  Handled units graph
333  */
335 
336  /**
337  Time scheduling
338  */
340 
341 
343  {
344  clear();
345  }
346 
347 
348  void clear()
349  {
351  Domain.clear();
352  Process.clear();
353  Method.clear();
354  HandledData.clear();
355  HandledUnitsGraph.clear();
356  TimeScheduling.setAsUndefined();
357  }
358 
359 };
360 
361 
362 } } // namespaces
363 
364 
365 #endif
Definition: SimulatorSignature.hpp:116
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:148
SimMethod_t Method
Definition: SimulatorSignature.hpp:324
void clear()
Definition: WareSignature.hpp:99
Definition: SimulatorSignature.hpp:221
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:211
Type
Definition: Value.hpp:68
SchedulingType Type
Definition: SimulatorSignature.hpp:254
Definition: WareSignature.hpp:52
SchedulingType
Definition: SimulatorSignature.hpp:252
void clear()
Definition: SimulatorSignature.hpp:236
std::string DataName
Definition: SimulatorSignature.hpp:71
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:123
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:160
SimProcess_t Process
Definition: SimulatorSignature.hpp:319
void clear()
Definition: SimulatorSignature.hpp:175
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:227
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:273
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:205
void setAsUndefined()
Definition: SimulatorSignature.hpp:266
std::string SimMethod_t
Definition: SimulatorSignature.hpp:53
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:158
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:339
Definition: SimulatorSignature.hpp:92
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:258
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:230
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:96
std::string Description
Definition: SimulatorSignature.hpp:72
std::string Description
Definition: SimulatorSignature.hpp:206
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:102
SignatureHandledData()
Definition: SimulatorSignature.hpp:169
std::string SimProcess_t
Definition: SimulatorSignature.hpp:55
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:156
Definition: SimulatorSignature.hpp:138
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:256
Definition: SimulatorSignature.hpp:67
void clear()
Definition: SimulatorSignature.hpp:348
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:152
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:261
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:98
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:225
Definition: ApplicationException.hpp:47
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:121
Definition: SimulatorSignature.hpp:252
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:166
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:162
SimulatorSignature()
Definition: SimulatorSignature.hpp:342
std::string UnitsClass_t
Definition: TypeDefs.hpp:71
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:280
Definition: SimulatorSignature.hpp:305
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:334
Definition: SimulatorSignature.hpp:201
std::string DataUnit
Definition: SimulatorSignature.hpp:73
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:208
SignatureDataItem()
Definition: SimulatorSignature.hpp:75
std::uint64_t Duration_t
Definition: TypeDefs.hpp:186
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:146
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:150
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:164
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:79
#define OPENFLUID_API
Definition: dllexport.hpp:86
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:154
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:144
SimDomain_t Domain
Definition: SimulatorSignature.hpp:314
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:329
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:287
Definition: SimulatorSignature.hpp:248
std::string SimDomain_t
Definition: SimulatorSignature.hpp:57