Xray::...asKirf(3pm)

πŸ“¦
version 3.0.1 Β· 2 versions
  • 3.0.1 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 3.0.1 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ Xray::Scattering::WassKirf ✨

okay bestie so this is a Perl manual page from the User Contributed Perl Documentation collection, and it's filed under the name Xray::...asKirf (yes the name is truncated, the real one is Xray::Scattering::WassKirf, we move on πŸ’…). It's giving very niche, very crystallography, very "I know a guy who knows a guy who knows the scattering factor of Ce3+" energy. Let's get into it 🫢


🌸 NAME 🌸

Xray::Scattering::WassKirf β€” it's a Perl interface to the Waaskirf-Kirfel</b> tables. that's it that's the name πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

so here's literally the whole vibe in four lines:

use Xray::Scattering;
Xray::Scattering->load('WaasKirf');
$fnot = Xray::Scattering->get_f($symb, $d);

iconic. short. slays. ✨


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so this module gives you a functional interface to the Waasmaier-Kirfel tables β€” a big ol' pile of coefficients for calculating the Thomson (kinematical) scattering factors of the elements and the common valence states. periodt.

where do those coefficients live, you ask? externally, babe. they're in the waaskirf.db database file. not vibing inside the module, they're off doing their own thing in a file. very independent of them πŸ’…

and these coefficients? they're for an Aikman expansion, which is shaped like this:

          5
    f0 = sum [ ai*exp(-bi*s^2) ] + c
         i=1

so that means there are 11 coefficients for each of the 211 tabulated element/valence symbols. eleven. each. not a typo. that's just the math's whole thing πŸ’€

now let's talk about s. s is sin(theta)/lambda. and (lambda*s)/2pi is the momentum transfer. and s is simply related to the crystal d-spacing by s=1/2d. the math is mathing, bestie, I promise 🧚

the reference for these tables is "New Analytical Scattering Factor Functions for Free Atoms and Ions for Free Atoms and Ions", by D. Waasmaier & A. Kirfel, Acta Cryst. (1995) A51, pp. 416-413. β€” and yes, the title really does say "for Free Atoms and Ions" twice, I am not touching that, it's not my job to fix academia 🫢

  • doi:10.1107/S0108767394013292

these data were computed for neutral atoms and ions, and they're valid for the full range of sin(theta)/lambda from 0.0 to 6.0 A-1. full range. no gaps. ate. πŸ‘‘

as for where the actual data used in the W-K Aikman expansion comes from β€” you can find it in a few places on the web. here's where the author got the file used with this module:

http://ftp.esrf.fr/pub/scisoft/xop/DabaxFiles/f0_WaasKirf.dat

(fr fr, that's the actual source, bookmark it if that's your thing 🌸)


πŸ’… METHODS πŸ’…

get_f

this one calculates the Thomson scattering for a given symbol and d-spacing. and here's the thing: the Thomson scattering depends only on the momentum transfer. the d-spacing of the scattering planes is a closely related quantity, and it's easily calculated from the crystal structure β€” see Xtal.pm for that ✨

$symb = "Ce3+";
$fnot = Xray::Scattering->get_f($symb, $d);

now the important rules, listen up:

  • if the symbol can't be found in the table, get_f returns 0.
  • it also returns 0 when $symbol is whitespace, or when it's null, or nu.
  • if $symbol is a number, or the name of an element, then it assumes you want the Thomson scattering for the neutral element.
  • the absolute value of $d_spacing is used by this function. yes, absolute. don't come at it with negatives, it will simply take the abs πŸ’€

and one more lil thing: if you ask for a valence state that isn't in the table, but for an element whose 0+ state IS in the table β€” this method returns the scattering factor for the 0 valent atom. it's doing its best, okay 😭

get_coefficients

this one returns the 11 element list containing the coefficients for the given symbol. eleven. again. slay.

@coefs = Xray::Scattering->get_coefficients($symb)

and it returns:

a1,b1,a2,b2,a3,b3,a4,b4,c

(yes that's the shape of it β€” count them, there are 11 things, c is the lonely little plus-c at the end πŸ₯Ί)

same deal as before: if you ask for a valence state that's not in the table, but for an element whose 0+ state is in the table, this method returns the coefficients for the 0 valent atom. consistency. we love her. 🫢

has

this is a test of whether a given symbol is tabulated in the Waasmaier-Kirfel table. it returns the symbol itself if it's found in the table, or 0 if it is not. that's it, that's the whole method, no notes πŸ’…

$symb = "Ce3+";
$is_tabulated = Xray::Scattering->has($symb);

🌈 ELEMENTS AND VALENCE STATES 🌈

okay here's the big one. the following is the list of symbols for the tabulated elements and valence states. and btw, the final two β€” you know the ones β€” are ways of referring to an empty site (i.e. a null or blank atom). so don't be confused when you see them, they're literally just "nobody's home" 🌸

  H     H1-   He    Li    Li1+    Be    Be2+   B     C
  Cval  N     O     O1-   O2-     F     F1-    Ne    Na
  Na1+  Mg    Mg2+  Al    Al3+    Si    Siva   Si4+  P
  S     Cl    Cl1-  Ar    K       K1+   Ca     Ca2+  Sc
  Sc3+  Ti    Ti2+  Ti3+  Ti4+    V     V2+    V3+   V5+
  Cr    Cr2+  Cr3+  Mn    Mn2+    Mn3+  Mn4+   Fe    Fe2+
  Fe3+  Co    Co2+  Co3+  Ni      Ni2+  Ni3+   Cu    Cu1+
  Cu2+  Zn    Zn2+  Ga    Ga3+    Ge    Ge4+   As    Se
  Br    Br1-  Kr    Rb    Rb1+    Sr    Sr2+   Y     Zr
  Zr4+  Nb    Nb3+  Nb5+  Mo      Mo3+  Mo5+   Mo6+  Tc
  Ru    Ru3+  Ru4+  Rh    Rh3+    Rh4+  Pd     Pd2+  Pd4+
  Ag    Ag1+  Ag2+  Cd    Cd2+    In    In3+   Sn    Sn2+
  Sn4+  Sb    Sb3+  Sb5+  Te      I     I1-    Xe    Cs
  Cs1+  Ba    Ba2+  La    La3+    Ce    Ce3+   Ce4+  Pr
  Pr3+  Pr4+  Nd    Nd3+  Pm      Pm3+  Sm     Sm3+  Eu
  Eu2+  Eu3+  Gd    Gd3+  Tb      Tb3+  Dy     Dy3+  Ho
  Ho3+  Er    Er3+  Tm    Tm3+    Yb    Yb2+   Yb3+  Lu
  Lu3+  Hf    Hf4+  Ta    Ta5+    W     W6+    Re    Os
  Os4+  Ir    Ir3+  Ir4+  Pt      Pt2+  Pt4+   Au    Au1+
  Au3+  Hg    Hg1+  Hg2+  Tl      Tl1+  Tl3+   Pb    Pb2+
  Pb4+  Bi    Bi3+  Bi5+  Po      At    Rn     Fr    Ra
  Ra2+  Ac    Ac3+  Th    Th4+    Pa    U      U3+   U4+
  U6+   Np    Np3+  Np4+  Np6+    Pu    Pu3+   Pu4+  Pu6+
  Am    Cm    Bk    Cf    ' '     Nu
not me counting all 211 of these. the table said 211 and the table does not lie, bestie. πŸ’€

πŸ‘‘ AUTHOR πŸ‘‘

this whole thing is by Bruce Ravel β€” bravel AT bnl DOT gov β€” and his corner of the internet lives at:

http://cars9.uchicago.edu/~ravel/software/exafs/


okay that's the whole page, bestie, you're fully caught up πŸ’– no cap, you now know more about Waasmaier-Kirfel coefficients than 99% of people at any given party ✨

and for the lil sign-off: this documentation shipped as part of perl v5.34.0, dated 2022-06-28, and it's filed under the manual page name Xray::...asKirf(3pm) β€” go forth and scatter πŸ¦‹πŸŽ€πŸ’…

πŸ“¦ where this page comes from