QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: fly on February 19, 2012, 10:20

Title: smearing width for DOS
Post by: fly on February 19, 2012, 10:20
When we plot DOS, is it possible to set smearing width in ATK 11.8.2?
Title: Re: smearing width for DOS
Post by: zh on February 19, 2012, 12:14
The manual has already pointed out that you can smear the DOS using "gaussianSpectrum()":
http://quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/ref.densityofstates.html
Title: Re: smearing width for DOS
Post by: fly on February 19, 2012, 14:30
broadening
Broadening of the Gaussian.

Type: PhysicalQuantity with unit energy

Default: 0.1*eV

The referee say that the quality of DOS needs to be improved by employing a larger smearing width. If I want to improve smearing width, how can I set it?
I use the manuscript below, but it only present a picture and I cannot obtain data for dos and pdos. Because this picture needs to be plotted using Matlab, can you present a manuscript which can change smearing width and obtain data for dos and pdos (especially for pdos).






# read DOS object from file
dos = nlread('si_dos.nc', DensityOfStates)[0]


# make list of energies
energies = numpy.arange(-14,5,0.01)*eV

# calculate the DOS spectrum with two different methods
dos_t = dos.tetrahedronSpectrum(energies)
dos_g = dos.gaussianSpectrum(energies, broadening = 0.2*eV)

#plot the spectra using pylab
import pylab
pylab.figure()
pylab.plot(energies.inUnitsOf(eV), dos_t.inUnitsOf(eV**-1))
pylab.plot(energies.inUnitsOf(eV), dos_g.inUnitsOf(eV**-1))
pylab.xlabel("Energy (eV)")
pylab.ylabel("DOS (1/eV)")
pylab.show()
Title: Re: smearing width for DOS
Post by: kstokbro on February 19, 2012, 23:38
The following command will print the data<.

for e,d in zip(energies.inUnitsOf(eV), dos_t.inUnitsOf(eV**-1)):
     print e,d

Title: Re: smearing width for DOS
Post by: fly on February 20, 2012, 03:07
I can obtain data for PDOS from vnl in ATK 11.8.2. But the picture shows that PDOS peaks are very sharp. I have to smear the DOS using "gaussianSpectrum()": according to the comment of referee.  But the script only present total DOS,  I desire to obtain the script for PDOS. Who can help me ?  :'( :'( :'( :'(
Title: Re: smearing width for DOS
Post by: Anders Blom on February 20, 2012, 11:51
If you look again at the Reference Manual for density of states, you see there is a keyword you can give for many of the methods, called "projection_list". This allows you to select which atoms, elements, or orbitals to project on. For more information on projection lists, see its reference manual entry (http://quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/ref.projectionlist.html).

For instance, to project your DOS on atoms 5,7 and 9, use

Code: python
projection_list = ProjectionList(atoms=[5,7,9])
dos_g = dos.gaussianSpectrum(energies, broadening = 0.2*eV, projection_list=projection_list)

To project on all p-orbitals of the nitrogen atoms, use

Code: python
projection_list = ProjectionList(elements=[Nitrogen], angular_momenta=[1])
dos_g = dos.gaussianSpectrum(energies, broadening = 0.2*eV, projection_list=projection_list)
Title: Re: smearing width for DOS
Post by: fly on February 20, 2012, 15:51
Thanks! ;D