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.SI_DERIVED;
6
7 import org.djunits.unit.unitsystem.UnitSystem;
8
9
10
11
12
13
14
15
16
17
18
19 public class AccelerationUnit extends LinearUnit<AccelerationUnit>
20 {
21
22 private static final long serialVersionUID = 20140607L;
23
24
25 private final LengthUnit lengthUnit;
26
27
28 private final DurationUnit durationUnit;
29
30
31 public static final AccelerationUnit SI;
32
33
34 public static final AccelerationUnit METER_PER_SECOND_2;
35
36
37 public static final AccelerationUnit KM_PER_HOUR_2;
38
39
40 public static final AccelerationUnit FOOT_PER_SECOND_2;
41
42
43 public static final AccelerationUnit INCH_PER_SECOND_2;
44
45
46 public static final AccelerationUnit MILE_PER_HOUR_2;
47
48
49 public static final AccelerationUnit MILE_PER_SECOND_2;
50
51
52 public static final AccelerationUnit KNOT_PER_SECOND;
53
54
55 public static final AccelerationUnit MILE_PER_HOUR_PER_SECOND;
56
57
58 public static final AccelerationUnit STANDARD_GRAVITY;
59
60
61 public static final AccelerationUnit GAL;
62
63 static
64 {
65 SI = new AccelerationUnit(LengthUnit.METER, DurationUnit.SECOND, "AccelerationUnit.m/s^2", SI_DERIVED);
66 METER_PER_SECOND_2 = SI;
67 KM_PER_HOUR_2 = new AccelerationUnit(LengthUnit.KILOMETER, DurationUnit.HOUR, "AccelerationUnit.km/h^2", SI_DERIVED);
68 FOOT_PER_SECOND_2 = new AccelerationUnit(LengthUnit.FOOT, DurationUnit.SECOND, "AccelerationUnit.ft/s^2", IMPERIAL);
69 INCH_PER_SECOND_2 = new AccelerationUnit(LengthUnit.INCH, DurationUnit.SECOND, "AccelerationUnit.in/s^2", IMPERIAL);
70 MILE_PER_HOUR_2 = new AccelerationUnit(LengthUnit.MILE, DurationUnit.HOUR, "AccelerationUnit.mi/h^2", IMPERIAL);
71 MILE_PER_SECOND_2 = new AccelerationUnit(LengthUnit.MILE, DurationUnit.SECOND, "AccelerationUnit.mi/s^2", IMPERIAL);
72 KNOT_PER_SECOND = new AccelerationUnit(SpeedUnit.KNOT, DurationUnit.SECOND, "AccelerationUnit.kt/s", IMPERIAL);
73 MILE_PER_HOUR_PER_SECOND =
74 new AccelerationUnit(SpeedUnit.MILE_PER_HOUR, DurationUnit.SECOND, "AccelerationUnit.mi/h/s", IMPERIAL);
75 STANDARD_GRAVITY = new AccelerationUnit("AccelerationUnit.g", SI_DERIVED, METER_PER_SECOND_2, 9.80665);
76 GAL = new AccelerationUnit(LengthUnit.CENTIMETER, DurationUnit.SECOND, "AccelerationUnit.Gal", CGS);
77 }
78
79
80
81
82
83
84
85
86 private AccelerationUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String abbreviationKey,
87 final UnitSystem unitSystem)
88 {
89 super(abbreviationKey, unitSystem, METER_PER_SECOND_2,
90 lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()));
91 this.lengthUnit = lengthUnit;
92 this.durationUnit = durationUnit;
93 }
94
95
96
97
98
99
100
101
102
103 public AccelerationUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
104 final String abbreviation, final UnitSystem unitSystem)
105 {
106 super(name, abbreviation, unitSystem, METER_PER_SECOND_2,
107 lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()));
108 this.lengthUnit = lengthUnit;
109 this.durationUnit = durationUnit;
110 }
111
112
113
114
115
116
117
118
119 private AccelerationUnit(final SpeedUnit speedUnit, final DurationUnit durationUnit, final String abbreviationKey,
120 final UnitSystem unitSystem)
121 {
122 super(abbreviationKey, unitSystem, METER_PER_SECOND_2, speedUnit.getScaleFactor() / durationUnit.getScaleFactor());
123 this.lengthUnit = speedUnit.getLengthUnit();
124 this.durationUnit = durationUnit;
125 }
126
127
128
129
130
131
132
133
134
135 public AccelerationUnit(final SpeedUnit speedUnit, final DurationUnit durationUnit, final String name,
136 final String abbreviation, final UnitSystem unitSystem)
137 {
138 super(name, abbreviation, unitSystem, METER_PER_SECOND_2, speedUnit.getScaleFactor() / durationUnit.getScaleFactor());
139 this.lengthUnit = speedUnit.getLengthUnit();
140 this.durationUnit = durationUnit;
141 }
142
143
144
145
146
147
148
149
150
151 private AccelerationUnit(final String abbreviationKey, final UnitSystem unitSystem, final AccelerationUnit referenceUnit,
152 final double scaleFactorToReferenceUnit)
153 {
154 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
155 this.lengthUnit = referenceUnit.getLengthUnit();
156 this.durationUnit = referenceUnit.getDurationUnit();
157 }
158
159
160
161
162
163
164
165
166
167
168 public AccelerationUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
169 final AccelerationUnit referenceUnit, final double scaleFactorToReferenceUnit)
170 {
171 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
172 this.lengthUnit = referenceUnit.getLengthUnit();
173 this.durationUnit = referenceUnit.getDurationUnit();
174 }
175
176
177
178
179 public final LengthUnit getLengthUnit()
180 {
181 return this.lengthUnit;
182 }
183
184
185
186
187 public final DurationUnit getDurationUnit()
188 {
189 return this.durationUnit;
190 }
191
192
193 @Override
194 public final AccelerationUnit getStandardUnit()
195 {
196 return METER_PER_SECOND_2;
197 }
198
199
200 @Override
201 public final String getSICoefficientsString()
202 {
203 return "m/s2";
204 }
205
206 }