Standard Units#
Standard units are defined in the brainunit package as object instances.
All units are defined in terms of basic “irreducible” units. The irreducible units include:
Length (meter)
Mass (kilogram)
Time (second)
Current (ampere)
Temperature (Kelvin)
Amount of substance (mole)
Luminous intensity (candela)
from brainunit import Unit, get_or_create_dimension
metre = Unit.create(get_or_create_dimension(m=1), "meter", "m")
kilogram = Unit.create(get_or_create_dimension(kg=1), "kilogram", "kg")
second = Unit.create(get_or_create_dimension(s=1), "second", "s")
ampere = Unit.create(get_or_create_dimension(A=1), "ampere", "A")
kelvin = Unit.create(get_or_create_dimension(K=1), "kelvin", "K")
mole = Unit.create(get_or_create_dimension(mol=1), "mole", "mol")
candle = Unit.create(get_or_create_dimension(candle=1), "candle", "cd")
The underlying units in brainunit are implemented based on the International System of Units (SI), which is a globally recognized standard for measuring physical quantities. These units are defined using seven fundamental dimensions.
metre.dim._dims, kilogram.dim._dims, second.dim._dims, ampere.dim._dims, kelvin.dim._dims, mole.dim._dims, candle.dim._dims
(array([1, 0, 0, 0, 0, 0, 0]),
array([0, 1, 0, 0, 0, 0, 0]),
array([0, 0, 1, 0, 0, 0, 0]),
array([0, 0, 0, 1, 0, 0, 0]),
array([0, 0, 0, 0, 1, 0, 0]),
array([0, 0, 0, 0, 0, 1, 0]),
array([0, 0, 0, 0, 0, 0, 1]))
By combining these fundamental dimensions, brainunit allows for the creation and manipulation of various derived units to represent different physical quantities accurately.
There’s some combining units shown below:
newton = Unit.create(get_or_create_dimension(m=1, kg=1, s=-2), "newton", "N")
pascal = Unit.create(get_or_create_dimension(m=-1, kg=1, s=-2), "pascal", "Pa")
joule = Unit.create(get_or_create_dimension(m=2, kg=1, s=-2), "joule", "J")
watt = Unit.create(get_or_create_dimension(m=2, kg=1, s=-3), "watt", "W")
coulomb = Unit.create(get_or_create_dimension(s=1, A=1), "coulomb", "C")
volt = Unit.create(get_or_create_dimension(m=2, kg=1, s=-3, A=-1), "volt", "V")
farad = Unit.create(get_or_create_dimension(m=-2, kg=-1, s=4, A=2), "farad", "F")
ohm = Unit.create(get_or_create_dimension(m=2, kg=1, s=-3, A=-2), "ohm", "ohm")
siemens = Unit.create(get_or_create_dimension(m=-2, kg=-1, s=3, A=2), "siemens", "S")
weber = Unit.create(get_or_create_dimension(m=2, kg=1, s=-2, A=-1), "weber", "Wb")
tesla = Unit.create(get_or_create_dimension(kg=1, s=-2, A=-1), "tesla", "T")
henry = Unit.create(get_or_create_dimension(m=2, kg=1, s=-2, A=-2), "henry", "H")
lux = Unit.create(get_or_create_dimension(m=-2, cd=1), "lux", "lx")
gray = Unit.create(get_or_create_dimension(m=2, s=-2), "gray", "Gy")
sievert = Unit.create(get_or_create_dimension(m=2, s=-2), "sievert", "Sv")
katal = Unit.create(get_or_create_dimension(s=-1, mol=1), "katal", "kat")
Prefixs#
Most units can be used with prefixes, with both the standard SI prefixes supported
Symbol |
Prefix |
Value |
|---|---|---|
Y |
yotta- |
1e24 |
Z |
zetta- |
1e21 |
E |
exa- |
1e18 |
P |
peta- |
1e15 |
T |
tera- |
1e12 |
G |
giga- |
1e9 |
M |
mega- |
1e6 |
k |
kilo- |
1e3 |
h |
hecto- |
1e2 |
da |
deka-, deca |
1e1 |
d |
deci- |
1e-1 |
c |
centi- |
1e-2 |
m |
milli- |
1e-3 |
u |
micro- |
1e-6 |
n |
nano- |
1e-9 |
p |
pico- |
1e-12 |
f |
femto- |
1e-15 |
a |
atto- |
1e-18 |
z |
zepto- |
1e-21 |
y |
yocto- |
1e-24 |
For example, metre can be used with prefixes to represent different lengths:
Ymetre = Unit.create_scaled_unit(metre, "Y")
Zmetre = Unit.create_scaled_unit(metre, "Z")
Emetre = Unit.create_scaled_unit(metre, "E")
Pmetre = Unit.create_scaled_unit(metre, "P")
Tmetre = Unit.create_scaled_unit(metre, "T")
Gmetre = Unit.create_scaled_unit(metre, "G")
Mmetre = Unit.create_scaled_unit(metre, "M")
kmetre = Unit.create_scaled_unit(metre, "k")
hmetre = Unit.create_scaled_unit(metre, "h")
dametre = Unit.create_scaled_unit(metre, "da")
dmetre = Unit.create_scaled_unit(metre, "d")
cmetre = Unit.create_scaled_unit(metre, "c")
mmetre = Unit.create_scaled_unit(metre, "m")
umetre = Unit.create_scaled_unit(metre, "u")
nmetre = Unit.create_scaled_unit(metre, "n")
pmetre = Unit.create_scaled_unit(metre, "p")
fmetre = Unit.create_scaled_unit(metre, "f")
ametre = Unit.create_scaled_unit(metre, "a")
zmetre = Unit.create_scaled_unit(metre, "z")
ymetre = Unit.create_scaled_unit(metre, "y")
Ymetre.scale, Zmetre.scale, Emetre.scale, Pmetre.scale, Tmetre.scale, Gmetre.scale, Mmetre.scale, kmetre.scale, hmetre.scale, dametre.scale, dmetre.scale, cmetre.scale, mmetre.scale, umetre.scale, nmetre.scale, pmetre.scale, fmetre.scale, ametre.scale, zmetre.scale, ymetre.scale
(24,
21,
18,
15,
12,
9,
6,
3,
2,
1,
-1,
-2,
-3,
-6,
-9,
-12,
-15,
-18,
-21,
-24)
brainunit provides almost all the units with prefixes, and you can use them directly.