Author Topic: No. of k point for convergence of transmission spectrum (Krylov/Recursion)  (Read 5954 times)

0 Members and 1 Guest are viewing this topic.

Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
In the tutorial http://quantumwise.com/documents/tutorials/latest/ATKTutorialDeviceNew/index.html/chap.zerobias.html#sect1.zerobias.convergence
I saw that one must check the convergence of k points of transmission spectrum.

If I check for the convergence while using Krylov self-energy calculator and get the no. of k points for which the calculation converges and then use the same k for calculating using Recursion, will it be a problem? Or do I have check for convergence separately for Recursion?


Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
Here by k-point I mean sampling in the Transmission spectrum analysis (nA)

Please reply :)

Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
Could anyone kindly answer this?

Offline ams_nanolab

  • Supreme QuantumATK Wizard
  • *****
  • Posts: 389
  • Country: in
  • Reputation: 11
    • View Profile
Krylov and recursion are two different (in terms of speed and accuracy) ways of calculating Transmission. Krylov is faster but sometimes less accurate, Recursion is slower and more accurate. Maybe it would be best not to use one k-point for another calculator.

Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
Thank you for your reply.
Yes, Recursion takes a lot of computational time that is why I cannot perform the convergence test (for k of TS) for the system while working with Recursion. So, i am searching for a way to perform the convergence test quickly and then use the same no. of k points and do the calculation in Recursion (if possible i.e. if the test stays valid to some extents, irrespective of the self energy calculator). Could you please suggest something for the goal?
« Last Edit: December 29, 2015, 16:41 by Subhban15 »

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
It's a bit tricky, actually, because the Krylov method ignores fast decaying modes (where the transmission is close to zero). That's not really a problem if you have high transmission in some parts of the spectrum, because then the ignored part is negligible, but if ALL current is due to very low transmitting modes, then Krylov is simply not accurate enough, and also cannot be used to determine the proper k-point sampling. But if you have decent transmission, you can use the k-points from Krylov for Recursion.

Note, however, that if you want to be properly correct, it's not even sufficient to determine the required k-point sampling for zero bias - you should check it for every bias; indeed, most of the time, the zero-bias  spectrum is the cleanest and requires the fewest k-points. To get around this problem, and the fact that often you need too many k-points in the regularly distributed Monkhorst-Pack scheme, we have implemented an adaptive k-point integration scheme in ATK 2015, that I strongly recommend having a look at. See http://www.quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/ref.adaptivegrid.html for a lot of details.

With that method, you can often save 10-100x on the computation time for the transmission spectrum, as illustrated in the attached picture, showing the used k-points as black dots for a high-accuracy calculation of the transmission, where the Monkhost-Pack grid would need at least 200x200 points, but the adaptive grid only used a few thousand points in total.
 

Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
Wow!  :) That seems interesting.
Could you please provide a tutorial or two on how to incorporate it effectively?

Also, it would be great if you would kindly share some insights on:
i) what would the k range (say from -0.1 to 0.1) actually mean? Does this improve the accuracy?
ii)whether we have to make sure that the range always adds up to 1, if that is the case then how do we decide the value of the floats?

Thank you very much for your reply! :)

Offline Subhban15

  • Heavy QuantumATK user
  • ***
  • Posts: 54
  • Country: in
  • Reputation: 0
    • View Profile
Could you please tell me which of the following codes must I use for analysing the transmission spectrum using adaptive grid (in 2015 version)
Code
# -------------------------------------------------------------
# Setup adaptive grid object.
# -------------------------------------------------------------
adaptive_grid = AdaptiveGrid(
	kA_range=[-0.5, 0.5],
	kB_range=[-0.5, 0.5],
	tolerance=1e-2,
	error_measure=Absolute,
	number_of_initial_levels=4,
	maximum_number_of_levels=8)
    
# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
transmission_spectrum = TransmissionSpectrum(
    configuration=configuration,
    energies=numpy.linspace(-5,5,501)*eV,
    kpoints=adaptive_grid,
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    self_energy_calculator=KrylovSelfEnergy(),
    )
OR
Code
# -------------------------------------------------------------
# Setup adaptive grid object.
# -------------------------------------------------------------
adaptive_grid = AdaptiveGrid(
	kA_range=[-0.5, 0.5],
	kB_range=[-0.5, 0.5],
	tolerance=1e-2,
	error_measure=Absolute,
	number_of_initial_levels=4,
	maximum_number_of_levels=8)
    
# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
transmission_spectrum = TransmissionSpectrum(
    configuration=configuration,
    kpoints=adaptive_grid,
    )

Offline Jess Wellendorff

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 933
  • Country: dk
  • Reputation: 29
    • View Profile
As far as I can see, the only difference between the the pieces of code is that in the second one you do not specify options not related to k-points. Both will therefore work and use the same adaptive k-point grid , but are not equivalent (energies are different, the self-energy calculator is different).

Please see the ATK Reference Manual entry for AdaptiveGrid: http://www.quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/ref.adaptivegrid.html. It shows you that the adaptive grid can be used instead of a Monkhorst-Pack k-point grid for TransmissionSpectrum and SpinTransferTorque analysis methods. The other options for those two analysis objects do not depend on the k-grid you choose.