QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: srdguezb on January 13, 2010, 13:03

Title: Disagree of the transmission spectrum and transmission obtained with T(k,E)
Post by: srdguezb on January 13, 2010, 13:03
Hello everybody,

my question is the next one: I think atk provides 2 'equivalent' ways to obtain the transmission spectrum:
  1. Calculate T(E,k) and integrate in k. If the used k's are obtained with the Monhkorst procedure, T(E) is obtained straightforward by adittion and divide by N^2.
  2. Use Trasmission spectrum function.
The question is: Should both approaches provide the same results?

Thus, I have calculated a .nc file with a selfconsistent_calculation, load a variable scf_calc with those data and set up this script by changing few things of that provided by the tutorial 'Transmission Coefficients'

#First way
N=        10
T=        []
K=        []
energies= numpy.arange(-5,5,0.1)*electronVolt
reduced_grid= MonkhorstPackGrid_ReducedToFirstOctant(N)
K=            reduced_grid.getPickedKPoints()
for E in energies:
 tr_limited = calculateTransmissionCoefficients(
  self_consistent_calculation=scf_calc,
  energy = E,
  quantum_numbers = K
 )
 tr_reconstructed = reduced_grid.reconstructT(tr_limited)
 TE = sum(sum(tr_reconstructed))/(N*N)
 if processIsMaster():
  print E,TE
  if -1e-3*eV<E<1e-3*eV:
   saveTransmissionCoefficients(tr_reconstructed,'trcoeff_k100Red_E0eV.cpk')

#Second way
bzip= brillouinZoneIntegrationParameters((N,N))
electron_transmission = calculateTransmissionSpectrum(
 self_consistent_calculation = scf_calc,
 energies = energies,
 brillouin_zone_integration_parameters=bzip
 )
energies = electron_transmission.energies()
coefficients = electron_transmission.coefficients()
if processIsMaster():
   print 'Energy (eV)      Transmission'
   print '-----------------------------------'
   for i in range(len(energies)):
      print "%g\t%g" % ( energies.inUnitsOf(eV),coefficients )



Thank you
Title: Re: Disagree of the transmission spectrum and transmission obtained with T(k,E)
Post by: Anders Blom on January 13, 2010, 19:54
Only if you do your own integration exactly the right way. Remember first of all that the Gamma point has a different weight than other points in the Monkhorst-Pack sampling scheme, and also you need to consider if you are using time-reversal symmetry to reduce the grid or not.
Title: Re: Disagree of the transmission spectrum and transmission obtained with T(k,E)
Post by: srdguezb on January 14, 2010, 13:31
Thank you very much for your reply but I am not sure to understand the answer. What do you mean with 'the right way'? In the script calc_transmission_reduced_grid.py provided with the tutorial Tutorial_Transmission_Coefficientes.pdf the transmission spectrum is obtained with the line 'TE = sum(sum(tr_reconstructed))/(N*N)'. Thus, if I calculate in that way the transmission spectrum I think I should have the same results than if it is calculated by the function calculateTransmissionSpectrum, as I posted above. However when I tried it the results were not exactly the same and I want to know if it is because ATK's functions or because I have not understood correctly the procedure.

I will also try with the exact example of the tutorial, I mean with femgofe_antipara.nc.

Thank you again
Title: Re: Disagree of the transmission spectrum and transmission obtained with T(k,E)
Post by: Anders Blom on January 14, 2010, 18:43
Right, in that case it's the same. I just meant, that expression is not generic, it relies on having a full grid of k-points (not reduced by time-reversal symmetry). I've also seen small differences to ATK, and this is probably caused by the small infinitesimal part of the energy, which breaks time-reversal symmetry very slightly. The difference should, however, be negligible for practical purposes.
Title: Re: Disagree of the transmission spectrum and transmission obtained with T(k,E)
Post by: srdguezb on January 15, 2010, 15:58
Thank you  :)