# From phonon dispersion to density of state

1. May 5, 2010

### manutdhk

I have searched this topic in our forums. no answer about that.

I have obtained the phonon dispersion curve by applied a numerical simulation. However, how can I obtain the phonon density of state from such a curve?

generally speaking,

g(q)dq = g(w)dw, here q is the wave-vector; w is the phonon frequency. g(q), g(w) is the density of quantities mentioned above. g(w) is the right one I expect to calculate. and the phonon dispersion curve provide the relation of dw/dq. from the wikipedia, I know
g(q) = V*k^2/(2*pi^3) in 3-D homogenous solid.

My question is How to transfer g(q) into a functional form of "w", in order to subsitute the "dw/dq" into it, and obtain the "g(w)" ?

Thanks

2. May 5, 2010

### genneth

If you know the dispersion relation, aka w(q), then you can find dw/dq.

3. May 5, 2010

### manutdhk

the question is :

the expression of g(q) is a function of q, it should be transfer into a function of "w" instead.

but How can I do that?

4. May 5, 2010

### kanato

If you have the dispersion, you have a function like w(q), right?
Then to calculate the density of states you do
$$g(\omega) = \sum_{q} \delta(\omega - \omega(q))$$

You can do this numerically by choosing an approximate form of a delta function (like the derivative of the Fermi function) and summing over a regular grid of q points. But if you just have the dispersion along symmetry lines, that's not enough.

5. May 5, 2010

### manutdhk

Agree !
just the dispersion along high symmetrical lines are not enough, by using delta function method..
however, for an isotropic solid, it's possible to approximate that w(q) is just a function of the amplitute of q, which is equal to "w(q) = w(|q|)".
the high symmetrical lines, can cover all the possible value of |q|. it just requires the density of |q| in the first BZ.
is that right?

my question is I don't know how to construct the g(|q|) numerically.

Thanks for Kanato and genneth's discussion.

6. May 5, 2010

### kanato

Well you would calculate g(w) the same way I mentioned.. the functional form of omega is arbitrary. But using that approximation you could assume that the values obtained along high symmetry lines give you w(|q|) and that would tell you the frequency in the entire zone.

Numerically, in pseudocode you do this:

Select a grid of N points for w from 0 to your highest frequency value or something above it.
Create a regular grid of q points to sample frequencies from.

Code (Text):

Define g(N) and initialize to zero

For each of the N points
For each q point in the grid
g(i) += delta(w_i - frequency(q))
end for

end for

You need a function to approximate the delta function. I often use -df/de where f(e) is the Fermi function. This will require a temperature parameter that "smears" out the delta function. This is needed since you are sampling a finite grid of q points, and the 'temperature' will need to be higher the more coarse your grid is.

The above code can be optimized to run faster, but it should be adequate unless you need a really dense q grid.