Documentation for OpenFLUID 2.2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RandomGenerator.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 RandomGenerator.hpp
35 
36  @author Jean-Christophe FABRE <jean-christophe.fabre@inra.fr>
37  @author Armel THÖNI <armel.thoni@inrae.fr>
38  */
39 
40 
41 #ifndef __OPENFLUID_MACHINE_RANDOMGENERATOR_HPP__
42 #define __OPENFLUID_MACHINE_RANDOMGENERATOR_HPP__
43 
44 
45 #include <random>
46 
47 #include <openfluid/dllexport.hpp>
50 
51 
52 namespace openfluid { namespace machine {
53 
54 
56 {
57  protected:
58 
59 
61 
63 
65 
66 
67  public:
68 
70 
72 
74 
76 
77  void finalizeRun()
78  { }
79 
80 };
81 
82 
83 // =====================================================================
84 // =====================================================================
85 
86 
87 template<class T>
89 {
90 
91  protected:
92 
93  T m_Min;
94 
95  T m_Max;
96 
97 
98  public:
99 
101 
103 
105 };
106 
107 
108 // =====================================================================
109 // =====================================================================
110 
111 
112 class DoubleRandomGenerator : public NumericalRandomGenerator<openfluid::core::DoubleValue>
113 {
114 
115  public:
116 
118 
120 
122 
124 };
125 
126 
127 // =====================================================================
128 // =====================================================================
129 
130 
132 {
133 
134  public:
135 
137 
139 
141 
143 };
144 
145 
146 // =====================================================================
147 // =====================================================================
148 
149 
151 {
152 
153  private:
154 
155  double m_Probability = 0.5; // TODO allow custom probability
156 
157 
158  public:
159 
161 
163 
165 
167 };
168 
169 } } //namespaces
170 
171 
172 #endif /* __OPENFLUID_MACHINE_RANDOMGENERATOR_HPP__ */
Definition: SchedulingRequest.hpp:54
Definition: RandomGenerator.hpp:151
openfluid::base::SchedulingRequest initializeRun()
openfluid::base::SchedulingRequest runStep()
Definition: RandomGenerator.hpp:113
void initParams(const openfluid::ware::WareParams_t &Params)
openfluid::base::SchedulingRequest initializeRun()
openfluid::base::SchedulingRequest runStep()
Definition: RandomGenerator.hpp:132
openfluid::base::SchedulingRequest initializeRun()
void initParams(const openfluid::ware::WareParams_t &Params)
openfluid::base::SchedulingRequest runStep()
Definition: Generator.hpp:93
Definition: RandomGenerator.hpp:89
void initParams(const openfluid::ware::WareParams_t &Params)
T m_Min
Definition: RandomGenerator.hpp:93
T m_Max
Definition: RandomGenerator.hpp:95
Definition: RandomGenerator.hpp:56
void finalizeRun()
Definition: RandomGenerator.hpp:77
openfluid::base::SchedulingRequest endOfStep()
openfluid::ware::WareRNG Rng
Definition: RandomGenerator.hpp:64
void initParams(const openfluid::ware::WareParams_t &Params)
bool m_IdenticalCellValues
Definition: RandomGenerator.hpp:60
openfluid::core::Duration_t m_DeltaT
Definition: RandomGenerator.hpp:62
Definition: WareRNG.hpp:58
#define OPENFLUID_API
Definition: dllexport.hpp:86
std::uint64_t Duration_t
Definition: TypeDefs.hpp:312
std::map< WareParamKey_t, WareParamValue_t > WareParams_t
Definition: TypeDefs.hpp:146
Definition: ApplicationException.hpp:47