Scattering Matrix
Funtions to calculate the forward or grazing-incidence scattering matrices.
- nexus.ElectronicForwardScatteringFactor(material, energy)
Pure electronic forward scattering factor. Scalar version of Eq. (4.4), [Roehlsberger].
- Parameters:
material (
Material) – Material for the calculation.energy (float) – Photon energy (eV).
- Returns:
Electronic forward scattering factor.
- Return type:
complex
- nexus.ElectronicRefractiveIndex(material, energy)
Pure electronic refractive index in forward direction. Scalar version of Eq. (4.5), [Roehlsberger].
- Parameters:
material (
Material) – Material for the X-ray interaction.energy (float) – Photon energy (eV).
- Returns:
Electronic forward scattering factor.
- Return type:
complex
- nexus.ElectronicSLD(material, energy)
Electronic scattering length density (SLD) \(\rho\) of the material.
\[\rho = \frac{2 \pi E^2}{h^2 c^2} \left(1 - n(E) \right),\]where \(E\) is the photon energy and \(n(E)\) is the refractive index at the given energy. Typically, only the real part of the SLD is used, when the imaginary part is much smaller.
Added in version 2.0.0.
- Parameters:
material (
Material) – Material for the X-ray interaction.energy (float) – X-ray energy (eV).
- Returns:
SLD of the layer in Angstrom -2.
- Return type:
complex
- nexus.ElectronicGrazingScatteringFactor(material, energy, kvector_z)
Pure electronic scattering factor in grazing incidence geometry. Scalar version of Eq. (4.25), [Roehlsberger].
- Parameters:
material (
Material) – Material for the X-ray interaction.energy (float) – Photon energy (eV).
kvector_z (float) – k-vector component along layer direction.
- Returns:
Electronic scattering factor.
- Return type:
complex
- nexus.ForwardScatteringMatrix(material, isotope, detuning, calc_transitions=True)
Forward scattering matrix. Eq. (4.4), [Roehlsberger].
- Parameters:
material (
Material) – Material for the X-ray interaction.isotope (
MoessbauerIsotope) – TheMoessbauerIsotopefor which the nuclear scattering length should be calculated.detuning (list or ndarray) – Detuning values around the isotope transition energy.
calc_transition (bool) – Specifies if the nuclear transitions of the material are calculated before the scattering matrix is determined.
- Returns:
List of 2x2 matrices of the forward scattering matrix (1/m).
- Return type:
list
- nexus.GrazingScatteringMatrix(material, isotope, detuning, kvector_z, calc_transitions=True)
Grazing-incidence scattering matrix. Eq. (4.25), [Roehlsberger].
- Parameters:
material (
Material) – Material for the X-ray interaction.isotope (
MoessbauerIsotope) – TheMoessbauerIsotopefor which the nuclear scattering length should be calculated.detuning (list or ndarray) – Detuning values around the isotope transition energy.
kvector_z (float) – k-vector component along layer direction.
calc_transition (bool) – Specifies if the nuclear transitions of the material are calculated before the scattering matrix is determined.
- Returns:
List of 2x2 matrices of the grazing-incidence scattering matrix (1/m).
- Return type:
list
- nexus.CriticalAngle(material, energy)
Calculates the critical angle of the material, see Eq. (4.22), [Roehlsberger].
Added in version 1.0.3.
- Parameters:
material (
Material) – Material for the X-ray interaction.energy (float) – Photon energy (eV).
- Returns:
Critical angle (rad).
- Return type:
float
Examples
material = nx.Material(id = "my_material",
composition = [["Fe", 2], ["O", 3]],
density = 5.24))
# k-vector along layer direction at an angle of 0.1 degree
kz = nx.conversions.EnergyToKvectorZ(20e3, 0.1)
scattering_factor = nx.ElectronicGrazingScatteringFactor(material, 20e3, kz)
print(scattering_factor)
# scattering matrix at 57-Fe transition energy
mat_Fe = nx.Material.Template(nx.lib.material.Fe_enriched)
site1 = nx.Hyperfine(magnetic_field = 33)
mat_Fe.hyperfinesites = [site1]
detuning = np.linspace(-200, 200, 201)
scattering_matrix = nx.ForwardScatteringMatrix(mat_Fe, nx.lib.moessbauer.Fe57, detuning)
print(scattering_matrix)