Author Topic: Negative Mulliken Population  (Read 4987 times)

0 Members and 1 Guest are viewing this topic.

Offline Nayab Shiraz

  • Heavy QuantumATK user
  • ***
  • Posts: 51
  • Country: us
  • Reputation: 0
    • View Profile
Negative Mulliken Population
« on: April 2, 2020, 16:41 »
Hello everyone

I need some information about what negative mulliken population means? Also in general how to calculate charge transfer from Mulliken population analysis?

Offline Daniele Stradi

  • Supreme QuantumATK Wizard
  • *****
  • Posts: 286
  • Country: dk
  • Reputation: 3
    • View Profile
Re: Negative Mulliken Population
« Reply #1 on: April 6, 2020, 07:55 »
Hi Nayab,

Mulliken population is not supposed to be negative, but I have seen this happening in few circumstances in which the population was supposed to be zero, such as when using ghost atoms. Could you attach a sample of your input file that shows the problem ?

Best
Daniele

Offline Nayab Shiraz

  • Heavy QuantumATK user
  • ***
  • Posts: 51
  • Country: us
  • Reputation: 0
    • View Profile
Re: Negative Mulliken Population
« Reply #2 on: April 14, 2020, 22:50 »
# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Bulk Configuration
# -------------------------------------------------------------

# Set up lattice
vector_a = [17.8336117435, 0.0, 0.0]*Angstrom
vector_b = [0.0, 17.8336117435, 0.0]*Angstrom
vector_c = [0.0, 0.0, 4.26258]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
elements = [Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
            Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
            Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
            Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
            Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon]

# Define coordinates
fractional_coordinates = [[ 0.719630545292,  0.5           ,  0.666666666667],
                          [ 0.708881061277,  0.567869570979,  0.833333333333],
                          [ 0.719630545292,  0.5           ,  0.333333333333],
                          [ 0.677684843625,  0.629095595475,  0.666666666667],
                          [ 0.629095595475,  0.677684843625,  0.833333333333],
                          [ 0.708881061277,  0.567869570979,  0.166666666667],
                          [ 0.677684843625,  0.629095595475,  0.333333333333],
                          [ 0.567869570979,  0.708881061277,  0.666666666667],
                          [ 0.5           ,  0.719630545292,  0.833333333333],
                          [ 0.629095595475,  0.677684843625,  0.166666666667],
                          [ 0.567869570979,  0.708881061277,  0.333333333333],
                          [ 0.432130429021,  0.708881061277,  0.666666666667],
                          [ 0.370904404525,  0.677684843625,  0.833333333333],
                          [ 0.5           ,  0.719630545292,  0.166666666667],
                          [ 0.432130429021,  0.708881061277,  0.333333333333],
                          [ 0.322315156375,  0.629095595475,  0.666666666667],
                          [ 0.291118938723,  0.567869570979,  0.833333333333],
                          [ 0.370904404525,  0.677684843625,  0.166666666667],
                          [ 0.322315156375,  0.629095595475,  0.333333333333],
                          [ 0.280369454708,  0.5           ,  0.666666666667],
                          [ 0.291118938723,  0.432130429021,  0.833333333333],
                          [ 0.291118938723,  0.567869570979,  0.166666666667],
                          [ 0.280369454708,  0.5           ,  0.333333333333],
                          [ 0.322315156375,  0.370904404525,  0.666666666667],
                          [ 0.370904404525,  0.322315156375,  0.833333333333],
                          [ 0.291118938723,  0.432130429021,  0.166666666667],
                          [ 0.322315156375,  0.370904404525,  0.333333333333],
                          [ 0.432130429021,  0.291118938723,  0.666666666667],
                          [ 0.5           ,  0.280369454708,  0.833333333333],
                          [ 0.370904404525,  0.322315156375,  0.166666666667],
                          [ 0.432130429021,  0.291118938723,  0.333333333333],
                          [ 0.567869570979,  0.291118938723,  0.666666666667],
                          [ 0.629095595475,  0.322315156375,  0.833333333333],
                          [ 0.5           ,  0.280369454708,  0.166666666667],
                          [ 0.567869570979,  0.291118938723,  0.333333333333],
                          [ 0.677684843625,  0.370904404525,  0.666666666667],
                          [ 0.708881061277,  0.432130429021,  0.833333333333],
                          [ 0.629095595475,  0.322315156375,  0.166666666667],
                          [ 0.677684843625,  0.370904404525,  0.333333333333],
                          [ 0.708881061277,  0.432130429021,  0.166666666667]]

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
k_point_sampling = MonkhorstPackGrid(
    nc=6,
    )
numerical_accuracy_parameters = NumericalAccuracyParameters(
    density_mesh_cutoff=55.0*Hartree,
    k_point_sampling=k_point_sampling,
    )

calculator = LCAOCalculator(
    numerical_accuracy_parameters=numerical_accuracy_parameters,
    )

bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('(10,0) Carbon Nanotube.hdf5', bulk_configuration)

# -------------------------------------------------------------
# Mulliken Population
# -------------------------------------------------------------
mulliken_population = MullikenPopulation(bulk_configuration)
nlsave('(10,0) Carbon Nanotube.hdf5', mulliken_population)
nlprint(mulliken_population)

Offline Nayab Shiraz

  • Heavy QuantumATK user
  • ***
  • Posts: 51
  • Country: us
  • Reputation: 0
    • View Profile
Re: Negative Mulliken Population
« Reply #3 on: April 14, 2020, 22:51 »
For example, I wrote a simple script above where I calculate Mulliken population for CNT(10,0). Even in this one some shells have negative numbers.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: Negative Mulliken Population
« Reply #4 on: April 21, 2020, 01:09 »
Mulliken populations are a rather crude tool, it's more a numerical thing than a physical concept. So negative numbers for shells is not too uncommon. What were you intending to use the numbers for`? Are the negative values small or large? Maybe increasing the k-point in C improves it a bit, your value is rather low for a 4.3 Å long cell, but I am not sure about the relation to Mulliken exactly (would actually be interesting if there is a relation, so please report back).