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.meter_per_second_squared",
66 "AccelerationUnit.m/s^2", SI_DERIVED, true);
67 METER_PER_SECOND_2 = SI;
68 KM_PER_HOUR_2 = new AccelerationUnit(LengthUnit.KILOMETER, DurationUnit.HOUR, "AccelerationUnit.km_per_hour_squared",
69 "AccelerationUnit.km/h^2", SI_DERIVED, true);
70 FOOT_PER_SECOND_2 = new AccelerationUnit(LengthUnit.FOOT, DurationUnit.SECOND,
71 "AccelerationUnit.foot_per_second_squared", "AccelerationUnit.ft/s^2", IMPERIAL, true);
72 INCH_PER_SECOND_2 = new AccelerationUnit(LengthUnit.INCH, DurationUnit.SECOND,
73 "AccelerationUnit.inch_per_second_squared", "AccelerationUnit.in/s^2", IMPERIAL, true);
74 MILE_PER_HOUR_2 = new AccelerationUnit(LengthUnit.MILE, DurationUnit.HOUR, "AccelerationUnit.mile_per_hour_squared",
75 "AccelerationUnit.mi/h^2", IMPERIAL, true);
76 MILE_PER_SECOND_2 = new AccelerationUnit(LengthUnit.MILE, DurationUnit.SECOND,
77 "AccelerationUnit.mile_per_second_squared", "AccelerationUnit.mi/s^2", IMPERIAL, true);
78 KNOT_PER_SECOND = new AccelerationUnit(SpeedUnit.KNOT, DurationUnit.SECOND, "AccelerationUnit.knot_per_second",
79 "AccelerationUnit.kt/s", IMPERIAL, true);
80 MILE_PER_HOUR_PER_SECOND = new AccelerationUnit(SpeedUnit.MILE_PER_HOUR, DurationUnit.SECOND,
81 "AccelerationUnit.mile_per_hour_per_second", "AccelerationUnit.mi/h/s", IMPERIAL, true);
82 STANDARD_GRAVITY = new AccelerationUnit("AccelerationUnit.standard_gravity", "AccelerationUnit.g", SI_DERIVED,
83 METER_PER_SECOND_2, 9.80665, true);
84 GAL = new AccelerationUnit(LengthUnit.CENTIMETER, DurationUnit.SECOND, "AccelerationUnit.gal", "AccelerationUnit.Gal",
85 CGS, true);
86 }
87
88
89
90
91
92
93
94
95
96
97
98
99
100 private AccelerationUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String nameOrNameKey,
101 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
102 {
103 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, METER_PER_SECOND_2,
104 lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()), standardUnit);
105 this.lengthUnit = lengthUnit;
106 this.durationUnit = durationUnit;
107 }
108
109
110
111
112
113
114
115
116
117 public AccelerationUnit(final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
118 final String abbreviation, final UnitSystem unitSystem)
119 {
120 this(lengthUnit, durationUnit, name, abbreviation, unitSystem, false);
121 }
122
123
124
125
126
127
128
129
130
131
132
133
134
135 private AccelerationUnit(final SpeedUnit speedUnit, final DurationUnit durationUnit, final String nameOrNameKey,
136 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
137 {
138 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, METER_PER_SECOND_2,
139 speedUnit.getScaleFactor() / durationUnit.getScaleFactor(), standardUnit);
140 this.lengthUnit = speedUnit.getLengthUnit();
141 this.durationUnit = durationUnit;
142 }
143
144
145
146
147
148
149
150
151
152 public AccelerationUnit(final SpeedUnit speedUnit, final DurationUnit durationUnit, final String name,
153 final String abbreviation, final UnitSystem unitSystem)
154 {
155 this(speedUnit, durationUnit, name, abbreviation, unitSystem, false);
156 }
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 private AccelerationUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey,
172 final UnitSystem unitSystem, final AccelerationUnit referenceUnit, final double scaleFactorToReferenceUnit,
173 final boolean standardUnit)
174 {
175 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit,
176 standardUnit);
177 this.lengthUnit = referenceUnit.getLengthUnit();
178 this.durationUnit = referenceUnit.getDurationUnit();
179 }
180
181
182
183
184
185
186
187
188
189
190 public AccelerationUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
191 final AccelerationUnit referenceUnit, final double scaleFactorToReferenceUnit)
192 {
193 this(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit, false);
194 }
195
196
197
198
199 public final LengthUnit getLengthUnit()
200 {
201 return this.lengthUnit;
202 }
203
204
205
206
207 public final DurationUnit getDurationUnit()
208 {
209 return this.durationUnit;
210 }
211
212
213 @Override
214 public final AccelerationUnit getStandardUnit()
215 {
216 return METER_PER_SECOND_2;
217 }
218
219
220 @Override
221 public final String getSICoefficientsString()
222 {
223 return "m/s2";
224 }
225
226 }