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.MTS;
6 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
7 import static org.djunits.unit.unitsystem.UnitSystem.SI_DERIVED;
8
9 import org.djunits.unit.unitsystem.UnitSystem;
10
11
12
13
14
15
16
17
18
19
20
21 public class ForceUnit extends LinearUnit<ForceUnit>
22 {
23
24 private static final long serialVersionUID = 20140607L;
25
26
27 private final MassUnit massUnit;
28
29
30 private final LengthUnit lengthUnit;
31
32
33 private final DurationUnit durationUnit;
34
35
36 public static final ForceUnit SI;
37
38
39 public static final ForceUnit NEWTON;
40
41
42 public static final ForceUnit DYNE;
43
44
45 public static final ForceUnit KILOGRAM_FORCE;
46
47
48 public static final ForceUnit OUNCE_FORCE;
49
50
51 public static final ForceUnit POUND_FORCE;
52
53
54 public static final ForceUnit TON_FORCE;
55
56
57 public static final ForceUnit STHENE;
58
59 static
60 {
61 SI = new ForceUnit(MassUnit.KILOGRAM, LengthUnit.METER, DurationUnit.SECOND, "ForceUnit.N", SI_DERIVED);
62 NEWTON = SI;
63 DYNE = new ForceUnit(MassUnit.GRAM, LengthUnit.CENTIMETER, DurationUnit.SECOND, "ForceUnit.dyn", CGS);
64 KILOGRAM_FORCE = new ForceUnit(MassUnit.KILOGRAM, AccelerationUnit.STANDARD_GRAVITY, "ForceUnit.kgf", OTHER);
65 OUNCE_FORCE = new ForceUnit(MassUnit.OUNCE, AccelerationUnit.STANDARD_GRAVITY, "ForceUnit.ozf", IMPERIAL);
66 POUND_FORCE = new ForceUnit(MassUnit.POUND, AccelerationUnit.STANDARD_GRAVITY, "ForceUnit.lbf", IMPERIAL);
67 TON_FORCE = new ForceUnit(MassUnit.TON_SHORT, AccelerationUnit.STANDARD_GRAVITY, "ForceUnit.tnf", IMPERIAL);
68 STHENE = new ForceUnit(MassUnit.TON_METRIC, AccelerationUnit.METER_PER_SECOND_2, "ForceUnit.sn", MTS);
69 }
70
71
72
73
74
75
76
77
78
79 private ForceUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit,
80 final String abbreviationKey, final UnitSystem unitSystem)
81 {
82 super(abbreviationKey, unitSystem, NEWTON, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
83 / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()));
84 this.massUnit = massUnit;
85 this.lengthUnit = lengthUnit;
86 this.durationUnit = durationUnit;
87 }
88
89
90
91
92
93
94
95
96
97
98 public ForceUnit(final MassUnit massUnit, final LengthUnit lengthUnit, final DurationUnit durationUnit, final String name,
99 final String abbreviation, final UnitSystem unitSystem)
100 {
101 super(name, abbreviation, unitSystem, NEWTON, massUnit.getScaleFactor() * lengthUnit.getScaleFactor()
102 / (durationUnit.getScaleFactor() * durationUnit.getScaleFactor()));
103 this.massUnit = massUnit;
104 this.lengthUnit = lengthUnit;
105 this.durationUnit = durationUnit;
106 }
107
108
109
110
111
112
113
114
115 private ForceUnit(final MassUnit massUnit, final AccelerationUnit accelerationUnit, final String abbreviationKey,
116 final UnitSystem unitSystem)
117 {
118 super(abbreviationKey, unitSystem, NEWTON, massUnit.getScaleFactor() * accelerationUnit.getScaleFactor());
119 this.massUnit = massUnit;
120 this.lengthUnit = accelerationUnit.getLengthUnit();
121 this.durationUnit = accelerationUnit.getDurationUnit();
122 }
123
124
125
126
127
128
129
130
131
132 public ForceUnit(final MassUnit massUnit, final AccelerationUnit accelerationUnit, final String name,
133 final String abbreviation, final UnitSystem unitSystem)
134 {
135 super(name, abbreviation, unitSystem, NEWTON, massUnit.getScaleFactor() * accelerationUnit.getScaleFactor());
136 this.massUnit = massUnit;
137 this.lengthUnit = accelerationUnit.getLengthUnit();
138 this.durationUnit = accelerationUnit.getDurationUnit();
139 }
140
141
142
143
144
145
146
147
148
149 private ForceUnit(final String abbreviationKey, final UnitSystem unitSystem, final ForceUnit referenceUnit,
150 final double scaleFactorToReferenceUnit)
151 {
152 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
153 this.massUnit = referenceUnit.getMassUnit();
154 this.lengthUnit = referenceUnit.getLengthUnit();
155 this.durationUnit = referenceUnit.getDurationUnit();
156 }
157
158
159
160
161
162
163
164
165
166
167 public ForceUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final ForceUnit referenceUnit,
168 final double scaleFactorToReferenceUnit)
169 {
170 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
171 this.massUnit = referenceUnit.getMassUnit();
172 this.lengthUnit = referenceUnit.getLengthUnit();
173 this.durationUnit = referenceUnit.getDurationUnit();
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 ForceUnit getStandardUnit()
203 {
204 return NEWTON;
205 }
206
207
208 @Override
209 public final String getSICoefficientsString()
210 {
211 return "kgm/s2";
212 }
213
214 }