Source code for pestifer.util.units
# Author: Cameron F. Abrams, <cfa22@drexel.edu>
from scipy.constants import physical_constants, Avogadro
import numpy as np
_SYMBOLS_ = {
'ANGSTROM': 'Å',
'CUBED': '³',
'SQUARED': '²'
}
_UNITS_ = {
'SQUARE-ANGSTROMS': f'{_SYMBOLS_["ANGSTROM"]}{_SYMBOLS_["SQUARED"]}',
'CUBIC-ANGSTROMS': f'{_SYMBOLS_["ANGSTROM"]}{_SYMBOLS_["CUBED"]}',
}
g_per_amu = physical_constants['atomic mass constant'][0] * 1000
A_per_cm = 1.e8
A3_per_cm3 = A_per_cm**3
cm3_per_A3 = 1.0/A3_per_cm3
n_per_mol = Avogadro
[docs]
def nmolec_in_cuA(MW_g: float, density_gcc: float, volume_A3: float) -> int:
"""
Calculate the number of molecules in a given volume in cubic Angstroms.
Parameters
----------
MW_g : float
Molecular weight in grams per mole.
density_gcc : float
Density in grams per cubic centimeter.
volume_A3 : float
Volume in cubic Angstroms.
Returns
-------
int
Number of molecules in the specified volume.
"""
return int(np.floor(density_gcc/MW_g*cm3_per_A3*n_per_mol*volume_A3))
[docs]
def cuA_of_nmolec(MW_g: float, density_gcc: float, nmolec: int) -> float:
"""
Calculate the volume in cubic Angstroms of a given number of molecules.
Parameters
----------
MW_g : float
Molecular weight in grams per mole.
density_gcc : float
Density in grams per cubic centimeter.
nmolec : int
Number of molecules.
Returns
-------
float
Volume in cubic Angstroms.
"""
return nmolec/(density_gcc/MW_g*cm3_per_A3*n_per_mol)