Author Topic: Calculating Projected DOS Efficiently  (Read 134 times)

0 Members and 1 Guest are viewing this topic.

Offline krishnabhattaram

  • New QuantumATK user
  • *
  • Posts: 3
  • Country: us
  • Reputation: 0
    • View Profile
Calculating Projected DOS Efficiently
« on: November 8, 2023, 11:39 »
I've been working with the DensityOfStates class with the default tetrahedral sampling method using the projection_list option in the .evaluate() function to calculate local density of states by specifying the appropriate atoms using ProjectionList(atoms=[...]). However, it seems that for every local density of states the progress bar indicating tetrahedral sampling is being conducted is displayed, indicating that the K-point sampling and eigenenergies are reevaluated. Even worse, when I call the .energies() or .fermiLevel() functions on a single DensityOfStates instance after calling .evaluate(), the tetrahedral resampling progress appears again. My calculations are currently limited by the DOS step, with average runtimes on my machine being on the scale of 5 hours for a single DOS calculation. I therefore was wondering if there is a way to take advantage of previously conducted calculations for DOS to avoid redundancy in LDOS calculations, thereby reducing computation time. My ultimate goal is to calculate LDOS (value, energy, and fermi level) for every atom of a structure with around one hundred atoms using a semiempirical approach.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5317
  • Country: dk
  • Reputation: 88
    • View Profile
    • QuantumATK at Synopsys
Re: Calculating Projected DOS Efficiently
« Reply #1 on: November 8, 2023, 23:21 »
The short answer is don't use the DensityOfStates class, it's outdated and very slow and cumbersome to work with. We have a much more powerful ProjectedDensityOfStates class that hopefully takes care of all your needs!

It still takes the same amount of time to calculate the DOS (which btw parallelizes really well, so use as many MPI processes as possible), and you do have to decide on the projections beforehand. But as long as you only need e.g. site and angular momentum projection, it will later be instantaneous to get the projection plots, and you can do it right in the GUI analyzer.