Name

ExchangeCorrelation — Class for representing Exchange Correlation types

Synopsis

Namespace: NanoLanguage
ExchangeCorrelation(
exchange,
correlation,
hubbard_term,
number_of_spins
)

Description

The ExchangeCorrelation class is used to define the type of exchange-correlation used in the calculation, and whether the calculation should be polarized or non-polarized.

ExchangeCorrelation Arguments

exchange

The exchange to be used.

Type: keyword

Default: must be specified
correlation

The correlation to be used.

Type: keyword

Default: must be specified
hubbard_term

The Hubbard term to add.

Type: Onsite | Dual | None

Default: None
number_of_spins

The number of spins to be used in the calculation.

Type: positive integer

Default: 1

ExchangeCorrelation Methods

A ExchangeCorrelation object provides the following methods:

  • This object supports cloning. See the section called “Cloning of ATK Python objects”.

  • hubbardTerm(): Query method for getting the Hubbard term used

  • nlprint(stream): Print a string representation of the ExchangeCorrelation instance.

    stream

    The stream the bandstructure should be written to.

    Type: A stream that supports strings being written to using 'write'.

    Default: sys.stdout
  • numberOfSpins(): Query method for getting the number of spins

  • spinType(): Query method for getting the spin type

Usage Examples

Define a spin-polarized LDA+U calculation for Nickel with a Hubbard U of 4.6 eV on Nickel and using the Dual representation for the Hubbard term.

exchange_correlation = ExchangeCorrelation(exchange=DiracBloch,
                                         correlation=PerdewZunger,
                                         hubbard_term=Dual,
                                         number_of_spins=2)

basis_set = [LDABasis.Nickel_SingleZeta(hubbard_u=[4.6, 0.0]*eV)]

calculator = LCAOCalculator(exchange_correlation=exchange_correlation,
                            basis_set=basis_set)

Notes

A complete list of available keywords for the exchange and correlation parameters is available in the Reference section below.

The ExchangeCorrelation class can take parameters. Currently, this is only relevant for the TB09 meta-GGA functional, which takes a parameter c (cf. the section called “Meta-GGA”). If no value is specified, the value of c is automatically computed according to Eq. (3) in Ref. [39]. The following piece of code selects the TB09 functional with c=1.0 (recovering the Becke-Johnson potental [40]):

exchange_correlation = MGGA.TB09LDA(c=1.0)
calculator = LCAOCalculator(exchange_correlation=exchange_correlation)

For molecular systems containing hydrogen, the default initial scaled spin values of 1.0 for a spin polarized calculation may cause the density of one of the spin components to be zero. For some of the GGA functionals relying for their implementation on the Libxc library there is a known issue for such systems. This has been confirmed using Becke88 exchange but may also be present in other functionals. The zero electron density causes numerical errors in the exchange correlation potential resulting in ill-behaved convergence. The practical solution to this issue is to explicitly set the initial scaled spin value to 0.999, or use random initial spin.

Further details of the Hubbard U correction can be found in the section called “XC+U mean-field Hubbard term”

Abbreviations

The most common functionals may be specified through abbreviations of the format L[S]DA[U].XCTYPE or [S][M]GGA[U].XCTYPE, where XCTYPE specifies the parametrization of the functional according to the tables below, S selects the spin-polarized version, and U enables the use of the Hubbard model.

The abbreviations are shorthand notations for a full, predefined ExchangeCorrelation class. Thus setting

exchange_correlation=LSDA.PZ

is identical to specifying

exchange_correlation=ExchangeCorrelation(
    exchange=DiracBloch,
    correlation=PerdewZunger,
    number_of_spins=2,
    ) 

Table 15: Available abbreviations for specifying LDA functionals. The exchange part is always DiracBloch.

XCTYPE Correlation
WIGNER WignerParametrization
XA SlatersXAlpha
RPA RandomPhaseApproximation
HL HedinLundqvist
PZ PerdewZunger
PW PerdewWang

Table 16: Available abbreviations for specifying GGA functionals.

XCTYPE Exchange Correlation
PBE PerdewBurkeErnzerhofExchange PerdewBurkeErnzerhofCorrelation
RPBE RevisedPerdewBurkeErnzerhofExchange PerdewBurkeErnzerhofCorrelation
PBES PerdewBurkeErnzerhofSolids PerdewBurkeErnzerhofCorrelationSolids
BLYP Becke88 LeeYangParr
XLYP XuGoddard LeeYangParr
PW91 PerdewWang91 PerdewWang91Correlation
BPW91 Becke88 PerdewWang91Correlation
BP86 Becke86 Perdew86

Table 17: Available abbreviations for specifying meta-GGA functionals. Note that the correlation is LDA-based.

XCTYPE Exchange Correlation
TB09LDA TB09Exchange PerdewZunger

References

ATK uses the Libxc library for exchange and correlation. In the following tables we list the parameterization that are available in ATK 12.2.0, along with the corresponding entity used in the Libxc documentation, and with references to the original articles.

Table 18: Available LDA Exchange parametrizations in ATK


Table 19: Available LDA Correlation parametrizations in ATK

Keyword Libxc entity Description and references

Attacalite

XC_LDA_C_2D_AMGB
(was XC_LDA_C_AMGB)

GunnarssonLundqvist

XC_LDA_C_GL

HedinLundqvist

XC_LDA_C_HL

ModifiedPerdewWang

XC_LDA_C_PW_MOD

Perdew & Wang (Modified)
Added extra digits to some constants as in the PBE routine (http://dft.uci.edu/pubs/PBE.asc)
JP Perdew and Y Wang, Phys. Rev. B 45, 13244 (1992)

ModifiedPerdewZunger

XC_LDA_C_PZ_MOD

Perdew & Zunger (Modified)
Modified to improve the matching between the low and high rs parts
Perdew and Zunger, Phys. Rev. B 23, 5048 (1981)

OrtizBallone

XC_LDA_C_OB_PZ

OrtizBallonePerdewWang

XC_LDA_C_OB_PW

PerdewWang

XC_LDA_C_PW

PerdewZunger

XC_LDA_C_PZ

PittalisRasanenMarques

XC_LDA_C_2D_PRM
(was XC_LDA_C_PRM08)

RandomPhaseApproximation

XC_LDA_C_RPA

SlatersXAlpha

XC_LDA_C_XALPHA

Slater's Xa (X-alpha)

WignerParametrization

XC_LDA_C_WIGNER

VonBarthHedin

XC_LDA_C_vBH

VoskoWilkNussair

XC_LDA_C_VWN

VoskoWilkNussairRPA

XC_LDA_C_VWN_RPA


Table 20: Available GGA Exchange parametrizations in ATK

Keyword Libxc entity Description and references

AdamoBarone

XC_GGA_X_mPW91

Modified form of PW91 by Adamo & Barone
C Adamo and V Barone, J. Chem. Phys. 108, 664 (1998)

ArmientoMattsson

XC_GGA_X_AM05

Becke86

XC_GGA_X_B86

Becke88

XC_GGA_X_B88

FilatovThiel97

XC_GGA_X_FT97_A

Gill96

XC_GGA_X_G96

GradientModifiedBecke86

XC_GGA_X_B86_MGC

Becke 86 Xalfa,beta,gamma (with mod. grad. correction)
AD Becke, J. Chem. Phys 84, 4524 (1986)
AD Becke, J. Chem. Phys 85, 7184 (1986)

HammerHansenNorskov

XC_GGA_X_RPBE

HandyCohen

XC_GGA_X_OPTX

KressDePristo

XC_GGA_X_DK87_R1

LacksGordon93

XC_GGA_X_LG93

Madsen

XC_GGA_X_PBEA

ModifiedAdamoBarone

XC_GGA_X_MPBE

ModifiedFilatovThiel97

XC_GGA_X_FT97_B

PerdewBurkeErnzerhofExchange

XC_GGA_X_PBE

PerdewBurkeErnzerhofSolids

XC_GGA_X_PBE_SOL

PerdewWang86

XC_GGA_X_PW86

PerdewWang91

XC_GGA_X_PW91

RevisedBecke86

XC_GGA_X_B86_R

RevisedKressDePristo

XC_GGA_X_DK87_R2

RevisedPerdewBurkeErnzerhofExchange

XC_GGA_X_PBE_R

WuCohen

XC_GGA_X_WC

XuGoddard

XC_GGA_X_XPBE


Table 21: Available GGA Correlation parametrizations in ATK

Keyword Libxc entity Description and references

ArmientoMattssonCorrelation

XC_GGA_C_AM05

ExtendedXuGoddard

XC_GGA_C_XPBE

LangrethMehl

XC_GGA_C_LM

LeeYangParr

XC_GGA_C_LYP

Perdew86

XC_GGA_C_P86

PerdewBurkeErnzerhofCorrelation

XC_GGA_C_PBE

PerdewBurkeErnzerhofCorrelationSolids

XC_GGA_C_PBE_SOL

PerdewWang91Correlation

XC_GGA_C_PW91


Table 22: Available Meta-GGA Exchange parametrizations in ATK

Keyword Libxc entity Description and references

TB09Exchange

XC_MGGA_X_TB09