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!