Skip to content

TD-DFTB

Conventional (spin-conserving) TD-DFTB is the DFTB analogue of linear-response TDDFT. It is requested with [input] method=dftb, a [tdhf] type of rpa or tda, and [dftb] type=tddftb (or type=auto, which resolves to the same). Excited-state energies, analytic gradients, and geometry optimizations are supported.

Development preview

The DFTB method (OpenQP-DFTB library) and the one-line .oqp format are development-branch features, not part of OpenQP 1.2.0. See the [dftb] reference and One-line .oqp.

RPA and TDA are identical for DFTB

The DFTB response does not distinguish full-response (RPA) from Tamm–Dancoff (TDA): [tdhf] type=rpa and type=tda map to the same tight-binding response. The Python builder always emits type=tda for response_type="tddftb"; add job.settings.tdhf(type="rpa") only if you want the literal rpa keyword in the generated file.

State labels. S0 is the SCF ground state (state 0). Excited singlets are S1, S2, … = response roots 1, 2, … (grad/istate count from 1 for the excited states). Triplet response states are T0, T1, … in the one-line form. As with all DFTB families, basis= is an ignored placeholder, functional= is empty, and the .oqp route carries neither.

Energy (excitation energies)

Three singlet roots (S1S3) above the DFTB ground state:

.oqp (route tddftb(nstate=N); tda-tddftb(nstate=N) for TDA)

tddftb(nstate=3)
energy
geom="h2o.xyz"

Python

from oqp.openqp import OpenQP

job = OpenQP(project="h2o_tddftb")
job.molecule("h2o.xyz")
job.dftb(response_type="tddftb", nstate=3)
job.workflow.energy()
job.run()

Legacy .inp

[input]
method=dftb
runtype=energy
charge=0
basis=sto-3g
functional=
system=
  O  0.000000  0.000000  0.000000
  H  0.000000  0.757160  0.586260
  H  0.000000 -0.757160  0.586260

[tdhf]
type=rpa
nstate=3

[dftb]
backend=native
type=tddftb

Gradient

Gradient of the first excited singlet S1 (response root 1 → grad=1):

.oqp

tddftb(nstate=3)
grad(S1)
geom="h2o.xyz"

Python

from oqp.openqp import OpenQP

job = OpenQP(project="h2o_tddftb_grad")
job.molecule("h2o.xyz")
job.dftb(response_type="tddftb", nstate=3)
job.workflow.gradient(state=1)
job.run()

Legacy .inp

[input]
method=dftb
runtype=grad
charge=0
basis=sto-3g
functional=
system=
  O  0.000000  0.000000  0.000000
  H  0.000000  0.757160  0.586260
  H  0.000000 -0.757160  0.586260

[tdhf]
type=rpa
nstate=3

[dftb]
backend=native
type=tddftb

[properties]
grad=1

Conventional TD-DFTB currently supports singlet targets. Use sf-tddftb or mrsf-tddftb for triplet-state calculations. The equivalent TDA singlet gradient is:

tda-tddftb(nstate=3)
grad(S1)
geom="h2o.xyz"

Geometry optimization

Optimize the S1 excited-state minimum (istate=1):

.oqp

tddftb(nstate=3)
opt(S1)
geom="h2o.xyz"

Python

from oqp.openqp import OpenQP

job = OpenQP(project="h2o_tddftb_opt")
job.molecule("h2o.xyz")
job.dftb(response_type="tddftb", nstate=3)
job.workflow.optimize(istate=1)
job.run()

Legacy .inp

[input]
method=dftb
runtype=optimize
charge=0
basis=sto-3g
functional=
system=
  O  0.000000  0.000000  0.000000
  H  0.000000  0.757160  0.586260
  H  0.000000 -0.757160  0.586260

[tdhf]
type=rpa
nstate=3

[dftb]
backend=native
type=tddftb

[optimize]
lib=oqp
istate=1

MECI

A minimum-energy conical intersection between two excited singlets of the same multiplicity — here S1/S2 (istate=1, jstate=2) — using the penalty optimizer:

.oqp

tddftb(nstate=3)
meci(S1,S2)
geom="guess.xyz"

Python

from oqp.openqp import OpenQP

job = OpenQP(project="tddftb_meci")
job.molecule("guess.xyz")
job.dftb(response_type="tddftb", nstate=3)
job.workflow.meci(istate=1, jstate=2, meci_search="penalty")
job.run()

Legacy .inp

[input]
method=dftb
runtype=meci
charge=0
basis=sto-3g
functional=
system=guess.xyz

[tdhf]
type=rpa
nstate=3

[dftb]
backend=native
type=tddftb

[optimize]
lib=oqp
istate=1
jstate=2
meci_search=penalty
pen_sigma=1.0
pen_incre=1.2
energy_gap=1.0e-4

Use MRSF-TDDFTB for S₀/S₁ intersections

The optimizer will mechanically accept meci(S0,S1) for conventional TD-DFTB, but linear-response TDDFT/TD-DFTB has the wrong branching-space dimensionality at a crossing with the reference (ground) state — the intersection topology is incorrect. Restrict conventional TD-DFTB MECI to two excited states of the same multiplicity, and use MRSF-TDDFTB for S₀/S₁ conical intersections, where the topology is correct. meci is same-multiplicity only; different-multiplicity crossings (mecp) are not available for the DFTB method.