1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.IMPERIAL;
4 import static org.djunits.unit.unitsystem.UnitSystem.SI_ACCEPTED;
5 import static org.djunits.unit.unitsystem.UnitSystem.SI_DERIVED;
6 import static org.djunits.unit.unitsystem.UnitSystem.US_CUSTOMARY;
7
8 import org.djunits.unit.unitsystem.UnitSystem;
9
10
11
12
13
14
15
16
17
18
19
20 public class FlowVolumeUnit extends LinearUnit<FlowVolumeUnit>
21 {
22
23 private static final long serialVersionUID = 20140607L;
24
25
26 private final LengthUnit lengthUnit;
27
28
29 private final DurationUnit durationUnit;
30
31
32 public static final FlowVolumeUnit SI;
33
34
35 public static final FlowVolumeUnit CUBIC_METER_PER_SECOND;
36
37
38 public static final FlowVolumeUnit CUBIC_METER_PER_MINUTE;
39
40
41 public static final FlowVolumeUnit CUBIC_METER_PER_HOUR;
42
43
44 public static final FlowVolumeUnit CUBIC_METER_PER_DAY;
45
46
47 public static final FlowVolumeUnit LITER_PER_SECOND;
48
49
50 public static final FlowVolumeUnit LITER_PER_MINUTE;
51
52
53 public static final FlowVolumeUnit LITER_PER_HOUR;
54
55
56 public static final FlowVolumeUnit LITER_PER_DAY;
57
58
59 public static final FlowVolumeUnit CUBIC_FEET_PER_SECOND;
60
61
62 public static final FlowVolumeUnit CUBIC_FEET_PER_MINUTE;
63
64
65 public static final FlowVolumeUnit CUBIC_INCH_PER_SECOND;
66
67
68 public static final FlowVolumeUnit CUBIC_INCH_PER_MINUTE;
69
70
71 public static final FlowVolumeUnit GALLON_PER_SECOND;
72
73
74 public static final FlowVolumeUnit GALLON_PER_MINUTE;
75
76
77 public static final FlowVolumeUnit GALLON_PER_HOUR;
78
79
80 public static final FlowVolumeUnit GALLON_PER_DAY;
81
82 static
83 {
84 SI = new FlowVolumeUnit(LengthUnit.METER, DurationUnit.SECOND, "FlowVolumeUnit.m^3/s", SI_DERIVED);
85 CUBIC_METER_PER_SECOND = SI;
86 CUBIC_METER_PER_MINUTE =
87 new FlowVolumeUnit(LengthUnit.METER, DurationUnit.MINUTE, "FlowVolumeUnit.m^3/min", SI_ACCEPTED);
88 CUBIC_METER_PER_HOUR = new FlowVolumeUnit(LengthUnit.METER, DurationUnit.HOUR, "FlowVolumeUnit.m^3/h", SI_ACCEPTED);
89 CUBIC_METER_PER_DAY = new FlowVolumeUnit(LengthUnit.METER, DurationUnit.DAY, "FlowVolumeUnit.m^3/d", SI_ACCEPTED);
90 LITER_PER_SECOND = new FlowVolumeUnit(VolumeUnit.LITER, DurationUnit.SECOND, "FlowVolumeUnit.L/s", SI_ACCEPTED);
91 LITER_PER_MINUTE = new FlowVolumeUnit(VolumeUnit.LITER, DurationUnit.MINUTE, "FlowVolumeUnit.L/min", SI_ACCEPTED);
92 LITER_PER_HOUR = new FlowVolumeUnit(VolumeUnit.LITER, DurationUnit.HOUR, "FlowVolumeUnit.L/h", SI_ACCEPTED);
93 LITER_PER_DAY = new FlowVolumeUnit(VolumeUnit.LITER, DurationUnit.DAY, "FlowVolumeUnit.L/d", SI_ACCEPTED);
94 CUBIC_FEET_PER_SECOND = new FlowVolumeUnit(LengthUnit.FOOT, DurationUnit.SECOND, "FlowVolumeUnit.ft^3/s", IMPERIAL);
95 CUBIC_FEET_PER_MINUTE = new FlowVolumeUnit(LengthUnit.FOOT, DurationUnit.MINUTE, "FlowVolumeUnit.ft^3/min", IMPERIAL);
96 CUBIC_INCH_PER_SECOND = new FlowVolumeUnit(LengthUnit.INCH, DurationUnit.SECOND, "FlowVolumeUnit.in^3/s", IMPERIAL);
97 CUBIC_INCH_PER_MINUTE = new FlowVolumeUnit(LengthUnit.INCH, DurationUnit.MINUTE, "FlowVolumeUnit.in^3/min", IMPERIAL);
98 GALLON_PER_SECOND =
99 new FlowVolumeUnit(VolumeUnit.GALLON_US_FLUID, DurationUnit.SECOND, "FlowVolumeUnit.gal/s", US_CUSTOMARY);
100 GALLON_PER_MINUTE =
101 new FlowVolumeUnit(VolumeUnit.GALLON_US_FLUID, DurationUnit.MINUTE, "FlowVolumeUnit.gal/min", US_CUSTOMARY);
102 GALLON_PER_HOUR =
103 new FlowVolumeUnit(VolumeUnit.GALLON_US_FLUID, DurationUnit.HOUR, "FlowVolumeUnit.gal/h", US_CUSTOMARY);
104 GALLON_PER_DAY = new FlowVolumeUnit(VolumeUnit.GALLON_US_FLUID, DurationUnit.DAY, "FlowVolumeUnit.gal/d", US_CUSTOMARY);
105 }
106
107
108
109
110
111
112
113
114 private FlowVolumeUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String abbreviationKey,
115 final UnitSystem unitSystem)
116 {
117 super(abbreviationKey, unitSystem, CUBIC_METER_PER_SECOND,
118 Math.pow(lengthUnit.getScaleFactor(), 3.0) / durationUnit.getScaleFactor());
119 this.lengthUnit = lengthUnit;
120 this.durationUnit = durationUnit;
121 }
122
123
124
125
126
127
128
129
130
131 public FlowVolumeUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
132 final String abbreviation, final UnitSystem unitSystem)
133 {
134 super(name, abbreviation, unitSystem, CUBIC_METER_PER_SECOND,
135 Math.pow(lengthUnit.getScaleFactor(), 3.0) / durationUnit.getScaleFactor());
136 this.lengthUnit = lengthUnit;
137 this.durationUnit = durationUnit;
138 }
139
140
141
142
143
144
145
146
147 private FlowVolumeUnit(final VolumeUnit volumeUnit, final DurationUnit durationUnit, final String abbreviationKey,
148 final UnitSystem unitSystem)
149 {
150 super(abbreviationKey, unitSystem, CUBIC_METER_PER_SECOND, volumeUnit.getScaleFactor() / durationUnit.getScaleFactor());
151 this.lengthUnit = volumeUnit.getLengthUnit();
152 this.durationUnit = durationUnit;
153 }
154
155
156
157
158
159
160
161
162
163 public FlowVolumeUnit(final VolumeUnit volumeUnit, final DurationUnit durationUnit, final String name,
164 final String abbreviation, final UnitSystem unitSystem)
165 {
166 super(name, abbreviation, unitSystem, CUBIC_METER_PER_SECOND,
167 volumeUnit.getScaleFactor() / durationUnit.getScaleFactor());
168 this.lengthUnit = volumeUnit.getLengthUnit();
169 this.durationUnit = durationUnit;
170 }
171
172
173
174
175
176
177
178
179
180 private FlowVolumeUnit(final String abbreviationKey, final UnitSystem unitSystem, final FlowVolumeUnit referenceUnit,
181 final double scaleFactorToReferenceUnit)
182 {
183 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
184 this.lengthUnit = referenceUnit.getLengthUnit();
185 this.durationUnit = referenceUnit.getDurationUnit();
186 }
187
188
189
190
191
192
193
194
195
196
197 public FlowVolumeUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
198 final FlowVolumeUnit referenceUnit, final double scaleFactorToReferenceUnit)
199 {
200 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
201 this.lengthUnit = referenceUnit.getLengthUnit();
202 this.durationUnit = referenceUnit.getDurationUnit();
203 }
204
205
206
207
208 public final LengthUnit getLengthUnit()
209 {
210 return this.lengthUnit;
211 }
212
213
214
215
216 public final DurationUnit getDurationUnit()
217 {
218 return this.durationUnit;
219 }
220
221
222 @Override
223 public final FlowVolumeUnit getStandardUnit()
224 {
225 return CUBIC_METER_PER_SECOND;
226 }
227
228
229 @Override
230 public final String getSICoefficientsString()
231 {
232 return "m3/s";
233 }
234
235 }