Example #1
0
from gpaw.xc.fxc_correlation_energy import FXCCorrelation
import numpy as np

a0  = 5.43
Ni = bulk('Ni', 'fcc')
Ni.set_initial_magnetic_moments([0.7])

kpts = monkhorst_pack((3,3,3))

calc = GPAW(mode='pw',
            kpts=kpts,
            occupations=FermiDirac(0.001),
            setups={'Ni': '10'}, 
            communicator=serial_comm)
Ni.set_calculator(calc)
E = Ni.get_potential_energy()
calc.diagonalize_full_hamiltonian(nbands=50)

rpa = RPACorrelation(calc)
E_rpa = rpa.get_rpa_correlation_energy(ecut=50,
                                       skip_gamma=True,
                                       gauss_legendre=8)

fxc = FXCCorrelation(calc, xc='RPA')
E_fxc = fxc.get_fxc_correlation_energy(ecut=50,
                                       skip_gamma=True,
                                       gauss_legendre=8)

equal(E_rpa, -7.826, 0.01)
equal(E_fxc, -7.827, 0.01)
Example #2
0
from ase import Atoms
from gpaw import GPAW, PW
from gpaw.mpi import serial_comm
from gpaw.test import equal
from gpaw.xc.fxc_correlation_energy import FXCCorrelation

ecut = 50

He = Atoms('He')
He.center(vacuum=1.0)

calc = GPAW(mode=PW(force_complex_dtype=True),
            xc='PBE',
            communicator=serial_comm)
He.set_calculator(calc)
He.get_potential_energy()
calc.diagonalize_full_hamiltonian()

ralda = FXCCorrelation(calc, xc='rALDA')
C6_ralda, C6_0 = ralda.get_C6_coefficient(ecut=ecut, direction=2)

equal(C6_0, 1.772, 0.01)
equal(C6_ralda, 1.609, 0.01)
Example #3
0
from ase import *
from ase.structure import molecule
from gpaw import *
from gpaw.mpi import serial_comm
from gpaw.test import equal
from gpaw.xc.fxc_correlation_energy import FXCCorrelation

ecut = 50

He = Atoms('He')
He.center(vacuum=1.0)

calc = GPAW(mode='pw',
            dtype=complex,
            xc='PBE',
            communicator=serial_comm)
He.set_calculator(calc)
He.get_potential_energy()
calc.diagonalize_full_hamiltonian()

ralda = FXCCorrelation(calc, xc='rALDA')
C6_ralda, C6_0 = ralda.get_C6_coefficient(ecut=ecut,
                                          direction=2)

equal(C6_0, 1.772, 0.01)
equal(C6_ralda, 1.609, 0.01)
Example #4
0
H2.center()
calc = GPAW(mode=PW(210),
            eigensolver='rmm-diis',
            dtype=complex,
            #spinpol=True,
            xc='LDA',
            basis='dzp',
            nbands=8,
            convergence={'density': 1.e-6})
H2.set_calculator(calc)
H2.get_potential_energy()
calc.diagonalize_full_hamiltonian(nbands=80, scalapack=scalapack1)
calc.write('H2.gpw', mode='all')
calc = GPAW('H2.gpw', communicator=serial_comm, txt=None)
ralda = FXCCorrelation(calc,
                       xc='rALDA',
                       )
Ec_H2 = ralda.get_fxc_correlation_energy(ecut=200,
                                         directions=[[0, 2/3.], [2, 1/3.]])

# H ---------------------------------------
H = Atoms('H', [(0,0,0)])
H.set_pbc(True)
H.set_cell((2., 2., 3.))
H.center()
calc = GPAW(mode=PW(210),
            eigensolver='rmm-diis',
            dtype=complex,
            xc='LDA',
            basis='dzp',
            nbands=4,
Example #5
0
Ni.set_initial_magnetic_moments([0.7])

kpts = monkhorst_pack((3,3,3))

calc = GPAW(mode='pw',
            kpts=kpts,
            occupations=FermiDirac(0.001),
            setups={'Ni': '10'}, 
            communicator=serial_comm)

Ni.set_calculator(calc)
E = Ni.get_potential_energy()
calc.diagonalize_full_hamiltonian(nbands=50)

ralda = FXCCorrelation(calc,
                       xc='rALDA',
                       method='solid')
E_solid = ralda.get_fxc_correlation_energy(ecut=50,
                                           gauss_legendre=8,
                                           skip_gamma=True,
                                           kcommsize=world.size)

ralda = FXCCorrelation(calc,
                       xc='rALDA',
                       method='standard',
                       unit_cells=[2,1,1],
                       )
E_standard = ralda.get_fxc_correlation_energy(ecut=50,
                                              gauss_legendre=8,
                                              skip_gamma=True,
                                              kcommsize=world.size)