NAME¶
Xray::Scattering - X-ray scattering data for the elements
SYNOPSIS¶
use Xray::Scattering;
Xray::Scattering->load('CroMann');
$fnot = Xray::Scattering->get_f($symb, $d);
Xray::Scattering->load('WaasKirt');
$fnot = Xray::Scattering->get_f($symb, $d);
DESCRIPTION¶
This module supports access to X-ray scattering data for atoms and ions. It is
designed to be a transparent interface to scattering data from a variety of
sources. Currently, the only sources of data are the Cromer-Mann tables from
the International Tables of Crystallography and the 1995 Waasmaier-Kirfel
tables. More resources can be added easily.
METHODS¶
- "available"
- This method returns a list of data resources available to
this module. Currently this returns an array consisting of these strings:
Cromer-Mann Waasmaier-Kirfel None
The first two are functional interfaces to those databases. The third is a
fallback subclass which returns default values for all methods.
- "get_valence"
- This returns the element/valence symbol in the proper form
for use with other methods. $elem is a two-letter atomic symbol, and
$valence is the valence of the ion. $valence can be an integer, a float, a
dot or the string "va".
$symbol = Xray::Scattering->get_valence($elem, $valence)
Unless the valence is a dot or the string "va", the nearest
integer to $valence is used with the element symbol to construct the
element/valence symbol. As an example, "$symbol eq
"Cu2+"" if "$elem eq "Cu"" and
"$valence == 2".
SUBCLASS METHODS¶
All the available subclasses corresponding to the data resources provide their
own versions of the following methods:
- "get_f"
- This function calculates the Thomson scattering for a given
symbol and d-spacing. The Thomson scattering depends only on the momentum
transfer. The d-spacing of the scattering planes is a closely related
quantity and is easily calculated from the crystal structure, see Xtal.pm.
$symb = "Ce3+";
$fnot = Xray::Scattering->get_f($symb, $d);
If the symbol cannot be found in the table, "get_f" returns 0. It
also returns 0 when $symbol consists of whitespace or is "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.
The "None" subclass always returns 0.
If you ask for a valence state that is not 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.
- "get_coefficients"
- This returns the 9 (Cromer-Mann) or 11 (Waasmaier-Kirfel)
element list containing the coefficients for the given symbol.
@coefs = Xray::Scattering->get_coefficients($symb)
See the documents for the subclasses for the order of the coefficients. The
None subclass always returns a list of 11 zeros.
If you ask for a valence state that is 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.
- "has"
- This is a test of whether a given symbol is tabulated in
the selected data resource table. It returns the symbol itself if found in
the table or 0 if it is not in the table.
$symb = "Ce3+";
$has = Xray::Scattering->has($symb);
The None subclass returns the symbol itself.
AUTHOR¶
Bruce Ravel, bravel AT bnl DOT gov
http://cars9.uchicago.edu/~ravel/software/exafs/
LICENCE AND COPYRIGHT¶
Copyright (c) 2006-2008 Bruce Ravel (bravel AT bnl DOT gov). All rights
reserved.
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself. See perlartistic.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.