Module ltempy.constants
Allows unit scaling across ltempy
.
By default, ltempy
uses SI units. This module allows you to scale
the SI base units. So, for example, to work in kilometers rather than meters:
import ltempy as lp
lp.set_units(meter = 1e-3) # set km as base unit for length
print(lp.constants.c) # yields 299792.458 km / s
Note that all other modules of ltempy
and their functions update automatically as well.
So for example, if you set km as the base unit for length (lp.set_units(meter = 1e-3)
),
and then run a sitie reconstruction with defocus = 1
, you've just run sitie with defocus equal to 1km.
Also note that ltempy
functions that use constants (such as ind_from_phase
, which uses constants.e
and
constants.hbar
) will be affected, as both e (the electron charge) and \hbar (the reduced Planck constant),
have different numerical values when km is the base unit.
Expand source code
# ltempy is a set of LTEM analysis and simulation tools developed by WSP as a member of the McMorran Lab
# Copyright (C) 2021 William S. Parker
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
r"""Allows unit scaling across `ltempy`.
By default, `ltempy` uses SI units. This module allows you to scale
the SI base units. So, for example, to work in kilometers rather than meters:
```python
import ltempy as lp
lp.set_units(meter = 1e-3) # set km as base unit for length
print(lp.constants.c) # yields 299792.458 km / s
```
Note that all other modules of `ltempy` and their functions update automatically as well.
So for example, if you set km as the base unit for length (`lp.set_units(meter = 1e-3)`),
and then run a sitie reconstruction with `defocus = 1`, you've just run sitie with defocus equal to 1km.
Also note that `ltempy` functions that use constants (such as `ind_from_phase`, which uses `constants.e` and
`constants.hbar`) will be affected, as both \(e\) (the electron charge) and \(\hbar\) (the reduced Planck constant),
have different numerical values when km is the base unit.
"""
__all__ = ['s','m','kg','A','K','mol','cd','c','hbar','e','pi','set_units']
def set_units(second=1, meter=1, kilogram=1, Ampere=1, Kelvin=1, mole=1, candela=1):
"""Sets the units across the ltempy module.
For example, `set_units(meter = 1e3)` sets the millimeter as the base unit for length.
**Parameters**
* **second** : _number, optional_ <br />
The SI base unit for time. <br />
Default is `second = 1`.
* **meter** : _number, optional_ <br />
The SI base unit for length. <br />
Default is `meter = 1`.
* **kilogram** : _number, optional_ <br />
The SI base unit for mass. <br />
Default is `kilogram = 1`.
* **Ampere** : _number, optional_ <br />
The SI base unit for current. <br />
Default is `Ampere = 1`.
* **Kelvin** : _number, optional_ <br />
The SI base unit for temperature. <br />
Default is `Kelvin = 1`.
* **mole** : _number, optional_ <br />
The SI base unit for amount of substance. <br />
Default is `mole = 1`.
* **candela** : _number, optional_ <br />
The SI base unit for luminous intensity. <br />
Default is `candela = 1`.
"""
global s,m,kg,A,K,mol,cd
s,m,kg,A,K,mol,cd = second, meter, kilogram, Ampere, Kelvin, mole, candela
set_consts(s, m, kg, A, K, mol, cd)
def set_consts(s, m, kg, A, K, mol, cd):
"""Utility function for `set_units()`."""
global c, hbar, e, pi, mu0
F = s**4 * A**2 / m**2 / kg
J = kg * m**2 / s**2
C = A * s
W = kg * m**2 / s**3
eV = 1.602176634e-19 * J
c = 299792458.0 * m / s
hbar = 1.0545718176461565e-34 * J * s
e = 1.602176634e-19 * C
pi = 3.141592653589793
mu0 = 1.25663706212e-6 * kg * m / s**2 / A**2
set_units()
Functions
def set_units(second=1, meter=1, kilogram=1, Ampere=1, Kelvin=1, mole=1, candela=1)
-
Sets the units across the ltempy module.
For example,
set_units(meter = 1e3)
sets the millimeter as the base unit for length.Parameters
-
second : number, optional
The SI base unit for time.
Default issecond = 1
. -
meter : number, optional
The SI base unit for length.
Default ismeter = 1
. -
kilogram : number, optional
The SI base unit for mass.
Default iskilogram = 1
. -
Ampere : number, optional
The SI base unit for current.
Default isAmpere = 1
. -
Kelvin : number, optional
The SI base unit for temperature.
Default isKelvin = 1
. -
mole : number, optional
The SI base unit for amount of substance.
Default ismole = 1
. -
candela : number, optional
The SI base unit for luminous intensity.
Default iscandela = 1
.
Expand source code
def set_units(second=1, meter=1, kilogram=1, Ampere=1, Kelvin=1, mole=1, candela=1): """Sets the units across the ltempy module. For example, `set_units(meter = 1e3)` sets the millimeter as the base unit for length. **Parameters** * **second** : _number, optional_ <br /> The SI base unit for time. <br /> Default is `second = 1`. * **meter** : _number, optional_ <br /> The SI base unit for length. <br /> Default is `meter = 1`. * **kilogram** : _number, optional_ <br /> The SI base unit for mass. <br /> Default is `kilogram = 1`. * **Ampere** : _number, optional_ <br /> The SI base unit for current. <br /> Default is `Ampere = 1`. * **Kelvin** : _number, optional_ <br /> The SI base unit for temperature. <br /> Default is `Kelvin = 1`. * **mole** : _number, optional_ <br /> The SI base unit for amount of substance. <br /> Default is `mole = 1`. * **candela** : _number, optional_ <br /> The SI base unit for luminous intensity. <br /> Default is `candela = 1`. """ global s,m,kg,A,K,mol,cd s,m,kg,A,K,mol,cd = second, meter, kilogram, Ampere, Kelvin, mole, candela set_consts(s, m, kg, A, K, mol, cd)
-