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 private TorqueUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit,
73 final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
74 final boolean standardUnit)
75 {
76 super(nameOrNameKey,
77 abbreviationOrAbbreviationKey, unitSystem, NEWTON_METER, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
78 * lengthUnit.getScaleFactor() / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()),
79 standardUnit);
80 this.massUnit = massUnit;
81 this.lengthUnit = lengthUnit;
82 this.durationUnit = durationUnit;
83 }
84
85
86
87
88
89
90
91
92
93
94 public TorqueUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
95 final String abbreviation, final UnitSystem unitSystem)
96 {
97 this(massUnit, lengthUnit, durationUnit, name, abbreviation, unitSystem, false);
98 }
99
100
101
102
103
104
105
106
107
108
109
110 private TorqueUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String nameOrNameKey,
111 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
112 {
113 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, NEWTON_METER,
114 forceUnit.getScaleFactor() * lengthUnit.getScaleFactor(), standardUnit);
115 this.massUnit = forceUnit.getMassUnit();
116 this.lengthUnit = forceUnit.getLengthUnit();
117 this.durationUnit = forceUnit.getDurationUnit();
118 }
119
120
121
122
123
124
125
126
127
128 public TorqueUnit(final ForceUnit forceUnit, final LengthUnit lengthUnit, final String name, final String abbreviation,
129 final UnitSystem unitSystem)
130 {
131 this(forceUnit, lengthUnit, name, abbreviation, unitSystem, false);
132 }
133
134
135
136
137
138
139
140
141
142
143
144 private TorqueUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem,
145 final TorqueUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
146 {
147 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit,
148 standardUnit);
149 this.massUnit = referenceUnit.getMassUnit();
150 this.lengthUnit = referenceUnit.getLengthUnit();
151 this.durationUnit = referenceUnit.getDurationUnit();
152 }
153
154
155
156
157
158
159
160
161
162 public TorqueUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final TorqueUnit referenceUnit,
163 final double scaleFactorToReferenceUnit)
164 {
165 this(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit, false);
166 }
167
168
169
170
171 public final MassUnit getMassUnit()
172 {
173 return this.massUnit;
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 TorqueUnit getStandardUnit()
195 {
196 return NEWTON_METER;
197 }
198
199
200 @Override
201 public final String getSICoefficientsString()
202 {
203 return "kgm2/s2";
204 }
205
206 }