1 package org.opentrafficsim.core.unit;
2
3 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.CGS;
4 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.IMPERIAL;
5 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.SI_DERIVED;
6
7 import org.opentrafficsim.core.unit.unitsystem.UnitSystem;
8
9
10
11
12
13
14
15
16
17
18 public class AccelerationUnit extends Unit<AccelerationUnit>
19 {
20
21 private static final long serialVersionUID = 20140607L;
22
23
24 private final LengthUnit lengthUnit;
25
26
27 private final TimeUnit timeUnit;
28
29
30 public static final AccelerationUnit SI;
31
32
33 public static final AccelerationUnit METER_PER_SECOND_2;
34
35
36 public static final AccelerationUnit KM_PER_HOUR_2;
37
38
39 public static final AccelerationUnit FOOT_PER_SECOND_2;
40
41
42 public static final AccelerationUnit INCH_PER_SECOND_2;
43
44
45 public static final AccelerationUnit MILE_PER_HOUR_2;
46
47
48 public static final AccelerationUnit MILE_PER_SECOND_2;
49
50
51 public static final AccelerationUnit KNOT_PER_SECOND;
52
53
54 public static final AccelerationUnit MILE_PER_HOUR_PER_SECOND;
55
56
57 public static final AccelerationUnit STANDARD_GRAVITY;
58
59
60 public static final AccelerationUnit GAL;
61
62 static
63 {
64 SI =
65 new AccelerationUnit(LengthUnit.METER, TimeUnit.SECOND, "AccelerationUnit.meter_per_second_squared",
66 "AccelerationUnit.m/s^2", SI_DERIVED);
67 METER_PER_SECOND_2 = SI;
68 KM_PER_HOUR_2 =
69 new AccelerationUnit(LengthUnit.KILOMETER, TimeUnit.HOUR, "AccelerationUnit.km_per_hour_squared",
70 "AccelerationUnit.km/h^2", SI_DERIVED);
71 FOOT_PER_SECOND_2 =
72 new AccelerationUnit(LengthUnit.FOOT, TimeUnit.SECOND, "AccelerationUnit.foot_per_second_squared",
73 "AccelerationUnit.ft/s^2", IMPERIAL);
74 INCH_PER_SECOND_2 =
75 new AccelerationUnit(LengthUnit.INCH, TimeUnit.SECOND, "AccelerationUnit.inch_per_second_squared",
76 "AccelerationUnit.in/s^2", IMPERIAL);
77 MILE_PER_HOUR_2 =
78 new AccelerationUnit(LengthUnit.MILE, TimeUnit.HOUR, "AccelerationUnit.mile_per_hour_squared",
79 "AccelerationUnit.mi/h^2", IMPERIAL);
80 MILE_PER_SECOND_2 =
81 new AccelerationUnit(LengthUnit.MILE, TimeUnit.SECOND, "AccelerationUnit.mile_per_second_squared",
82 "AccelerationUnit.mi/s^2", IMPERIAL);
83 KNOT_PER_SECOND =
84 new AccelerationUnit(SpeedUnit.KNOT, TimeUnit.SECOND, "AccelerationUnit.knot_per_second",
85 "AccelerationUnit.kt/s", IMPERIAL);
86 MILE_PER_HOUR_PER_SECOND =
87 new AccelerationUnit(SpeedUnit.MILE_PER_HOUR, TimeUnit.SECOND,
88 "AccelerationUnit.mile_per_hour_per_second", "AccelerationUnit.mi/h/s", IMPERIAL);
89 STANDARD_GRAVITY =
90 new AccelerationUnit("AccelerationUnit.standard_gravity", "AccelerationUnit.g", SI_DERIVED,
91 METER_PER_SECOND_2, 9.80665);
92 GAL =
93 new AccelerationUnit(LengthUnit.CENTIMETER, TimeUnit.SECOND, "AccelerationUnit.gal",
94 "AccelerationUnit.Gal", CGS);
95 }
96
97
98
99
100
101
102
103
104
105 public AccelerationUnit(final LengthUnit lengthUnit, final TimeUnit timeUnit, final String nameKey,
106 final String abbreviationKey, final UnitSystem unitSystem)
107 {
108 super(nameKey, abbreviationKey, unitSystem, METER_PER_SECOND_2, lengthUnit.getConversionFactorToStandardUnit()
109 / (timeUnit.getConversionFactorToStandardUnit() * timeUnit.getConversionFactorToStandardUnit()), true);
110 this.lengthUnit = lengthUnit;
111 this.timeUnit = timeUnit;
112 }
113
114
115
116
117
118
119
120
121
122 public AccelerationUnit(final SpeedUnit speedUnit, final TimeUnit timeUnit, final String nameKey,
123 final String abbreviationKey, final UnitSystem unitSystem)
124 {
125 super(nameKey, abbreviationKey, unitSystem, METER_PER_SECOND_2, speedUnit.getConversionFactorToStandardUnit()
126 / timeUnit.getConversionFactorToStandardUnit(), true);
127 this.lengthUnit = speedUnit.getLengthUnit();
128 this.timeUnit = timeUnit;
129 }
130
131
132
133
134
135
136
137
138
139
140 public AccelerationUnit(final String nameKey, final String abbreviationKey, final UnitSystem unitSystem,
141 final AccelerationUnit referenceUnit, final double conversionFactorToReferenceUnit)
142 {
143 super(nameKey, abbreviationKey, unitSystem, referenceUnit, conversionFactorToReferenceUnit, true);
144 this.lengthUnit = referenceUnit.getLengthUnit();
145 this.timeUnit = referenceUnit.getTimeUnit();
146 }
147
148
149
150
151 public final LengthUnit getLengthUnit()
152 {
153 return this.lengthUnit;
154 }
155
156
157
158
159 public final TimeUnit getTimeUnit()
160 {
161 return this.timeUnit;
162 }
163
164
165 @Override
166 public final AccelerationUnit getStandardUnit()
167 {
168 return METER_PER_SECOND_2;
169 }
170
171
172 @Override
173 public final String getSICoefficientsString()
174 {
175 return "m/s2";
176 }
177
178 }