Home > Scripts > Treatment > Sqw > Sqw_scatt_xs.m

iFit/Sqw_scatt_xs

PURPOSE ^

Sqw_scatt_xs(s,Ei): compute the total scattering cross section for

SYNOPSIS ^

function sigma = Sqw_scatt_xs(s, Ei, M)

DESCRIPTION ^

 Sqw_scatt_xs(s,Ei): compute the total scattering cross section for
   incoming neutron energy. The S(|q|,w) should be the non-classical
   dynamic structure factor. 

   Such data sets are obtained from e.g. xray and neutron scattering 
   experiments on isotropic density materials (liquids, powders, amorphous
   systems). 

   Data sets from analytical models and molecular dynamics simulations must 
   be symmetrised in energy, and the detailed balance must be applied to 
   take into account the material temperature on the inelastic part.

   The S(q,w) is a dynamic structure factor aka scattering function.

   The incident neutron energy is given in [meV], and may be computed:
     Ei = 2.0721*Ki^2 = 81.8042/lambda^2 with Ki in [Angs-1] and lambda in [Angs]
     
   The S(|q|,w) is first restricted to the achievable dynamic range:
     Ef         = Ei - w                                is positive
     cos(theta) = (Ki.^2 + Kf.^2 - q.^2) ./ (2*Ki.*Kf)  is within [-1:1]
   and then integrated as XS = 1/2Ki^2 \int q S(q,w) dq dw

   The computed value must then be multiplied by the tabulated bound cross-section
   from e.g. Sears, Neut. News 3 (1992) 26.

   When the weight M of the scattering unit is given, it is used to multiply the
    cross section by the estimated Debye-Waller-like factor so that it equals
    A/(A+1)]^2 at Ei=1eV to gradually go from the bound (thermal) to the free 
    cross section at 1 eV. The threshold of 1eV is used by e.g. OpenMC.
     W  = 2e-3*(log(M)-log(M+1));
     DW = exp(W*Ei) = exp(2e-3*(log(M)-log(M+1))*Ei)
   Above the ethermal energy threshold, the DW factor is kept fixed. 
   For a poly-atomic scatterer, the effective mass is computed by weighting
   with the bound cross sections for elements A, e.g.
     r = sqrt(sum((A/(A+1))^2 * sigma_bound(A)) / sum(sigma_bound(A)));
     M = r/(1-r)
   For instance, for H2O (twice A=1 sigma=80.2 and A=18 sigma=4.2):
     r = sqrt((2*(1/(1+1))^2*80.2+(18/(18+1))^2*4.2)/(2*80.2+4.2)) = 0.52
     M = r/(1-r) = 1.06 i.e. scattering is mostly the hydrogen one.
   WARNING: this factor is NOT the Debye-Waller factor exp(-<u2>Q2) !

 A classical S(|q|,w) obeys S(|q|,w) = S(|q|,-w) and is usually given
 on the positive energy side (w>0).
 The non classical S(q,w), needed by this function, can be obtained from a 
 classical S(q,w) (which is symmetric in energy) with e.g.:
   extend to +/- energy range
     s = Sqw_symmetrize(s); 
   apply detailed balance (Bose factor). Omit T if you do not know it.
     s = Sqw_Bosify(s, T);

 The positive energy values in the S(q,w) map correspond to Stokes processes, 
 i.e. material gains energy, and neutrons loose energy when scattered.

 input:
   s: Sqw data set (non classical, with T Bose factor e.g from experiment)
        e.g. 2D data set with w as 1st axis (rows, meV), q as 2nd axis (Angs-1).
   Ei: incoming neutron energy [meV]
   M: molar weight of the atom/molecule in [g/mol].
     when given empty, it is searched 'weight' or 'mass' is the object.
     Default is set to 0, i.e. the Debye-Waller factor is not taken into account.
 output:
   sigma: cross section per scattering unit (scalar or iData)
          to be multiplied afterwards by the bound cross section [barn]

 Example: sigma = Sqw_scatt_xs(s, 14.6)

 See also: Sqw_Bosify, Sqw_deBosify, Sqw_symmetrize, Sqw_dynamic_range
 (c) E.Farhi, ILL. License: EUPL.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Wed 22-Mar-2017 09:13:30 by m2html © 2005. iFit (c) E.Farhi/ILL EUPL 1.1