QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: Nayab Shiraz on April 2, 2020, 16:41

Title: Negative Mulliken Population
Post by: Nayab Shiraz 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?
Title: Re: Negative Mulliken Population
Post by: Daniele Stradi 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
Title: Re: Negative Mulliken Population
Post by: Nayab Shiraz 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)
Title: Re: Negative Mulliken Population
Post by: Nayab Shiraz 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.
Title: Re: Negative Mulliken Population
Post by: Anders Blom 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).