You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
2.0 KiB

"""
MKS unit system.
MKS stands for "meter, kilogram, second, ampere".
"""
from __future__ import annotations
from sympy.physics.units.definitions import Z0, ampere, coulomb, farad, henry, siemens, tesla, volt, weber, ohm
from sympy.physics.units.definitions.dimension_definitions import (
capacitance, charge, conductance, current, impedance, inductance,
magnetic_density, magnetic_flux, voltage)
from sympy.physics.units.prefixes import PREFIXES, prefix_unit
from sympy.physics.units.systems.mks import MKS, dimsys_length_weight_time
from sympy.physics.units.quantities import Quantity
dims = (voltage, impedance, conductance, current, capacitance, inductance, charge,
magnetic_density, magnetic_flux)
units = [ampere, volt, ohm, siemens, farad, henry, coulomb, tesla, weber]
all_units: list[Quantity] = []
for u in units:
all_units.extend(prefix_unit(u, PREFIXES))
all_units.extend(units)
all_units.append(Z0)
dimsys_MKSA = dimsys_length_weight_time.extend([
# Dimensional dependencies for base dimensions (MKSA not in MKS)
current,
], new_dim_deps={
# Dimensional dependencies for derived dimensions
"voltage": {"mass": 1, "length": 2, "current": -1, "time": -3},
"impedance": {"mass": 1, "length": 2, "current": -2, "time": -3},
"conductance": {"mass": -1, "length": -2, "current": 2, "time": 3},
"capacitance": {"mass": -1, "length": -2, "current": 2, "time": 4},
"inductance": {"mass": 1, "length": 2, "current": -2, "time": -2},
"charge": {"current": 1, "time": 1},
"magnetic_density": {"mass": 1, "current": -1, "time": -2},
"magnetic_flux": {"length": 2, "mass": 1, "current": -1, "time": -2},
})
MKSA = MKS.extend(base=(ampere,), units=all_units, name='MKSA', dimension_system=dimsys_MKSA, derived_units={
magnetic_flux: weber,
impedance: ohm,
current: ampere,
voltage: volt,
inductance: henry,
conductance: siemens,
magnetic_density: tesla,
charge: coulomb,
capacitance: farad,
})