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