up follow livre
This commit is contained in:
parent
b4b4398bb0
commit
3a7a3849ae
12242 changed files with 2564461 additions and 6914 deletions
358
venv/lib/python3.13/site-packages/scipy/constants/__init__.py
Normal file
358
venv/lib/python3.13/site-packages/scipy/constants/__init__.py
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
r"""
|
||||
==================================
|
||||
Constants (:mod:`scipy.constants`)
|
||||
==================================
|
||||
|
||||
.. currentmodule:: scipy.constants
|
||||
|
||||
Physical and mathematical constants and units.
|
||||
|
||||
|
||||
Mathematical constants
|
||||
======================
|
||||
|
||||
================ =================================================================
|
||||
``pi`` Pi
|
||||
``golden`` Golden ratio
|
||||
``golden_ratio`` Golden ratio
|
||||
================ =================================================================
|
||||
|
||||
|
||||
Physical constants
|
||||
==================
|
||||
The following physical constants are available as attributes of `scipy.constants`.
|
||||
All units are `SI <https://en.wikipedia.org/wiki/International_System_of_Units>`_.
|
||||
|
||||
=========================== ================================================================ ===============
|
||||
Attribute Quantity Units
|
||||
=========================== ================================================================ ===============
|
||||
``c`` speed of light in vacuum m s^-1
|
||||
``speed_of_light`` speed of light in vacuum m s^-1
|
||||
``mu_0`` the magnetic constant :math:`\mu_0` N A^-2
|
||||
``epsilon_0`` the electric constant (vacuum permittivity), :math:`\epsilon_0` F m^-1
|
||||
``h`` the Planck constant :math:`h` J Hz^-1
|
||||
``Planck`` the Planck constant :math:`h` J Hz^-1
|
||||
``hbar`` the reduced Planck constant, :math:`\hbar = h/(2\pi)` J s
|
||||
``G`` Newtonian constant of gravitation m^3 kg^-1 s^-2
|
||||
``gravitational_constant`` Newtonian constant of gravitation m^3 kg^-1 s^-2
|
||||
``g`` standard acceleration of gravity m s^-2
|
||||
``e`` elementary charge C
|
||||
``elementary_charge`` elementary charge C
|
||||
``R`` molar gas constant J mol^-1 K^-1
|
||||
``gas_constant`` molar gas constant J mol^-1 K^-1
|
||||
``alpha`` fine-structure constant (unitless)
|
||||
``fine_structure`` fine-structure constant (unitless)
|
||||
``N_A`` Avogadro constant mol^-1
|
||||
``Avogadro`` Avogadro constant mol^-1
|
||||
``k`` Boltzmann constant J K^-1
|
||||
``Boltzmann`` Boltzmann constant J K^-1
|
||||
``sigma`` Stefan-Boltzmann constant :math:`\sigma` W m^-2 K^-4
|
||||
``Stefan_Boltzmann`` Stefan-Boltzmann constant :math:`\sigma` W m^-2 K^-4
|
||||
``Wien`` Wien wavelength displacement law constant m K
|
||||
``Rydberg`` Rydberg constant m^-1
|
||||
``m_e`` electron mass kg
|
||||
``electron_mass`` electron mass kg
|
||||
``m_p`` proton mass kg
|
||||
``proton_mass`` proton mass kg
|
||||
``m_n`` neutron mass kg
|
||||
``neutron_mass`` neutron mass kg
|
||||
=========================== ================================================================ ===============
|
||||
|
||||
|
||||
Constants database
|
||||
------------------
|
||||
|
||||
In addition to the above variables, :mod:`scipy.constants` also contains the
|
||||
2022 CODATA recommended values [CODATA2022]_ database containing more physical
|
||||
constants.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
value -- Value in physical_constants indexed by key
|
||||
unit -- Unit in physical_constants indexed by key
|
||||
precision -- Relative precision in physical_constants indexed by key
|
||||
find -- Return list of physical_constant keys with a given string
|
||||
ConstantWarning -- Constant sought not in newest CODATA data set
|
||||
|
||||
.. data:: physical_constants
|
||||
|
||||
Dictionary of physical constants, of the format
|
||||
``physical_constants[name] = (value, unit, uncertainty)``.
|
||||
The CODATA database uses ellipses to indicate that a value is defined
|
||||
(exactly) in terms of others but cannot be represented exactly with the
|
||||
allocated number of digits. In these cases, SciPy calculates the derived
|
||||
value and reports it to the full precision of a Python ``float``. Although
|
||||
``physical_constants`` lists the uncertainty as ``0.0`` to indicate that
|
||||
the CODATA value is exact, the value in ``physical_constants`` is still
|
||||
subject to the truncation error inherent in double-precision representation.
|
||||
|
||||
Available constants:
|
||||
|
||||
====================================================================== ====
|
||||
%(constant_names)s
|
||||
====================================================================== ====
|
||||
|
||||
|
||||
Units
|
||||
=====
|
||||
|
||||
SI prefixes
|
||||
-----------
|
||||
|
||||
============ =================================================================
|
||||
``quetta`` :math:`10^{30}`
|
||||
``ronna`` :math:`10^{27}`
|
||||
``yotta`` :math:`10^{24}`
|
||||
``zetta`` :math:`10^{21}`
|
||||
``exa`` :math:`10^{18}`
|
||||
``peta`` :math:`10^{15}`
|
||||
``tera`` :math:`10^{12}`
|
||||
``giga`` :math:`10^{9}`
|
||||
``mega`` :math:`10^{6}`
|
||||
``kilo`` :math:`10^{3}`
|
||||
``hecto`` :math:`10^{2}`
|
||||
``deka`` :math:`10^{1}`
|
||||
``deci`` :math:`10^{-1}`
|
||||
``centi`` :math:`10^{-2}`
|
||||
``milli`` :math:`10^{-3}`
|
||||
``micro`` :math:`10^{-6}`
|
||||
``nano`` :math:`10^{-9}`
|
||||
``pico`` :math:`10^{-12}`
|
||||
``femto`` :math:`10^{-15}`
|
||||
``atto`` :math:`10^{-18}`
|
||||
``zepto`` :math:`10^{-21}`
|
||||
``yocto`` :math:`10^{-24}`
|
||||
``ronto`` :math:`10^{-27}`
|
||||
``quecto`` :math:`10^{-30}`
|
||||
============ =================================================================
|
||||
|
||||
Binary prefixes
|
||||
---------------
|
||||
|
||||
============ =================================================================
|
||||
``kibi`` :math:`2^{10}`
|
||||
``mebi`` :math:`2^{20}`
|
||||
``gibi`` :math:`2^{30}`
|
||||
``tebi`` :math:`2^{40}`
|
||||
``pebi`` :math:`2^{50}`
|
||||
``exbi`` :math:`2^{60}`
|
||||
``zebi`` :math:`2^{70}`
|
||||
``yobi`` :math:`2^{80}`
|
||||
============ =================================================================
|
||||
|
||||
Mass
|
||||
----
|
||||
|
||||
================= ============================================================
|
||||
``gram`` :math:`10^{-3}` kg
|
||||
``metric_ton`` :math:`10^{3}` kg
|
||||
``grain`` one grain in kg
|
||||
``lb`` one pound (avoirdupous) in kg
|
||||
``pound`` one pound (avoirdupous) in kg
|
||||
``blob`` one inch version of a slug in kg (added in 1.0.0)
|
||||
``slinch`` one inch version of a slug in kg (added in 1.0.0)
|
||||
``slug`` one slug in kg (added in 1.0.0)
|
||||
``oz`` one ounce in kg
|
||||
``ounce`` one ounce in kg
|
||||
``stone`` one stone in kg
|
||||
``grain`` one grain in kg
|
||||
``long_ton`` one long ton in kg
|
||||
``short_ton`` one short ton in kg
|
||||
``troy_ounce`` one Troy ounce in kg
|
||||
``troy_pound`` one Troy pound in kg
|
||||
``carat`` one carat in kg
|
||||
``m_u`` atomic mass constant (in kg)
|
||||
``u`` atomic mass constant (in kg)
|
||||
``atomic_mass`` atomic mass constant (in kg)
|
||||
================= ============================================================
|
||||
|
||||
Angle
|
||||
-----
|
||||
|
||||
================= ============================================================
|
||||
``degree`` degree in radians
|
||||
``arcmin`` arc minute in radians
|
||||
``arcminute`` arc minute in radians
|
||||
``arcsec`` arc second in radians
|
||||
``arcsecond`` arc second in radians
|
||||
================= ============================================================
|
||||
|
||||
|
||||
Time
|
||||
----
|
||||
|
||||
================= ============================================================
|
||||
``minute`` one minute in seconds
|
||||
``hour`` one hour in seconds
|
||||
``day`` one day in seconds
|
||||
``week`` one week in seconds
|
||||
``year`` one year (365 days) in seconds
|
||||
``Julian_year`` one Julian year (365.25 days) in seconds
|
||||
================= ============================================================
|
||||
|
||||
|
||||
Length
|
||||
------
|
||||
|
||||
===================== ============================================================
|
||||
``inch`` one inch in meters
|
||||
``foot`` one foot in meters
|
||||
``yard`` one yard in meters
|
||||
``mile`` one mile in meters
|
||||
``mil`` one mil in meters
|
||||
``pt`` one point in meters
|
||||
``point`` one point in meters
|
||||
``survey_foot`` one survey foot in meters
|
||||
``survey_mile`` one survey mile in meters
|
||||
``nautical_mile`` one nautical mile in meters
|
||||
``fermi`` one Fermi in meters
|
||||
``angstrom`` one Angstrom in meters
|
||||
``micron`` one micron in meters
|
||||
``au`` one astronomical unit in meters
|
||||
``astronomical_unit`` one astronomical unit in meters
|
||||
``light_year`` one light year in meters
|
||||
``parsec`` one parsec in meters
|
||||
===================== ============================================================
|
||||
|
||||
Pressure
|
||||
--------
|
||||
|
||||
================= ============================================================
|
||||
``atm`` standard atmosphere in pascals
|
||||
``atmosphere`` standard atmosphere in pascals
|
||||
``bar`` one bar in pascals
|
||||
``torr`` one torr (mmHg) in pascals
|
||||
``mmHg`` one torr (mmHg) in pascals
|
||||
``psi`` one psi in pascals
|
||||
================= ============================================================
|
||||
|
||||
Area
|
||||
----
|
||||
|
||||
================= ============================================================
|
||||
``hectare`` one hectare in square meters
|
||||
``acre`` one acre in square meters
|
||||
================= ============================================================
|
||||
|
||||
|
||||
Volume
|
||||
------
|
||||
|
||||
=================== ========================================================
|
||||
``liter`` one liter in cubic meters
|
||||
``litre`` one liter in cubic meters
|
||||
``gallon`` one gallon (US) in cubic meters
|
||||
``gallon_US`` one gallon (US) in cubic meters
|
||||
``gallon_imp`` one gallon (UK) in cubic meters
|
||||
``fluid_ounce`` one fluid ounce (US) in cubic meters
|
||||
``fluid_ounce_US`` one fluid ounce (US) in cubic meters
|
||||
``fluid_ounce_imp`` one fluid ounce (UK) in cubic meters
|
||||
``bbl`` one barrel in cubic meters
|
||||
``barrel`` one barrel in cubic meters
|
||||
=================== ========================================================
|
||||
|
||||
Speed
|
||||
-----
|
||||
|
||||
================== ==========================================================
|
||||
``kmh`` kilometers per hour in meters per second
|
||||
``mph`` miles per hour in meters per second
|
||||
``mach`` one Mach (approx., at 15 C, 1 atm) in meters per second
|
||||
``speed_of_sound`` one Mach (approx., at 15 C, 1 atm) in meters per second
|
||||
``knot`` one knot in meters per second
|
||||
================== ==========================================================
|
||||
|
||||
|
||||
Temperature
|
||||
-----------
|
||||
|
||||
===================== =======================================================
|
||||
``zero_Celsius`` zero of Celsius scale in Kelvin
|
||||
``degree_Fahrenheit`` one Fahrenheit (only differences) in Kelvins
|
||||
===================== =======================================================
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
convert_temperature
|
||||
|
||||
Energy
|
||||
------
|
||||
|
||||
==================== =======================================================
|
||||
``eV`` one electron volt in Joules
|
||||
``electron_volt`` one electron volt in Joules
|
||||
``calorie`` one calorie (thermochemical) in Joules
|
||||
``calorie_th`` one calorie (thermochemical) in Joules
|
||||
``calorie_IT`` one calorie (International Steam Table calorie, 1956) in Joules
|
||||
``erg`` one erg in Joules
|
||||
``Btu`` one British thermal unit (International Steam Table) in Joules
|
||||
``Btu_IT`` one British thermal unit (International Steam Table) in Joules
|
||||
``Btu_th`` one British thermal unit (thermochemical) in Joules
|
||||
``ton_TNT`` one ton of TNT in Joules
|
||||
==================== =======================================================
|
||||
|
||||
Power
|
||||
-----
|
||||
|
||||
==================== =======================================================
|
||||
``hp`` one horsepower in watts
|
||||
``horsepower`` one horsepower in watts
|
||||
==================== =======================================================
|
||||
|
||||
Force
|
||||
-----
|
||||
|
||||
==================== =======================================================
|
||||
``dyn`` one dyne in newtons
|
||||
``dyne`` one dyne in newtons
|
||||
``lbf`` one pound force in newtons
|
||||
``pound_force`` one pound force in newtons
|
||||
``kgf`` one kilogram force in newtons
|
||||
``kilogram_force`` one kilogram force in newtons
|
||||
==================== =======================================================
|
||||
|
||||
Optics
|
||||
------
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
lambda2nu
|
||||
nu2lambda
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. [CODATA2022] CODATA Recommended Values of the Fundamental
|
||||
Physical Constants 2022.
|
||||
|
||||
https://physics.nist.gov/cuu/Constants/
|
||||
|
||||
""" # noqa: E501
|
||||
# Modules contributed by BasSw (wegwerp@gmail.com)
|
||||
from ._codata import *
|
||||
from ._constants import *
|
||||
from ._codata import _obsolete_constants, physical_constants
|
||||
|
||||
# Deprecated namespaces, to be removed in v2.0.0
|
||||
from . import codata, constants
|
||||
|
||||
_constant_names_list = [(_k.lower(), _k, _v)
|
||||
for _k, _v in physical_constants.items()
|
||||
if _k not in _obsolete_constants]
|
||||
_constant_names = "\n".join(["``{}``{} {} {}".format(_x[1], " "*(66-len(_x[1])),
|
||||
_x[2][0], _x[2][1])
|
||||
for _x in sorted(_constant_names_list)])
|
||||
if __doc__:
|
||||
__doc__ = __doc__ % dict(constant_names=_constant_names)
|
||||
|
||||
del _constant_names
|
||||
del _constant_names_list
|
||||
|
||||
__all__ = [s for s in dir() if not s.startswith('_')]
|
||||
|
||||
from scipy._lib._testutils import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2266
venv/lib/python3.13/site-packages/scipy/constants/_codata.py
Normal file
2266
venv/lib/python3.13/site-packages/scipy/constants/_codata.py
Normal file
File diff suppressed because it is too large
Load diff
369
venv/lib/python3.13/site-packages/scipy/constants/_constants.py
Normal file
369
venv/lib/python3.13/site-packages/scipy/constants/_constants.py
Normal file
|
|
@ -0,0 +1,369 @@
|
|||
"""
|
||||
Collection of physical constants and conversion factors.
|
||||
|
||||
Most constants are in SI units, so you can do
|
||||
print '10 mile per minute is', 10*mile/minute, 'm/s or', 10*mile/(minute*knot), 'knots'
|
||||
|
||||
The list is not meant to be comprehensive, but just convenient for everyday use.
|
||||
"""
|
||||
|
||||
import math as _math
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from ._codata import value as _cd
|
||||
|
||||
if TYPE_CHECKING:
|
||||
import numpy.typing as npt
|
||||
|
||||
from scipy._lib._array_api import array_namespace, _asarray, xp_capabilities
|
||||
|
||||
|
||||
"""
|
||||
BasSw 2006
|
||||
physical constants: imported from CODATA
|
||||
unit conversion: see e.g., NIST special publication 811
|
||||
Use at own risk: double-check values before calculating your Mars orbit-insertion burn.
|
||||
Some constants exist in a few variants, which are marked with suffixes.
|
||||
The ones without any suffix should be the most common ones.
|
||||
"""
|
||||
|
||||
__all__ = [
|
||||
'Avogadro', 'Boltzmann', 'Btu', 'Btu_IT', 'Btu_th', 'G',
|
||||
'Julian_year', 'N_A', 'Planck', 'R', 'Rydberg',
|
||||
'Stefan_Boltzmann', 'Wien', 'acre', 'alpha',
|
||||
'angstrom', 'arcmin', 'arcminute', 'arcsec',
|
||||
'arcsecond', 'astronomical_unit', 'atm',
|
||||
'atmosphere', 'atomic_mass', 'atto', 'au', 'bar',
|
||||
'barrel', 'bbl', 'blob', 'c', 'calorie',
|
||||
'calorie_IT', 'calorie_th', 'carat', 'centi',
|
||||
'convert_temperature', 'day', 'deci', 'degree',
|
||||
'degree_Fahrenheit', 'deka', 'dyn', 'dyne', 'e',
|
||||
'eV', 'electron_mass', 'electron_volt',
|
||||
'elementary_charge', 'epsilon_0', 'erg',
|
||||
'exa', 'exbi', 'femto', 'fermi', 'fine_structure',
|
||||
'fluid_ounce', 'fluid_ounce_US', 'fluid_ounce_imp',
|
||||
'foot', 'g', 'gallon', 'gallon_US', 'gallon_imp',
|
||||
'gas_constant', 'gibi', 'giga', 'golden', 'golden_ratio',
|
||||
'grain', 'gram', 'gravitational_constant', 'h', 'hbar',
|
||||
'hectare', 'hecto', 'horsepower', 'hour', 'hp',
|
||||
'inch', 'k', 'kgf', 'kibi', 'kilo', 'kilogram_force',
|
||||
'kmh', 'knot', 'lambda2nu', 'lb', 'lbf',
|
||||
'light_year', 'liter', 'litre', 'long_ton', 'm_e',
|
||||
'm_n', 'm_p', 'm_u', 'mach', 'mebi', 'mega',
|
||||
'metric_ton', 'micro', 'micron', 'mil', 'mile',
|
||||
'milli', 'minute', 'mmHg', 'mph', 'mu_0', 'nano',
|
||||
'nautical_mile', 'neutron_mass', 'nu2lambda',
|
||||
'ounce', 'oz', 'parsec', 'pebi', 'peta',
|
||||
'pi', 'pico', 'point', 'pound', 'pound_force',
|
||||
'proton_mass', 'psi', 'pt', 'quecto', 'quetta', 'ronna', 'ronto',
|
||||
'short_ton', 'sigma', 'slinch', 'slug', 'speed_of_light',
|
||||
'speed_of_sound', 'stone', 'survey_foot',
|
||||
'survey_mile', 'tebi', 'tera', 'ton_TNT',
|
||||
'torr', 'troy_ounce', 'troy_pound', 'u',
|
||||
'week', 'yard', 'year', 'yobi', 'yocto',
|
||||
'yotta', 'zebi', 'zepto', 'zero_Celsius', 'zetta'
|
||||
]
|
||||
|
||||
|
||||
# mathematical constants
|
||||
pi = _math.pi
|
||||
golden = golden_ratio = (1 + _math.sqrt(5)) / 2
|
||||
|
||||
# SI prefixes
|
||||
quetta = 1e30
|
||||
ronna = 1e27
|
||||
yotta = 1e24
|
||||
zetta = 1e21
|
||||
exa = 1e18
|
||||
peta = 1e15
|
||||
tera = 1e12
|
||||
giga = 1e9
|
||||
mega = 1e6
|
||||
kilo = 1e3
|
||||
hecto = 1e2
|
||||
deka = 1e1
|
||||
deci = 1e-1
|
||||
centi = 1e-2
|
||||
milli = 1e-3
|
||||
micro = 1e-6
|
||||
nano = 1e-9
|
||||
pico = 1e-12
|
||||
femto = 1e-15
|
||||
atto = 1e-18
|
||||
zepto = 1e-21
|
||||
yocto = 1e-24
|
||||
ronto = 1e-27
|
||||
quecto = 1e-30
|
||||
|
||||
# binary prefixes
|
||||
kibi = 2**10
|
||||
mebi = 2**20
|
||||
gibi = 2**30
|
||||
tebi = 2**40
|
||||
pebi = 2**50
|
||||
exbi = 2**60
|
||||
zebi = 2**70
|
||||
yobi = 2**80
|
||||
|
||||
# physical constants
|
||||
c = speed_of_light = _cd('speed of light in vacuum')
|
||||
mu_0 = _cd('vacuum mag. permeability')
|
||||
epsilon_0 = _cd('vacuum electric permittivity')
|
||||
h = Planck = _cd('Planck constant')
|
||||
hbar = _cd('reduced Planck constant')
|
||||
G = gravitational_constant = _cd('Newtonian constant of gravitation')
|
||||
g = _cd('standard acceleration of gravity')
|
||||
e = elementary_charge = _cd('elementary charge')
|
||||
R = gas_constant = _cd('molar gas constant')
|
||||
alpha = fine_structure = _cd('fine-structure constant')
|
||||
N_A = Avogadro = _cd('Avogadro constant')
|
||||
k = Boltzmann = _cd('Boltzmann constant')
|
||||
sigma = Stefan_Boltzmann = _cd('Stefan-Boltzmann constant')
|
||||
Wien = _cd('Wien wavelength displacement law constant')
|
||||
Rydberg = _cd('Rydberg constant')
|
||||
|
||||
# mass in kg
|
||||
gram = 1e-3
|
||||
metric_ton = 1e3
|
||||
grain = 64.79891e-6
|
||||
lb = pound = 7000 * grain # avoirdupois
|
||||
blob = slinch = pound * g / 0.0254 # lbf*s**2/in (added in 1.0.0)
|
||||
slug = blob / 12 # lbf*s**2/foot (added in 1.0.0)
|
||||
oz = ounce = pound / 16
|
||||
stone = 14 * pound
|
||||
long_ton = 2240 * pound
|
||||
short_ton = 2000 * pound
|
||||
|
||||
troy_ounce = 480 * grain # only for metals / gems
|
||||
troy_pound = 12 * troy_ounce
|
||||
carat = 200e-6
|
||||
|
||||
m_e = electron_mass = _cd('electron mass')
|
||||
m_p = proton_mass = _cd('proton mass')
|
||||
m_n = neutron_mass = _cd('neutron mass')
|
||||
m_u = u = atomic_mass = _cd('atomic mass constant')
|
||||
|
||||
# angle in rad
|
||||
degree = pi / 180
|
||||
arcmin = arcminute = degree / 60
|
||||
arcsec = arcsecond = arcmin / 60
|
||||
|
||||
# time in second
|
||||
minute = 60.0
|
||||
hour = 60 * minute
|
||||
day = 24 * hour
|
||||
week = 7 * day
|
||||
year = 365 * day
|
||||
Julian_year = 365.25 * day
|
||||
|
||||
# length in meter
|
||||
inch = 0.0254
|
||||
foot = 12 * inch
|
||||
yard = 3 * foot
|
||||
mile = 1760 * yard
|
||||
mil = inch / 1000
|
||||
pt = point = inch / 72 # typography
|
||||
survey_foot = 1200.0 / 3937
|
||||
survey_mile = 5280 * survey_foot
|
||||
nautical_mile = 1852.0
|
||||
fermi = 1e-15
|
||||
angstrom = 1e-10
|
||||
micron = 1e-6
|
||||
au = astronomical_unit = 149597870700.0
|
||||
light_year = Julian_year * c
|
||||
parsec = au / arcsec
|
||||
|
||||
# pressure in pascal
|
||||
atm = atmosphere = _cd('standard atmosphere')
|
||||
bar = 1e5
|
||||
torr = mmHg = atm / 760
|
||||
psi = pound * g / (inch * inch)
|
||||
|
||||
# area in meter**2
|
||||
hectare = 1e4
|
||||
acre = 43560 * foot**2
|
||||
|
||||
# volume in meter**3
|
||||
litre = liter = 1e-3
|
||||
gallon = gallon_US = 231 * inch**3 # US
|
||||
# pint = gallon_US / 8
|
||||
fluid_ounce = fluid_ounce_US = gallon_US / 128
|
||||
bbl = barrel = 42 * gallon_US # for oil
|
||||
|
||||
gallon_imp = 4.54609e-3 # UK
|
||||
fluid_ounce_imp = gallon_imp / 160
|
||||
|
||||
# speed in meter per second
|
||||
kmh = 1e3 / hour
|
||||
mph = mile / hour
|
||||
# approx value of mach at 15 degrees in 1 atm. Is this a common value?
|
||||
mach = speed_of_sound = 340.5
|
||||
knot = nautical_mile / hour
|
||||
|
||||
# temperature in kelvin
|
||||
zero_Celsius = 273.15
|
||||
degree_Fahrenheit = 1/1.8 # only for differences
|
||||
|
||||
# energy in joule
|
||||
eV = electron_volt = elementary_charge # * 1 Volt
|
||||
calorie = calorie_th = 4.184
|
||||
calorie_IT = 4.1868
|
||||
erg = 1e-7
|
||||
Btu_th = pound * degree_Fahrenheit * calorie_th / gram
|
||||
Btu = Btu_IT = pound * degree_Fahrenheit * calorie_IT / gram
|
||||
ton_TNT = 1e9 * calorie_th
|
||||
# Wh = watt_hour
|
||||
|
||||
# power in watt
|
||||
hp = horsepower = 550 * foot * pound * g
|
||||
|
||||
# force in newton
|
||||
dyn = dyne = 1e-5
|
||||
lbf = pound_force = pound * g
|
||||
kgf = kilogram_force = g # * 1 kg
|
||||
|
||||
# functions for conversions that are not linear
|
||||
|
||||
|
||||
@xp_capabilities()
|
||||
def convert_temperature(
|
||||
val: "npt.ArrayLike",
|
||||
old_scale: str,
|
||||
new_scale: str,
|
||||
) -> Any:
|
||||
"""
|
||||
Convert from a temperature scale to another one among Celsius, Kelvin,
|
||||
Fahrenheit, and Rankine scales.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
val : array_like
|
||||
Value(s) of the temperature(s) to be converted expressed in the
|
||||
original scale.
|
||||
old_scale : str
|
||||
Specifies as a string the original scale from which the temperature
|
||||
value(s) will be converted. Supported scales are Celsius ('Celsius',
|
||||
'celsius', 'C' or 'c'), Kelvin ('Kelvin', 'kelvin', 'K', 'k'),
|
||||
Fahrenheit ('Fahrenheit', 'fahrenheit', 'F' or 'f'), and Rankine
|
||||
('Rankine', 'rankine', 'R', 'r').
|
||||
new_scale : str
|
||||
Specifies as a string the new scale to which the temperature
|
||||
value(s) will be converted. Supported scales are Celsius ('Celsius',
|
||||
'celsius', 'C' or 'c'), Kelvin ('Kelvin', 'kelvin', 'K', 'k'),
|
||||
Fahrenheit ('Fahrenheit', 'fahrenheit', 'F' or 'f'), and Rankine
|
||||
('Rankine', 'rankine', 'R', 'r').
|
||||
|
||||
Returns
|
||||
-------
|
||||
res : float or array of floats
|
||||
Value(s) of the converted temperature(s) expressed in the new scale.
|
||||
|
||||
Notes
|
||||
-----
|
||||
.. versionadded:: 0.18.0
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.constants import convert_temperature
|
||||
>>> import numpy as np
|
||||
>>> convert_temperature(np.array([-40, 40]), 'Celsius', 'Kelvin')
|
||||
array([ 233.15, 313.15])
|
||||
|
||||
"""
|
||||
xp = array_namespace(val)
|
||||
_val = _asarray(val, xp=xp, subok=True)
|
||||
# Convert from `old_scale` to Kelvin
|
||||
if old_scale.lower() in ['celsius', 'c']:
|
||||
tempo = _val + zero_Celsius
|
||||
elif old_scale.lower() in ['kelvin', 'k']:
|
||||
tempo = _val
|
||||
elif old_scale.lower() in ['fahrenheit', 'f']:
|
||||
tempo = (_val - 32) * 5 / 9 + zero_Celsius
|
||||
elif old_scale.lower() in ['rankine', 'r']:
|
||||
tempo = _val * 5 / 9
|
||||
else:
|
||||
raise NotImplementedError(f"{old_scale=} is unsupported: supported scales "
|
||||
"are Celsius, Kelvin, Fahrenheit, and "
|
||||
"Rankine")
|
||||
# and from Kelvin to `new_scale`.
|
||||
if new_scale.lower() in ['celsius', 'c']:
|
||||
res = tempo - zero_Celsius
|
||||
elif new_scale.lower() in ['kelvin', 'k']:
|
||||
res = tempo
|
||||
elif new_scale.lower() in ['fahrenheit', 'f']:
|
||||
res = (tempo - zero_Celsius) * 9 / 5 + 32
|
||||
elif new_scale.lower() in ['rankine', 'r']:
|
||||
res = tempo * 9 / 5
|
||||
else:
|
||||
raise NotImplementedError(f"{new_scale=} is unsupported: supported "
|
||||
"scales are 'Celsius', 'Kelvin', "
|
||||
"'Fahrenheit', and 'Rankine'")
|
||||
|
||||
return res
|
||||
|
||||
|
||||
# optics
|
||||
|
||||
|
||||
@xp_capabilities()
|
||||
def lambda2nu(lambda_: "npt.ArrayLike") -> Any:
|
||||
"""
|
||||
Convert wavelength to optical frequency
|
||||
|
||||
Parameters
|
||||
----------
|
||||
lambda_ : array_like
|
||||
Wavelength(s) to be converted.
|
||||
|
||||
Returns
|
||||
-------
|
||||
nu : float or array of floats
|
||||
Equivalent optical frequency.
|
||||
|
||||
Notes
|
||||
-----
|
||||
Computes ``nu = c / lambda`` where c = 299792458.0, i.e., the
|
||||
(vacuum) speed of light in meters/second.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.constants import lambda2nu, speed_of_light
|
||||
>>> import numpy as np
|
||||
>>> lambda2nu(np.array((1, speed_of_light)))
|
||||
array([ 2.99792458e+08, 1.00000000e+00])
|
||||
|
||||
"""
|
||||
xp = array_namespace(lambda_)
|
||||
return c / _asarray(lambda_, xp=xp, subok=True)
|
||||
|
||||
|
||||
@xp_capabilities()
|
||||
def nu2lambda(nu: "npt.ArrayLike") -> Any:
|
||||
"""
|
||||
Convert optical frequency to wavelength.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
nu : array_like
|
||||
Optical frequency to be converted.
|
||||
|
||||
Returns
|
||||
-------
|
||||
lambda : float or array of floats
|
||||
Equivalent wavelength(s).
|
||||
|
||||
Notes
|
||||
-----
|
||||
Computes ``lambda = c / nu`` where c = 299792458.0, i.e., the
|
||||
(vacuum) speed of light in meters/second.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.constants import nu2lambda, speed_of_light
|
||||
>>> import numpy as np
|
||||
>>> nu2lambda(np.array((1, speed_of_light)))
|
||||
array([ 2.99792458e+08, 1.00000000e+00])
|
||||
|
||||
"""
|
||||
xp = array_namespace(nu)
|
||||
return c / _asarray(nu, xp=xp, subok=True)
|
||||
21
venv/lib/python3.13/site-packages/scipy/constants/codata.py
Normal file
21
venv/lib/python3.13/site-packages/scipy/constants/codata.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.constants` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'physical_constants', 'value', 'unit', 'precision', 'find',
|
||||
'ConstantWarning', 'k', 'c',
|
||||
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="constants", module="codata",
|
||||
private_modules=["_codata"], all=__all__,
|
||||
attribute=name)
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.constants` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'Avogadro', 'Boltzmann', 'Btu', 'Btu_IT', 'Btu_th', 'G',
|
||||
'Julian_year', 'N_A', 'Planck', 'R', 'Rydberg',
|
||||
'Stefan_Boltzmann', 'Wien', 'acre', 'alpha',
|
||||
'angstrom', 'arcmin', 'arcminute', 'arcsec',
|
||||
'arcsecond', 'astronomical_unit', 'atm',
|
||||
'atmosphere', 'atomic_mass', 'atto', 'au', 'bar',
|
||||
'barrel', 'bbl', 'blob', 'c', 'calorie',
|
||||
'calorie_IT', 'calorie_th', 'carat', 'centi',
|
||||
'convert_temperature', 'day', 'deci', 'degree',
|
||||
'degree_Fahrenheit', 'deka', 'dyn', 'dyne', 'e',
|
||||
'eV', 'electron_mass', 'electron_volt',
|
||||
'elementary_charge', 'epsilon_0', 'erg',
|
||||
'exa', 'exbi', 'femto', 'fermi', 'fine_structure',
|
||||
'fluid_ounce', 'fluid_ounce_US', 'fluid_ounce_imp',
|
||||
'foot', 'g', 'gallon', 'gallon_US', 'gallon_imp',
|
||||
'gas_constant', 'gibi', 'giga', 'golden', 'golden_ratio',
|
||||
'grain', 'gram', 'gravitational_constant', 'h', 'hbar',
|
||||
'hectare', 'hecto', 'horsepower', 'hour', 'hp',
|
||||
'inch', 'k', 'kgf', 'kibi', 'kilo', 'kilogram_force',
|
||||
'kmh', 'knot', 'lambda2nu', 'lb', 'lbf',
|
||||
'light_year', 'liter', 'litre', 'long_ton', 'm_e',
|
||||
'm_n', 'm_p', 'm_u', 'mach', 'mebi', 'mega',
|
||||
'metric_ton', 'micro', 'micron', 'mil', 'mile',
|
||||
'milli', 'minute', 'mmHg', 'mph', 'mu_0', 'nano',
|
||||
'nautical_mile', 'neutron_mass', 'nu2lambda',
|
||||
'ounce', 'oz', 'parsec', 'pebi', 'peta',
|
||||
'pi', 'pico', 'point', 'pound', 'pound_force',
|
||||
'proton_mass', 'psi', 'pt', 'short_ton',
|
||||
'sigma', 'slinch', 'slug', 'speed_of_light',
|
||||
'speed_of_sound', 'stone', 'survey_foot',
|
||||
'survey_mile', 'tebi', 'tera', 'ton_TNT',
|
||||
'torr', 'troy_ounce', 'troy_pound', 'u',
|
||||
'week', 'yard', 'year', 'yobi', 'yocto',
|
||||
'yotta', 'zebi', 'zepto', 'zero_Celsius', 'zetta'
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="constants", module="constants",
|
||||
private_modules=["_constants"], all=__all__,
|
||||
attribute=name)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,78 @@
|
|||
from scipy.constants import find, value, c, speed_of_light, precision
|
||||
from numpy.testing import assert_equal, assert_, assert_almost_equal
|
||||
import scipy.constants._codata as _cd
|
||||
from scipy import constants
|
||||
|
||||
|
||||
def test_find():
|
||||
keys = find('weak mixing', disp=False)
|
||||
assert_equal(keys, ['weak mixing angle'])
|
||||
|
||||
keys = find('qwertyuiop', disp=False)
|
||||
assert_equal(keys, [])
|
||||
|
||||
keys = find('natural unit', disp=False)
|
||||
assert_equal(keys, sorted(['natural unit of velocity',
|
||||
'natural unit of action',
|
||||
'natural unit of action in eV s',
|
||||
'natural unit of mass',
|
||||
'natural unit of energy',
|
||||
'natural unit of energy in MeV',
|
||||
'natural unit of momentum',
|
||||
'natural unit of momentum in MeV/c',
|
||||
'natural unit of length',
|
||||
'natural unit of time']))
|
||||
|
||||
|
||||
def test_basic_table_parse():
|
||||
c_s = 'speed of light in vacuum'
|
||||
assert_equal(value(c_s), c)
|
||||
assert_equal(value(c_s), speed_of_light)
|
||||
|
||||
|
||||
def test_basic_lookup():
|
||||
assert_equal('{} {}'.format(int(_cd.value('speed of light in vacuum')),
|
||||
_cd.unit('speed of light in vacuum')),
|
||||
'299792458 m s^-1')
|
||||
|
||||
|
||||
def test_find_all():
|
||||
assert_(len(find(disp=False)) > 300)
|
||||
|
||||
|
||||
def test_find_single():
|
||||
assert_equal(find('Wien freq', disp=False)[0],
|
||||
'Wien frequency displacement law constant')
|
||||
|
||||
|
||||
def test_2002_vs_2006():
|
||||
assert_almost_equal(value('magn. flux quantum'),
|
||||
value('mag. flux quantum'))
|
||||
|
||||
|
||||
def test_exact_values():
|
||||
# Check that updating stored values with exact ones worked.
|
||||
exact = dict((k, v[0]) for k, v in _cd._physical_constants_2018.items())
|
||||
replace = _cd.exact2018(exact)
|
||||
for key, val in replace.items():
|
||||
assert_equal(val, value(key))
|
||||
assert precision(key) == 0
|
||||
|
||||
|
||||
def test_gh11341():
|
||||
# gh-11341 noted that these three constants should exist (for backward
|
||||
# compatibility) and should always have the same value:
|
||||
a = constants.epsilon_0
|
||||
b = constants.physical_constants['electric constant'][0]
|
||||
c = constants.physical_constants['vacuum electric permittivity'][0]
|
||||
assert a == b == c
|
||||
|
||||
|
||||
def test_gh14467():
|
||||
# gh-14467 noted that some physical constants in CODATA are rounded
|
||||
# to only ten significant figures even though they are supposed to be
|
||||
# exact. Check that (at least) the case mentioned in the issue is resolved.
|
||||
res = constants.physical_constants['Boltzmann constant in eV/K'][0]
|
||||
ref = (constants.physical_constants['Boltzmann constant'][0]
|
||||
/ constants.physical_constants['elementary charge'][0])
|
||||
assert res == ref
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
import pytest
|
||||
|
||||
import scipy.constants as sc
|
||||
from scipy._lib._array_api_no_0d import xp_assert_equal, xp_assert_close
|
||||
from scipy._lib._array_api import make_xp_test_case
|
||||
|
||||
lazy_xp_modules = [sc]
|
||||
|
||||
|
||||
@make_xp_test_case(sc.convert_temperature)
|
||||
class TestConvertTemperature:
|
||||
def test_convert_temperature(self, xp):
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray(32.), 'f', 'Celsius'),
|
||||
xp.asarray(0.0))
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]),
|
||||
'celsius', 'Kelvin'),
|
||||
xp.asarray([273.15, 273.15]))
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]), 'kelvin', 'c'),
|
||||
xp.asarray([-273.15, -273.15]))
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray([32., 32.]), 'f', 'k'),
|
||||
xp.asarray([273.15, 273.15]))
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray([273.15, 273.15]),
|
||||
'kelvin', 'F'),
|
||||
xp.asarray([32., 32.]))
|
||||
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]), 'C', 'fahrenheit'),
|
||||
xp.asarray([32., 32.]))
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([0., 0.], dtype=xp.float64),
|
||||
'c', 'r'),
|
||||
xp.asarray([491.67, 491.67], dtype=xp.float64),
|
||||
rtol=0., atol=1e-13)
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 491.67],
|
||||
dtype=xp.float64),
|
||||
'Rankine', 'C'),
|
||||
xp.asarray([0., 0.], dtype=xp.float64), rtol=0., atol=1e-13)
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 491.67],
|
||||
dtype=xp.float64),
|
||||
'r', 'F'),
|
||||
xp.asarray([32., 32.], dtype=xp.float64), rtol=0., atol=1e-13)
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([32., 32.], dtype=xp.float64),
|
||||
'fahrenheit', 'R'),
|
||||
xp.asarray([491.67, 491.67], dtype=xp.float64),
|
||||
rtol=0., atol=1e-13)
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([273.15, 273.15],
|
||||
dtype=xp.float64),
|
||||
'K', 'R'),
|
||||
xp.asarray([491.67, 491.67], dtype=xp.float64),
|
||||
rtol=0., atol=1e-13)
|
||||
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 0.],
|
||||
dtype=xp.float64),
|
||||
'rankine', 'kelvin'),
|
||||
xp.asarray([273.15, 0.], dtype=xp.float64), rtol=0., atol=1e-13)
|
||||
|
||||
def test_convert_temperature_array_like(self):
|
||||
xp_assert_close(sc.convert_temperature([491.67, 0.], 'rankine', 'kelvin'),
|
||||
[273.15, 0.], rtol=0., atol=1e-13)
|
||||
|
||||
|
||||
def test_convert_temperature_errors(self):
|
||||
with pytest.raises(NotImplementedError, match="old_scale="):
|
||||
sc.convert_temperature(1, old_scale="cheddar", new_scale="kelvin")
|
||||
with pytest.raises(NotImplementedError, match="new_scale="):
|
||||
sc.convert_temperature(1, old_scale="kelvin", new_scale="brie")
|
||||
|
||||
|
||||
@make_xp_test_case(sc.lambda2nu)
|
||||
class TestLambdaToNu:
|
||||
def test_lambda_to_nu(self, xp):
|
||||
xp_assert_equal(sc.lambda2nu(xp.asarray([sc.speed_of_light, 1])),
|
||||
xp.asarray([1, sc.speed_of_light]))
|
||||
|
||||
|
||||
def test_lambda_to_nu_array_like(self):
|
||||
xp_assert_close(sc.lambda2nu([sc.speed_of_light, 1]), [1, sc.speed_of_light])
|
||||
|
||||
|
||||
@make_xp_test_case(sc.nu2lambda)
|
||||
class TestNuToLambda:
|
||||
def test_nu_to_lambda(self, xp):
|
||||
xp_assert_equal(sc.nu2lambda(xp.asarray([sc.speed_of_light, 1])),
|
||||
xp.asarray([1, sc.speed_of_light]))
|
||||
|
||||
def test_nu_to_lambda_array_like(self):
|
||||
xp_assert_close(sc.nu2lambda([sc.speed_of_light, 1]), [1, sc.speed_of_light])
|
||||
Loading…
Add table
Add a link
Reference in a new issue