11.4.1.4.4. dftgwbse

Compute electronic excitations using GW-BSE The following table contains the defaults input options for the calculator, The default OPTIONAL means this option is switched off, if no input is given. REQUIRED arguments have to be specified, otherwise an error is thrown.

Property Name

Default Value

Description

Valid Input

job_name

system

Input file name without extension, also used for intermediate
files

dftpackage.name

xtp

Name of the DFT package

xtp
orca

dftpackage.charge

0

Molecular charge

int

dftpackage.spin

1

Molecular multiplicity

int+

dftpackage.basisset

def2-tzvp

Basis set for MOs

dftpackage.auxbasisset

OPTIONAL

Auxiliary basis set for RI

dftpackage.externalfield

OPTIONAL

Field given in x y z components

dftpackage.executable

OPTIONAL

Path to executable for dftpackage

dftpackage.ecp

OPTIONAL

Effective Core Potentials for DFT Calculations

dftpackage.optimize

false

Perform a molecular geometry optimization

bool

dftpackage.functional

XC_HYB_GGA_XC_PBEH

Exchange correlation functional used. You can also specify
an exchange and a correlation functional

dftpackage.scratch

/tmp/qmpackage

path to the scratch folder

dftpackage.polarization

false

Calculate polarisation

bool

dftpackage.dipole_spacing

0.1

Spacing for splitting multipoles into charges

float+

dftpackage.temporary_file

temp

Filename for temporary files without extension

dftpackage.convergence_tightness

tight

How accurate the dft self-consistency has to be

low
normal
tight
verytight

dftpackage.cleanup

files to remove after the calculation. Specify the fileextensions

dftpackage.initial_guess

atom

Method to use to make initial guess, independent(electrons)
or atom(densities) or previous calculation keyword orbfile
or dimer_guess (combine two monomer .orb files, see dimer_guess_orbA/orbB
below; closed-shell monomers work for restricted and unrestricted
runs, open-shell monomers need the unrestricted path)
independent
atom
orbfile
huckel
huckel_dft
dimer_guess

dftpackage.dimer_guess_orbA

Path to monomer A’s own, already-converged .orb file –
only read when initial_guess=dimer_guess. Monomer A’s
atoms must be an exact internal-geometry match (bond lengths/angles,
NOT absolute position – translation/rotation between
the standalone monomer and its placement in the dimer
is expected and fine) for the first N_A atoms of this
calculation’s own molecule.

dftpackage.dimer_guess_orbB

Same as dimer_guess_orbA, for monomer B – expected to
match this calculation’s own remaining atoms (after monomer
A’s own N_A atoms).

dftpackage.orca

orca specific keywords can be added here, where the xml
tag corresponds to the option and the value to the option’s
value

dftpackage.xtpdft.dft_in_dft.activeatoms

Indices of atoms in active region

dftpackage.xtpdft.dft_in_dft.threshold

0.4

Mulliken population above which orbital is considered
in the active region

dftpackage.xtpdft.dft_in_dft.levelshift

10000.0

Levelshift energy for the projection operator

dftpackage.xtpdft.dft_in_dft.truncate_basis

false

Truncate the basis-set to active atoms only

bool

dftpackage.xtpdft.dft_in_dft.truncation_threshold

1e-4

Threshold to convert an inactive atom to a border atom

float+

dftpackage.xtpdft.screening_eps

1e-9

screening eps

float+

dftpackage.xtpdft.overlap_tolerance

1e-8

Eigenvalues of the AO overlap matrix below this value
are removed from the orthogonalization (near linear dependencies;
the removed directions become zero orbitals at the top
of the spectrum). Raise to 1e-7 to 1e-6 if the log reports
a nearly singular overlap and the SCF is unstable.

float+

dftpackage.xtpdft.ri_pair_threshold

1e-10

RI only: basis-function shell pairs whose three-centre
integrals (P|ab) are bounded by less than this (Schwarz
bound) are not stored. Reduces the memory of the stored
RI tensor substantially for large molecules; energies
change at the level of the threshold. 0 stores all pairs.

float+

dftpackage.xtpdft.fock_matrix_reset

5

how often the fock matrix is reset

int+

dftpackage.xtpdft.integration_grid

medium

vxc grid quality

xcoarse
coarse
medium
fine
xfine

dftpackage.xtpdft.force_uks_path

false

forcing UKS path

bool

dftpackage.xtpdft.polarizability

false

After the SCF, compute the static dipole polarizability
tensor analytically (coupled-perturbed Kohn-Sham with
the three dipole operators; closed-shell states, LDA/GGA/global
hybrids) and store it in the orb (HDF5) file, e.g. as
the target for molpol (qmpackage xtp).

bool

dftpackage.xtpdft.compute_forces

false

Compute analytic ground-state DFT nuclear forces (RI,
and hybrid-exchange for UKS) and store them in the orb
(HDF5) file. Adds real cost to every converged SCF, so
this is opt-in.

bool

dftpackage.xtpdft.cdft.enabled

false

Enable a CDFT charge constraint on this calculation

bool

dftpackage.xtpdft.cdft.indices

Indices of atoms in the constrained fragment (0-based),
using the same range syntax already used for diabatization.xml’s
own fragment indices, e.g. ‘1 3 13:17’

dftpackage.xtpdft.cdft.charge

0.0

Target charge on the fragment, RELATIVE to its neutral
reference state (the sum of the fragment atoms’ own nuclear
charges) – e.g. +1.0 means one electron REMOVED from
the fragment (a cation), -1.0 means one electron ADDED
(an anion). Converted internally to an absolute target
electron count once, at setup time.

float

dftpackage.xtpdft.cdft.initial_lambda

0.0

Initial guess for the Lagrange multiplier lambda, used
as the center of the outer loop’s own bisection bracket

float

dftpackage.xtpdft.cdft.population_tolerance

1e-4

Outer-loop convergence criterion: the CDFT calculation
is considered converged once the achieved fragment population
is within this many electrons of the target

float+

dftpackage.xtpdft.cdft.max_iterations

50

Maximum number of outer (Lagrange-multiplier, bisection)
iterations – each one is a full, warm-started inner SCF

int+

dftpackage.xtpdft.cdft.guess_strategy

warmstart

How each outer bisection trial’s own inner SCF is started,
after the very first trial. ‘warmstart’ (default) reuses
the immediately PRECEDING trial’s own converged MOs (initial_guess
is forced to ‘orbfile’ internally) for every subsequent
trial – usually helps, since consecutive lambda values
are often close. ‘fresh’ instead re-uses the calculation’s
own original, top-level initial_guess setting for every
trial, never warm-starting from a previous lambda’s own
MOs at all – worth trying if warm-starting itself seems
to be part of a convergence difficulty (e.g. if consecutive
lambda trials correspond to substantially different electronic
structures, a previous trial’s own converged density could
be a worse starting point than a fresh guess, not a better
one).
warmstart
fresh

dftpackage.xtpdft.convergence.energy

1E-7

DeltaE at which calculation is converged

float+

dftpackage.xtpdft.convergence.method

DIIS

Main method to use for convergence accelertation

DIIS
mixing

dftpackage.xtpdft.convergence.DIIS_start

0.002

DIIS error at which DIIS takes over

float+

dftpackage.xtpdft.convergence.ADIIS_start

0.8

DIIS error at which ADIIS takes over

float+

dftpackage.xtpdft.convergence.DIIS_length

20

old hamiltonians to keep in history

int+

dftpackage.xtpdft.convergence.DIIS_maxout

false

if true remove the maximum element in the history if DIIS_length
is exceeded.Otherwise, the oldest element is removed.

bool

dftpackage.xtpdft.convergence.levelshift

0.0

levelshift to apply to hamiltonian

float+

dftpackage.xtpdft.convergence.levelshift_end

0.2

DIIS error at levelshifting is disabled

float+

dftpackage.xtpdft.convergence.max_iterations

100

max iterations to use

int+

dftpackage.xtpdft.convergence.error

1e-7

convergence error

float+

dftpackage.xtpdft.convergence.mixing

0.7

mixing parameter for linear mixing of density matrices

float+

dftpackage.xtpdft.convergence.mixing_end

0.8

DIIS error below which mixing is disabled – independent
of ADIIS_start (see ORCA’s own DampErr, kept independent
of DIISStart for the same reason: difficult systems benefit
from keeping mixing active well past the point where ADIIS/DIIS
themselves start being tried, not exactly until that same
point). Defaults to match ADIIS_start’s own default (0.8)
for backward compatibility – existing configurations
see identical behavior unless this is set explicitly.

float+

dftpackage.xtpdft.convergence.mixing_max

0.98

Ceiling mixing can adaptively ramp up toward as the SCF
struggles (see consecutive ADIIS failures), rather than
staying fixed at the base mixing value for an entire run.
Matches ORCA’s own DampMax (default 0.98, confirmed directly
from a real ORCA log’s own resolved SCF settings) – ORCA
ramps its own damping factor from a base (DampFac, 0.7
by default) up to this ceiling only when actually needed,
rather than paying the cost of heavy damping throughout.

float+

dftpackage.xtpdft.convergence.energy_reset

1.0

If the energy rises by more than this above the lowest
energy reached so far, the (A)DIIS history is discarded
and the SCF restarts, damped, from the lowest-energy density.
0 disables.

float+

dftpackage.xtpdft.convergence.second_order

auto

Second-order (trust-region augmented Hessian, TRAH) SCF
steps. auto: switch to them when (A)DIIS fails repeatedly
or the DIIS error stalls, then use them until convergence;
always: use them from the first iteration; off: never.
Exact analytic orbital Hessian for RKS and UKS (LDA/GGA
and global hybrids; spin-polarized f_xc for UKS); for
UKS with a functional without second derivatives in libxc,
finite differences of the Fock matrix (two Fock builds
per Hessian product).
auto
always
off

dftpackage.xtpdft.convergence.davidson_max_iter

50

Maximum number of micro-iterations (Hessian products)
per second-order (TRAH) step.

int+

mpsfile

OPTIONAL

MPS file to read from with external multipoles for embedding

guess

OPTIONAL

File to read the wave function if the use guess flag is
set to true

moguess

OPTIONAL

Orb file to read ONLY the MOs from (geometry still comes
from job_name.xyz, or from guess if that is also set)
– for warm-starting a geometry optimization step’s own
SCF from a PREVIOUS step’s converged wavefunction at a
different geometry, which guess itself cannot represent
since it loads geometry and MOs together from the same
file.

tasks

input,dft,parse,gwbse

task to compute

[guess
input
dft
parse
gwbse
localize
dft_in_dft]

gwbse.tasks

all

tasks to do

[gw
singlets
triplets
excitons
exciton_uks
all]

gwbse.ranges

default

default: all levels in RPA, 1:2*HOMO in QP and all in
BSE; other options: factor,explicit
default
factor
explicit
full

gwbse.rpamax

only needed, if ranges is factor or explicit, number of
levels in rpa

gwbse.qpmin

only needed, if ranges is factor or explicit, lowest MO
to be used in GW

gwbse.qpmax

only needed, if ranges is factor or explicit, highest
MO to be used in GW

gwbse.bsemin

only needed, if ranges is factor or explicit, lowest MO
to be used in BSE

gwbse.bsemax

only needed, if ranges is factor or explicit, highest
MO to be used in BSE

gwbse.qp_emax

0

cap on the GW window: highest QP level at most this many
eV above the DFT LUMO (a degenerate set is kept whole);
applied on top of ranges, 0 = off

float+

gwbse.qp_emin

0

cap on the GW window: lowest QP level at most this many
eV below the DFT HOMO; 0 = off

float+

gwbse.bse_emax

0

cap on the BSE window: highest virtual level at most this
many eV above the DFT LUMO; 0 = off

float+

gwbse.bse_emin

0

cap on the BSE window: lowest occupied level at most this
many eV below the DFT HOMO; 0 = off

float+

gwbse.ignore_corelevels

none

exclude core MO level from calculation on RPA,GW or BSE
level
RPA
GW
BSE
none

gwbse.auxbasisset

OPTIONAL

Auxiliary basis set for RI, only used if DFT has no auxiliary
set

gwbse.gw.mode

evGW

use single short (G0W0) or self-consistent GW (evGW)

evGW
G0W0

gwbse.gw.scissor_shift

0.0

preshift unoccupied MOs by a constant for GW calculation

float

gwbse.gw.sigma_integrator

ppm

self-energy correlation integration method

ppm
exact
cda

gwbse.gw.eta

1e-3

small parameter eta of the Green’s function

float+

gwbse.gw.alpha

1e-3

parameter to smooth residue and integral calculation for
the contour deformation technique

float

gwbse.gw.quadrature_scheme

legendre

If CDA is used for sigma integration this set the quadrature
scheme to use
hermite
laguerre
legendre

gwbse.gw.quadrature_order

12

Quadrature order if CDA is used for sigma integration

8
10
12
14
16
18
20
40
100

gwbse.gw.qp_solver

grid

QP equation solve method

fixedpoint
grid

gwbse.gw.qp_grid_search_mode

adaptive_with_dense_fallback

grid-search backend for QP root detection

adaptive
dense
adaptive_with_dense_fallback

gwbse.gw.qp_root_finder

brent

method to refine a sign-change interval of the QP equation
to a root: brent (inverse quadratic interpolation with
bisection safeguard, fewer Sigma evaluations) or bisection;
both stop when the QP residual is below qp_sc_limit
bisection
brent

gwbse.gw.qp_full_window_half_width

OPTIONAL

half-width of the full QP search window around the reference
energy

float+

gwbse.gw.qp_dense_spacing

OPTIONAL

spacing of the dense QP scan used for robust sign-change
detection

float+

gwbse.gw.qp_adaptive_shell_width

OPTIONAL

radial shell width of the adaptive QP scan

float+

gwbse.gw.qp_adaptive_shell_count

OPTIONAL

number of adaptive shell layers per side; if > 0 it overrides
qp_adaptive_shell_width

int+

gwbse.gw.qp_grid_steps

OPTIONAL

DEPRECATED: legacy number of QP grid points; maps to qp_full_window_half_width
and qp_adaptive_shell_width together with qp_grid_spacing

int+

gwbse.gw.qp_grid_spacing

OPTIONAL

DEPRECATED: legacy QP grid spacing; maps to qp_dense_spacing
and contributes to qp_full_window_half_width together
with qp_grid_steps

float+

gwbse.gw.qp_restrict_search

true

restrict occupied and virtual QP scans away from the zero-energy
crossing region before retrying the full window

bool

gwbse.gw.qp_root_continuity

true

evGW: from the second iteration on keep each QP level
on the root closest to its previous solution instead of
choosing the root with the largest weight again (stabilises
levels with two roots of comparable weight)

bool

gwbse.gw.core_exchange

true

with ignore_corelevels=RPA (frozen core): include the
exchange with the core levels in Sigma_x, which Vxc also
contains through the core density. Without it the occupied
QP energies are shifted up by the missing core exchange
(0.6 eV on average for a QM9 molecule)

bool

gwbse.gw.qp_root_tracking

false

evGW: from the second iteration on search each QP level
only near its root of the previous iteration (window of
a few times its last change, 0.01 to 0.1 Ha) and keep
the closest accepted root unless its weight drops below
half; otherwise, and for levels without such a root, the
full search is used. After convergence one QP solve with
the full search checks the roots, so the result is a fixed
point of the full search. If a level has several such
fixed points (strong satellites), tracking may end on
another one than iterating with the full search does

bool

gwbse.gw.screening_update

adaptive

evGW: when the screening W is rebuilt. every: in every
iteration. adaptive: the energies in G are iterated with
W fixed and W is rebuilt once their last change is below
screening_update_ratio times their change since W was
built (or after screening_update_max_inner iterations);
converged when the energies change by less than gw_sc_limit
and differ from those of the last W by less than gw_sc_limit,
the same evGW solution
every
adaptive

gwbse.gw.screening_update_ratio

0.1

adaptive screening_update: rebuild W once the last change
of the energies is below this fraction of their change
since W was built

float+

gwbse.gw.screening_update_max_inner

10

adaptive screening_update: rebuild W at the latest after
this many iterations with the same W

int+

gwbse.gw.qp_zero_margin

1e-6

margin below zero used as upper bound for occupied restricted
scans

float+

gwbse.gw.qp_virtual_min_energy

-0.1

lower bound for virtual restricted scans

float

gwbse.gw.qp_sc_max_iter

100

maximum number of iterations for quasiparticle equation
solution

int+

gwbse.gw.qp_sc_limit

1e-6

quasiparticle equation solver convergence

float+

gwbse.gw.sc_max_iter

50

Maximum number of iterations in eVGW

int+

gwbse.gw.mixing_order

3

Mixing of QP energies in evGW - 0: plain, 1: linear, >1:
Anderson

int+

gwbse.gw.sc_limit

1e-5

evGW convergence criteria

float+

gwbse.gw.mixing_alpha

0.7

mixing alpha, also linear mixing

float+

gwbse.gw.do_qsgw

false

Run Quasiparticle self-consistent GW after evGW or G0W0

bool

gwbse.gw.qsgw_max_iterations

50

maximum number of iterations is QSGW

int+

gwbse.gw.qsgw_sc_limit

1e-5

QSGW convergence threshold on QP energies

float+

gwbse.gw.qsgw_max_virt_correction

0.5

QSGW: pertGW energy threshold for inclusion of virtual
states

float+

gwbse.gw.qsgw_hartree_update

true

QSGW: update the Hartree potential with the QP density
of the active occupied levels (false: keep J of the DFT
density, the behaviour before)

bool

gwbse.gw.qsgw_regularization

eta

QSGW static self-energy: eta = symmetrised 1/2 Re[Sigma(e_p)
+ Sigma(e_q)] with the broadening eta; srg = similarity-renormalization-group
form (Marie and Loos), Hermitian by construction, terms
damped by 1 - exp(-s (D_p^2 + D_q^2)) with D the distance
from their pole (exact and ppm Sigma)
eta
srg

gwbse.gw.qsgw_srg_s

500

QSGW with qsgw_regularization=srg: flow parameter s; s
= 1/(2 eta^2) matches the eta form to first order (s =
200 for eta = 0.05 Ha); Marie and Loos recommend 500 to
1000

float+

gwbse.gw.qsgw_hartree_screened

true

QSGW with environment screening: the Hartree update uses
u = v + v_reac, so the dipoles induced in the environment
follow the QP density (false: bare v, the environment
keeps the response to the DFT density). No effect without
environment screening or with qsgw_hartree_update=false

bool

gwbse.gw.out_of_window_shift

max

Shift of the RPA energies of levels outside the GW window
(evGW, QSGW): max - largest correction of the occupied/virtual
window levels; nearest - correction of the window boundary
level; linear - linear fit of the corrections near the
boundary, extrapolated at most over the fitted energy
span
max
nearest
linear

gwbse.gw.out_of_window_fit_fraction

0.3

linear out_of_window_shift: fraction of the occupied/virtual
window levels next to the boundary used in the fit (at
least 2 levels)

float+

gwbse.gw.rebuild_3c_freq

0

rebuild the 3c integrals from scratch every this many
evGW iterations; 0 (default) never. The integrals are
only rotated by orthogonal matrices between iterations,
so a rebuild resets rounding at the 1e-12 Ha level

int+

gwbse.gw.sigma_plot.states

plot sigma(omega) for the following states, e.g 1 3 5

gwbse.gw.sigma_plot.steps

201

points to plot, centred on the DFT energy of each state

int+

gwbse.gw.sigma_plot.spacing

1e-2

spacing of points units

float+

gwbse.gw.sigma_plot.filename

QPenergies_sigma.dat

File with the sigma plot data

gwbse.gw.sigma_dump.filename

sigma_dump.h5

HDF5 output file

gwbse.gw.sigma_dump.levels_emax

20

pole spectra and imaginary-axis Sigma_c only for levels
up to this energy above the DFT LUMO; 0 = all QP levels

float+

gwbse.gw.sigma_dump.imag_points

24

number of Gauss-Legendre points on the imaginary axis

int+

gwbse.gw.sigma_dump.imag_scale

0.5

scale s of the imaginary grid nu = s(1+x)/(1-x)

float+

gwbse.gw.sigma_dump.spectral_min

-3.0

lower edge of the pole histogram (absolute energy)

float

gwbse.gw.sigma_dump.spectral_max

3.0

upper edge of the pole histogram (absolute energy)

float

gwbse.gw.sigma_dump.spectral_binwidth

0.02

bin width of the pole histogram

float+

gwbse.gw.sigma_dump.plot_steps

201

Sigma_c(omega) of all QP levels on this many points around
their DFT energies (as sigma_plot, stored as float32);
0 = off

int+

gwbse.gw.sigma_dump.plot_spacing

0.01

spacing of the Sigma_c(omega) grid

float+

gwbse.bse.exctotal

10

maximum number of BSE states to calculate

int+

gwbse.bse.useTDA

false

use TDA for BSE

bool

gwbse.bse.dyn_screen_max_iter

0

maximum number of iterations for perturbative dynamical
screening in BSE

int+

gwbse.bse.dyn_screen_tol

1e-5

convergence tolerance for perturbative dynamical screening
in BSE

float+

gwbse.bse.davidson.correction

DPR

Davidson correction method

DPR
OLSEN

gwbse.bse.davidson.tolerance

normal

Numerical tolerance

loose
normal
strict
lapack

gwbse.bse.davidson.update

safe

how large the search space

min
safe
max

gwbse.bse.davidson.maxiter

50

max iterations

int+

gwbse.bse.use_Hqp_offdiag

false

Using symmetrized off-diagonal elements of QP Hamiltonian
in BSE

bool

gwbse.bse.print_weight

0.5

print exciton WF composition weight larger than minimum

float+

gwbse.bse.fragments.fragment.indices

REQUIRED

indices of atoms in this fragment, e.g. 1 3 13:17

localize.max_iterations

10000

Maximum number of iterations for PM Localization

int+

localize.convergence_limit

1e-5

Convergence criteria for PM localization

localize.method

unitary-optimizer

Method for the localization optimization

[jacobi-sweeps
unitary-optimizer]

logging_file

OPTIONAL

File to send logging data to.

archiveA

OPTIONAL

orbfile for moleculeA of guess

archiveB

OPTIONAL

orbfile for moleculeA of guess

Note

An xml file containing the defaults for the dftgwbse calculator can be created via -p dftgwbse -o FILENAME command line options `