1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.CGS;
4 import static org.djunits.unit.unitsystem.UnitSystem.IMPERIAL;
5 import static org.djunits.unit.unitsystem.UnitSystem.MTS;
6 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
7 import static org.djunits.unit.unitsystem.UnitSystem.SI_ACCEPTED;
8 import static org.djunits.unit.unitsystem.UnitSystem.SI_BASE;
9 import static org.djunits.unit.unitsystem.UnitSystem.SI_DERIVED;
10
11 import org.djunits.unit.unitsystem.UnitSystem;
12
13
14
15
16
17
18
19
20
21
22
23 public class EnergyUnit extends LinearUnit<EnergyUnit>
24 {
25
26 private static final long serialVersionUID = 20140604L;
27
28
29 private final MassUnit massUnit;
30
31
32 private final LengthUnit lengthUnit;
33
34
35 private final DurationUnit durationUnit;
36
37
38 public static final EnergyUnit SI;
39
40
41 public static final EnergyUnit PICOJOULE;
42
43
44 public static final EnergyUnit NANOJOULE;
45
46
47 public static final EnergyUnit MICROJOULE;
48
49
50 public static final EnergyUnit MILLIJOULE;
51
52
53 public static final EnergyUnit JOULE;
54
55
56 public static final EnergyUnit KILOJOULE;
57
58
59 public static final EnergyUnit MEGAJOULE;
60
61
62 public static final EnergyUnit GIGAJOULE;
63
64
65 public static final EnergyUnit TERAJOULE;
66
67
68 public static final EnergyUnit PETAJOULE;
69
70
71 public static final EnergyUnit FOOT_POUND_FORCE;
72
73
74 public static final EnergyUnit INCH_POUND_FORCE;
75
76
77 public static final EnergyUnit BTU_ISO;
78
79
80 public static final EnergyUnit BTU_IT;
81
82
83 public static final EnergyUnit CALORIE_IT;
84
85
86 public static final EnergyUnit CALORIE;
87
88
89 public static final EnergyUnit KILOCALORIE;
90
91
92 public static final EnergyUnit FEMTOWATT_HOUR;
93
94
95 public static final EnergyUnit PICOWATT_HOUR;
96
97
98 public static final EnergyUnit NANOWATT_HOUR;
99
100
101 public static final EnergyUnit MICROWATT_HOUR;
102
103
104 public static final EnergyUnit MILLIWATT_HOUR;
105
106
107 public static final EnergyUnit WATT_HOUR;
108
109
110 public static final EnergyUnit KILOWATT_HOUR;
111
112
113 public static final EnergyUnit MEGAWATT_HOUR;
114
115
116 public static final EnergyUnit GIGAWATT_HOUR;
117
118
119 public static final EnergyUnit TERAWATT_HOUR;
120
121
122 public static final EnergyUnit PETAWATT_HOUR;
123
124
125 public static final EnergyUnit ELECTRONVOLT;
126
127
128 public static final EnergyUnit MICROELECTRONVOLT;
129
130
131 public static final EnergyUnit MILLIELECTRONVOLT;
132
133
134 public static final EnergyUnit KILOELECTRONVOLT;
135
136
137 public static final EnergyUnit MEGAELECTRONVOLT;
138
139
140 public static final EnergyUnit GIGAELECTRONVOLT;
141
142
143 public static final EnergyUnit TERAELECTRONVOLT;
144
145
146 public static final EnergyUnit PETAELECTRONVOLT;
147
148
149 public static final EnergyUnit EXAELECTRONVOLT;
150
151
152 public static final EnergyUnit STHENE_METER;
153
154
155 public static final EnergyUnit ERG;
156
157 static
158 {
159 SI = new EnergyUnit(MassUnit.KILOGRAM, LengthUnit.METER, DurationUnit.SECOND, "EnergyUnit.Joule", "EnergyUnit.J",
160 SI_DERIVED, true);
161 JOULE = SI;
162 PICOJOULE = new EnergyUnit("EnergyUnit.picojoule", "EnergyUnit.pJ", SI_BASE, JOULE, 1E-12, true);
163 NANOJOULE = new EnergyUnit("EnergyUnit.nanojoule", "EnergyUnit.nJ", SI_BASE, JOULE, 1E-9, true);
164 MICROJOULE = new EnergyUnit("EnergyUnit.microjoule", "EnergyUnit.muJ", SI_BASE, JOULE, 1E-6, true);
165 MILLIJOULE = new EnergyUnit("EnergyUnit.millijoule", "EnergyUnit.mJ", SI_BASE, JOULE, 1E-3, true);
166 KILOJOULE = new EnergyUnit("EnergyUnit.kilojoule", "EnergyUnit.kJ", SI_BASE, JOULE, 1000.0, true);
167 MEGAJOULE = new EnergyUnit("EnergyUnit.megajoule", "EnergyUnit.MJ", SI_BASE, JOULE, 1E9, true);
168 GIGAJOULE = new EnergyUnit("EnergyUnit.gigajoule", "EnergyUnit.GJ", SI_BASE, JOULE, 1E12, true);
169 TERAJOULE = new EnergyUnit("EnergyUnit.terajoule", "EnergyUnit.TJ", SI_BASE, JOULE, 1E15, true);
170 PETAJOULE = new EnergyUnit("EnergyUnit.petajoule", "EnergyUnit.PJ", SI_BASE, JOULE, 1E18, true);
171 FOOT_POUND_FORCE = new EnergyUnit(ForceUnit.POUND_FORCE, LengthUnit.FOOT, "EnergyUnit.foot_pound-force",
172 "EnergyUnit.ft.lbf", IMPERIAL, true);
173 INCH_POUND_FORCE = new EnergyUnit(ForceUnit.POUND_FORCE, LengthUnit.INCH, "EnergyUnit.inch_pound-force",
174 "EnergyUnit.in.lbf", IMPERIAL, true);
175 BTU_ISO =
176 new EnergyUnit("EnergyUnit.British_thermal_unit_(ISO)", "EnergyUnit.BTU(ISO)", IMPERIAL, JOULE, 1.0545E3, true);
177 BTU_IT = new EnergyUnit("EnergyUnit.British_thermal_unit_(International_Table)", "EnergyUnit.BTU(IT)", IMPERIAL, JOULE,
178 1.05505585262E3, true);
179 CALORIE_IT =
180 new EnergyUnit("EnergyUnit.calorie_(International_Table)", "EnergyUnit.cal(IT)", OTHER, JOULE, 4.1868, true);
181 CALORIE = new EnergyUnit("EnergyUnit.calorie", "EnergyUnit.cal", OTHER, JOULE, 4.184, true);
182 KILOCALORIE = new EnergyUnit("EnergyUnit.kilocalorie", "EnergyUnit.kcal", OTHER, CALORIE, 1000.0, true);
183 WATT_HOUR = new EnergyUnit("EnergyUnit.watt-hour", "EnergyUnit.Wh", SI_DERIVED, JOULE, 3600.0, true);
184 FEMTOWATT_HOUR = new EnergyUnit("EnergyUnit.femtowatt-hour", "EnergyUnit.fWh", SI_DERIVED, WATT_HOUR, 1.0E-15, true);
185 PICOWATT_HOUR = new EnergyUnit("EnergyUnit.picowatt-hour", "EnergyUnit.pWh", SI_DERIVED, WATT_HOUR, 1.0E-12, true);
186 NANOWATT_HOUR = new EnergyUnit("EnergyUnit.nanowatt-hour", "EnergyUnit.nWh", SI_DERIVED, WATT_HOUR, 1.0E-9, true);
187 MICROWATT_HOUR = new EnergyUnit("EnergyUnit.microwatt-hour", "EnergyUnit.muWh", SI_DERIVED, WATT_HOUR, 1.0E-6, true);
188 MILLIWATT_HOUR = new EnergyUnit("EnergyUnit.milliwatt-hour", "EnergyUnit.mWh", SI_DERIVED, WATT_HOUR, 1.0E-3, true);
189 KILOWATT_HOUR = new EnergyUnit("EnergyUnit.kilowatt-hour", "EnergyUnit.kWh", SI_DERIVED, WATT_HOUR, 1000.0, true);
190 MEGAWATT_HOUR = new EnergyUnit("EnergyUnit.megawatt-hour", "EnergyUnit.MWh", SI_DERIVED, WATT_HOUR, 1.0E6, true);
191 GIGAWATT_HOUR = new EnergyUnit("EnergyUnit.gigawatt-hour", "EnergyUnit.GWh", SI_DERIVED, WATT_HOUR, 1.0E9, true);
192 TERAWATT_HOUR = new EnergyUnit("EnergyUnit.terawatt-hour", "EnergyUnit.TWh", SI_DERIVED, WATT_HOUR, 1.0E12, true);
193 PETAWATT_HOUR = new EnergyUnit("EnergyUnit.petawatt-hour", "EnergyUnit.PWh", SI_DERIVED, WATT_HOUR, 1.0E15, true);
194 ELECTRONVOLT = new EnergyUnit("EnergyUnit.electronvolt", "EnergyUnit.eV", SI_ACCEPTED, JOULE, 1.602176565314E-19, true);
195 MICROELECTRONVOLT =
196 new EnergyUnit("EnergyUnit.micro-electronvolt", "EnergyUnit.mueV", SI_ACCEPTED, ELECTRONVOLT, 1.0E-6, true);
197 MILLIELECTRONVOLT =
198 new EnergyUnit("EnergyUnit.milli-electronvolt", "EnergyUnit.meV", SI_ACCEPTED, ELECTRONVOLT, 1.0E-3, true);
199 KILOELECTRONVOLT =
200 new EnergyUnit("EnergyUnit.kilo-electronvolt", "EnergyUnit.keV", SI_ACCEPTED, ELECTRONVOLT, 1.0E3, true);
201 MEGAELECTRONVOLT =
202 new EnergyUnit("EnergyUnit.mega-electronvolt", "EnergyUnit.MeV", SI_ACCEPTED, ELECTRONVOLT, 1.0E6, true);
203 GIGAELECTRONVOLT =
204 new EnergyUnit("EnergyUnit.giga-electronvolt", "EnergyUnit.GeV", SI_ACCEPTED, ELECTRONVOLT, 1.0E9, true);
205 TERAELECTRONVOLT =
206 new EnergyUnit("EnergyUnit.tera-electronvolt", "EnergyUnit.TeV", SI_ACCEPTED, ELECTRONVOLT, 1.0E12, true);
207 PETAELECTRONVOLT =
208 new EnergyUnit("EnergyUnit.peta-electronvolt", "EnergyUnit.PeV", SI_ACCEPTED, ELECTRONVOLT, 1.0E15, true);
209 EXAELECTRONVOLT =
210 new EnergyUnit("EnergyUnit.exa-electronvolt", "EnergyUnit.EeV", SI_ACCEPTED, ELECTRONVOLT, 1.0E18, true);
211 STHENE_METER = new EnergyUnit("EnergyUnit.sthene_meter", "EnergyUnit.sn.m", MTS, JOULE, 1000.0, true);
212 ERG = new EnergyUnit("EnergyUnit.erg_(full)", "EnergyUnit.erg", CGS, JOULE, 1.0E-7, true);
213 }
214
215
216
217
218
219
220
221
222
223
224
225
226 private EnergyUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit,
227 final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
228 final boolean standardUnit)
229 {
230 super(nameOrNameKey,
231 abbreviationOrAbbreviationKey, unitSystem, JOULE, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
232 * lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()),
233 standardUnit);
234 this.massUnit = massUnit;
235 this.lengthUnit = lengthUnit;
236 this.durationUnit = durationUnit;
237 }
238
239
240
241
242
243
244
245
246
247
248 public EnergyUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
249 final String abbreviation, final UnitSystem unitSystem)
250 {
251 this(massUnit, lengthUnit, durationUnit, name, abbreviation, unitSystem, false);
252 }
253
254
255
256
257
258
259
260
261
262
263
264 private EnergyUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String nameOrNameKey,
265 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
266 {
267 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, JOULE,
268 forceUnit.getScaleFactor() * lengthUnit.getScaleFactor(), standardUnit);
269 this.massUnit = forceUnit.getMassUnit();
270 this.lengthUnit = forceUnit.getLengthUnit();
271 this.durationUnit = forceUnit.getDurationUnit();
272 }
273
274
275
276
277
278
279
280
281
282 public EnergyUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String name, final String abbreviation,
283 final UnitSystem unitSystem)
284 {
285 this(forceUnit, lengthUnit, name, abbreviation, unitSystem, false);
286 }
287
288
289
290
291
292
293
294
295
296
297
298 private EnergyUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
299 final EnergyUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
300 {
301 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit,
302 standardUnit);
303 this.massUnit = referenceUnit.getMassUnit();
304 this.lengthUnit = referenceUnit.getLengthUnit();
305 this.durationUnit = referenceUnit.getDurationUnit();
306 }
307
308
309
310
311
312
313
314
315
316 public EnergyUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final EnergyUnit referenceUnit,
317 final double scaleFactorToReferenceUnit)
318 {
319 this(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit, false);
320 }
321
322
323
324
325 public final MassUnit getMassUnit()
326 {
327 return this.massUnit;
328 }
329
330
331
332
333 public final LengthUnit getLengthUnit()
334 {
335 return this.lengthUnit;
336 }
337
338
339
340
341 public final DurationUnit getDurationUnit()
342 {
343 return this.durationUnit;
344 }
345
346
347 @Override
348 public final EnergyUnit getStandardUnit()
349 {
350 return JOULE;
351 }
352
353
354 @Override
355 public final String getSICoefficientsString()
356 {
357 return "kgm2/s2";
358 }
359
360 }