Cartesius Library
|
Contains functions for calculations of Moessbauer spectra parameters. More...
Data Types | |
type | moessbauer_d_density |
Functions/Subroutines | |
subroutine | moessbauer_extract_data (system, m_atom, l_dens, s_dens, p_dens, atoms_array, unit_cell) |
Given the system node, the metal atom and the ligand density matrix, optionally returns the following data: More... | |
real function | moessbauer_is (s_dens) |
Calculate Moessbauer isomer shift The unversal formula for IS reads as follows. More... | |
real function | moessbauer_qs_from_efg (efg) |
Calculates Moessbauer quadrupole splitting. More... | |
real function, dimension(6) | moessbauer_p_atom_efg (p_dens) |
Calculates the p-electron contribution to the EFG tensor for the given atom based on the provided p density matrix. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz. More... | |
real function, dimension(6) | moessbauer_d_atom_efg (d_dens) |
Calculates the d-electron contribution to the EFG tensor for the given atom based on the provided d density matrix. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz. More... | |
real function, dimension(6) | moessbauer_ligand_efg (unit_cell, atom, atoms_array) |
Calculates the ligand contribution to the EFG tensor for the given atom based on the provided effective charges. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz. More... | |
real function, dimension(6) | moessbauer_quadrupole_potential (r) |
Returns the values \( V_{ab} = \frac{3 r_a r_b - δ_{ab} * r^2}{r^5} \) as an array, in the order xx, yy, zz, xy, xz, yz. More... | |
real function, dimension(:), allocatable | moessbauer_qs_temperature_dependence (m_atom, p_dens, d_energies, d_densities, atoms_array, unit_cell, t_start, t_end, t_step) |
Returns an array values of quadrupole splitting on the given atom in the given temperature range. More... | |
Variables | |
real, parameter, private | sf_sp = 0.68 |
real, parameter, private | sf_d = 0.68 |
real, parameter, private | sf_g = 10.1 |
real, parameter, private | fe57m_gamma = 14413 / AtomicUnitOfEnergy2EV |
real, parameter, private | fe57nuc_delr_over_r = -1.8e-3 |
real, parameter, private | fe57nuc_r = 3.75e-5 / Bohr2Angstrom |
real, parameter, private | fe57nuc_q = 0.160 |
real, parameter, private | fe_z = 26 |
real, parameter, private | fe_4s_0 = 6.2501 |
real, parameter, private | fe_rm3_3d = 4.978801 / Bohr2Angstrom**3 |
real, parameter, private | fe_rm3_4p = 1.697 / Bohr2Angstrom**3 |
real, parameter, private | fe_is_coef = 0.8 * Pi * (1e3*speedOfLightmpsec / Fe57m_gamma) * Fe_Z * (Fe57nuc_R**2) * Fe57nuc_delR_over_R*(Fe_4s_0**2) |
real, parameter, private | fe_qs_coef = 0.5 * (1e3*speedOfLightmpsec / Fe57m_gamma) * Bohr2Angstrom * (1e-8 * Fe57nuc_Q) |
Contains functions for calculations of Moessbauer spectra parameters.
real function, dimension(6) moessbauer::moessbauer_d_atom_efg | ( | type(oneelectronicelement), dimension(5,5), intent(in) | d_dens | ) |
Calculates the d-electron contribution to the EFG tensor for the given atom based on the provided d density matrix. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz.
subroutine moessbauer::moessbauer_extract_data | ( | type(node), intent(inout) | system, |
type(particle), intent(in), pointer | m_atom, | ||
type(oneelectronicelement), dimension(:,:), intent(in), allocatable | l_dens, | ||
real, intent(out), optional | s_dens, | ||
type(oneelectronicelement), dimension(3,3), intent(out), optional | p_dens, | ||
type(particle_ptr), dimension(:), intent(out), optional, allocatable | atoms_array, | ||
type(unitcell), intent(out), optional, pointer | unit_cell | ||
) |
Given the system node, the metal atom and the ligand density matrix, optionally returns the following data:
[out,optional] | s_dens Density matrix element on the s-orbital of the given atom |
[out,optional] | p_dens The density matrix on the p-orbitals of the given atom |
[out,optional] | atoms_array The array of all the atoms in the system |
[out,optional] | unit_cell pointer to the unit cell of the system |
real function moessbauer::moessbauer_is | ( | real, intent(in) | s_dens | ) |
Calculate Moessbauer isomer shift The unversal formula for IS reads as follows.
\[ IS = \frac{4\pi}{5} Z e^2 R^2 \frac{\Delta R}{R} \left| \Psi (0) \right|^2 \]
Since \( \left| \Psi (0) \right|^2 = ( \frac{1}{2 \sqrt{\pi}} R(0) )^2 * P_{4s} \) , the \( 4\pi \) cancels, and we are left only with 1/5 in the following formula:
\[ IS (\frac{\mathrm{mm}}{\mathrm{sec}}) = \frac{1}{5} \frac{c}{E_{\gamma}} Z e^2 R^2 \frac{\Delta R}{R} \left| \Psi (0) \right|^2 \]
Furthermore, we calculate the IS with respect to the free Fe atom \( 4s^2 3d^6 \), so the 4s density is shifted by -2.0
real function, dimension(6) moessbauer::moessbauer_ligand_efg | ( | type(unitcell), intent(in), pointer | unit_cell, |
type(particle), intent(in), pointer | atom, | ||
type(particle_ptr), dimension(:), intent(in), allocatable | atoms_array | ||
) |
Calculates the ligand contribution to the EFG tensor for the given atom based on the provided effective charges. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz.
real function, dimension(6) moessbauer::moessbauer_p_atom_efg | ( | type(oneelectronicelement), dimension(3,3), intent(in) | p_dens | ) |
Calculates the p-electron contribution to the EFG tensor for the given atom based on the provided p density matrix. Returns the EFG tensor values in the order xx, yy, zz, xy, xz, yz.
real function moessbauer::moessbauer_qs_from_efg | ( | real, dimension(6), intent(in) | efg | ) |
Calculates Moessbauer quadrupole splitting.
[in] | EFG | Electric field gradient tensor, in the form of an array corresponding to components xx, yy, zz, xy, xz, yz The formula for QS reads as follows: \[ QS (\frac{\mathrm{mm}}{\mathrm{sec}}) = \frac{c}{E_{\gamma}} \frac{eQV_{zz}}{2} \sqrt{1+\frac{\eta^2}{3}} \] where \( \eta = \frac{|V_{xx}| - |V_{yy}|}{V_{zz}} \) and \( |V_{yy}| \leq |V_{xx}| \leq |V_{zz}| \) are are the main components of the EFG tensor |
real function, dimension(:), allocatable moessbauer::moessbauer_qs_temperature_dependence | ( | type(particle), intent(in), pointer | m_atom, |
type(oneelectronicelement), dimension(3,3), intent(in) | p_dens, | ||
real, dimension(:), intent(in) | d_energies, | ||
type(moessbauer_d_density), dimension(:), intent(in) | d_densities, | ||
type(particle_ptr), dimension(:), intent(in), allocatable | atoms_array, | ||
type(unitcell), intent(in), pointer | unit_cell, | ||
real, intent(in) | t_start, | ||
real, intent(in) | t_end, | ||
real, intent(in) | t_step | ||
) |
Returns an array values of quadrupole splitting on the given atom in the given temperature range.
[in] | m_atom | Pointer to atom on which QS is calculated |
[in] | p_dens | Density matrix of the d-atom's p-shell |
[in] | d_energies | Energies of the d-shell states on m_atom |
[in] | d_densities | One-electronic density matrices correspoding to d_energies |
[in] | atoms_array | particle_ptr array of all unit cell atoms |
[in] | unit_cell | The system's unit cell |
[in] | t_start,t_end,t_step | Temperature range parameters |
real function, dimension(6) moessbauer::moessbauer_quadrupole_potential | ( | type(vector), intent(in) | r | ) |
Returns the values \( V_{ab} = \frac{3 r_a r_b - δ_{ab} * r^2}{r^5} \) as an array, in the order xx, yy, zz, xy, xz, yz.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |