Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - zhangguangping

Pages: [1] 2 3 ... 13
General Questions and Answers / Re: photocurrent
« on: August 3, 2021, 10:49 »
The photon mediated transmission is not plotted in the gui but you can obtain the data from the object as you are suggesting.

energies = photocurrent.energies().inUnitsOf(eV)
transmission = photocurrent.photonMediatedTransmission(photon_mode=0)

and then plot these two variables with pylab or other prefered plotting tools (select wanted photon_mode index for which you want to plot the transmission).
Please see the object description here for further details:

Dear Tue Gunst´╝î

I now can get the photon mediated transmission.

Thanks very much for your kind reply.

With best regards,

/Guang-Ping Zhang

Dear ATK developers:

In the past days, I have looked into the photocurrent module in QuantumATK. As I understand,
(1) the photocurrent obtained by the photocurrent module is only the current induced by the photo illumination and it does not include that induced by the voltage between the source and drain.
(2) the transmission obtained from photonMediatedTransmission function is also the transmission induced by the photo illumination because I find the transmission is always zero for photon_energy = 0.0 eV.

Am I right?

(3) However, when I integrate the transmission obtained from photonMediatedTransmission function, the result is very different from the one obtained by Photocurrent module (from Photocurrent Report). Can you give some hints?

With best regards,

/Guang-Ping Zhang

General Questions and Answers / Re: photocurrent
« on: July 19, 2021, 05:35 »
Convergence checks should be performed for the usual DFT settings.
When a good DFT simulation has been performed the kpoints and energies/energy_resolution used in the Photocurrent calculation should be checked.

A bias voltage is included in the usual way through the device calculator. Then one perform the calculation of the Photocurrent for each separate and converged device configuration at a given bias voltage.

The Photocurrent object has a query function "photocurrent.photonMediatedTransmission(photon_mode,...)" that can be used to obtain the transmissions as a function of energy for a selected photon energy index "photon_mode".
Please see the reference manual entry for Photocurrent for full description of the inputs to this query function:

Dear Tue Gunst,

I also want to obtain the photon mediated transmission like that in Figure 6c of your paper [Nano Letters 2018 18 (11), 7275-7281]. However, when I use the following script in the .py input file, nothing obtianed except the photocurrent. Can you kindly give some help? thanks!

# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
device_configuration = nlread('Au-Ben-Au-0.0.hdf5')[1]

# -------------------------------------------------------------
# Photocurrent
# -------------------------------------------------------------
kpoints = MonkhorstPackGrid()

photocurrent = Photocurrent(
    energies=numpy.linspace(-2, 2, 101)*eV,
    photon_energies=numpy.linspace(0, 5, 10)*eV,
    photon_polarization=[0+0j, 0+0j, 1+0j],
nlsave('Au-Ben-Au-0.0-PC.hdf5', photocurrent)



Dear ATK developers and users:

I want to know for a two-probe single-molecule junction, in the Class of Photocurrent,
(1) which region of the junction the photo illuminated on? That is, in the calculation, which region of the excitation is considered?
(2) Is the output photocurrent the current only induced by photon? That is, it does not include the current without photo illumination?
(3) How to get the photon-mediated transmission by using photonMediatedTransmission function? Can you give me an example?
(4) How to deal with the photocurrent calculations for a finite bias voltage applied on the junction? Specifically, how to set the energy lower and upper boundaries for the calculations with respect to a series of photons.

Thanks very much.

/Guang-Ping Zhang

Dear ATK developers:

Recently, I have dug on the function of photocurrent implemented in QuantumATK 2018.06. But, I have a few confusing questions about this function.

1) The manual gives the formula about how to calculate photocurrent,

I_{\alpha, \sigma} = \frac{e}{\hbar}\int \frac{dE}{2\pi}\sum_{k} T_\alpha(E, k, \sigma).

What are the lower and upper limits of the integral?

2) The obtained photocurrent from the above formula is just a photo induced current, which is a correction to the bias induced correction, Right? That is, the photocurrent does not contains the bias induced current.

3) How does the photocurrent flow, that is the flow direction, through a molecular junction, for zero bias and a finite bias?

4) On can only include the bias effect on photocurrent by using a *hdf5 file for a two probe junction converged under a bias?

Can you please kindly provide some more elementary tutorials or instructions or readings on photocurrent about, for example, the mechanism, etc.

With best regards,

/Guang-Ping Zhang

If you set the confinement start radius and the radial cutoff radius very close one another, and increase the confinement strength dramatic, you will effectively have
a Sankey Hard Well potential.

Dear Nordland,

Another question on this topic is that how can I tune the radial_cutoff_radius to a very small value? When I tried to set is to a small value, such as 0.5 Bohr, ATK will abort.

With best regards,

/Guang-Ping Zhang

Width of transmission resonances related to the HOMO and LUMO energy levels of the molecule is a measure of the coupling. In the limit of fully-decoupled molecule, the  width goes to zero, as well as the coupling. This must be seen in the Transmission Spectrum, which can be computed in both 2015 and 2018 versions. If you use some simple  tight-binding model, you may then try fitting parameters of that model to ab initio data obtained from QuantumATK Transmission spectrum. As an example of how ab initio derived conductance calculations can be interpreted using a tight-binding model, see Phys. Rev. B 74, 165416 (2006).  It shows how the charge transfer and the coupling may affect the electron transport through molecule-like junctions. I also note that there must be a plenty of this kind of empirical studies on molecular junctions in the literature.

Dear Petr Khomyakov,

Thanks for your kind reply. I will look into those references.

With best regards,

/Guang-Ping Zhang

It is hard to give any short answers to your questions. There is a vast literature on this topic. So, I would suggest you searching and reading books and papers to learn about it.

2015.1 version is too old, so it is missing many features we have now in the code. You may still try using electron density and electron difference density to quantify the charge redistribution upon sandwiching the molecule between the two electrodes, e.g., see how that is done for covered surfaces, Eq. (2) and (3) in Phys. Rev. B 79, 195425 (2009). For your information, there is no support for 2015 version any longer.

Dear Petr Khomyakov,

Thanks for your kind reply.

Is there any method that can directly give some evident for coupling strength between molecule and electrode in molecular junction by the recent version of ATK? We have updated our ATK-2015.1 to  ATK-2018.6 a few months ago.

With best regards.

/Guang-Ping Zhang

Let me introduce the question more detailly.

As figured out by our previous study (, the molecular levels (specifically LUMO) move away from the Fermi energy as the two electrodes separated (molecule-electrode coupling decreases).

This phenomenon has also been observed by other researchers ( and

However, this energy shift of molecular level respected to the Fermi level is not thorough understood.

The possible reasons are:

1) Coupling strength between the molecule and electrodes, which is also used in the references to explain this phenomenon.
2) Charge transfer between the electrodes and molecule.
3) ... Some other reasons

But, there is no substantial evident to confirm which above or other reason is the underlying driving force for the molecule level shift.

Now, I want to give a clear answer by using ATK package.

But, I encountered difficulty.

1) How to quantitatively describe the coupling between molecule and electrodes in a single-molecule junction in ATK?
One possible way, using the Gamma function (obtained from the broaden of PDOS).
For this way, I have tried to get the Gamma function for each molecular orbitals with the interelectrode distance. The results show that Gamma does not necessarily have relationship with the energy level shift. To be more specific, for example there are three molecular orbitals (LUMO, LUMO+1, LUMO+2) rigidly move away from the Fermi energy when the electrode distance is stretched. Gamma for LUMO decreases with electrode distance, but Gamma for LUMO+1 increases with electrode distance. This suggests that Gamma is not a good quantity to describe the molecular level shift.

On the other hand, according to the Green's function formula, the molecule energy shift is directly come from the real part of the self-energy. So, is it possible that the real part of the self-energy matrix is closely related to the electrode distance? If so, what is the physics?

2) How to get the charge for the molecule in a molecular junction with different electrode distance? I find one can not used the "Bader Charge Analysis" tool in ATK 2015.1


So, what can I do further, any suggestions?

With best regards,

/Guang-Ping Zhang


I wonder, in ATK, is there a more convenient and reliable method to describe the coupling strength between electrodes and molecule in a molecular junction ?

In QuantumATK, the coupling between the electrode and the scattering region (e.g., a molecule) is rigorously treated using the NEGF procedure for taking care of open boundary conditions. The coupling strength is reliably described by this procedure. Describing the coupling with a scalar is way less reliable compared to what is implemented in QuantumATK, since the coupling is supposed to be described with a matrix that actually depends on the energy and momentum of incoming electrons. And this is how QuantumATK treats the coupling between the electrode and the molecule.   


Dear ATK staff and ATK users,

I want to quantitatively to describe the coupling strength between electrodes and the sandwiched molecule in a molecular junction. I have searched the forum and found this topic in 2016

However, this topic did not give a explicit solution to this question.

I also tried to used "calculateSelfEnergy" function to get the self-energy from one electrode and then to get the energy level broadening. But I found, the self-energy and an specific energy is a matrix, which can not be used directly. Indeed, I want to use a scalar number.

Another way, as far as I know, is to used PDOS to get the broadening a specific energy, which is a scalar number.

I wonder, in ATK, is there a more convenient and reliable method to describe the coupling strength between electrodes and molecule in a molecular junction ?

With best regards,

/Guang-Ping Zhang


If I divide the right electrode into layers with out-of-plane direction along the z-axis, the right electrode does not look like periodic in the z-direction.

Dear Petr Khomyakov,

Thanks very much for your reply. As shown in the attached figure, the vector A of the right electrode has a projection along z direction. Meanwhile, as shown in (b), it can be periodic. If I understand correct, in this case, ATK can not solve this case.

Thanks very much.

/Guang-Ping Zhang

QuantumATK assumes that the electrodes attached to the central region of the device are periodic in the C (z)-direction. If you cannot make them periodic, then you will not be able to do transport calculations for such as a system, using the current implementation of the NEGF formalism in the QuantumATK.  One would have to implement a multiterminal NEGF approach for this kind of calculations, combined with a multigrid method.

Dear Petr Khomyakov,

Thanks for your reply.
It should be pointed that it is periodic for the right electrode in the C (z)-direction. Meanwhile, the point is that the vector A of the right electrode has a projection along z-direction. Is it allowed in ATK?

With best regards,

/Guang-Ping Zhang

Dear ATK supporters,

I am wondering whether ATK can calculate a two-probe system with bend angle, like the one in the following article!divAbstract

Thanks in advance.

/Guang-Ping Zhang

Hi Guang-Ping,

In ATK this can be achieved by using atomic compensation charges:

I am not sure of what you did in SIESTA, but from the ATK error it looks like that you are trying use a pseudo and a basis that have different number of valence electrons, N for the pseudo, N-1 for the basis. This can also be done in ATK, but in this case you have to generate a pseudopotential with N-1 electrons by yourself, to be consistent with the number of electrons specified in the basis. An atomic compensation charge placed on the nitrogen atom will give essentially the same result, without the need to modify the pseudo/basis.


Dear Daniele,

AtomicCompensationCharge works.

In SIESTA, I just use

%block ChemicalSpeciesLabel
  5   6    N+       
%endblock ChemicalSpeciesLabel

combined with a N+.psf that is copied from a normal N.psf file, and also a basis set for N+ that copied from a normal N.

%block PAO.Basis                 # Define Basis set
N+                    2                    # Species label, number of l-shells
 n=2   0   2                         # n, l, Nzeta
   4.071      2.905   
   1.000      1.000   
 n=2   1   2 P   1                   # n, l, Nzeta, Polarization, NzetaPol
   4.973      3.054   
   1.000      1.000         
%endblock PAO.Basis

I think this is equivalent to

compensation_charge = AtomicCompensationCharge([('N+', -1.0)])

With best regards,
/Guang-Ping Zhang

Pages: [1] 2 3 ... 13