1#!/usr/bin/env python
2#
3# Author: Qiming Sun <osirpt.sun@gmail.com>
4#
5
6'''
7When HOMO and LUMO orbitals are degenerated or quasi-degenerated, fill
8fractional number of electrons in the degenerated orbitals.
9'''
10
11from pyscf import gto, scf
12
13#
14# pi_x*, pi_y* degeneracy in the restricted HF calculation.  The occupancy on
15# pi_x* and pi_y* are set to 1.
16#
17mol = gto.M(atom='O 0 0 0; O 0 0 1')
18mf = scf.RHF(mol)
19mf.verbose = 4
20mf = scf.addons.frac_occ(mf)
21mf.kernel()
22
23#
24# One electron needs to be put in the degenerated pi_x*, pi_y* orbitals.  The
25# occupancy on pi_x* and pi_y* are set to 0.5.
26#
27mol = gto.M(atom='O 0 0 0; O 0 0 1', charge=1, spin=1)
28mf = scf.rhf.RHF(mol)
29mf.verbose = 4
30mf = scf.addons.frac_occ(mf)
31mf.kernel()
32
33#
34# In the ROHF method, one alpha electron needs to be put in the degenerated
35# pi_x*, pi_y* orbitals.
36#
37mol = gto.M(atom='O 0 0 0; O 0 0 1', charge=2, spin=2)
38mf = scf.rohf.ROHF(mol)
39mf.verbose = 4
40mf = scf.addons.frac_occ(mf)
41mf.kernel()
42
43#
44# One alpha electron in the degenerated pi_x*, pi_y* orbitals for UHF method.
45#
46mol = gto.M(atom='O 0 0 0; O 0 0 1', charge=1, spin=1)
47mf = scf.UHF(mol)
48mf.verbose = 4
49mf = scf.addons.frac_occ(mf)
50mf.kernel()
51
52