1 package org.opentrafficsim.core.unit;
2
3 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.CGS_EMU;
4 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.CGS_ESU;
5 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.OTHER;
6 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.SI_ACCEPTED;
7 import static org.opentrafficsim.core.unit.unitsystem.UnitSystem.SI_DERIVED;
8
9 import org.opentrafficsim.core.unit.unitsystem.UnitSystem;
10
11
12
13
14
15
16
17
18
19
20 public class ElectricalChargeUnit extends Unit<ElectricalChargeUnit>
21 {
22
23 private static final long serialVersionUID = 20140607L;
24
25
26 private final ElectricalCurrentUnit electricalCurrentUnit;
27
28
29 private final TimeUnit timeUnit;
30
31
32 public static final ElectricalChargeUnit SI;
33
34
35 public static final ElectricalChargeUnit COULOMB;
36
37
38 public static final ElectricalChargeUnit MILLIAMPERE_HOUR;
39
40
41 public static final ElectricalChargeUnit FARADAY;
42
43
44 public static final ElectricalChargeUnit ATOMIC_UNIT;
45
46
47 public static final ElectricalChargeUnit STATCOULOMB;
48
49
50 public static final ElectricalChargeUnit FRANKLIN;
51
52
53 public static final ElectricalChargeUnit ESU;
54
55
56 public static final ElectricalChargeUnit ABCOULOMB;
57
58
59 public static final ElectricalChargeUnit EMU;
60
61 static
62 {
63 SI =
64 new ElectricalChargeUnit(ElectricalCurrentUnit.AMPERE, TimeUnit.SECOND, "ElectricalChargeUnit.coulomb",
65 "ElectricalChargeUnit.C", SI_DERIVED);
66 COULOMB = SI;
67 MILLIAMPERE_HOUR =
68 new ElectricalChargeUnit(ElectricalCurrentUnit.MILLIAMPERE, TimeUnit.HOUR,
69 "ElectricalChargeUnit.milliampere_hour", "ElectricalChargeUnit.mAh", SI_DERIVED);
70 FARADAY =
71 new ElectricalChargeUnit("ElectricalChargeUnit.faraday", "ElectricalChargeUnit.F", OTHER, COULOMB,
72 96485.3383);
73 ATOMIC_UNIT =
74 new ElectricalChargeUnit("ElectricalChargeUnit.atomic_unit_of_charge", "ElectricalChargeUnit.e",
75 SI_ACCEPTED, COULOMB, 1.6021765314E-19);
76 STATCOULOMB =
77 new ElectricalChargeUnit("ElectricalChargeUnit.statcoulomb", "ElectricalChargeUnit.statC", CGS_ESU,
78 COULOMB, 3.335641E-10);
79 FRANKLIN =
80 new ElectricalChargeUnit("ElectricalChargeUnit.franklin", "ElectricalChargeUnit.Fr", CGS_ESU,
81 STATCOULOMB, 1.0);
82 ESU =
83 new ElectricalChargeUnit("ElectricalChargeUnit.electrostatic_unit", "ElectricalChargeUnit.esu",
84 CGS_ESU, STATCOULOMB, 1.0);
85 ABCOULOMB =
86 new ElectricalChargeUnit("ElectricalChargeUnit.abcoulomb", "ElectricalChargeUnit.abC", CGS_EMU,
87 COULOMB, 10.0);
88 EMU =
89 new ElectricalChargeUnit("ElectricalChargeUnit.electromagnetic_unit", "ElectricalChargeUnit.emu",
90 CGS_EMU, ABCOULOMB, 1.0);
91 }
92
93
94
95
96
97
98
99
100 public ElectricalChargeUnit(final ElectricalCurrentUnit electricalCurrentUnit, final TimeUnit timeUnit,
101 final String nameKey, final String abbreviationKey, final UnitSystem unitSystem)
102 {
103 super(nameKey, abbreviationKey, unitSystem, COULOMB, electricalCurrentUnit.getConversionFactorToStandardUnit()
104 * timeUnit.getConversionFactorToStandardUnit(), true);
105 this.electricalCurrentUnit = electricalCurrentUnit;
106 this.timeUnit = timeUnit;
107 }
108
109
110
111
112
113
114
115
116
117 public ElectricalChargeUnit(final String nameKey, final String abbreviationKey, final UnitSystem unitSystem,
118 final ElectricalChargeUnit referenceUnit, final double conversionFactorToReferenceUnit)
119 {
120 super(nameKey, abbreviationKey, unitSystem, referenceUnit, conversionFactorToReferenceUnit, true);
121 this.electricalCurrentUnit = referenceUnit.getElectricalCurrentUnit();
122 this.timeUnit = referenceUnit.getTimeUnit();
123 }
124
125
126
127
128 public final ElectricalCurrentUnit getElectricalCurrentUnit()
129 {
130 return this.electricalCurrentUnit;
131 }
132
133
134
135
136 public final TimeUnit getTimeUnit()
137 {
138 return this.timeUnit;
139 }
140
141
142 @Override
143 public final ElectricalChargeUnit getStandardUnit()
144 {
145 return COULOMB;
146 }
147
148
149 @Override
150 public final String getSICoefficientsString()
151 {
152 return "sA";
153 }
154
155 }