Top Page > Browsing
Manual setting of occupation numbers
Date: 2016/10/12 20:51
Name: Jan-Niclas

Dear OpenMX users,

I am calculating the reaction energy of Pb with some larger organic molecules. Inspecting the output of atomic Pb I realized that the program did assign the ground state with degenerate p-Orbitals. Mulliken populations are:

1 Pb Up spin Down spin Sum Diff
px 0 0.333297502 0.333297502 0.666595004 0.000000000
py 0 0.333298322 0.333298322 0.666596645 0.000000000
pz 0 0.333298126 0.333298126 0.666596251 0.000000000

Now, this kind of result is unphysical. The ground state should be


1 Pb Up spin Down spin Sum
px 0 1.000000000 0.000000000 1.000000000
py 0 1.000000000 0.000000000 1.000000000
pz 0 0.000000000 0.000000000 0.000000000

Is it possible to specify and force a certain occupation within the input file?


Sincerely,
Jan-Niclas
メンテ
Page: [1]

Re: Manual setting of occupation numbers ( No.1 )
Date: 2016/10/14 18:36
Name: Artem Pulkin

So what is the point? If you know the ground state already why do you need all this DFT?

P.S. you may want to try starting from a magnetized configuration:

<Atoms.SpeciesAndCoordinates
6 Pb 0 0 0 10 4
Atoms.SpeciesAndCoordinates>

and consider non-collinear single-particle states

scf.spinpolarization nc
scf.spinorbit.coupling on

if you did not do it yet. LDA+U is also an option worth considering:

scf.Hubbard.U on
メンテ
Re: Manual setting of occupation numbers ( No.2 )
Date: 2016/10/14 19:00
Name: Jan-Niclas

I need the total energy of the real ground state to compare reaction energies.

I will try LDA+U.
メンテ
Re: Manual setting of occupation numbers ( No.3 )
Date: 2016/10/16 23:27
Name: T. Ozaki

Hi,

The spin-polarized GGA calculation gives the following result:

px 0 0.666666269 0.000000000 0.666666269 0.666666269
py 0 0.666666269 0.000000000 0.666666269 0.666666269
pz 0 0.666666253 0.000000000 0.666666253 0.666666253


The spin-polarized GGA calculation with U=3eV for 6p-states gives the following result:

px 0 0.997318130 0.000000000 0.997318130 0.997318130
py 0 0.999029839 -0.000000000 0.999029839 0.999029839
pz 0 0.003590601 -0.000000000 0.003590601 0.003590601

This might be what you want.

Regards,

TO
メンテ
Re: Manual setting of occupation numbers ( No.4 )
Date: 2016/10/18 06:03
Name: Jan-Niclas Luy  <luyj@students.uni-marburg.de>

Thank you for the reply.

I did the calculation as you said, but the output is still the one from simple spin-polarized GGA.

My input:

Species.Number 1
<Definition.of.Atomic.Species
Pb Pb10.0-s3p3d3f2 Pb_PBE13
Definition.of.Atomic.Species>

<Hubbard.U.values # eV
Pb 1s 0.0 2s 0.0 3s 0.0 4s 0.0 5s 0.0 6s 0.0 1p 0.0 2p 0.0 3p 0.0 4p 0.0 5p 3.0 1d 0.0 2d 0.0 3d 0.0
Hubbard.U.values>

#
# Atoms
#

Atoms.Number 1
Atoms.SpeciesAndCoordinates.Unit Ang # Ang|AU
<Atoms.SpeciesAndCoordinates
1 Pb 3.28697867679951 5.07481538722604 1.36656312952031 8.0 6.0 on
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit AU
#<Atoms.UnitVectors
# 10.0 0.0 0.0
# 0.0 10.0 0.0
# 0.0 0.0 10.0
#Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType GGA-PBE # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.SpinPolarization on # On|Off|NC
scf.Hubbard.U on # On|Off, default=off
scf.Hubbard.Occupation dual # onsite|full|dual, default=dual
scf.ElectronicTemperature 300.0 # default=300 (K)
scf.energycutoff 150.0 # default=150 (Ry)
scf.maxIter 50 # default=40
scf.EigenvalueSolver cluster # DC|GDC|Cluster|Band
scf.Kgrid 1 1 1 # means n1 x n2 x n3
scf.Mixing.Type rmm-diis # Simple|Rmm-Diis|Gr-Pulay|Kerker|Rmm-Diisk
scf.Init.Mixing.Weight 0.300 # default=0.30
scf.Min.Mixing.Weight 0.001 # default=0.001
scf.Max.Mixing.Weight 0.300 # default=0.40
scf.Mixing.History 6 # default=5
scf.Mixing.StartPulay 6 # default=6
scf.criterion 1.0e-6 # default=1.0e-6 (Hartree)


Sadly I am not familiar with the Hubbard model. Can you make a short comment on what the U value means and how it is obtained?

Best regards,
Jan-Niclas
メンテ
Re: Manual setting of occupation numbers ( No.5 )
Date: 2016/10/18 10:56
Name: T. Ozaki

Hi,

Using the following input, one can obtain the electronic state.

Regards,

TO


System.CurrrentDirectory ./ # default=./
System.Name Pb
level.of.stdout 1 # default=1 (1-3)
level.of.fileout 1 # default=1 (0-2)

Species.Number 1
<Definition.of.Atomic.Species
Pb Pb10.0-s3p3d3f2 Pb_PBE13
Definition.of.Atomic.Species>

<Hubbard.U.values # eV
Pb 1s 0.0 2s 0.0 3s 0.0 1p 3.0 2p 0.0 3p 0.0 1d 0.0 2d 0.0 3d 0.0 1f 0.0 2f 0.0
Hubbard.U.values>

#
# Atoms
#

Atoms.Number 1
Atoms.SpeciesAndCoordinates.Unit Ang # Ang|AU
<Atoms.SpeciesAndCoordinates
1 Pb 3.28697867679951 5.07481538722604 1.36656312952031 8.0 6.0 off
Atoms.SpeciesAndCoordinates>

Atoms.UnitVectors.Unit AU
#<Atoms.UnitVectors
# 10.0 0.0 0.0
# 0.0 10.0 0.0
# 0.0 0.0 10.0
#Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType GGA-PBE # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.SpinPolarization on # On|Off|NC
scf.Hubbard.U on # On|Off, default=off
scf.Hubbard.Occupation dual # onsite|full|dual, default=dual
scf.ElectronicTemperature 300.0 # default=300 (K)
scf.energycutoff 150.0 # default=150 (Ry)
scf.maxIter 100 # default=40
scf.EigenvalueSolver cluster # DC|GDC|Cluster|Band
scf.Kgrid 1 1 1 # means n1 x n2 x n3
scf.Mixing.Type rmm-diis # Simple|Rmm-Diis|Gr-Pulay|Kerker|Rmm-Diisk
scf.Init.Mixing.Weight 0.010 # default=0.30
scf.Min.Mixing.Weight 0.001 # default=0.001
scf.Max.Mixing.Weight 0.200 # default=0.40
scf.Mixing.History 40 # default=5
scf.Mixing.StartPulay 20 # default=6
scf.criterion 1.0e-6 # default=1.0e-6 (Hartree)
メンテ
Re: Manual setting of occupation numbers ( No.6 )
Date: 2016/10/18 18:46
Name: Jan-Niclas

Hello,

with that input I get:

px 0 0.257499315 -0.000000000 0.257499315 0.257499315
py 0 0.831181464 -0.000000000 0.831181464 0.831181464
pz 0 0.911256394 0.000000000 0.911256394 0.911256394
メンテ
Re: Manual setting of occupation numbers ( No.7 )
Date: 2016/10/18 22:31
Name: Eike F. Schwier  <schwier@hiroshima-u.ac>

Hello,

I quickly checked using Ozaki-senseis input file and openmx 3.8.0 (intel compiler)

Until I increase U on the p orbitals to around 6.5 eV I get the following occupations
(U=6.5 eV)
px 0 0.666665897 0.000000000 0.666665897 0.666665897
py 0 0.666665900 0.000000000 0.666665900 0.666665900
pz 0 0.666665573 0.000000000 0.666665573 0.666665573
sum over m 1.999997370 0.000000000 1.999997370 1.999997370

As a sidenote I get an inversion of the occupation around 6.5 eV with a fully occupied pz orbital
(U=6.75 eV)
px 0 0.499949335 -0.000000000 0.499949335 0.499949335
py 0 0.499953490 -0.000000000 0.499953490 0.499953490
pz 0 1.000060840 -0.000000000 1.000060840 1.000060840
sum over m 1.999963666 -0.000000000 1.999963666 1.999963666

and finally for 7 eV and higher I get the same occupation as in the above post
(U=7 eV)
px 0 0.999963616 0.000000000 0.999963616 0.999963616
py 0 0.999954419 0.000000000 0.999954419 0.999954419
pz 0 0.000028316 0.000000000 0.000028316 0.000028316
sum over m 1.999946350 0.000000000 1.999946350 1.999946350

However, I don't now why I need to increase so much more the U though ...


best regards,
Eike
メンテ
Re: Manual setting of occupation numbers ( No.8 )
Date: 2016/10/20 17:28
Name: T. Ozaki

Hi,

What I noticed during my trials is that getting SCF is not easy.
So, one may get different solutions depending on Ver. of OpenMX,
compiler options, and parameters of SCF. So, one should try to find
the proper ground state by controlling the keywords related to SCF.
Even if one gets several solutions, it is possible to determine
the ground state based on the total energy.

Regards,

TO
メンテ

Page: [1]

Title (must) Move the thread to the top
Your Name (must)
E-Mail (must)
URL
Password (used in modification of the submitted text)
Comment (must)

   Save Cookie