1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.IMPERIAL;
4 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
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 TorqueUnit extends LinearUnit<TorqueUnit>
20 {
21
22 private static final long serialVersionUID = 20140607L;
23
24
25 private final MassUnit massUnit;
26
27
28 private final LengthUnit lengthUnit;
29
30
31 private final DurationUnit durationUnit;
32
33
34 public static final TorqueUnit SI;
35
36
37 public static final TorqueUnit NEWTON_METER;
38
39
40 public static final TorqueUnit METER_KILOGRAM_FORCE;
41
42
43 public static final TorqueUnit POUND_FOOT;
44
45
46 public static final TorqueUnit POUND_INCH;
47
48 static
49 {
50 SI = new TorqueUnit(MassUnit.KILOGRAM, LengthUnit.METER, DurationUnit.SECOND, "TorqueUnit.Newton_meter",
51 "TorqueUnit.N.m", SI_DERIVED, true);
52 NEWTON_METER = SI;
53 METER_KILOGRAM_FORCE = new TorqueUnit(ForceUnit.KILOGRAM_FORCE, LengthUnit.METER, "TorqueUnit.meter_kilogram-force",
54 "TorqueUnit.m.kgf", OTHER, true);
55 POUND_FOOT = new TorqueUnit(ForceUnit.POUND_FORCE, LengthUnit.FOOT, "TorqueUnit.pound-foot", "TorqueUnit.lbf.ft",
56 IMPERIAL, true);
57 POUND_INCH = new TorqueUnit(ForceUnit.POUND_FORCE, LengthUnit.INCH, "TorqueUnit.pound-inch", "TorqueUnit.lbf.in",
58 IMPERIAL, true);
59 }
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 private TorqueUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit,
75 final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
76 final boolean standardUnit)
77 {
78 super(nameOrNameKey,
79 abbreviationOrAbbreviationKey, unitSystem, NEWTON_METER, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
80 * lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()),
81 standardUnit);
82 this.massUnit = massUnit;
83 this.lengthUnit = lengthUnit;
84 this.durationUnit = durationUnit;
85 }
86
87
88
89
90
91
92
93
94
95
96 public TorqueUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
97 final String abbreviation, final UnitSystem unitSystem)
98 {
99 this(massUnit, lengthUnit, durationUnit, name, abbreviation, unitSystem, false);
100 }
101
102
103
104
105
106
107
108
109
110
111
112
113
114 private TorqueUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String nameOrNameKey,
115 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
116 {
117 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, NEWTON_METER,
118 forceUnit.getScaleFactor() * lengthUnit.getScaleFactor(), standardUnit);
119 this.massUnit = forceUnit.getMassUnit();
120 this.lengthUnit = forceUnit.getLengthUnit();
121 this.durationUnit = forceUnit.getDurationUnit();
122 }
123
124
125
126
127
128
129
130
131
132 public TorqueUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String name, final String abbreviation,
133 final UnitSystem unitSystem)
134 {
135 this(forceUnit, lengthUnit, name, abbreviation, unitSystem, false);
136 }
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151 private TorqueUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
152 final TorqueUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
153 {
154 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit,
155 standardUnit);
156 this.massUnit = referenceUnit.getMassUnit();
157 this.lengthUnit = referenceUnit.getLengthUnit();
158 this.durationUnit = referenceUnit.getDurationUnit();
159 }
160
161
162
163
164
165
166
167
168
169
170 public TorqueUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final TorqueUnit referenceUnit,
171 final double scaleFactorToReferenceUnit)
172 {
173 this(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit, false);
174 }
175
176
177
178
179 public final MassUnit getMassUnit()
180 {
181 return this.massUnit;
182 }
183
184
185
186
187 public final LengthUnit getLengthUnit()
188 {
189 return this.lengthUnit;
190 }
191
192
193
194
195 public final DurationUnit getDurationUnit()
196 {
197 return this.durationUnit;
198 }
199
200
201 @Override
202 public final TorqueUnit getStandardUnit()
203 {
204 return NEWTON_METER;
205 }
206
207
208 @Override
209 public final String getSICoefficientsString()
210 {
211 return "kgm2/s2";
212 }
213
214 }