length_weight_time.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. from sympy.core.singleton import S
  2. from sympy.core.numbers import pi
  3. from sympy.physics.units import DimensionSystem, hertz, kilogram
  4. from sympy.physics.units.definitions import (
  5. G, Hz, J, N, Pa, W, c, g, kg, m, s, meter, gram, second, newton,
  6. joule, watt, pascal)
  7. from sympy.physics.units.definitions.dimension_definitions import (
  8. acceleration, action, energy, force, frequency, momentum,
  9. power, pressure, velocity, length, mass, time)
  10. from sympy.physics.units.prefixes import PREFIXES, prefix_unit
  11. from sympy.physics.units.prefixes import (
  12. kibi, mebi, gibi, tebi, pebi, exbi
  13. )
  14. from sympy.physics.units.definitions import (
  15. cd, K, coulomb, volt, ohm, siemens, farad, henry, tesla, weber, dioptre,
  16. lux, katal, gray, becquerel, inch, hectare, liter, julian_year,
  17. gravitational_constant, speed_of_light, elementary_charge, planck, hbar,
  18. electronvolt, avogadro_number, avogadro_constant, boltzmann_constant,
  19. stefan_boltzmann_constant, atomic_mass_constant, molar_gas_constant,
  20. faraday_constant, josephson_constant, von_klitzing_constant,
  21. acceleration_due_to_gravity, magnetic_constant, vacuum_permittivity,
  22. vacuum_impedance, coulomb_constant, atmosphere, bar, pound, psi, mmHg,
  23. milli_mass_unit, quart, lightyear, astronomical_unit, planck_mass,
  24. planck_time, planck_temperature, planck_length, planck_charge,
  25. planck_area, planck_volume, planck_momentum, planck_energy, planck_force,
  26. planck_power, planck_density, planck_energy_density, planck_intensity,
  27. planck_angular_frequency, planck_pressure, planck_current, planck_voltage,
  28. planck_impedance, planck_acceleration, bit, byte, kibibyte, mebibyte,
  29. gibibyte, tebibyte, pebibyte, exbibyte, curie, rutherford, radian, degree,
  30. steradian, angular_mil, atomic_mass_unit, gee, kPa, ampere, u0, kelvin,
  31. mol, mole, candela, electric_constant, boltzmann, angstrom
  32. )
  33. dimsys_length_weight_time = DimensionSystem([
  34. # Dimensional dependencies for MKS base dimensions
  35. length,
  36. mass,
  37. time,
  38. ], dimensional_dependencies={
  39. # Dimensional dependencies for derived dimensions
  40. "velocity": {"length": 1, "time": -1},
  41. "acceleration": {"length": 1, "time": -2},
  42. "momentum": {"mass": 1, "length": 1, "time": -1},
  43. "force": {"mass": 1, "length": 1, "time": -2},
  44. "energy": {"mass": 1, "length": 2, "time": -2},
  45. "power": {"length": 2, "mass": 1, "time": -3},
  46. "pressure": {"mass": 1, "length": -1, "time": -2},
  47. "frequency": {"time": -1},
  48. "action": {"length": 2, "mass": 1, "time": -1},
  49. "area": {"length": 2},
  50. "volume": {"length": 3},
  51. })
  52. One = S.One
  53. # Base units:
  54. dimsys_length_weight_time.set_quantity_dimension(meter, length)
  55. dimsys_length_weight_time.set_quantity_scale_factor(meter, One)
  56. # gram; used to define its prefixed units
  57. dimsys_length_weight_time.set_quantity_dimension(gram, mass)
  58. dimsys_length_weight_time.set_quantity_scale_factor(gram, One)
  59. dimsys_length_weight_time.set_quantity_dimension(second, time)
  60. dimsys_length_weight_time.set_quantity_scale_factor(second, One)
  61. # derived units
  62. dimsys_length_weight_time.set_quantity_dimension(newton, force)
  63. dimsys_length_weight_time.set_quantity_scale_factor(newton, kilogram*meter/second**2)
  64. dimsys_length_weight_time.set_quantity_dimension(joule, energy)
  65. dimsys_length_weight_time.set_quantity_scale_factor(joule, newton*meter)
  66. dimsys_length_weight_time.set_quantity_dimension(watt, power)
  67. dimsys_length_weight_time.set_quantity_scale_factor(watt, joule/second)
  68. dimsys_length_weight_time.set_quantity_dimension(pascal, pressure)
  69. dimsys_length_weight_time.set_quantity_scale_factor(pascal, newton/meter**2)
  70. dimsys_length_weight_time.set_quantity_dimension(hertz, frequency)
  71. dimsys_length_weight_time.set_quantity_scale_factor(hertz, One)
  72. # Other derived units:
  73. dimsys_length_weight_time.set_quantity_dimension(dioptre, 1 / length)
  74. dimsys_length_weight_time.set_quantity_scale_factor(dioptre, 1/meter)
  75. # Common volume and area units
  76. dimsys_length_weight_time.set_quantity_dimension(hectare, length**2)
  77. dimsys_length_weight_time.set_quantity_scale_factor(hectare, (meter**2)*(10000))
  78. dimsys_length_weight_time.set_quantity_dimension(liter, length**3)
  79. dimsys_length_weight_time.set_quantity_scale_factor(liter, meter**3/1000)
  80. # Newton constant
  81. # REF: NIST SP 959 (June 2019)
  82. dimsys_length_weight_time.set_quantity_dimension(gravitational_constant, length ** 3 * mass ** -1 * time ** -2)
  83. dimsys_length_weight_time.set_quantity_scale_factor(gravitational_constant, 6.67430e-11*m**3/(kg*s**2))
  84. # speed of light
  85. dimsys_length_weight_time.set_quantity_dimension(speed_of_light, velocity)
  86. dimsys_length_weight_time.set_quantity_scale_factor(speed_of_light, 299792458*meter/second)
  87. # Planck constant
  88. # REF: NIST SP 959 (June 2019)
  89. dimsys_length_weight_time.set_quantity_dimension(planck, action)
  90. dimsys_length_weight_time.set_quantity_scale_factor(planck, 6.62607015e-34*joule*second)
  91. # Reduced Planck constant
  92. # REF: NIST SP 959 (June 2019)
  93. dimsys_length_weight_time.set_quantity_dimension(hbar, action)
  94. dimsys_length_weight_time.set_quantity_scale_factor(hbar, planck / (2 * pi))
  95. __all__ = [
  96. 'mmHg', 'atmosphere', 'newton', 'meter', 'vacuum_permittivity', 'pascal',
  97. 'magnetic_constant', 'angular_mil', 'julian_year', 'weber', 'exbibyte',
  98. 'liter', 'molar_gas_constant', 'faraday_constant', 'avogadro_constant',
  99. 'planck_momentum', 'planck_density', 'gee', 'mol', 'bit', 'gray', 'kibi',
  100. 'bar', 'curie', 'prefix_unit', 'PREFIXES', 'planck_time', 'gram',
  101. 'candela', 'force', 'planck_intensity', 'energy', 'becquerel',
  102. 'planck_acceleration', 'speed_of_light', 'dioptre', 'second', 'frequency',
  103. 'Hz', 'power', 'lux', 'planck_current', 'momentum', 'tebibyte',
  104. 'planck_power', 'degree', 'mebi', 'K', 'planck_volume',
  105. 'quart', 'pressure', 'W', 'joule', 'boltzmann_constant', 'c', 'g',
  106. 'planck_force', 'exbi', 's', 'watt', 'action', 'hbar', 'gibibyte',
  107. 'DimensionSystem', 'cd', 'volt', 'planck_charge', 'angstrom',
  108. 'dimsys_length_weight_time', 'pebi', 'vacuum_impedance', 'planck',
  109. 'farad', 'gravitational_constant', 'u0', 'hertz', 'tesla', 'steradian',
  110. 'josephson_constant', 'planck_area', 'stefan_boltzmann_constant',
  111. 'astronomical_unit', 'J', 'N', 'planck_voltage', 'planck_energy',
  112. 'atomic_mass_constant', 'rutherford', 'elementary_charge', 'Pa',
  113. 'planck_mass', 'henry', 'planck_angular_frequency', 'ohm', 'pound',
  114. 'planck_pressure', 'G', 'avogadro_number', 'psi', 'von_klitzing_constant',
  115. 'planck_length', 'radian', 'mole', 'acceleration',
  116. 'planck_energy_density', 'mebibyte', 'length',
  117. 'acceleration_due_to_gravity', 'planck_temperature', 'tebi', 'inch',
  118. 'electronvolt', 'coulomb_constant', 'kelvin', 'kPa', 'boltzmann',
  119. 'milli_mass_unit', 'gibi', 'planck_impedance', 'electric_constant', 'kg',
  120. 'coulomb', 'siemens', 'byte', 'atomic_mass_unit', 'm', 'kibibyte',
  121. 'kilogram', 'lightyear', 'mass', 'time', 'pebibyte', 'velocity',
  122. 'ampere', 'katal',
  123. ]