Source code for aloe.physics.wave

import math
import numpy as np

[docs]def wavelength_e(Ekin): """ calculates relativistically correct electron wavelength input: energy in keV output: wavelength in Angstroms Notes: based on formula for relativistic kinetic energy Ekin=sqrt((m*c**2)**2+(p*c)**2)-m*c**2 and lambda=h/p """ hbarc=1.97327052356 # hbar*c in keV*AA mec2=510.999064505 # rest mass of electron in keV pc=math.sqrt((Ekin+mec2)**2-(mec2*mec2)) lam=(2.0*math.pi*hbarc)/pc return lam
[docs]def XWavel(energy_keV): """ calculates photon wavelength input: energy in keV output: wavelength in Angstroms Notes: E=hc/lambda h*c is 1239.84 eV*nm """ hc = 1239.841842144513 lam = 10.0 * hc / (1000.0*energy_keV) return lam
[docs]def bragg_angle(dhkl,wavel): """ Bragg law: lamda = 2*d*sin(theta) """ return np.arcsin(wavel/(2.0*dhkl))
if __name__=="__main__": # 0.1keV electron= 1.2263662786039002 \AA print("Electron wavelengths:") print("100eV: ", eWavel(0.1) , " Angstr.") print("10keV: ", eWavel(10.0), " Angstr.") print("15keV: ", eWavel(15.0), " Angstr.") print("18keV: ", eWavel(18.0), " Angstr.") print("20keV: ", eWavel(20.0), " Angstr.") print("38keV: ", eWavel(38), " Angstr.") print("Photon wavelengths:") print("100eV: ", XWavel(0.1) , " Angstr.") print("20keV: ", XWavel(20.0), " Angstr.") print("200keV: ", XWavel(200.0), " Angstr.") print("100keV: ", XWavel(100.0), " Angstr.")