QuantumATK Forum
QuantumATK => General Questions and Answers => Topic started by: hol28 on July 21, 2012, 18:19
-
Hi everyone,
I want to use the ATK to calculate the mulliken population, so I did a simple test on a HCl molecule. The result is:
Mulliken Population Report |
| |
| ---------------------------------------------------------------------------- |
| | |
| Element Total Shell | Orbitals |
| | |
| | s |
| 0 H 1.044 0.129 | 0.129 |
| | s |
| 0.773 | 0.773 |
| | y z x |
| 0.142 | 0.058 0.042 0.042 |
| | --------------------------------------------------- |
| | s |
| 1 Cl 6.956 0.090 | 0.090 |
| | y z x |
| 0.630 | 0.153 0.239 0.239 |
| | s |
| 1.674 | 1.674 |
| | y z x |
| 4.525 | 1.091 1.717 1.717 |
| | xy zy zz-rr zx xx-yy |
| 0.037 | 0.002 0.002 0.008 0.000 0.025 |
+------------------------------------------------------------------------------+
But as is know, for the HCl, the result should be H+ and Cl- and the electrons for H and Cl should be 0.0 and 8.0, respectively.
My input file is:
# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
# Set up lattice
vector_a = [10.0, 0.0, 0.0]*Angstrom
vector_b = [0.0, 10.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 9.999945]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)
# Define elements
elements = [Hydrogen, Chlorine]
# Define coordinates
cartesian_coordinates = [[ 5. , 4.36 , 4.9999725],
[ 5. , 5.64 , 4.9999725]]*Angstrom
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
cartesian_coordinates=cartesian_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = GGABasis.DoubleZetaPolarized
#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = GGA.PW91
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=(10, 10, 10),
)
calculator = LCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=numerical_accuracy_parameters,
)
bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('HCl.nc', bulk_configuration)
# -------------------------------------------------------------
# Mulliken population
# -------------------------------------------------------------
mulliken_population = MullikenPopulation(bulk_configuration)
nlsave('HCl.nc', mulliken_population)
nlprint(mulliken_population)
Could anyone give me any suggestions? Look forward to your reply! Thanks!
-
A couple of things that is wrong:
- In the calculation you setup is very stange. Why do you calculate on H-Cl as bulk system with k-points when it is a molecule?
- In H-Cl the electron is not transfered to the Cl atom completly, so the 8 for Cl and 0 for H is not physical correct. For simple explanation, first of all ionic bond only formed between metal and non-metal. But both Cl and H are non-metal . So actually HCl forms polar covalent bond. Cl is large and has very high electronegativity compared to H. Thus the electron cloud tends to move towards Cl. Thats why it is polar. but the electrons is not so localized that they are not orbiting the hydrogen atom as well.
- The mulliken population is not amount of electrons on that atom. Mulliken is a projection of the density matrix onto the orbitals of your basis set
- You can for reference check this result from Gaussian orbitals http://www.southampton.ac.uk/~compchem/other/CHEM3023/chem3023_L7.pdf and you will see that the mulliken population is more tool for inspecting that basis set that telling who owns what charge.
-
Hi Nordland,
Thanks for your patient reply.
(1) I put the molecule HCl in a large enough box so that there are no interactions among the neighboring molecules and treat it as a periodic bulk. I think this can simulate the situation of a molecule HCl.
(2) Yes, you are right. In H-Cl the electron is not transfered to the Cl atom completly. In my original post, I got the result that H get partial electron from Cl. I think this is not reasonable. I have read the reference you recommended, the result therein is -0.17 for Cl and +0.17 for H. I finally got a similar result by changing the basis set in the input file.
Thanks again for your suggestions.
-
(1) I put the molecule HCl in a large enough box so that there are no interactions among the neighboring molecules and treat it as a periodic bulk. I think this can simulate the situation of a molecule HCl.
Yes, but you were also using k-points which is incorrect if you want to treat as a molecule. If you setup your configuration as a molecule, it is automatically ensured that there is no interaction between neighboring cell, so you will not need to worry about setting any cell.
-
Hi Nordland,
Thank you for your suggestion. Since that's always the way to treat a molecule in other software, I'm used to use that method.
Yes, I find in ATK the way to treat a molecule. That's great!
-
How about changing exchange_correlation from GGA.PW91 to GGA.PBE?
-
Hi nori:
I have tried the method you suggested. It just the same as GGA.PW91.
Thanks!