Dear,
I am simulating an electronic transmission function for a single molecular junction and part of the k-points used are not contributing well for the transmission values in some energies. So now I am trying to use the AdaptiveGrid that it takes much more time than the Monkhorst-Pack scheme. I decrease the maximum number of refinement steps (=7 now) to see if can be faster. How can I use the flag << function_values >> in this case if the transmission value for each k-point depends on the energy? The list of k-points for this function values is given in the flag << kpoints >>, right? How does it affect the kpoints chosen to construct the triangles?
My initial code is below.
device_configuration=nlread('/path/device.hdf5', DeviceConfiguration)[0]
# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
kpoints = AdaptiveGrid(
kA_range=[-0.5, 0.5],
kB_range=[-0.5, 0.5],
tolerance=1e-3,
error_measure=Absolute,
number_of_initial_levels=3,
maximum_number_of_levels=20,
kpoints=None,
intervals=None,
triangles=None,
function_values=None,
)
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(-1.0, 1.0, 800)*eV,
kpoints=kpoints,
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
self_energy_calculator=RecursionSelfEnergy(),
)
nlsave('device.hdf5', transmission_spectrum)
nlprint(transmission_spectrum)