QuantumATK Forum
QuantumATK => General Questions and Answers => Topic started by: zhangguangping on April 29, 2018, 10:15
-
Dear ATK supporters,
I now wonder how can I use a different number of valence electrons for a specific atom. To be specific, I want to use 4/5 valence electrons for nitrogen atom that uses the basis set and pseudopotential of a normal nitrogen (that is N+/N- atom). This trick will be a little different from charging this system, and it will localize this charge to the N+/N- atom. However, in ATK, I got the following WARNING and the code stops:
Exception: The number of electrons (4.000000) specified is not equal to the number of electrons in the pseudo-potential (5.000000).
However, I can do this in SIESTA code, and get an expected result, where the N+ atom has 3.941 valence electrons while N- has 5.513 valence electrons).
In some calculation, it is necessary to calculate a charged system, where the net charge spatially localized on a specific atom. So, how can I do such calculations in ATK?
With best regards,
/Guang-Ping Zhang
-
Hi Guang-Ping,
In ATK this can be achieved by using atomic compensation charges:
https://docs.quantumwise.com/manuals/Types/AtomicCompensationCharge/AtomicCompensationCharge.html
https://docs.quantumwise.com/manuals/technicalnotes/doping_methods/doping_methods.html
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.
Regards,
Daniele
-
Hi Guang-Ping,
In ATK this can be achieved by using atomic compensation charges:
https://docs.quantumwise.com/manuals/Types/AtomicCompensationCharge/AtomicCompensationCharge.html
https://docs.quantumwise.com/manuals/technicalnotes/doping_methods/doping_methods.html
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.
Regards,
Daniele
Dear Daniele,
Thanks very much for your reply, especially on weekends. I will try the method you mentioned.
As I understand,
compensation_charge = AtomicCompensationCharge([[Silicon, -0.0005]])
bulk_configuration.setExternalPotential(compensation_charge)
will make the pseudo potential of Silicon more repulsive (the core ion looses 0.0005 |e| charge), which leads to the number of valence electrons for each Silicon atom decreases by 0.0005. And hence a p-doping is simulated.
With best regards,
/Guang-Ping Zhang
-
Hi Guang-Ping,
In ATK this can be achieved by using atomic compensation charges:
https://docs.quantumwise.com/manuals/Types/AtomicCompensationCharge/AtomicCompensationCharge.html
https://docs.quantumwise.com/manuals/technicalnotes/doping_methods/doping_methods.html
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.
Regards,
Daniele
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)])
molecule_configuration.setExternalPotential(compensation_charge)
With best regards,
/Guang-Ping Zhang
-
Hi Guang-Ping,
Yes, your understanding of the atomic compensation charge method is correct. I am happy that it works for your needs :)
Regards,
Daniele.