Home > Objects > iData_subclasses > @iData_Sqw2D > dos.m

# iFit/dos

## PURPOSE

iData_Sqw2D: dos: compute the generalised density of states (gDOS) from a S(q,w)

## SYNOPSIS

function [g, fig] = dos(s, method, varargin)

## DESCRIPTION

``` iData_Sqw2D: dos: compute the generalised density of states (gDOS) from a S(q,w)

g = dos(s, method, n, T, DW)

compute: iData_Sqw2D -> generalised Density of States gDOS [p=1]

The returned generalised density of states corresponds with the 1-phonon term in the
the incoherent Gaussian approximation. This density of states is normalised to 1.

gDOS(q,w) = S(q,w) w^2/q^2                   Bellissent
gDOS(q,w) = S(q,w) w  /q^2/[1 + n(hw)]       Carpenter/Price
and:
gDOS(w)   = lim(q->0) [ gDOS(q,w) ]

gDOS(q,w) = w*q*S(q,w)*exp(2W(q))/[Qmax^4 - Qmin^4]/(1+n(w)) Bredov/Oskotskii
gDOS(w)   = trapz(g, 2)

The Bredov/Oskotskii methodology provides the best gDOS estimate, using the
whole data set.

LIMITATIONS/WARNINGS:
The incoherent approximation states that the gDOS from an incoherent S(q,w) is
roughly equal to that obtained from a coherent S(q,w). However, the
applicability to a coherent dynamic structure factor S(q,w) should be
taken with great care, as this formalism then does not fully hold.
This implementation is in principle exact for an isotropic monoatomic material,
e.g. a liquid, powder, or cubic crystal.
This routine should better be applied on an incoherent dynamic S(q,w) data set.

The method to use in the gDOS computation can be given as 2nd argument
gDOS = dos(Sqw, 'Bredov')         more accurate as it uses 100% of data
gDOS = dos(Sqw, 'Carpenter')      Temperature must be a property
gDOS = dos(Sqw, 'Bellissent')     simple yet efficient

The gDOS is stored in the 'gDOS' property of the initial Sqw object, and is
retrieved without recomputation when available.
To force a recomputation of the gDOS, use:
dos(Sqw, 'method', 0) or dos(Sqw, 'method', 'force')

Input arguments can be given in order, or with name-value pairs, or as a
structure with named fields.

References: Price J. et al, Non Cryst Sol 92 (1987) 153
Bellissent-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)
V.S. Oskotskii, Sov. Phys. Solid State 9 (1967), 420.
H. Schober, Journal of Neutron Research 17 (2014) 109–357. (esp. p307-315)

syntax:
g = dos(s)
g = dos(s, method, n, T, DW)
g = dos(s, 'method', method, 'n', n, 'T', T, 'DW', dw)

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','Bellissent' or 'Bredov' (default)
n:      number of low-angle values to integrate (integer). Default is 10 when omitted.
when 0 or 'force', the gDOS is re-computed. Only for Carpenter/Bellissent.
T:      optional temperature to use for computation (leave undefined for automatic).
DW:     optional Debye-Waller coefficient gamma=<u^2> [Angs^2] e.g. 0.005
The Debye-Waller function is      2W(q)=gamma*q^2
The Debye-Waller factor   is exp(-2W(q))

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

Example: Sqw=iData_Sqw2D('D2O_liq_290_coh.sqw.zip'); g = dos(Bosify(symmetrize(Sqw))); plot(g);