DFTB (ground state)¶
Ground-state density-functional tight binding is a first-class OpenQP
method, selected with [input] method=dftb. It
comes in two families:
- DFTB2 — the self-consistent-charge model (
[dftb] type=ground). This is the default ground-state DFTB. - DFTB0 — the non-self-consistent model (
[dftb] type=dftb0), useful as a fast zeroth-order reference.
Both deliver single-point energies, analytic gradients, and geometry
optimization at tight-binding cost. Excited states are covered by the
TD-DFTB and MRSF-TDDFTB manuals; all [dftb]
keywords are documented in the [dftb] reference.
Development preview
The DFTB method is provided by the optional OpenQP-DFTB library and is
not part of OpenQP 1.2.0; the one-line .oqp format is likewise a
development-branch input style (see One-line .oqp).
Install and build details are in the [dftb]
reference.
Every example below leads with the recommended .oqp form, followed by Python
and the legacy .inp form. Two DFTB conventions
apply throughout:
basis=is a required-but-ignored placeholder (the Slater–Koster minimal basis is always used);functional=must be empty. The.oqproute carries neither.- The ground state is state 0 (
grad/istatecount from0).
Energy¶
DFTB2 single-point energy:
.oqp (route dftb; the geometry file sits beside the .oqp file)
dftb
energy
geom="h2o.xyz"
Python
from oqp.openqp import OpenQP
job = OpenQP(project="h2o_dftb")
job.molecule("h2o.xyz")
job.dftb(response_type="ground")
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
[dftb]
backend=native
type=ground
Gradient¶
Add [properties] grad=0 (the ground state is state 0):
.oqp
dftb
grad
geom="h2o.xyz"
Python
from oqp.openqp import OpenQP
job = OpenQP(project="h2o_dftb_grad")
job.molecule("h2o.xyz")
job.dftb(response_type="ground")
job.workflow.gradient(state=0)
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
[dftb]
backend=native
type=ground
[properties]
grad=0
Geometry optimization¶
runtype=optimize with the native optimizer ([optimize] lib=oqp) on the
ground state (istate=0):
.oqp
dftb
opt
geom="h2o.xyz"
Python
from oqp.openqp import OpenQP
job = OpenQP(project="h2o_dftb_opt")
job.molecule("h2o.xyz")
job.dftb(response_type="ground")
job.workflow.optimize(istate=0)
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
[dftb]
backend=native
type=ground
[optimize]
lib=oqp
istate=0
Ground state and the [tdhf] block
A hand-written ground-state deck needs no [tdhf] or [scf] section. The
Python builder always emits an inert [tdhf] type=tda block even for
response_type="ground"; it is ignored by the ground-state DFTB path.
DFTB0 (non-SCC)¶
DFTB0 is the same ground-state method without charge self-consistency. Switch
[dftb] type=ground → type=dftb0, the .oqp route dftb → dftb0, and the
Python response_type="ground" → "dftb0". Energy, gradient, and optimization
work identically (state 0 only):
.oqp (aliases dftb-noscc, dftb-nonscc are also accepted)
dftb0
energy
geom="h2o.xyz"
Python
from oqp.openqp import OpenQP
job = OpenQP(project="h2o_dftb0")
job.molecule("h2o.xyz")
job.dftb(response_type="dftb0")
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
[dftb]
backend=native
type=dftb0
parameter_path is optional. To override the bundled parameters, point it to
a combined .opdftb file or a directory of Slater–Koster <El>-<El>.skf
files. There is no MECI task for a ground-state
method (it targets a single state); for conical intersections use
MRSF-TDDFTB.