1 package org.djunits.quantity;
2
3 import org.djunits.quantity.def.Quantity;
4 import org.djunits.unit.AbstractUnit;
5 import org.djunits.unit.UnitInterface;
6 import org.djunits.unit.UnitRuntimeException;
7 import org.djunits.unit.Unitless;
8 import org.djunits.unit.Units;
9 import org.djunits.unit.scale.IdentityScale;
10 import org.djunits.unit.scale.LinearScale;
11 import org.djunits.unit.scale.Scale;
12 import org.djunits.unit.si.SIPrefix;
13 import org.djunits.unit.si.SIPrefixes;
14 import org.djunits.unit.si.SIUnit;
15 import org.djunits.unit.system.UnitSystem;
16
17
18
19
20
21
22
23
24
25 public class Pressure extends Quantity<Pressure>
26 {
27
28 public static final Pressure ZERO = ofSi(0.0);
29
30
31 public static final Pressure ONE = ofSi(1.0);
32
33
34 @SuppressWarnings("checkstyle:constantname")
35 public static final Pressure NaN = ofSi(Double.NaN);
36
37
38 public static final Pressure POSITIVE_INFINITY = ofSi(Double.POSITIVE_INFINITY);
39
40
41 public static final Pressure NEGATIVE_INFINITY = ofSi(Double.NEGATIVE_INFINITY);
42
43
44 public static final Pressure POS_MAXVALUE = ofSi(Double.MAX_VALUE);
45
46
47 public static final Pressure NEG_MAXVALUE = ofSi(-Double.MAX_VALUE);
48
49
50 private static final long serialVersionUID = 600L;
51
52
53
54
55
56
57
58 public Pressure(final double value, final Pressure.Unit displayUnit, final boolean useSi)
59 {
60 super(value, displayUnit, useSi);
61 }
62
63
64
65
66
67
68 public Pressure(final double valueInUnit, final Pressure.Unit unit)
69 {
70 this(valueInUnit, unit, false);
71 }
72
73
74
75
76
77
78 public static Pressure ofSi(final double si)
79 {
80 return new Pressure(si, Pressure.Unit.SI, true);
81 }
82
83
84
85
86
87
88
89 public static Pressure ofSi(final double siValue, final Pressure.Unit displayUnit)
90 {
91 return new Pressure(siValue, displayUnit, true);
92 }
93
94 @Override
95 public Pressure instantiateSi(final double siValue, final UnitInterface<Pressure> displayUnit)
96 {
97 return new Pressure(siValue, (Pressure.Unit) displayUnit, true);
98 }
99
100
101
102
103
104
105
106
107
108
109 public static Pressure valueOf(final String text)
110 {
111 return Quantity.valueOf(text, ZERO);
112 }
113
114
115
116
117
118
119
120 public static Pressure of(final double valueInUnit, final Pressure.Unit unit)
121 {
122 return new Pressure(valueInUnit, unit);
123 }
124
125
126
127
128
129
130
131
132
133 public static Pressure of(final double valueInUnit, final String unitString)
134 {
135 return Quantity.of(valueInUnit, unitString, ZERO);
136 }
137
138 @Override
139 public Pressure.Unit getDisplayUnit()
140 {
141 return (Pressure.Unit) super.getDisplayUnit();
142 }
143
144
145
146
147
148
149 public Dimensionless divide(final Pressure v)
150 {
151 return new Dimensionless(this.si() / v.si(), Unitless.BASE);
152 }
153
154
155
156
157
158
159 public Force multiply(final Area v)
160 {
161 return new Force(this.si() * v.si(), Force.Unit.SI);
162 }
163
164
165
166
167
168
169 public Energy multiply(final Volume v)
170 {
171 return new Energy(this.si() * v.si(), Energy.Unit.SI);
172 }
173
174
175
176
177
178
179
180
181
182
183
184
185
186 @SuppressWarnings("checkstyle:constantname")
187 public static class Unit extends AbstractUnit<Pressure>
188 {
189
190 public static final SIUnit SI_UNIT = SIUnit.of("kg/ms2");
191
192
193 public static final Pressure.Unit Pa =
194 new Pressure.Unit("Pa", "Pa", "pascal", IdentityScale.SCALE, UnitSystem.SI_DERIVED, SIPrefixes.getSiPrefix(""));
195
196
197 public static final Pressure.Unit SI = (Unit) Pa.generateSiPrefixes(false, false);
198
199
200 public static final Pressure.Unit hPa = Units.resolve(Pressure.Unit.class, "hPa");
201
202
203 public static final Pressure.Unit kPa = Units.resolve(Pressure.Unit.class, "kPa");
204
205
206 public static final Pressure.Unit atm = Pa.deriveUnit("atm", "atmosphere (standard)", 101325.0, UnitSystem.OTHER);
207
208
209 public static final Pressure.Unit torr = atm.deriveUnit("torr", "Torr", 1.0 / 760.0, UnitSystem.OTHER);
210
211
212 public static final Pressure.Unit at =
213 Pa.deriveUnit("at", "atmosphere (technical)", Acceleration.Unit.CONST_GRAVITY / 1.0E-4, UnitSystem.OTHER);
214
215
216 public static final Pressure.Unit Ba = Pa.deriveUnit("Ba", "barye", 1.0E-5 / 1.0E-4, UnitSystem.CGS);
217
218
219 public static final Pressure.Unit bar = Pa.deriveUnit("bar", "bar", 1.0E5, UnitSystem.OTHER);
220
221
222 public static final Pressure.Unit mbar = bar.deriveUnit("mbar", "millibar", 1.0E-3, UnitSystem.OTHER);
223
224
225 public static final Pressure.Unit cmHg = Pa.deriveUnit("cmHg", "centimeter mercury", 1333.224, UnitSystem.OTHER);
226
227
228 public static final Pressure.Unit mmHg = Pa.deriveUnit("mmHg", "millimeter mercury", 133.3224, UnitSystem.OTHER);
229
230
231 public static final Pressure.Unit ftHg = Pa.deriveUnit("ftHg", "foot mercury", 40.63666E3, UnitSystem.IMPERIAL);
232
233
234 public static final Pressure.Unit inHg = Pa.deriveUnit("inHg", "inch mercury", 3.386389E3, UnitSystem.IMPERIAL);
235
236
237 public static final Pressure.Unit kgf_mm2 = Pa.deriveUnit("kgf/mm2", "kilogram-force per square millimeter",
238 Acceleration.Unit.CONST_GRAVITY / 1.0E-6, UnitSystem.OTHER);
239
240
241 public static final Pressure.Unit lbf_ft2 = Pa.deriveUnit("lbf/ft2", "pound-force per square foot",
242 Mass.Unit.CONST_LB * Acceleration.Unit.CONST_GRAVITY / (Length.Unit.CONST_FT * Length.Unit.CONST_FT),
243 UnitSystem.IMPERIAL);
244
245
246 public static final Pressure.Unit lbf_in2 = Pa.deriveUnit("lbf/in2", "pound-force per square inch",
247 Mass.Unit.CONST_LB * Acceleration.Unit.CONST_GRAVITY / (Length.Unit.CONST_IN * Length.Unit.CONST_IN),
248 UnitSystem.IMPERIAL);
249
250
251 public static final Pressure.Unit psi = lbf_in2;
252
253
254 public static final Pressure.Unit pz = Pa.deriveUnit("pz", "pi\u00E8ze", 1000.0, UnitSystem.MTS);
255
256
257
258
259
260
261
262
263 public Unit(final String id, final String name, final double scaleFactorToBaseUnit, final UnitSystem unitSystem)
264 {
265 super(id, name, scaleFactorToBaseUnit, unitSystem);
266 }
267
268
269
270
271
272
273
274
275
276
277 public Unit(final String textualAbbreviation, final String displayAbbreviation, final String name, final Scale scale,
278 final UnitSystem unitSystem, final SIPrefix siPrefix)
279 {
280 super(textualAbbreviation, displayAbbreviation, name, scale, unitSystem, siPrefix);
281 }
282
283 @Override
284 public SIUnit siUnit()
285 {
286 return SI_UNIT;
287 }
288
289 @Override
290 public Unit getBaseUnit()
291 {
292 return SI;
293 }
294
295 @Override
296 public Pressure ofSi(final double si, final UnitInterface<Pressure> displayUnit)
297 {
298 return new Pressure(si, (Unit) displayUnit, true);
299 }
300
301 @Override
302 public Pressure.Unit deriveUnit(final String textualAbbreviation, final String displayAbbreviation, final String name,
303 final double scaleFactor, final UnitSystem unitSystem, final SIPrefix siPrefix)
304 {
305 if (getScale() instanceof LinearScale ls)
306 {
307 return new Pressure.Unit(textualAbbreviation, displayAbbreviation, name,
308 new LinearScale(ls.getScaleFactorToBaseUnit() * scaleFactor), unitSystem, siPrefix);
309 }
310 throw new UnitRuntimeException("Only possible to derive a unit from a unit with a linear scale");
311 }
312
313 @Override
314 public Pressure.Unit deriveUnit(final String abbreviation, final String name, final double scaleFactor,
315 final UnitSystem unitSystem)
316 {
317 return (Unit) super.deriveUnit(abbreviation, name, scaleFactor, unitSystem);
318 }
319
320 }
321
322 }