1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
4 import static org.djunits.unit.unitsystem.UnitSystem.SI_ACCEPTED;
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 FrequencyUnit extends LinearUnit<FrequencyUnit>
20 {
21
22 private static final long serialVersionUID = 20140607L;
23
24
25 private final DurationUnit durationUnit;
26
27
28 public static final FrequencyUnit SI;
29
30
31 public static final FrequencyUnit HERTZ;
32
33
34 public static final FrequencyUnit KILOHERTZ;
35
36
37 public static final FrequencyUnit MEGAHERTZ;
38
39
40 public static final FrequencyUnit GIGAHERTZ;
41
42
43 public static final FrequencyUnit TERAHERTZ;
44
45
46 public static final FrequencyUnit RPM;
47
48
49 public static final FrequencyUnit PER_ATTOSECOND;
50
51
52 public static final FrequencyUnit PER_FEMTOSECOND;
53
54
55 public static final FrequencyUnit PER_PICOSECOND;
56
57
58 public static final FrequencyUnit PER_NANOSECOND;
59
60
61 public static final FrequencyUnit PER_MICROSECOND;
62
63
64 public static final FrequencyUnit PER_MILLISECOND;
65
66
67 public static final FrequencyUnit PER_SECOND;
68
69
70 public static final FrequencyUnit PER_MINUTE;
71
72
73 public static final FrequencyUnit PER_HOUR;
74
75
76 public static final FrequencyUnit PER_DAY;
77
78
79 public static final FrequencyUnit PER_WEEK;
80
81 static
82 {
83 SI = new FrequencyUnit(DurationUnit.SECOND, "FrequencyUnit.Hz", SI_DERIVED);
84 HERTZ = SI;
85 KILOHERTZ = new FrequencyUnit("FrequencyUnit.kHz", SI_DERIVED, HERTZ, 1000.0);
86 MEGAHERTZ = new FrequencyUnit("FrequencyUnit.MHz", SI_DERIVED, HERTZ, 1.0E6);
87 GIGAHERTZ = new FrequencyUnit("FrequencyUnit.GHz", SI_DERIVED, HERTZ, 1.0E9);
88 TERAHERTZ = new FrequencyUnit("FrequencyUnit.THz", SI_DERIVED, HERTZ, 1.0E12);
89 RPM = new FrequencyUnit("FrequencyUnit.rpm", OTHER, HERTZ, 1.0 / 60.0);
90 PER_ATTOSECOND = new FrequencyUnit(DurationUnit.ATTOSECOND, "FrequencyUnit.1/as", SI_DERIVED);
91 PER_FEMTOSECOND = new FrequencyUnit(DurationUnit.FEMTOSECOND, "FrequencyUnit.1/fs", SI_DERIVED);
92 PER_PICOSECOND = new FrequencyUnit(DurationUnit.PICOSECOND, "FrequencyUnit.1/ps", SI_DERIVED);
93 PER_NANOSECOND = new FrequencyUnit(DurationUnit.NANOSECOND, "FrequencyUnit.1/ns", SI_DERIVED);
94 PER_MICROSECOND = new FrequencyUnit(DurationUnit.MICROSECOND, "FrequencyUnit.1/mus", SI_DERIVED);
95 PER_MILLISECOND = new FrequencyUnit(DurationUnit.MILLISECOND, "FrequencyUnit.1/ms", SI_DERIVED);
96 PER_SECOND = new FrequencyUnit(DurationUnit.SECOND, "FrequencyUnit.1/s", SI_DERIVED);
97 PER_MINUTE = new FrequencyUnit(DurationUnit.MINUTE, "FrequencyUnit.1/min", SI_ACCEPTED);
98 PER_HOUR = new FrequencyUnit(DurationUnit.HOUR, "FrequencyUnit.1/h", SI_ACCEPTED);
99 PER_DAY = new FrequencyUnit(DurationUnit.DAY, "FrequencyUnit.1/d", SI_ACCEPTED);
100 PER_WEEK = new FrequencyUnit(DurationUnit.WEEK, "FrequencyUnit.1/w", OTHER);
101 }
102
103
104
105
106
107
108
109 private FrequencyUnit(final DurationUnit durationUnit, final String abbreviationKey, final UnitSystem unitSystem)
110 {
111 super(abbreviationKey, unitSystem, HERTZ, 1.0 / durationUnit.getScaleFactor());
112 this.durationUnit = durationUnit;
113 }
114
115
116
117
118
119
120
121
122 public FrequencyUnit(final DurationUnit durationUnit, final String name, final String abbreviation,
123 final UnitSystem unitSystem)
124 {
125 super(name, abbreviation, unitSystem, HERTZ, 1.0 / durationUnit.getScaleFactor());
126 this.durationUnit = durationUnit;
127 }
128
129
130
131
132
133
134
135
136
137 private FrequencyUnit(final String abbreviationKey, final UnitSystem unitSystem, final FrequencyUnit referenceUnit,
138 final double scaleFactorToReferenceUnit)
139 {
140 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
141 this.durationUnit = referenceUnit.getDurationUnit();
142 }
143
144
145
146
147
148
149
150
151
152
153 public FrequencyUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
154 final FrequencyUnit referenceUnit, final double scaleFactorToReferenceUnit)
155 {
156 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
157 this.durationUnit = referenceUnit.getDurationUnit();
158 }
159
160
161
162
163 public final DurationUnit getDurationUnit()
164 {
165 return this.durationUnit;
166 }
167
168
169 @Override
170 public final FrequencyUnit getStandardUnit()
171 {
172 return HERTZ;
173 }
174
175
176 @Override
177 public final String getSICoefficientsString()
178 {
179 return "1/s";
180 }
181
182 }