1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.CGS_EMU;
4 import static org.djunits.unit.unitsystem.UnitSystem.CGS_ESU;
5 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
6 import static org.djunits.unit.unitsystem.UnitSystem.SI_ACCEPTED;
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 ElectricalChargeUnit extends LinearUnit<ElectricalChargeUnit>
22 {
23
24 private static final long serialVersionUID = 20140607L;
25
26
27 private final ElectricalCurrentUnit electricalCurrentUnit;
28
29
30 private final DurationUnit durationUnit;
31
32
33 public static final ElectricalChargeUnit SI;
34
35
36 public static final ElectricalChargeUnit COULOMB;
37
38
39 public static final ElectricalChargeUnit PICOCOULOMB;
40
41
42 public static final ElectricalChargeUnit NANOCOULOMB;
43
44
45 public static final ElectricalChargeUnit MICROCOULOMB;
46
47
48 public static final ElectricalChargeUnit MILLICOULOMB;
49
50
51 public static final ElectricalChargeUnit MILLIAMPERE_HOUR;
52
53
54 public static final ElectricalChargeUnit MILLIAMPERE_SECOND;
55
56
57 public static final ElectricalChargeUnit AMPERE_HOUR;
58
59
60 public static final ElectricalChargeUnit KILOAMPERE_HOUR;
61
62
63 public static final ElectricalChargeUnit MEGAAMPERE_HOUR;
64
65
66 public static final ElectricalChargeUnit FARADAY;
67
68
69 public static final ElectricalChargeUnit ATOMIC_UNIT;
70
71
72 public static final ElectricalChargeUnit STATCOULOMB;
73
74
75 public static final ElectricalChargeUnit FRANKLIN;
76
77
78 public static final ElectricalChargeUnit ESU;
79
80
81 public static final ElectricalChargeUnit ABCOULOMB;
82
83
84 public static final ElectricalChargeUnit EMU;
85
86 static
87 {
88 SI = new ElectricalChargeUnit(ElectricalCurrentUnit.AMPERE, DurationUnit.SECOND, "ElectricalChargeUnit.C", SI_DERIVED);
89 COULOMB = SI;
90 PICOCOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.pC", SI_DERIVED, COULOMB, 1.0E-12);
91 NANOCOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.nC", SI_DERIVED, COULOMB, 1.0E-9);
92 MICROCOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.muC", SI_DERIVED, COULOMB, 1.0E-6);
93 MILLICOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.mC", SI_DERIVED, COULOMB, 1.0E-3);
94 MILLIAMPERE_HOUR = new ElectricalChargeUnit(ElectricalCurrentUnit.MILLIAMPERE, DurationUnit.HOUR,
95 "ElectricalChargeUnit.mAh", SI_DERIVED);
96 AMPERE_HOUR = new ElectricalChargeUnit(ElectricalCurrentUnit.AMPERE, DurationUnit.HOUR, "ElectricalChargeUnit.Ah",
97 SI_DERIVED);
98 KILOAMPERE_HOUR = new ElectricalChargeUnit(ElectricalCurrentUnit.KILOAMPERE, DurationUnit.HOUR,
99 "ElectricalChargeUnit.kAh", SI_DERIVED);
100 MEGAAMPERE_HOUR = new ElectricalChargeUnit(ElectricalCurrentUnit.MEGAAMPERE, DurationUnit.HOUR,
101 "ElectricalChargeUnit.MAh", SI_DERIVED);
102 MILLIAMPERE_SECOND = new ElectricalChargeUnit(ElectricalCurrentUnit.MILLIAMPERE, DurationUnit.SECOND,
103 "ElectricalChargeUnit.mAh", SI_DERIVED);
104 FARADAY = new ElectricalChargeUnit("ElectricalChargeUnit.F", OTHER, COULOMB, 96485.3383);
105 ATOMIC_UNIT = new ElectricalChargeUnit("ElectricalChargeUnit.e", SI_ACCEPTED, COULOMB, 1.6021765314E-19);
106 STATCOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.statC", CGS_ESU, COULOMB, 3.335641E-10);
107 FRANKLIN = new ElectricalChargeUnit("ElectricalChargeUnit.Fr", CGS_ESU, STATCOULOMB, 1.0);
108 ESU = new ElectricalChargeUnit("ElectricalChargeUnit.esu", CGS_ESU, STATCOULOMB, 1.0);
109 ABCOULOMB = new ElectricalChargeUnit("ElectricalChargeUnit.abC", CGS_EMU, COULOMB, 10.0);
110 EMU = new ElectricalChargeUnit("ElectricalChargeUnit.emu", CGS_EMU, ABCOULOMB, 1.0);
111 }
112
113
114
115
116
117
118
119
120
121 private ElectricalChargeUnit(final ElectricalCurrentUnit electricalCurrentUnit, final DurationUnit durationUnit,
122 final String abbreviationKey, final UnitSystem unitSystem)
123 {
124 super(abbreviationKey, unitSystem, COULOMB, electricalCurrentUnit.getScaleFactor() * durationUnit.getScaleFactor());
125 this.electricalCurrentUnit = electricalCurrentUnit;
126 this.durationUnit = durationUnit;
127 }
128
129
130
131
132
133
134
135
136
137
138 public ElectricalChargeUnit(final ElectricalCurrentUnit electricalCurrentUnit, final DurationUnit durationUnit,
139 final String name, final String abbreviation, final UnitSystem unitSystem)
140 {
141 super(name, abbreviation, unitSystem, COULOMB, electricalCurrentUnit.getScaleFactor() * durationUnit.getScaleFactor());
142 this.electricalCurrentUnit = electricalCurrentUnit;
143 this.durationUnit = durationUnit;
144 }
145
146
147
148
149
150
151
152
153
154 private ElectricalChargeUnit(final String abbreviationKey, final UnitSystem unitSystem,
155 final ElectricalChargeUnit referenceUnit, final double scaleFactorToReferenceUnit)
156 {
157 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
158 this.electricalCurrentUnit = referenceUnit.getElectricalCurrentUnit();
159 this.durationUnit = referenceUnit.getDurationUnit();
160 }
161
162
163
164
165
166
167
168
169
170
171 public ElectricalChargeUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
172 final ElectricalChargeUnit referenceUnit, final double scaleFactorToReferenceUnit)
173 {
174 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
175 this.electricalCurrentUnit = referenceUnit.getElectricalCurrentUnit();
176 this.durationUnit = referenceUnit.getDurationUnit();
177 }
178
179
180
181
182 public final ElectricalCurrentUnit getElectricalCurrentUnit()
183 {
184 return this.electricalCurrentUnit;
185 }
186
187
188
189
190 public final DurationUnit getDurationUnit()
191 {
192 return this.durationUnit;
193 }
194
195
196 @Override
197 public final ElectricalChargeUnit getStandardUnit()
198 {
199 return COULOMB;
200 }
201
202
203 @Override
204 public final String getSICoefficientsString()
205 {
206 return "sA";
207 }
208
209 }