Skip to content

Commit

Permalink
New source for form factors (#195)
Browse files Browse the repository at this point in the history
Update form factor data and reference, now including `Mn5`.

---------

Co-authored-by: Kipton Barros <[email protected]>
  • Loading branch information
ddahlbom and kbarros authored Nov 22, 2023
1 parent 80632f1 commit aa58e64
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 23 deletions.
5 changes: 5 additions & 0 deletions docs/src/versions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Version History

## v0.5.7
(upcoming)

* Updated form factor coefficients, now including `Mn5`.

## v0.5.6
(Nov 8, 2023)

Expand Down
46 changes: 25 additions & 21 deletions src/FormFactor.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ end
FormFactor(ion::String; g_lande=2)
The magnetic form factor for a given magnetic ion and charge state. When passed
to an [`intensity_formula`](@ref), determines a ``|𝐪|``-dependent scaling of
the structure factor.
to an [`intensity_formula`](@ref), it rescales structure factor intensities
based on the magnitude of the scattering vector, ``|𝐪|``.
The parameter `ion` must be one of the following strings:
```
Am2, Am3, Am4, Am5, Am6, Am7, Au1, Au2, Au3, Au4, Au5, Ce2, Co0, Co1, Co2, Co3,
Co4, Cr0, Cr1, Cr2, Cr3, Cr4, Cu0, Cu1, Cu2, Cu3, Cu4, Dy2, Dy3, Er2, Er3, Eu2,
Eu3, Fe0, Fe1, Fe2, Fe3, Fe4, Gd2, Gd3, Hf2, Hf3, Ho2, Ho3, Ir0a, Ir0b, Ir0c,
Ir1a, Ir1b, Ir2, Ir3, Ir4, Ir5, Ir6, Mn0, Mn1, Mn2, Mn3, Mn4, Mo0, Mo1, Nb0,
Ir1a, Ir1b, Ir2, Ir3, Ir4, Ir5, Ir6, Mn0, Mn1, Mn2, Mn3, Mn4, Mn5, Mo0, Mo1, Nb0,
Nb1, Nd2, Nd3, Ni0, Ni1, Ni2, Ni3, Ni4, Np3, Np4, Np5, Np6, Os0a, Os0b, Os0c,
Os1a, Os1b, Os2, Os3, Os4, Os5, Os6, Os7, Pd0, Pd1, Pr3, Pt1, Pt2, Pt3, Pt4,
Pt5, Pt6, Pu3, Pu4, Pu5, Pu6, Re0a, Re0b, Re0c, Re1a, Re1b, Re2, Re3, Re4, Re5,
Expand All @@ -62,28 +62,31 @@ ERROR: Disambiguate form factor according to electronic configuration:
"Ir0c" -- 6s²5d⁷
```
The form factor is approximated as
In the dipolar approximation (small ``|𝐪|``) the form factor is
``F(s) = ⟨j_0(s)⟩ + \\frac{2-g}{g} ⟨j_2(s)⟩ s^2``,
``F(s) = ⟨j_0(s)⟩ + \\frac{2-g}{g} ⟨j_2(s)⟩``,
involving the Landé ``g``-factor. The ``⟨j_l(s)⟩`` are radial integrals
associated with the ``l``th Bessel function of the magnetic dipole, where ``s =
|k|/4π``, and ``|k|`` is the magnitude of momentum transfer.
involving ``s = |𝐪|/4π`` and the Landé ``g``-factor. The ``⟨j_l(s)⟩`` are
radial averages of the ``l``th spherical Bessel function of the magnetic dipole.
More details are provided in Ref. [1].
The radial integrals have been calculated using Hartree-Fock for transition
metals, or Dirac-Fock for the rare earths and actinide series [1--3]. Sunny uses
approximate fits as a sum of Gaussians,
The ``⟨j_l(s)⟩`` can be approximated as a sum of Gaussians,
```math
⟨j_0(s)⟩ = A e^{-as^2} + B e^{-bs^2} + C e^{-cs^2} + D e^{-ds^2} + E \\
j_l(s)⟩ = (A e^{-as^2} + B e^{-bs^2} + C e^{-cs^2} + D e^{-ds^2} + E) s^2
⟨j_0(s)⟩ = A e^{-as^2} + B e^{-bs^2} + C e^{-cs^2} + D e^{-ds^2} + E \\\\
j_2(s)⟩ = (A e^{-as^2} + B e^{-bs^2} + C e^{-cs^2} + D e^{-ds^2} + E) s^2
```
For 3d, 4d, rare earth, and actinide ions, Sunny uses the revised tables of P.
J. Brown, as documented in the McPhase package [2]. For 5d ions, Sunny uses the
tables of Kobayashi, Nagao, Ito [3].
References:
1. https://www.ill.eu/sites/ccsl/ffacts/ffachtml.html
2. J. Brown, The Neutron Data Booklet, 2nd ed., Sec. 2.5 Magnetic Form Factors
(2003)
1. [P. J. Brown, The Neutron Data Booklet, 2nd ed., Sec. 2.5 Magnetic Form
Factors (2003)](https://www.ill.eu/sites/ccsl/ffacts/ffachtml.html)
2. Coefficient tables in [McPhase
documentation](https://www2.cpfs.mpg.de/~rotter/homepage_mcphase/manual/node137.html)
3. K. Kobayashi, T. Nagao, M. Ito, Acta Cryst. A, 67 pp 473–480 (2011)
"""
function FormFactor(ion::String; g_lande=2)
Expand Down Expand Up @@ -124,9 +127,9 @@ function compute_form_factor(form_factor::FormFactor, k2_absolute::Float64)
if g == 2
return compute_gaussian_expansion(j0, s2)
else
form1 = compute_gaussian_expansion(j0, s2)
form2 = compute_gaussian_expansion(j2, s2)
return ((2-g)/g) * form2 * s2 + form1
J0 = compute_gaussian_expansion(j0, s2)
J2 = compute_gaussian_expansion(j2, s2) * s2
return J0 + ((2-g)/g) * J2
end
end

Expand Down Expand Up @@ -154,7 +157,7 @@ const radial_integral_coefficients = Dict(
"Ti1" => ([0.5093, 36.7033, 0.5032, 10.3713, -0.0263, 0.3106, 0, 0, 0.0116], [6.1567, 27.2754, 2.6833, 8.9827, 0.4070, 3.0524, 0, 0, 0.0011], ""),
"Ti2" => ([0.5091, 24.9763, 0.5162, 8.7569, -0.0281, 0.9160, 0, 0, 0.0015], [4.3107, 18.3484, 2.0960, 6.7970, 0.2984, 2.5476, 0, 0, 0.0007], ""),
"Ti3" => ([0.3571, 22.8413, 0.6688, 8.9306, -0.0354, 0.4833, 0, 0, 0.0099], [3.3717, 14.4441, 1.8258, 5.7126, 0.2470, 2.2654, 0, 0, 0.0005], ""),
"V0" => ([0.4086, 28.8109, 0.6077, 8.5437, -0.0295, 0.2768, 0, 0, 0.0123], [3.8099, 21.3471, 2.3295, 7.4089, 0.4333, 2.6324, 0, 0, 0.0015], ""),
"V0" => ([0.4086, 28.8109, 0.6077, 8.5437, -0.0295, 0.2768, 0, 0, 0.0123], [3.7600, 21.8313, 2.4026, 7.5458, 0.4464, 2.6628, 0, 0, 0.0017], ""),
"V1" => ([0.4444, 32.6479, 0.5683, 9.0971, -0.2285, 0.0218, 0, 0, 0.2150], [4.7474, 23.3226, 2.3609, 7.8082, 0.4105, 2.7063, 0, 0, 0.0014], ""),
"V2" => ([0.4085, 23.8526, 0.6091, 8.2456, -0.1676, 0.0415, 0, 0, 0.1496], [3.4386, 16.5303, 1.9638, 6.1415, 0.2997, 2.2669, 0, 0, 0.0009], ""),
"V3" => ([0.3598, 19.3364, 0.6632, 7.6172, -0.3064, 0.0296, 0, 0, 0.2835], [2.3005, 14.6821, 2.0364, 6.1304, 0.4099, 2.3815, 0, 0, 0.0014], ""),
Expand All @@ -169,6 +172,7 @@ const radial_integral_coefficients = Dict(
"Mn2" => ([0.4220, 17.6840, 0.5948, 6.0050, 0.0043, -0.6090, 0, 0, -0.0219], [2.0515, 15.5561, 1.8841, 6.0625, 0.4787, 2.2323, 0, 0, 0.0027], ""),
"Mn3" => ([0.4198, 14.2829, 0.6054, 5.4689, 0.9241, -0.0088, 0, 0, -0.9498], [1.2427, 14.9966, 1.9567, 6.1181, 0.5732, 2.2577, 0, 0, 0.0031], ""),
"Mn4" => ([0.3760, 12.5661, 0.6602, 5.1329, -0.0372, 0.5630, 0, 0, 0.0011], [0.7879, 13.8857, 1.8717, 5.7433, 0.5981, 2.1818, 0, 0, 0.0034], ""),
"Mn5" => ([0.2924, 11.6655, 0.7405, 5.0741, -1.7883, 0.0059, 0, 0, 1.7557], [-0.2394, 10.7309, -0.1190, 6.5989, 0.3505, 1.4912, 0, 0, 0.0078], ""),
"Fe0" => ([0.0706, 35.0085, 0.3589, 15.3583, 0.5819, 5.5606, 0, 0, -0.0114], [1.9405, 18.4733, 1.9566, 6.3234, 0.5166, 2.1607, 0, 0, 0.0036], ""),
"Fe1" => ([0.1251, 34.9633, 0.3629, 15.5144, 0.5223, 5.5914, 0, 0, -0.0105], [2.6290, 18.6598, 1.8704, 6.3313, 0.4690, 2.1628, 0, 0, 0.0031], ""),
"Fe2" => ([0.0263, 34.9597, 0.3668, 15.9435, 0.6188, 5.5935, 0, 0, -0.0119], [1.6490, 16.5593, 1.9064, 6.1325, 0.5206, 2.1370, 0, 0, 0.0035], ""),
Expand All @@ -182,7 +186,7 @@ const radial_integral_coefficients = Dict(
"Ni0" => ([-0.0172, 35.7392, 0.3174, 14.2689, 0.7136, 4.5661, 0, 0, -0.0143], [1.0302, 12.2521, 1.4669, 4.7453, 0.4521, 1.7437, 0, 0, 0.0036], ""),
"Ni1" => ([0.0705, 35.8561, 0.3984, 13.8042, 0.5427, 4.3965, 0, 0, -0.0118], [2.1040, 14.8655, 1.4302, 5.0714, 0.4031, 1.7784, 0, 0, 0.0034], ""),
"Ni2" => ([0.0163, 35.8826, 0.3916, 13.2233, 0.6052, 4.3388, 0, 0, -0.0133], [1.7080, 11.0160, 1.2147, 4.1031, 0.3150, 1.5334, 0, 0, 0.0018], ""),
"Ni3" => ([-0.0134, 35.8677, 0.2678, 12.3326, 0.7614, 4.2369, 0, 0, -0.0162], [1.1612, 7.7000, 1.0027, 3.2628, 0.2719, 1.3780, 0, 0, 0.0025], ""),
"Ni3" => ([0.0012, 34.9998, 0.3468, 11.9874, 0.6667, 4.2518, 0, 0, -0.0148], [1.4683, 8.6713, 1.1068, 3.2574, 0.1794, 1.1058, 0, 0,-0.0023], ""),
"Ni4" => ([-0.0090, 35.8614, 0.2776, 11.7904, 0.7474, 4.2011, 0, 0, -0.0163], [1.1612, 7.7000, 1.0027, 3.2628, 0.2719, 1.3780, 0, 0, 0.0025], ""),
"Cu0" => ([0.0909, 34.9838, 0.4088, 11.4432, 0.5128, 3.8248, 0, 0, -0.0124], [1.9182, 14.4904, 1.3329, 4.7301, 0.3842, 1.6394, 0, 0, 0.0035], ""),
"Cu1" => ([0.0749, 34.9656, 0.4147, 11.7642, 0.5238, 3.8497, 0, 0, -0.0127], [1.8814, 13.4333, 1.2809, 4.5446, 0.3646, 1.6022, 0, 0, 0.0033], ""),
Expand Down
4 changes: 2 additions & 2 deletions test/test_form_factors.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
k2_absolute = 0.57
g_lande = 2.15

brown_keys = ["Sc0", "Sc1", "Sc2", "Ti0", "Ti1", "Ti2", "Ti3", "V0", "V1", "V2", "V3", "V4", "Cr0", "Cr1", "Cr2", "Cr3", "Cr4", "Mn0", "Mn1", "Mn2", "Mn3", "Mn4", "Fe0", "Fe1", "Fe2", "Fe3", "Fe4", "Co0", "Co1", "Co2", "Co3", "Co4", "Ni0", "Ni1", "Ni2", "Ni3", "Ni4", "Cu0", "Cu1", "Cu2", "Cu3", "Cu4", "Y0", "Zr0", "Zr1", "Nb0", "Nb1", "Mo0", "Mo1", "Tc0", "Tc1", "Ru0", "Ru1", "Rh0", "Rh1", "Pd0", "Pd1", "Ce2", "Nd2", "Nd3", "Sm2", "Sm3", "Eu2", "Eu3", "Gd2", "Gd3", "Tb2", "Tb3", "Dy2", "Dy3", "Ho2", "Ho3", "Er2", "Er3", "Tm2", "Tm3", "Yb2", "Yb3", "Pr3", "U3", "U4", "U5", "Np3", "Np4", "Np5", "Np6", "Pu3", "Pu4", "Pu5", "Pu6", "Am2", "Am3", "Am4", "Am5", "Am6", "Am7"]
brown_refs = [0.8612304997894441, 0.8881300904340745, 0.9230918862523916, 0.923467579984288, 0.9139840048505373, 0.9372367736681745, 0.9496672486192593, 0.9387492162911746, 0.9296780689558954, 0.9466896598740736, 0.9567365809554337, 0.9630889096843591, 0.9435941305046178, 0.9406231660592046, 0.9537320763330333, 0.9618915054196684, 0.9675316114002389, 0.9546973880547955, 0.9474245296765115, 0.9592875197450461, 0.9656789198525291, 0.9705818851479407, 0.9596325798238697, 0.9535707956813343, 0.963008881420943, 0.969332007705793, 0.9730528909464593, 0.963233554128305, 0.958147661850175, 0.9662171638122391, 0.9717639318914623, 0.9758919894599727, 0.9732576975562593, 0.9623747292536808, 0.9693692337032696, 0.9774089679392367, 0.9773755323244421, 0.9648586405606043, 0.9664889420493662, 0.9719718550880967, 0.975904640706173, 0.9789175124873787, 0.8271642655429379, 0.8661713785257669, 0.8595231612899285, 0.8892116937907717, 0.8811771880487423, 0.9166729281833833, 0.8990961824003825, 0.9264667954432715, 0.9097177310213524, 0.9346442091094386, 0.9203083819563623, 0.9401635985262097, 0.9349213581508373, 0.9458897741902882, 0.9353451090447322, 0.964989678872764, 0.9634099730196004, 0.9701656928428026, 0.9686572579366843, 0.974069907386716, 0.9708396316260214, 0.9753447859629438, 0.9726037618955405, 0.9766326639300998, 0.9740158115499955, 0.9779189399577168, 0.9754234616758197, 0.9789669113679258, 0.9765868636964733, 0.9799536264857678, 0.9779706795387256, 0.9809020140109214, 0.9788891348258091, 0.9816084737914827, 0.9797343518427208, 0.9822502742748633, 0.9710354228204524, 0.9382202626915205, 0.9457005540596318, 0.9512587524191554, 0.9435727750700562, 0.9500730615174079, 0.954629838657609, 0.9573368607795035, 0.9576336180945146, 0.9533286737306728, 0.9574656306522278, 0.9606964270024043, 0.9448332619034078, 0.951915957832326, 0.9565527341540118, 0.9599410708710203, 0.9626472692866624, 0.9646791721103257]
brown_keys = ["Sc0", "Sc1", "Sc2", "Ti0", "Ti1", "Ti2", "Ti3", "V0", "V1", "V2", "V3", "V4", "Cr0", "Cr1", "Cr2", "Cr3", "Cr4", "Mn0", "Mn1", "Mn2", "Mn3", "Mn4", "Mn5", "Fe0", "Fe1", "Fe2", "Fe3", "Fe4", "Co0", "Co1", "Co2", "Co3", "Co4", "Ni0", "Ni1", "Ni2", "Ni3", "Ni4", "Cu0", "Cu1", "Cu2", "Cu3", "Cu4", "Y0", "Zr0", "Zr1", "Nb0", "Nb1", "Mo0", "Mo1", "Tc0", "Tc1", "Ru0", "Ru1", "Rh0", "Rh1", "Pd0", "Pd1", "Ce2", "Nd2", "Nd3", "Sm2", "Sm3", "Eu2", "Eu3", "Gd2", "Gd3", "Tb2", "Tb3", "Dy2", "Dy3", "Ho2", "Ho3", "Er2", "Er3", "Tm2", "Tm3", "Yb2", "Yb3", "Pr3", "U3", "U4", "U5", "Np3", "Np4", "Np5", "Np6", "Pu3", "Pu4", "Pu5", "Pu6", "Am2", "Am3", "Am4", "Am5", "Am6", "Am7"]
brown_refs = [0.8612304997894441, 0.8881300904340745, 0.9230918862523916, 0.923467579984288, 0.9139840048505373, 0.9372367736681745, 0.9496672486192593, 0.9387414436352444, 0.9296780689558954, 0.9466896598740736, 0.9567365809554337, 0.9630889096843591, 0.9435941305046178, 0.9406231660592046, 0.9537320763330333, 0.9618915054196684, 0.9675316114002389, 0.9546973880547955, 0.9474245296765115, 0.9592875197450461, 0.9656789198525291, 0.9705818851479407, 0.9748399613636751, 0.9596325798238697, 0.9535707956813343, 0.963008881420943, 0.969332007705793, 0.9730528909464593, 0.963233554128305, 0.958147661850175, 0.9662171638122391, 0.9717639318914623, 0.9758919894599727, 0.9732576975562593, 0.9623747292536808, 0.9693692337032696, 0.9742397060244375, 0.9773755323244421, 0.9648586405606043, 0.9664889420493662, 0.9719718550880967, 0.975904640706173, 0.9789175124873787, 0.8271642655429379, 0.8661713785257669, 0.8595231612899285, 0.8892116937907717, 0.8811771880487423, 0.9166729281833833, 0.8990961824003825, 0.9264667954432715, 0.9097177310213524, 0.9346442091094386, 0.9203083819563623, 0.9401635985262097, 0.9349213581508373, 0.9458897741902882, 0.9353451090447322, 0.964989678872764, 0.9634099730196004, 0.9701656928428026, 0.9686572579366843, 0.974069907386716, 0.9708396316260214, 0.9753447859629438, 0.9726037618955405, 0.9766326639300998, 0.9740158115499955, 0.9779189399577168, 0.9754234616758197, 0.9789669113679258, 0.9765868636964733, 0.9799536264857678, 0.9779706795387256, 0.9809020140109214, 0.9788891348258091, 0.9816084737914827, 0.9797343518427208, 0.9822502742748633, 0.9710354228204524, 0.9382202626915205, 0.9457005540596318, 0.9512587524191554, 0.9435727750700562, 0.9500730615174079, 0.954629838657609, 0.9573368607795035, 0.9576336180945146, 0.9533286737306728, 0.9574656306522278, 0.9606964270024043, 0.9448332619034078, 0.951915957832326, 0.9565527341540118, 0.9599410708710203, 0.9626472692866624, 0.9646791721103257]

kobayashi_keys = ["Hf2", "Hf3", "Ta2", "Ta3", "Ta4", "W0a", "W0b", "W0c", "W1a", "W1b", "W2c", "W3", "W4", "W5", "Re0a", "Re0b", "Re0c", "Re1a", "Re1b", "Re2", "Re3", "Re4", "Re5", "Re6", "Os0a", "Os0b", "Os0c", "Os1a", "Os1b", "Os2", "Os3", "Os4", "Os5", "Os6", "Os7", "Ir0a", "Ir0b", "Ir0c", "Ir1a", "Ir1b", "Ir2", "Ir3", "Ir4", "Ir5", "Ir6", "Pt1", "Pt2", "Pt3", "Pt4", "Pt5", "Pt6", "Au1", "Au2", "Au3", "Au4", "Au5"]
kobayashi_refs = [0.8689440651253271, 0.8888136177131588, 0.8840686215950699, 0.8994004337496564, 0.9101528391610143, 0.8472388078049689, 0.8650067638665045, 0.879267908902524, 0.8779398246381942, 0.8880602665398635, 0.896093849382087, 0.9084055597571624, 0.9174422350375753, 0.9244679050355514, 0.8681630254808739, 0.8822371232551307, 0.8933169474106295, 0.8915297871341744, 0.8998453622986089, 0.9060230528912959, 0.9161468433220479, 0.9237747655215364, 0.9296393376164646, 0.9345562156909509, 0.8841187378321346, 0.8954374822984409, 0.904413051738971, 0.9025244946804027, 0.9094578103795641, 0.9143596889560148, 0.9228623215928715, 0.9293869806624924, 0.9345241242095418, 0.9387633528752165, 0.9423464867717495, 0.896643858631712, 0.9061310241612465, 0.9135576034496984, 0.9117017027338759, 0.9174776840032718, 0.9214765103783157, 0.9286788274192451, 0.9342761922806214, 0.9387216006635983, 0.9425685778782177, 0.9192223249722434, 0.9275720974747921, 0.9337847095781193, 0.9386221417937619, 0.9426937750124552, 0.9460141761165295, 0.9301232355721594, 0.9328984199721937, 0.9384038365877813, 0.9425634681355087, 0.9461716107116591]
Expand Down

0 comments on commit aa58e64

Please sign in to comment.