Home > Scripts > Treatment > Sqw > sqw_phonon_dos.m

iFit/sqw_phonon_dos

PURPOSE ^

sqw_phonon_dos: compute the density of states (gDOS or vDOS)

SYNOPSIS ^

function [DOS, DOS_partials] = sqw_phonon_dos(s, method, n)

DESCRIPTION ^

 sqw_phonon_dos: compute the density of states (gDOS or vDOS)

  The routine can be used for 2D and 4D models and data sets.
    when used on 4D data sets and models S(HKL,w), the vDOS is computed.
    when used on 2D data sets and models S(|q|,w), the gDOS is computed.

  ================================ 4D case ====================================
    DOS = sqw_phonon_dos(s)    returns the vibrational density of states (vDOS)
      the vDOS and the partials per mode are also stored in the UserData.
    DOS = sqw_phonon_dos(s, n) does the same with n-bins on the vDOS (n=100)
    when the DOS has already been computed, it is used as is. To force a
    recomputation, set:
      s.UserData.DOS=[];
    to smooth the resulting distribution, use:
      sDOS = smooth(DOS); plot(sDOS);
  
  ================================ 2D case ====================================
  The gDOS is an approximation of the vibrational spectra (DOS).
  This routine should be applied on an incoherent dynamic S(q,w) data set.
  The S(q,w) is a dynamic structure factor aka scattering function.

       gDOS(q,w) = S(q,w) w/q2 [1 - exp(-hw/kT)] [Carpenter/Price]

  The applicability to a coherent dynamic structure factor S(q,w) should be
    taken with great care, as this formalism then does not hold.

  The method to use in the gDOS computation can be given as 2nd argument
       gDOS = sqw_phonon_dos(Sqw, 'Carpenter')
       gDOS = sqw_phonon_dos(Sqw, 'Bellisent')
       gDOS = sqw_phonon_dos(Sqw, 'Bredov') better for coherent scatterers

  The gDOS(w) is obtained by extracting the low momentum values out of gDOS(q,w).
  The syntax is:
       [g(w), g(q,w)]=sqw_phonon_dos(Sqw, method, n)

 input:
   s: Sqw data set e.g. 2D data set with w as 1st axis (rows, meV), q as 2nd axis (Angs-1).
   method: 'Carpenter' (default),'Bellisent' or 'Bredov'
   n: number of low-angle values to integrate (integer). Default is 10 when omitted.

 output:
   g:   gDOS(w)   (1D iData versus energy)

 conventions:
 omega = Ei-Ef = energy lost by the neutron
    omega > 0, neutron looses energy, can not be higher than Ei (Stokes)
    omega < 0, neutron gains energy, anti-Stokes

 references: Price J. et al, Non Cryst Sol 92 (1987) 153
         Bellisent-Funel et al, J. Mol. Struct. 250 (1991) 213
         Carpenter and Pelizarri, Phys. Rev. B 12, 2391 (1975)
         Suck et al, Journal of Alloys and Compounds 342 (2002) 314
         Bredov et al., Sov. Phys. Solid State 9, 214 (1967)

 Example: Sqw=iData('SQW_coh_lGe.nc'); g = sqw_phonon_dos(Sqw_Bosify(Sqw_symmetrize(Sqw))); plot(g);
 (c) E.Farhi, ILL. License: EUPL.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Tue 22-Aug-2017 11:03:30 by m2html © 2005. iFit (c) E.Farhi/ILL EUPL 1.1