Author Topic: Script for calculate the bandgap.  (Read 61505 times)

0 Members and 1 Guest are viewing this topic.

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Script for calculate the bandgap.
« on: December 18, 2008, 14:24 »
If you want to calculate the bandgap of a semi-conductor or an insulator I have created a small script
that does it for you and I have attached it to this post.

Simple perform a calculation, and store the results in a NetCDF file,
and edit the script bandgap.py to point at this netcdf file, and the run it as normal:
atk bandgap.py

It will produced the following output ( based on ZnSe calculation ):
Quote
Band Gap =  1.18165139396 eV

For test purposes I have also attached the script for performing calculation on znse

Edit:
Updated the scripted in a slight faster version, but it also calculates the indirect band gap now.
« Last Edit: February 15, 2009, 10:33 by Nordland »

Offline xian

  • New QuantumATK user
  • *
  • Posts: 1
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #1 on: February 15, 2009, 03:59 »
Hi,
thanks for the providing the code. i just like to ask you some questions if you don't mind.
1) What 'precision' means in this context?  2 choices are : precision in k-point or precision in energy.  I need to know the difference because i'm using your bandgap code

2) There are two type of bandgap for semiconductor: Direct and Indirect.  Can this code differentiate the two cases?  If not, which case does this code calculate? 

thanks and best regards
Andrew

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #2 on: February 15, 2009, 10:33 »
Hey Andrew.

The original script was the direct band gap, however I have updated the script and now it calculates both at the same time
and no extra cost in time. I also tweaked it a bit, so it is faster.

Quote
Direct Band Gap =  2.50778840825 eV
Indirect Band Gap = 0.472641034718 eV

In order to determine the band gap, the scripts samples the brillouin zone to determine the exact location of the band gap, and the precision
parameter in this script determines the density of this sampling.

I am glad that you are using the script :) Please let me know if you have any suggestions for improvement....

Offline voves

  • Regular QuantumATK user
  • **
  • Posts: 16
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #3 on: February 16, 2009, 12:00 »
Hi, thanks for the script. But 1.18 eV is far from 2.82 eV reported in literature. Could you, please, explain the difference, or recommend the settings?

Jan


« Last Edit: February 16, 2009, 12:25 by voves »

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #4 on: February 16, 2009, 13:04 »
Hey Jan.

I don't how familiar you are with density functional theory, or if the 2.82 eV reported is a experimental result or calculation,
so I will try to explain the best way I can. Under the assumption that it is a experimental value, then the reason is clear:

The density functional theory (DFT) underestimates the band gap of semiconductors and insulators by 30–50% (A reference paper),
and if you ask me, this is the main flaw of DFT. There are some ways to try to compensate for this problem, but there is no goal solution. This discrepancy can be overcome by introducing many-body GW and/or DFT+U schemes (Quasi-particle approach). However, this type of calculations is extremely computing-time consumer, and very hard to combine with supercell models. Therefore it is not supported in ATK, and in general I have not seen any application of GW on any relevant system that was not a small molecule or single crystal.

Hence there is not any reason to despair, since the underestimated band gap does not effect the geometry optimization and almost all the other physical observable, it is normally not a problem,
however if you have a physical property that depends directly on the band gap ( like the refractive index or so ) one of the best, but also a brute force methods, is a scissor operation.
This is pretty standard trick to do in DFT, and I have found an example of it in this paper (Another reference).
And you gets a good results as in GW, without extra calculation time, but it is of course not 100% pure ab-initio.

If you need help applying a scissor operator, please feel free to ask - then I can try my best :)


Offline voves

  • Regular QuantumATK user
  • **
  • Posts: 16
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #5 on: February 16, 2009, 13:43 »
Thanks for the valuable reference. My idea was to calculate the eff. masses for the strained layer from the bandstructure. The DFT will not be the best solution, I am afraid.

Jan

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #6 on: February 16, 2009, 13:54 »
Hey Jan.

If you are trying to study the effective mass DFT is quite a good choice. Since the effective mass depends on the curvature of the bands, and not the band gap itself.
My thesis on optical surfaces states in ZnO nanowires were tight-binding models based on a effective mass, which was obtained from DFT calculations.
So in short, the curvature of the bands is very accurate (valcens bands are close to exact, conducting bands can sometimes be a little to steep), hence the the effective mass are very exact.

Offline voves

  • Regular QuantumATK user
  • **
  • Posts: 16
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #7 on: February 16, 2009, 13:58 »
Hey, thats sounds good. Holes are important for me!

Jan

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #8 on: February 16, 2009, 14:20 »
 :P

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #9 on: February 17, 2009, 00:16 »
Hej Jan.

Digging through my old files I found this script, that I wrote some time ago, for calculating the effective mass of electrons and holes using ATK.

I have created a new post about it, and it can be found here!

Offline privador

  • Regular QuantumATK user
  • **
  • Posts: 21
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #10 on: April 17, 2009, 22:56 »
Hi,i tried to use standard 4,4 nanotube with this script and it resulted 0.06eV Direct and Indirect bandgap.
In theory it shoud be zero.Whats wrong?

What is "Direct" and "Indirect" band gaps?

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: Script for calculate the bandgap.
« Reply #11 on: April 18, 2009, 05:03 »
There are two sides of it:
1) The precision of the estimation of the band gap is determined by the parameter N in the script, and If you made the correction I suggested in the other post to the script, then try to use N = 1000, and see what you get. If it remains the same, then 0.06 eV is most likely the correct result.
2) I assume that when you say theory, it is the analytical expression for the band structure for Carbon nanotubes, you are taking about.
The analytic expression for the band structure (band gap) is based on a folding of the brillouin zone for the 2D energy band structure for graphene sheets, however for the analytical expression to be correct, it is assumed that atoms sitting the the carbon nanotube, is not affected by atoms across the tube, and the atoms is not affected by the curvature of the graphene sheet, that arises for when folding it into a carbon nanotube. It means that the analytical expressions is incorrect for small carbon nanotubes, and (4,4) is a very small carbon nanotubes. ( The nature of a (4,4) CNT is more like that of atomic carbon chain than analytical carbon nanotube of size (20,20) ).

This is the reason why it is needed to perform DFT calculation on a system like this one.

In short the difference between a direct band gap and indirect band gap, is that a band gap is smallest energy of that is required to excite a electron from the valence band to the conducting band. If this band gap requires an phonon interaction in order to be possible, it is called indirect, if it does not require a phonon interaction it is called direct. Therefore you often give both values, since the mechanics behind exciting atoms in the material is quite different if there is a need for phonon in order to allow the excitation.
The indirect band gap is always smaller or equal to the direct band gap, and if they are equal, it is due to the fact that a phonon is allowed to have the zero momentum.
For details on the direct and indirect band gap, I have found this wikipedia page.

Offline privador

  • Regular QuantumATK user
  • **
  • Posts: 21
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #12 on: May 12, 2009, 19:23 »
Actually i tried to calculate C nanotubes band gaps
For A-type(n,n) nanotubes there wasnt much problems.Bandgaps were close to the zero
But when i calculated Z-type(n,0) nanotubes i met serious problems
For example (6,0) nanotube DG and IG were accordingly 7.02eV,-0.46eV
And (7,0) nanotubes DG and IG were both around 0,45eV

In theory (6,0) should be semimetallic close to zero and (7,0) must be semiconductor
I tried also nanoribbons and there was same problems

I used N=10..100 but actually it doesnt change result must,mayby 20%
So i think problem is not there

Mayby i have messed  up creating nc file?(k=1,1,50) ,other default parametres
By the way when Indirect Gap is negative,what it means?
« Last Edit: May 12, 2009, 19:30 by privador »

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5383
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Script for calculate the bandgap.
« Reply #13 on: May 15, 2009, 13:16 »
The value for (7,0) seems fine, while the negative value for (6,0) probably is due to the fact that it's semi-metallic.

I suggest you look at a plot of band structure and try to relate it to the numbers you get. If you attach those plots (properly zoomed in around the Fermi energy), we can understand the situation better.

Offline privador

  • Regular QuantumATK user
  • **
  • Posts: 21
  • Reputation: 0
    • View Profile
Re: Script for calculate the bandgap.
« Reply #14 on: May 25, 2009, 03:23 »
I have got some picture,where is single E(k) line around the Fermi level
And seemed that bandgap script consider that line as valence band
  band gap is calculated around 1Ev not 4Ev
Is that line could be error and real bandgap is 4EV?
http://www.hot.ee/suurfail//BN5-5-1.JPG
« Last Edit: May 25, 2009, 03:45 by privador »