QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: huckelbuckel on February 14, 2012, 10:44

Title: Calculate fermi velocity
Post by: huckelbuckel on February 14, 2012, 10:44
Graphene ,silicene and germanene show linear dispersion at the K point in band dig.How can i get the slope dE/dk from bandstructure???  ???Is it possible to use some kind of nanolanguage script to calculate fermi velocity of electrons by taking slope of E-K graph.Please help.
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 15, 2012, 23:27
It requires a bit of a special solution, because you need to compute the band energies at a particular k-point which isn't one of the lattice symmetry points.

I have a script for that, a class rather, which is attached as BandstructureK.py. If you download that, and if we assume you have in a NC file a converged calculation for graphene as object ID gID000, then we can do

Code: python
conf = nlread("graphene.nc", object_id="gID000")[0]
from BandstructureK import Bandstructure

# This is just to check that we have a nice degeneracy at the K point
t = Bandstructure(conf,kpoints=numpy.array([[1./3,1./3,0]]))
vbmax_ix = numpy.where(t.evaluate()[0]<=0.*eV)[0][-1]
cbmin_ix = numpy.where(t.evaluate()[0]>=0.*eV)[0][0]
bandgap = t.evaluate()[0][cbmin_ix]-t.evaluate()[0][vbmax_ix]
nlprint("Gap at K: %s" % bandgap)

# Now compute the energies at K-eps
# We may need to tune eps, it should be small but not too small
eps = 1e-4
t2 = Bandstructure(conf,kpoints=numpy.array([[1./3-eps,1./3-eps,0]]))
E = t2.evaluate()[0][cbmin_ix]
nlprint("Energy at K-eps: %s" % E)
nlprint("eps: %s" % eps)

Since E(k=K)=0, you get dE/dk=E/eps - now you just have to figure out in which unit ;)
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 16, 2012, 12:05
Hi Thanks for the help . I am still trying to find where should i copy BandstructureK.py class file?? so that i won't get the import-errors??

Traceback (most recent call last):
  File "c:\docume~1\ibm\locals~1\temp\5896631062587926.py", line 4, in <module>
    from BandstructureK import Bandstructure 
ImportError: No module named BandstructureK

I copied this in default directory (where analysis.nc gets saved automatically) but still i am getting error.
or do i need to keep the class file inside atkpython folder???
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 16, 2012, 12:22
i was having trouble with imports so.... i copied the code below the BandstructureK.py file and removed the import statement its working now.
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 16, 2012, 12:23
You can place it in "C:\Program Files (x86)\QuantumWise\atk-11.8.2\vnl\lib\site-packages", but the best way with such scripts in general is to run them from the command line, in which case the script just needs to reside in the directory where you run from.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 16, 2012, 13:19
fermi velocity is given by vf =      dE/dK
                                        -----------
                                               (h*)
h* is reduced planck constant

since unit of h* is (eV)(second)
and velocity in (m)/(Sec)

dE/dK should be  (eV)(m)

so in the script the unit of 'eps' (k points) is in meters-1 OR angstrom-1 OR nanometer-1 ??? I need ur help here.

looking at the values people have got fermi velocity of 106 m/sec. in graphene
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 16, 2012, 13:44
No eps is dimensionless. What you need is to convert the vector V=(1/3-eps,1/3-eps,0) to a real vector in reciprocal space. That is, you evaluate the reciprocal lattice vectors and compute the length of V-K in actual real coordinates (it will have units 1/m).
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 17, 2012, 06:40
thanks for the explanation

Here is what i am getting:

h* = 6.5821 X 10-16
eps = 0.0001
E  (Energy at K-eps) = 0.002874eV

coordinates = (0.333233,0.333233,0)

converted into reciprocal coordinates for hexagonal  by taking     4(pi)
                                                                                      ------
                                                                                    a*(sqroot(3))

and got (21.7721,21.7721,0)

vector length between (0,0,0) and (21.7721,21.7721,0) =  30.786m-1

now vf =   0.002874
            --------------      gives  something of the order of 1011 which is very high!!
              30.786 X (h*)

am i doing this correctly???  ::)


Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 17, 2012, 09:17
The vector between K and K-eps*(1,1,0) is 4*pi*eps/(3*a)*(-1,0,0), where a is the graphene lattice constant a.

Inserting values I get vf=854766 m/s
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 17, 2012, 17:21
Mr Blom, You are getting gr8 result!..i am still trying to calculate 'dK' value correctly.I am out for one week..then i will again try to replicate the same.
Thanks again i have learnt a lot from you  :D
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 17, 2012, 20:03
It's easy :)

K = (1/3,1/3,0) in units of the inverse lattice vectors GA=2pi/a*(1,1/sqrt(3),0) and GB=2pi/a*(1,-1/sqrt(3),0). Hence, K=4pi/3a*(1,1,0) in reciprocal Cartesian.
(We had LaTeX support on the Forum before, I lost it in an update... should bring it back.)

So, K-eps*(1,1,0)=(4pi/3a)*eps*(-1,0,0) and hence dK = 4pi/3a*eps.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 23, 2012, 14:30
I used your formula and got these results:


Graphene:2.41 X 106 m/sec
Germanene: 1.373 X 106 m/sec
Silicene: 1.14 X 106 m/sec

What i should do to get more accurate results.In some technical papers velocity in silicene is 10 times slower than that of graphene . I am not getting that difference.??? ???
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 23, 2012, 14:37
Do you mean experimental papers? Obviously there are lots of effects in an experiment that are not included in the models of the calculation. What you are predicting, provided your calculation is converged in all accuracy parameters like basis set, k-point sampling etc, is that the theoretical limit for the Fermi velocity in silicene is about 50% of that in graphene. If an experiment is showing a very different ratio between these two materials, it would indicate that it's easier to obtain pure graphene samples than silicene samples, or that silicene is more sensitive to phonon scattering or other effects not included in the model.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 24, 2012, 10:07
Can i write these values in my abstract/paper. Is that ok? or i again need to run calculations  by changing the K point or making a selection between GGA/LDA or choosing double zeta double polarised basis sets?Will it improve the accuracy of result?

I have taken 21X21X1 k points for silicene,graphene and germanene.Also i have taken double zeta single polarized basis set.

Can you suggest me something here   ;D  :D
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 24, 2012, 10:32
Those are reasonable values in all cases.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 24, 2012, 10:33
Lines from A review on silicene—New candidate for electronics

The Fermi velocity calculated by Lew Yan Voon et al.  in graphene, silicene and
germacene are 6.3×105   5.1×105   and  3.8×105 m/s,respectively

Another paper Two- and one-dimensional honeycomb structures of silicon and germanium  S. Cahangirov et. al,

says that Low buckled Si and Ge structures all have Vf of the order of 106 m/sec  very close to graphene!!!

Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 24, 2012, 11:30
Then you have to see what is different in their calculation - electronic structure method, GGA/LDA, etc. Maybe they even use tight-binding? All details must be considered.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 24, 2012, 13:48
Repetaed with GGA-PBE, 41X41X1 k points and DZDP basis

Graphene:   1.785 X 106 m/sec
Germanene :8.7786 X 105 m/sec
Silicene     : 4.1896 X 105 m/sec

slowest in silicene?
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 24, 2012, 21:00
Obviously the values are quite sensitive to details - and perhaps also to how the Fermi velocity is computed, which value of epsilon you use. You need to make real sure there is no spurious band gap (because of too small unit cell in C, for instance, or too small k-point sampling). I also know it can be hard to get the exact right buckling in silicene, so this may have an influence.
Title: Re: Calculate fermi velocity
Post by: huckelbuckel on February 25, 2012, 07:29
i used eps = 0.0001. the 'c' parameter of the hex crystal was kept very large 42.32 Angstroms to avoid inter layer periodic interactions.
Title: Re: Calculate fermi velocity
Post by: Anders Blom on February 25, 2012, 10:31
It would be a good idea to try esp=0.001 as well, even 0.01 and 0.1, to see how linear the dispersion actually is. Also, if you rely upon very small eps, you will want to make sure that the energies are very accurate, which may mean you need to reduce the tolerance of the self-consistent loop.
Title: Re: Calculate fermi velocity
Post by: sonal AGRAWAL on June 12, 2020, 19:44
It's easy :)

K = (1/3,1/3,0) in units of the inverse lattice vectors GA=2pi/a*(1,1/sqrt(3),0) and GB=2pi/a*(1,-1/sqrt(3),0). Hence, K=4pi/3a*(1,1,0) in reciprocal Cartesian.
(We had LaTeX support on the Forum before, I lost it in an update... should bring it back.)

So, K-eps*(1,1,0)=(4pi/3a)*eps*(-1,0,0) and hence dK = 4pi/3a*eps.
Dear sir,
The method given in the above-quoted post  Is the same method i.e. used in the calculate velocity function given in the tutorials of calculation of Fermi velocity in ATK-VNL.
From the tutorial, I am getting the Fermi velocity of silicene and graphene in the 10^5 and 10^6 which is in good agreement in literature but in case of germanene, I am getting only 10^2 m/s. 
Thanks in advance