QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: Subhban15 on December 23, 2015, 06:45

Title: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on December 23, 2015, 06:45
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?

Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on December 25, 2015, 05:23
Here by k-point I mean sampling in the Transmission spectrum analysis (nA)

Please reply :)
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on December 26, 2015, 18:23
Could anyone kindly answer this?
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: ams_nanolab on December 28, 2015, 10:27
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.
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on December 29, 2015, 16:39
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?
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Anders Blom on December 30, 2015, 00:26
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.
 
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on January 1, 2016, 19:48
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! :)
Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Subhban15 on January 21, 2016, 05:47
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,
    )

Title: Re: No. of k point for convergence of transmission spectrum (Krylov/Recursion)
Post by: Jess Wellendorff on January 21, 2016, 08:28
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 (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.