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); See also: iData_Sqw2D/multi_phonons, iData_Sqw2D/incoherent iData_vDOS/multi_phonons, iData_vDOS/multi_phonons (c) E.Farhi, ILL. License: EUPL.