Standard Units

Contents

Standard Units#

Colab Open in Kaggle

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.