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
227
228 private EnergyUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit,
229 final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
230 final boolean standardUnit)
231 {
232 super(nameOrNameKey,
233 abbreviationOrAbbreviationKey, unitSystem, JOULE, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
234 * lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()),
235 standardUnit);
236 this.massUnit = massUnit;
237 this.lengthUnit = lengthUnit;
238 this.durationUnit = durationUnit;
239 }
240
241
242
243
244
245
246
247
248
249
250 public EnergyUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
251 final String abbreviation, final UnitSystem unitSystem)
252 {
253 this(massUnit, lengthUnit, durationUnit, name, abbreviation, unitSystem, false);
254 }
255
256
257
258
259
260
261
262
263
264
265
266
267
268 private EnergyUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String nameOrNameKey,
269 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
270 {
271 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, JOULE,
272 forceUnit.getScaleFactor() * lengthUnit.getScaleFactor(), standardUnit);
273 this.massUnit = forceUnit.getMassUnit();
274 this.lengthUnit = forceUnit.getLengthUnit();
275 this.durationUnit = forceUnit.getDurationUnit();
276 }
277
278
279
280
281
282
283
284
285
286 public EnergyUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String name, final String abbreviation,
287 final UnitSystem unitSystem)
288 {
289 this(forceUnit, lengthUnit, name, abbreviation, unitSystem, false);
290 }
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305 private EnergyUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
306 final EnergyUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
307 {
308 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit,
309 standardUnit);
310 this.massUnit = referenceUnit.getMassUnit();
311 this.lengthUnit = referenceUnit.getLengthUnit();
312 this.durationUnit = referenceUnit.getDurationUnit();
313 }
314
315
316
317
318
319
320
321
322
323
324 public EnergyUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final EnergyUnit referenceUnit,
325 final double scaleFactorToReferenceUnit)
326 {
327 this(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit, false);
328 }
329
330
331
332
333 public final MassUnit getMassUnit()
334 {
335 return this.massUnit;
336 }
337
338
339
340
341 public final LengthUnit getLengthUnit()
342 {
343 return this.lengthUnit;
344 }
345
346
347
348
349 public final DurationUnit getDurationUnit()
350 {
351 return this.durationUnit;
352 }
353
354
355 @Override
356 public final EnergyUnit getStandardUnit()
357 {
358 return JOULE;
359 }
360
361
362 @Override
363 public final String getSICoefficientsString()
364 {
365 return "kgm2/s2";
366 }
367
368 }