1# -*- coding: utf-8 -*-
2"""
3"""
4from __future__ import absolute_import
5
6from ..unitquantity import UnitCurrent, UnitLuminousIntensity, UnitQuantity
7from .time import s
8from .length import cm, m
9from .energy import J, erg
10from .velocity import c
11from .force import N
12from math import pi
13
14
15A = amp = amps = ampere = amperes = UnitCurrent(
16    'ampere',
17    symbol='A',
18    aliases=['amp', 'amps', 'amperes']
19)
20mA = milliamp = milliampere = UnitCurrent(
21    'milliampere',
22    A/1000,
23    symbol='mA',
24    aliases=['milliamp', 'milliamps', 'milliamperes']
25)
26uA = microampere = UnitCurrent(
27    'microampere',
28    mA/1000,
29    symbol='uA',
30    u_symbol='µA',
31    aliases=['microamp', 'microamps', 'microamperes'])
32nA = nanoamp = nanoampere = UnitCurrent(
33    'nanoampere',
34    uA/1000,
35    symbol='nA',
36    aliases=['nanoamp', 'nanoamps', 'nanoamperes']
37)
38pA = picoamp = picoampere = UnitCurrent(
39    'picoampere',
40    nA/1000,
41    symbol='pA',
42    aliases=['picoamp', 'picoamps', 'picoamperes']
43)
44aA = abampere = biot = UnitCurrent(
45    'abampere',
46    10*A,
47    symbol='aA',
48    aliases=['abamperes', 'biot', 'biots']
49)
50
51esu = statcoulomb = statC = franklin = Fr = UnitQuantity(
52    'statcoulomb',
53    1 * erg**0.5 * cm**0.5,
54    symbol='esu',
55    aliases=['statcoulombs', 'statC', 'franklin', 'franklins', 'Fr']
56)
57esu_per_second = statampere = UnitCurrent(
58    'statampere',
59    esu/s,
60    symbol='(esu/s)',
61    aliases=['statamperes']
62)
63
64ampere_turn = UnitQuantity(
65    'ampere_turn',
66    1*A
67)
68Gi = gilbert = UnitQuantity(
69    'gilbert',
70    10/(4*pi)*ampere_turn,
71    symbol='Gi'
72)
73
74C = coulomb = UnitQuantity(
75    'coulomb',
76    A*s,
77    symbol='C'
78)
79mC = millicoulomb = UnitQuantity(
80    'millicoulomb',
81    1e-3*C,
82    symbol='mC'
83)
84uC = microcoulomb = UnitQuantity(
85    'microcoulomb',
86    1e-6*C,
87    symbol='uC',
88    u_symbol='μC'
89)
90V = volt = UnitQuantity(
91    'volt',
92    J/C,
93    symbol='V',
94    aliases=['volts']
95)
96kV = kilovolt = UnitQuantity(
97    'kilovolt',
98    1000*V,
99    symbol='kV',
100    aliases=['kilovolts']
101)
102mV = millivolt = UnitQuantity(
103    'millivolt',
104    V/1000,
105    symbol='mV',
106    aliases=['millivolts']
107)
108uV = microvolt = UnitQuantity(
109    'microvolt',
110    V/1e6,
111    symbol='uV',
112    u_symbol='μV',
113    aliases=['microvolts']
114)
115F = farad = UnitQuantity(
116    'farad',
117    C/V,
118    symbol='F',
119    aliases=['farads']
120)
121mF = UnitQuantity(
122    'millifarad',
123    F/1000,
124    symbol='mF'
125)
126uF = UnitQuantity(
127    'microfarad',
128    mF/1000,
129    symbol='uF',
130    u_symbol='μF'
131)
132nF = UnitQuantity(
133    'nanofarad',
134    uF/1000,
135    symbol='nF'
136)
137pF = UnitQuantity(
138    'picofarad',
139    nF/1000,
140    symbol='pF'
141)
142ohm = Ohm = UnitQuantity(
143    'ohm',
144    V/A,
145    u_symbol='Ω',
146    aliases=['ohms', 'Ohm']
147)
148kOhm = UnitQuantity(
149    'kiloohm',
150    ohm*1000,
151    u_symbol='kΩ',
152    aliases=['kOhm', 'kohm', 'kiloohms']
153)
154MOhm = UnitQuantity(
155    'megaohm',
156    kOhm*1000,
157    u_symbol='MΩ',
158    aliases=['MOhm', 'Mohm', 'megaohms']
159)
160S = siemens = UnitQuantity(
161    'siemens',
162    A/V,
163    symbol='S'
164)
165mS = millisiemens = UnitQuantity(
166    'millisiemens',
167    S/1000,
168    symbol='mS'
169)
170uS = microsiemens = UnitQuantity(
171    'microsiemens',
172    mS/1000,
173    symbol='uS',
174    u_symbol='μS'
175)
176nS = nanosiemens = UnitQuantity(
177    'nanosiemens',
178    uS/1000,
179    symbol='nS'
180)
181pS = picosiemens = UnitQuantity(
182    'picosiemens',
183    nS/1000,
184    symbol='pS'
185)
186Wb = weber = UnitQuantity(
187    'weber',
188    V*s,
189    symbol='Wb',
190    aliases=['webers']
191)
192T = tesla = UnitQuantity(
193    'tesla',
194    Wb/m**2,
195    symbol='T',
196    aliases=['teslas']
197)
198H = henry = UnitQuantity(
199    'henry',
200    Wb/A,
201    symbol='H'
202)
203abfarad = UnitQuantity(
204    'abfarad',
205    1e9*farad,
206    aliases=['abfarads']
207)
208abhenry = UnitQuantity(
209    'abhenry',
210    1e-9*henry
211)
212abmho = UnitQuantity(
213    'abmho',
214    1e9*S
215)
216abohm = UnitQuantity(
217    'abohm',
218    1e-9*ohm
219)
220abvolt = UnitQuantity(
221    'abvolt',
222    1e-8*V,
223    aliases=['abvolts']
224)
225e = elementary_charge = UnitQuantity(
226    'elementary_charge',
227    1.602176487e-19*C,
228    symbol='e',
229    doc='relative uncertainty = 6.64e-8'
230)
231chemical_faraday = UnitQuantity(
232    'chemical_faraday',
233    9.64957e4*C
234)
235physical_faraday = UnitQuantity(
236    'physical_faraday',
237    9.65219e4*C
238)
239faraday = C12_faraday = UnitQuantity(
240    'faraday',
241    96485.3399*C,
242    aliases=['faradays'],
243    doc='The symbol F is reserved for the farad'
244)
245gamma = UnitQuantity(
246    'gamma',
247    1e-9*T
248)
249gauss = UnitQuantity(
250    'gauss',
251    1e-4*T,
252    symbol='G'
253)
254maxwell = UnitQuantity(
255    'maxwell',
256    1e-8*Wb,
257    symbol='Mx',
258    aliases=['maxwells']
259)
260Oe = oersted = UnitQuantity(
261    'oersted',
262    1000/(4*pi)*A/m,
263    symbol='Oe',
264    aliases=['aliases']
265)
266statfarad = statF = stF = UnitQuantity(
267    'statfarad',
268    1.112650e-12*F,
269    symbol='stF',
270    aliases=['statfarads', 'statF']
271)
272stathenry = statH = stH = UnitQuantity(
273    'stathenry',
274    8.987554e11*H,
275    symbol='stH',
276    aliases=['statH']
277)
278statmho = statS = stS = UnitQuantity(
279    'statmho',
280    1.112650e-12*S,
281    symbol='stS'
282)
283statohm = UnitQuantity(
284    'statohm',
285    8.987554e11*ohm,
286    u_symbol='stΩ',
287    aliases=['statohms']
288)
289statvolt = statV = stV = UnitQuantity(
290    'statvolt',
291    2.997925e2*V,
292    symbol='stV',
293    aliases=['statvolts', 'statV']
294)
295unit_pole = UnitQuantity(
296    'unit_pole',
297    1.256637e-7*Wb
298)
299vacuum_permeability = mu_0 = magnetic_constant = UnitQuantity(
300    'magnetic_constant',
301    4*pi*10**-7*N/A**2,
302    symbol='mu_0',
303    u_symbol='μ₀',
304    aliases=['vacuum_permeability']
305)
306vacuum_permittivity = epsilon_0 = electric_constant = UnitQuantity(
307    'electric_constant',
308    1/(mu_0*c**2),
309    symbol='epsilon_0',
310    u_symbol='ε₀',
311    aliases=['vacuum_permittivity']
312)
313Z_0 = impedence_of_free_space = characteristic_impedance_of_vacuum = \
314        UnitQuantity(
315    'characteristic_impedance_of_vacuum',
316    mu_0*c,
317    symbol='Z_0',
318    u_symbol='Z₀',
319    aliases=['impedence_of_free_space']
320)
321
322cd = candle = candela = UnitLuminousIntensity(
323    'candela',
324    symbol='cd',
325    aliases=['candle', 'candles', 'candelas']
326)
327
328del UnitQuantity, s, m, J, c
329