asr.gw

Summary

This is the documentation for asr.gw-recipe. This recipe is comprised of 4 instructions, namely:

Run this recipe through the CLI interface

$ asr run asr.gw

or as a python module

$ python -m asr.gw

Detailed description

DFT GW.

Steps

asr.gw:empirical_mean_z

asr.gw.empirical_mean_z(atoms, calculator={'charge': 0, 'convergence': {'bands': 'CBM+3.0'}, 'kpts': {'density': 12.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'nbands': '200%', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'gs.txt', 'xc': 'PBE'}, kptdensity=5.0, ecut=200.0, mode='G0W0', correctgw=True, empz=0.75)[source]

Apply the empirical-Z method.

Implements the method described in https://arxiv.org/abs/2009.00314.

This method consists of replacing the G0W0 Z-value with the empirical mean of Z-values (calculated from C2DB GW calculations) whenever the G0W0 is “quasiparticle-inconsistent”, i.e. the G0W0 Z is outside the interval [0.5, 1.0]. The empirical mean Z was found to be

Z0 = 0.75.

Pseudocode:

For all states:
if Z not in [0.5, 1.0]:

set GW energy = E_KS + Z0 * (Sigma_GW - vxc + exx)

The last line can be implemented as

new GW energy = E_KS + (Old GW - E_KS) * Z0 / Z

Parameters
  • atoms (ase.atoms.Atoms) –

  • calculator (dict) –

  • kptdensity (float) –

  • ecut (float) –

  • mode (str) –

  • correctgw (bool) –

  • empz (float) –

Return type

dict

asr.gw:gs

asr.gw.gs(atoms, calculator={'charge': 0, 'convergence': {'bands': 'CBM+3.0'}, 'kpts': {'density': 12.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'nbands': '200%', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'gs.txt', 'xc': 'PBE'}, kptdensity=5.0, ecut=200.0)[source]

Calculate GW underlying ground state.

Parameters
  • atoms (ase.atoms.Atoms) –

  • calculator (dict) –

  • kptdensity (float) –

  • ecut (float) –

Return type

asr.core.results.ASRResult

asr.gw:gw

asr.gw.gw(atoms, calculator={'charge': 0, 'convergence': {'bands': 'CBM+3.0'}, 'kpts': {'density': 12.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'nbands': '200%', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'gs.txt', 'xc': 'PBE'}, kptdensity=5.0, ecut=200.0, mode='G0W0')[source]

Calculate GW corrections.

Parameters
  • atoms (ase.atoms.Atoms) –

  • calculator (dict) –

  • kptdensity (float) –

  • ecut (float) –

  • mode (str) –

Return type

dict

asr.gw

asr.gw.main(atoms, calculator={'charge': 0, 'convergence': {'bands': 'CBM+3.0'}, 'kpts': {'density': 12.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'nbands': '200%', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'gs.txt', 'xc': 'PBE'}, bsrestart={'charge': 0, 'convergence': {'bands': 'CBM+3.0'}, 'kpts': {'density': 12.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'nbands': '200%', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'gs.txt', 'xc': 'PBE'}, kptpath=None, npoints=400, kptdensity=5.0, ecut=200.0, mode='G0W0', correctgw=True, empz=0.75)[source]
Parameters
Return type

asr.gw.Result

class asr.gw.Result(kvbm, cbm_gw_nosoc, vbm_gw_nosoc, efermi_gw_nosoc, kcbm_nosoc, gap_dir_gw_nosoc, gap_dir_gw, kcbm, cbm_gw, gap_gw_nosoc, gap_gw, vbm_gw, bandstructure, kvbm_nosoc, efermi_gw_soc)[source]
Parameters
  • kvbm (List[float]) –

  • cbm_gw_nosoc (float) –

  • vbm_gw_nosoc (float) –

  • efermi_gw_nosoc (float) –

  • kcbm_nosoc (List[float]) –

  • gap_dir_gw_nosoc (float) –

  • gap_dir_gw (float) –

  • kcbm (List[float]) –

  • cbm_gw (float) –

  • gap_gw_nosoc (float) –

  • gap_gw (float) –

  • vbm_gw (float) –

  • bandstructure (ase.spectrum.band_structure.BandStructure) –

  • kvbm_nosoc (List[float]) –

  • efermi_gw_soc (float) –

property bandstructure: ase.spectrum.band_structure.BandStructure

GW bandstructure.

Return type

ase.spectrum.band_structure.BandStructure

property cbm_gw: float

Conduction band minimum (G₀W₀) [eV]

Return type

float

property cbm_gw_nosoc: float

Conduction band minimum w/o soc. (G₀W₀) [eV]

Return type

float

property efermi_gw_nosoc: float

Fermi level w/o soc. (G₀W₀) [eV]

Return type

float

property efermi_gw_soc: float

Fermi level (G₀W₀) [eV]

Return type

float

property gap_dir_gw: float

Direct band gap (G₀W₀) [eV]

Return type

float

property gap_dir_gw_nosoc: float

Direct gap w/o soc. (G₀W₀) [eV]

Return type

float

property gap_gw: float

Band gap (G₀W₀) [eV]

Return type

float

property gap_gw_nosoc: float

Gap w/o soc. (G₀W₀) [eV]

Return type

float

property kcbm: List[float]

k-point of G₀W₀ conduction band minimum

Return type

typing.List[float]

property kcbm_nosoc: List[float]

k-point of G₀W₀ conduction band minimum w/o soc

Return type

typing.List[float]

property kvbm: List[float]

k-point of G₀W₀ valence band maximum

Return type

typing.List[float]

property kvbm_nosoc: List[float]

k-point of G₀W₀ valence band maximum w/o soc

Return type

typing.List[float]

property vbm_gw: float

Valence band maximum (G₀W₀) [eV]

Return type

float

property vbm_gw_nosoc: float

Valence band maximum w/o soc. (G₀W₀) [eV]

Return type

float