1 package org.djunits.value.vfloat.scalar;
2
3 import java.util.regex.Matcher;
4
5 import org.djunits.unit.AreaUnit;
6 import org.djunits.unit.DimensionlessUnit;
7 import org.djunits.unit.FlowVolumeUnit;
8 import org.djunits.unit.FrequencyUnit;
9 import org.djunits.unit.SpeedUnit;
10 import org.djunits.unit.Unit;
11 import org.djunits.unit.VolumeUnit;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class FloatFlowVolume extends AbstractFloatScalarRel<FlowVolumeUnit, FloatFlowVolume>
38 {
39
40 private static final long serialVersionUID = 20150901L;
41
42
43 public static final FloatFlowVolume ZERO = new FloatFlowVolume(0.0f, FlowVolumeUnit.SI);
44
45
46 @SuppressWarnings("checkstyle:constantname")
47 public static final FloatFlowVolume NaN = new FloatFlowVolume(Float.NaN, FlowVolumeUnit.SI);
48
49
50 public static final FloatFlowVolume POSITIVE_INFINITY = new FloatFlowVolume(Float.POSITIVE_INFINITY, FlowVolumeUnit.SI);
51
52
53 public static final FloatFlowVolume NEGATIVE_INFINITY = new FloatFlowVolume(Float.NEGATIVE_INFINITY, FlowVolumeUnit.SI);
54
55
56 public static final FloatFlowVolume POS_MAXVALUE = new FloatFlowVolume(Float.MAX_VALUE, FlowVolumeUnit.SI);
57
58
59 public static final FloatFlowVolume NEG_MAXVALUE = new FloatFlowVolume(-Float.MAX_VALUE, FlowVolumeUnit.SI);
60
61
62
63
64
65
66 public FloatFlowVolume(final float value, final FlowVolumeUnit unit)
67 {
68 super(value, unit);
69 }
70
71
72
73
74
75 public FloatFlowVolume(final FloatFlowVolume value)
76 {
77 super(value);
78 }
79
80
81
82
83
84
85 public FloatFlowVolume(final double value, final FlowVolumeUnit unit)
86 {
87 super((float) value, unit);
88 }
89
90
91 @Override
92 public final FloatFlowVolume instantiateRel(final float value, final FlowVolumeUnit unit)
93 {
94 return new FloatFlowVolume(value, unit);
95 }
96
97
98
99
100
101
102 public static final FloatFlowVolume createSI(final float value)
103 {
104 return new FloatFlowVolume(value, FlowVolumeUnit.SI);
105 }
106
107
108
109
110
111
112
113
114 public static FloatFlowVolume interpolate(final FloatFlowVolume zero, final FloatFlowVolume one, final float ratio)
115 {
116 return new FloatFlowVolume(zero.getInUnit() * (1 - ratio) + one.getInUnit(zero.getUnit()) * ratio, zero.getUnit());
117 }
118
119
120
121
122
123
124
125 public static FloatFlowVolume max(final FloatFlowVolume r1, final FloatFlowVolume r2)
126 {
127 return (r1.gt(r2)) ? r1 : r2;
128 }
129
130
131
132
133
134
135
136
137 public static FloatFlowVolume max(final FloatFlowVolume r1, final FloatFlowVolume r2, final FloatFlowVolume... rn)
138 {
139 FloatFlowVolume maxr = (r1.gt(r2)) ? r1 : r2;
140 for (FloatFlowVolume r : rn)
141 {
142 if (r.gt(maxr))
143 {
144 maxr = r;
145 }
146 }
147 return maxr;
148 }
149
150
151
152
153
154
155
156 public static FloatFlowVolume min(final FloatFlowVolume r1, final FloatFlowVolume r2)
157 {
158 return (r1.lt(r2)) ? r1 : r2;
159 }
160
161
162
163
164
165
166
167
168 public static FloatFlowVolume min(final FloatFlowVolume r1, final FloatFlowVolume r2, final FloatFlowVolume... rn)
169 {
170 FloatFlowVolume minr = (r1.lt(r2)) ? r1 : r2;
171 for (FloatFlowVolume r : rn)
172 {
173 if (r.lt(minr))
174 {
175 minr = r;
176 }
177 }
178 return minr;
179 }
180
181
182
183
184
185
186
187
188
189 public static FloatFlowVolume valueOf(final String text) throws IllegalArgumentException
190 {
191 if (text == null || text.length() == 0)
192 {
193 throw new IllegalArgumentException("Error parsing FloatFlowVolume -- null or empty argument");
194 }
195 Matcher matcher = NUMBER_PATTERN.matcher(text);
196 if (matcher.find())
197 {
198 int index = matcher.end();
199 try
200 {
201 String unitString = text.substring(index).trim();
202 String valueString = text.substring(0, index).trim();
203 for (FlowVolumeUnit unit : Unit.getUnits(FlowVolumeUnit.class))
204 {
205 if (unit.getDefaultLocaleTextualRepresentations().contains(unitString))
206 {
207 float f = Float.parseFloat(valueString);
208 return new FloatFlowVolume(f, unit);
209 }
210 }
211 }
212 catch (Exception exception)
213 {
214 throw new IllegalArgumentException("Error parsing FloatFlowVolume from " + text, exception);
215 }
216 }
217 throw new IllegalArgumentException("Error parsing FloatFlowVolume from " + text);
218 }
219
220
221
222
223
224
225 public final FloatDimensionless divideBy(final FloatFlowVolume v)
226 {
227 return new FloatDimensionless(this.si / v.si, DimensionlessUnit.SI);
228 }
229
230
231
232
233
234
235 public final FloatVolume multiplyBy(final FloatDuration v)
236 {
237 return new FloatVolume(this.si * v.si, VolumeUnit.SI);
238 }
239
240
241
242
243
244
245 public final FloatVolume divideBy(final FloatFrequency v)
246 {
247 return new FloatVolume(this.si / v.si, VolumeUnit.SI);
248 }
249
250
251
252
253
254
255 public final FloatFrequency divideBy(final FloatVolume v)
256 {
257 return new FloatFrequency(this.si / v.si, FrequencyUnit.SI);
258 }
259
260
261
262
263
264
265 public final FloatSpeed divideBy(final FloatArea v)
266 {
267 return new FloatSpeed(this.si / v.si, SpeedUnit.SI);
268 }
269
270
271
272
273
274
275 public final FloatArea divideBy(final FloatSpeed v)
276 {
277 return new FloatArea(this.si / v.si, AreaUnit.SI);
278 }
279
280 }