Author Topic: smearing width for DOS  (Read 7654 times)

0 Members and 1 Guest are viewing this topic.

Offline fly

  • Regular QuantumATK user
  • **
  • Posts: 20
  • Reputation: 0
    • View Profile
smearing width for DOS
« on: February 19, 2012, 10:20 »
When we plot DOS, is it possible to set smearing width in ATK 11.8.2?

Offline zh

  • Supreme QuantumATK Wizard
  • *****
  • Posts: 1141
  • Reputation: 24
    • View Profile
Re: smearing width for DOS
« Reply #1 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

Offline fly

  • Regular QuantumATK user
  • **
  • Posts: 20
  • Reputation: 0
    • View Profile
Re: smearing width for DOS
« Reply #2 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()
« Last Edit: February 19, 2012, 15:05 by fly »

Offline kstokbro

  • Supreme QuantumATK Wizard
  • *****
  • Posts: 392
  • Reputation: 13
    • View Profile
    • QuantumWise
Re: smearing width for DOS
« Reply #3 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


Offline fly

  • Regular QuantumATK user
  • **
  • Posts: 20
  • Reputation: 0
    • View Profile
Re: smearing width for DOS
« Reply #4 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 ?  :'( :'( :'( :'(

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: smearing width for DOS
« Reply #5 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. 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)
« Last Edit: February 20, 2012, 11:53 by Anders Blom »

Offline fly

  • Regular QuantumATK user
  • **
  • Posts: 20
  • Reputation: 0
    • View Profile
Re: smearing width for DOS
« Reply #6 on: February 20, 2012, 15:51 »
Thanks! ;D