How to find Density of states numerically?

Click For Summary

Discussion Overview

The discussion focuses on methods for numerically calculating the density of states (DOS) from a dispersion dataset, specifically in the context of a 2D crystal. Participants explore various approaches and equations relevant to this computation.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Exploratory

Main Points Raised

  • One participant suggests using the equation from Ashcroft and Mermin to compute the density of states, explaining the integration over the energy surface in k-space.
  • Another participant proposes a numerical method involving the sum of delta functions to approximate the density of states, emphasizing the setup of a grid for energy values.
  • A different participant mentions the tetrahedron method for calculating the density of states through integration over the Brillouin zone, although they express a lack of experience with this method.
  • One participant shares their experience using a Lorentzian approximation for the delta function, questioning its efficiency but noting its ease of use.

Areas of Agreement / Disagreement

Participants present multiple competing methods for calculating the density of states, with no consensus on which approach is superior or most efficient. The discussion remains unresolved regarding the best numerical technique.

Contextual Notes

Some methods discussed depend on specific assumptions about the energy grid and the approximation of the delta function, which may affect the accuracy of the density of states calculation.

PRB147
Messages
122
Reaction score
0
If one has already known the dispersion dataset,
for example, for 2D crystal, we know the 1000*2000 dataset for E=E(k_x,k_y),
How to find the density of states numerically?
 
Physics news on Phys.org
Equation (8.63) from Ashcroft and Mermin will be helpful. I have listed it below for convenience:

##g_n(\mathcal{E})=\int_{S_n(\mathcal{E})} \frac{dS}{4\pi^3}\frac{1}{|\nabla\mathcal{E}_n(k_x,k_y,k_z)|}##

I know you want to know how to compute density of states numerically. I was referring to this formula merely to give an insight behind the procedure involved in doing this computation. So what is happening in the above formula is this: in k-space you have found a surface with equal energy ##\mathcal{E}## and you are integrating the quantity ##|\nabla\mathcal{E}_n(\textbf{k})|^{-1}## over the surface. In other words, this integral is "counting" the number of states that lie on this surface of equal energy. This is the density of states by definition. Now, in your data set, you pretty much have to: (1) pick an energy ##\mathcal{E}## (2) determine how many data points, which are indexed by ##(k_x,k_y)##, have an energy ##\mathcal{E}(k_x,k_y)## such that ## \mathcal{E} \le \mathcal{E}(k_x,k_y) \le \mathcal{E} + \Delta \mathcal{E}##. Then your density of states will be i.e. ##g(\mathcal{E}) = N(\mathcal{E})/\Delta \mathcal{E}##, where ##N(\mathcal{E})## is the number of data points are counted.
 
Last edited:
Thank you very much, PhysTech. Thank you!
 
The easy way to do this numerically is to use the equation g(\epsilon) = \sum_{k} \delta(\epsilon - \epsilon_k)
and use an approximation for the delta function. Basically you setup a grid for your energies E, initialize your density of states function g(E) on those points to zero, and then loop over your momentum (and band index) and add the delta function approximation to your g(E).
 
daveyrocket said:
The easy way to do this numerically is to use the equation g(\epsilon) = \sum_{k} \delta(\epsilon - \epsilon_k)
and use an approximation for the delta function. Basically you setup a grid for your energies E, initialize your density of states function g(E) on those points to zero, and then loop over your momentum (and band index) and add the delta function approximation to your g(E).
Numerically, it seems that the dos is calculated from the integration over BZ through the so called tetrahedron methods. But I have no experience on that.
 
Thank Daveyrocket and PhysTech very much, discussion is always helpful
 
I've used daveyrocket's method with a Lorentzian of small width in the past. Not sure if this is the most efficient approximation for the delta function, but it's real easy to work with.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 13 ·
Replies
13
Views
4K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 6 ·
Replies
6
Views
6K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 10 ·
Replies
10
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K