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  SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass,std::string DDescription) :
214  UnitsClass(UClass),Description(DDescription) {}
215 };
216 
217 
218 // =====================================================================
219 // =====================================================================
220 
221 
223 {
224  public:
225 
226  std::string UpdatedUnitsGraph;
227 
228  std::vector<SignatureUnitsClassItem> UpdatedUnitsClass;
229 
230 
232  {
233  clear();
234  }
235 
236 
237  void clear()
238  {
239  UpdatedUnitsGraph.clear();
240  UpdatedUnitsClass.clear();
241  }
242 };
243 
244 
245 // =====================================================================
246 // =====================================================================
247 
248 
250 {
251  public:
252 
253  enum SchedulingType { UNDEFINED, DEFAULT, FIXED, RANGE };
254 
256 
258 
260 
261 
263  {
264  setAsUndefined();
265  }
266 
268  {
269  Type = UNDEFINED;
270  Min = 0;
271  Max = 0;
272  }
273 
275  {
276  Type = DEFAULT;
277  Min = 0;
278  Max = 0;
279  }
280 
282  {
283  Type = FIXED;
284  Min = Val;
285  Max = Val;
286  }
287 
289  {
290  Type = RANGE;
291  Min = MinVal;
292  Max = MaxVal;
293  }
294 
295 };
296 
297 
298 // =====================================================================
299 // =====================================================================
300 
301 
302 /**
303  Class encapsulating the plugin signature,
304  returned from the plugin to the host app for registering
305 */
307 {
308 
309  public:
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
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:145
Definition: WareSignature.hpp:52
void clear()
Definition: SimulatorSignature.hpp:237
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:163
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:231
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:96
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:206
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:102
std::string SimMethod_t
Definition: SimulatorSignature.hpp:53
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:123
Definition: SimulatorSignature.hpp:116
void setAsUndefined()
Definition: SimulatorSignature.hpp:267
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:281
Definition: SimulatorSignature.hpp:253
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:147
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:121
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:262
SimulatorSignature()
Definition: SimulatorSignature.hpp:342
SignatureHandledData()
Definition: SimulatorSignature.hpp:170
SimMethod_t Method
Definition: SimulatorSignature.hpp:324
Definition: SimulatorSignature.hpp:306
Definition: SimulatorSignature.hpp:202
Definition: SimulatorSignature.hpp:92
std::uint64_t Duration_t
Definition: TypeDefs.hpp:312
SchedulingType
Definition: SimulatorSignature.hpp:253
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:149
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:153
Definition: SimulatorSignature.hpp:249
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:165
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:167
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:159
Definition: SimulatorSignature.hpp:139
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:226
std::string SimDomain_t
Definition: SimulatorSignature.hpp:57
void clear()
Definition: SimulatorSignature.hpp:176
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:334
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:213
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:155
std::string Description
Definition: SimulatorSignature.hpp:72
std::string UnitsClass_t
Definition: TypeDefs.hpp:98
void clear()
Definition: WareSignature.hpp:99
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:151
Definition: ApplicationException.hpp:47
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:288
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:79
Type
Definition: Value.hpp:68
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:274
std::string Description
Definition: SimulatorSignature.hpp:208
void clear()
Definition: SimulatorSignature.hpp:348
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:339
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:329
std::string SimProcess_t
Definition: SimulatorSignature.hpp:55
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:210
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:228
SignatureDataItem()
Definition: SimulatorSignature.hpp:75
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:257
#define OPENFLUID_API
Definition: dllexport.hpp:86
std::string DataName
Definition: SimulatorSignature.hpp:71
SimDomain_t Domain
Definition: SimulatorSignature.hpp:314
Definition: SimulatorSignature.hpp:67
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:157
std::string DataUnit
Definition: SimulatorSignature.hpp:73
Definition: SimulatorSignature.hpp:222
SimProcess_t Process
Definition: SimulatorSignature.hpp:319
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:259
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:98
SchedulingType Type
Definition: SimulatorSignature.hpp:255
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:161