Time-Dependent Density Functional Theory - TDDFT Module

The TDDFT module calculates molecular excited states by solving the Casida equation based on linear response theory. It supports TDDFT (including TDHF), TDA (including CIS), and can handle closed-shell or open-shell ground states. For open-shell ground states, it supports both traditional U-TDDFT and the spin-matched SA-TDDFT (also known as X-TDDFT), the latter being a distinctive feature of BDF. Additionally, BDF supports spin-flip (SF-)TDDFT methods, including spin-up-flip and spin-down-flip TDDFT, for calculating excited states with spin multiplicities different from the ground state.

Common Keywords

Imethod Parameter Type: Integer

  • Default: 1 for RHF/RKS reference states, else 2

  • Options: 1, 2

Specifies the ground-state method for TDDFT: * 1: R-TDDFT (RHF/RKS reference state) * 2: U-TDDFT (UHF/UKS reference state)

Spin-matched X-TDDFT requires a ROKS/ROHF reference and uses U-TDDFT with imethod=2, itest=1, icorrect=1 (see below). This parameter usually doesn’t need manual specification, as the program chooses a reasonable default. Note: U-TDDFT and X-TDDFT calculations are only supported in Abelian point groups.

Isf Parameter Type: Integer

  • Default: 0

  • Options: 0, 1, -1

Controls spin-flip TDDFT: * 0: No spin-flip (spin-conserving, calculates states with same Ms as ground state) * 1: Spin flip up (calculates states with Ms = ground state Ms + 1) * -1: Spin flip down (calculates states with Ms = ground state Ms - 1)

Special case: When imethod=1 and isf=1, the program calculates the Ms=0 component of the triplet state, not an Ms=1 state. This is still a spin-conserving R-TDDFT calculation, not spin-flip. Note: When isf != 0 and imethod=2, itda must be set to 1.

Itda Parameter Type: Integer

  • Default: 0

  • Options: 0, 1

Controls use of the Tamm-Dancoff Approximation (TDA): * 0: Full TDDFT (no TDA) * 1: TDA calculation.

Ialda Parameter Type: Integer

  • Default: 0

  • Options: 0, 1, 2, 3, 4

Specifies the TDDFT exchange-correlation kernel: * 0: Full non-collinear kernel * 1: Non-collinear ALDA kernel * 2: No-collinear ALDA0 kernel * 3: Full non-collinear kernel (spin-averaged density) * 4: Full collinear kernel

For isf=0 calculations, ialda has no effect. For isf != 0 single-point calculations with non-RHF/RKS reference states, setting ialda=2 is recommended for better numerical stability than the default 0. For isf != 0 TDDFT geometry optimization, numerical frequencies, or NAC-TDDFT calculations, ialda must be set to 4. Important: This introduces an approximation, making results incomparable (and less accurate) to those obtained with ialda != 4. Thus, TDDFT geometry optimization/frequency results with isf != 0 cannot be directly compared to TDDFT single-point energy results.

Itest & icorrect Parameter Type: Integer

  • Default: 0

  • Options: 0, 1

When both Itest and icorrect are set to 1, imethod=2, and the reference state is ROKS/ROHF, the program performs X-TDDFT calculation.

iact & elw & eup Parameter Type: Integer, Float, Float

Iact=1 specifies calculating excited states within an energy window defined by lower (elw) and upper (eup) bounds. Units: eV.

Diagonalization Method Keywords

Idiag Parameter Type: Integer

  • Default: 1

  • Options: 1, 2, 3

Specifies the TDDFT diagonalization method: * 1: Iterative diagonalization (Davidson method) * 2: Full diagonalization * 3: iVI diagonalization (does not support non-Abelian point groups)

Recommendations: * Use idiag=3 (iVI) for:

  • High-energy excitations (e.g., X-ray absorption/emission - see iwindow)

  • Calculating all states within a specific energy/wavelength range with guaranteed completeness (see iwindow).

  • Use idiag=2 (full diagonalization) for small molecules where a large number of states is needed (approaching the product of occupied and virtual orbitals).

  • Use default idiag=1 (Davidson) for most other cases.

Aokxc Parameter Type: Boolean

Specifies calculating the exchange-correlation kernel contribution to the Casida matrix in the AO basis. Enabled by default for AO-TDDFT calculations, so usually not needed.

Iguess Parameter Type: Integer

  • Options: 10*x + y (x ∈ {0,1,2}, y ∈ {0,1})

  • Default: 20 for AO-TDDFT in Abelian groups, else 0

Controls TDDFT initial guess wavefunction: * x=0: Diagonal guess * x=1: Read initial wavefunction from file * x=2: Tight-binding approximation guess * y=0: Do not store Davidson/iVI iteration vectors * y=1: Do store Davidson/iVI iteration vectors

Itrans Parameter Type: Integer

  • Options: 0, 1

  • Default: 0

Controls transformation of the spin-orbital basis excited-state vectors to a spin-tensor basis. Only set itrans=1 if: 1. Reference state is ROKS. 2. No subsequent calculations require $resp module (gradients, excited-state dipoles, NACs) or NTO analysis. Note: If the reference state is ROKS and TDDFT-SOC calculation is planned, itrans must be set to 1.

Grimmestd Parameter Type: Boolean

Specifies using Grimme’s sTDA (if itda=1) or sTDDFT (if itda=0) method. sTDDFT/sTDA approximate TDDFT, running ~10-100x faster than MPEC+COSX, but with larger errors (~0.2 eV for excitation energies, up to ~1 eV for some transition metals). Recommended for pi-pi* excitations in large organic systems (>100 atoms) where conventional TDDFT is too slow/memory-intensive. Supports excitation energies, oscillator strengths, NTOs, SOC matrix elements for pure/hybrid functionals (including HF) and range-separated functionals wB97, wB97X, LC-BLYP, CAM-B3LYP. Not supported: Excited-state gradients, dipoles, NACs, or use with isf=-1.

Grid Control Keywords

Grid Parameter Type: String

  • Default: Medium

  • Options: Ultra Coarse, Coarse, Medium, Fine, Ultra Fine

Specifies DFT numerical integration grid type.

Gridtol Parameter Type: Floating-point

  • Default: 1.0E-4 (1.0E-6 for meta-GGA)

Specifies the cutoff threshold for DFT adaptive grid generation. Lower values increase grid points (higher precision, higher cost).

MPEC+COSX Parameter Type: Boolean

Specifies using Multipole Expansion of Coulomb potential (MPEC) for the J matrix and Chain-of-Sphere Exchange (COSX) for the K matrix. Retained for backward compatibility; recommended to set in Compass module.

Orbital Freezing Keywords

Frzcore Parameter Type: Integer Array

Specifies the number of occupied orbitals to freeze per irreducible representation (lowest energy orbitals frozen first). Default: No freezing (unlike programs like ORCA). Example: Freeze the 20 lowest occupied orbitals in irrep 1 and 10 in irrep 2:

$tddft
...
frzcore
 20 10
$end

Frzvirt Parameter Type: Integer Array

Specifies the number of virtual orbitals to freeze per irreducible representation (highest energy orbitals frozen first). Default: No freezing.

Note

Orbital freezing primarily saves memory in large systems (e.g., freeze core orbitals for UV-Vis spectra). Errors are typically < 0.01 eV. Also saves some compute time. Supports excitation energies, oscillator strengths, NTOs, SOC matrix elements. Not supported: Excited-state gradients, dipoles, NACs.

Spectroscopy Keywords

ECD Parameter Type: Boolean

Specifies calculation of Electronic Circular Dichroism (ECD) spectra. Outputs transition magnetic dipole moments and rotatory strengths (length & velocity gauges) for each excited state, in addition to transition electric dipole moments and oscillator strengths.

Convergence Control Keywords

Crit_e Parameter Type: Floating-point

  • Default: 1e-7

TDDFT energy convergence threshold (Hartree).

Crit_vec Parameter Type: Floating-point

  • Default: 1e-5

TDDFT wavefunction convergence threshold.

Number of States Control Keywords

Iroot Parameter Type: Integer

  • Default: 10

  • Options: Non-zero integer

  • iroot > 0: Calculate iroot states per irreducible representation.

  • iroot < 0: Calculate |iroot| states total across all irreps (program determines per-irrep count).

Note: For degenerate irreps, different components of the same state count as one state (e.g., iroot=3 for a 2D irrep yields 3 distinct energy states). Synonym: iexit.

Nroot Parameter Type: Integer Array

Specifies the number of states per irrep. Example: 5 1 3 calculates 5 states in irrep 1, 1 in irrep 2, 3 in irrep 3. If both iroot and nroot are specified, nroot is ignored.

Iwindow Parameter Type: Floating-point Array

Specifies an energy/wavelength range to calculate excited states within. Avoids wasteful calculation of states outside the region of interest.

Format: Next line contains two floats (range) + optional unit (au/eV/nm/cm-1). Default unit: eV. Best used with iVI (idiag=3) to ensure all states within the range are found without wasting resources on states outside. Example: Calculate all states between 1-5 eV:

$tddft
...
idiag
 3           # Use iVI method
iwindow
 1 5 eV
$end

Can be used with Davidson (idiag=1, default) but behavior differs:

$tddft
...
iwindow
 1 5 eV      # Davidson method: Lower bound (1 eV) ignored. Calculates all states below 5 eV.
$end

Davidson cannot guarantee all states within 1-5 eV are found or exclude states outside it. It may waste resources calculating low-energy states irrelevant to the window (especially problematic for high-energy windows like XAS, e.g., 300 305 eV). Use iVI (idiag=3) for such cases.

Hint

Iwindow is incompatible with idiag=2 (full diagonalization).

If iwindow is specified, iroot/nroot do not control the number of states calculated. However, for iwindow + idiag=3 (iVI), iroot/nroot still affect initial memory allocation. If the program errors with “too small iroot/nroot, require xxx, but only yyy provided”, set iroot or nroot for that irrep to a value >= xxx.

Maxld Parameter Type: Integer

Maximum dimension of the iVI expansion space. Usually set automatically. If error “too small ld xxx, require yyy” occurs, set maxld >= yyy.

Wavefunction Storage Keyword

Istore Parameter Type: Integer

Specifies a file identifier (istore) to save the wavefunction for use in subsequent calculations.

Output Control Keywords

Nprt Parameter Type: Integer

Prints information only for the first nprt excited states. Default: Print all states.

Cthrd Parameter Type: Floating-point

Prints orbital excitation information only if the coefficient magnitude exceeds cthrd.

TD-DFT/SOC and Property Calculation Control

Nfiles Parameter Type: Integer

Reads nfiles previously calculated TDDFT wavefunctions for SOC calculation.

Isoc Parameter Type: Integer

  • Default: 1

  • Options: 1, 2, 3

Specifies TDDFT-SOC method: * 1: Closed-shell systems only * 2: General SOC calculation * 3: Only prints SOC coupling matrix elements between scalar states (no SOC Hamiltonian diagonalization)

Ifgs Parameter Type: Integer

  • Default: 0

  • Options: 0, 1

Includes the ground state in TDDFT-SOC calculation: * 0: Exclude ground state. Cannot get transition dipoles between ground state and spinor states or calculate ground-state SOC correction. Can still get SOC-corrected excitation energies. * 1: Include ground state. Enables SOC-corrected spectra and ground-state SOC correction. Limit the number of scalar excited states included (typically 10-100), otherwise ground-state energy is underestimated, overestimating excitation energies.

Imatsoc Parameter Type: Integer Array

Specifies which SOC matrix elements to calculate.

...
# First SCF calculation (Singlet ground state S0)
$scf
spin
0
...
$end

# First TDDFT: Singlets S1-S10
$tddft
imethod
 1
isf
 0
iroot
 10
....
$end

# Second TDDFT: Triplets T1-T10
$tddft
imethod
 1
isf
 1
iroot
 10
$end

$tddft
....
# imatsoc < 0: Print ALL SOC matrix elements
# imatsoc = 0: Print NO SOC matrix elements
# imatsoc > 0: Print `imatsoc` specified matrix elements
imatsoc
 7              # Calculate 7 specific SOC matrix elements (max 4000 allowed)
0 0 0 2 1 1     # "0 0 0" represents the ground state (S0)
0 0 0 2 1 2     # Format: "i m n" = i-th TDDFT calc, m-th irrep, n-th state
1 1 1 2 1 1     # Calculate <S1|H_SOC|T1>
1 1 1 2 1 2
1 1 2 2 1 1
1 1 2 2 1 2
2 1 1 2 1 1
2 1 1 2 1 2
$end

Imatrsf Parameter Type: Integer

  • Default: 0

  • Options: 0, -1

Controls printing transition dipole moments between scalar states in TDDFT-SOC calculations. imatrsf=-1 prints all transition dipoles.

Imatrso Parameter Type: Integer Array

Specifies printing transition dipole moments (and oscillator strengths/radiative rates) between spinor states after SOC.

$TDDFT
...
Imatrso
# Print 5 specific spinor-spinor transition dipoles (max 4000)
# imatrso = -1: Print ALL pairs
# imatrso = -2: Print ALL ground_spinor -> excited_spinor pairs (excludes ground-ground & excited-excited)
5
1 1             # Between spinor state 1 and spinor state 1
1 2             # Between spinor state 1 and spinor state 2
1 3
2 3
2 4
$END

Excited State Property Analysis

Ntoanalyze Parameter Type: Integer Array

Natural Transition Orbital (NTO) analysis for specified TDDFT states. Supports Abelian point groups only.

$TDDFT
istore
1           # Store wavefunction (Must be 1, even if not the first $tddft block)
$End

$TDDFT
Ntoanalyze
2           # Analyze 2 states
1 3         # Analyze the 1st and 3rd excited states
$End

Outputs NTOs in Molden format: bdftask.tdno_irepm_staten.molden (m = irrep index, n = state index within irrep).

TRDDens Parameter Type: Boolean Outputs transition density to Cube files. Default name: bdftask.trd_irepm_staten.cube (m = irrep index, n = state index).

DensCube Parameter Type: Boolean Outputs ground and excited state densities to Cube files. For singlet ground states: * File rho_irepn_singlet.cube contains densities for the n-th irrep. * For irrep 1 (usually totally symmetric), file rho_irep1_singlet.cube contains n excited state densities followed by the ground state density.

Cubexyz Parameter Type: Floating-point Array Specifies grid step size (x, y, z) for Cube files.

$TDDFT
istore
1           # Store wavefunction (Must be 1)
$End

$TDDFT
TRDDens
Cubexyz
 0.2 0.2 0.2 # 0.2 Å grid step
$End

Memory Control Parameters

Memjkop Parameter Type: Integer

Controls memory (MW = 8 MB blocks) for integral-direct TDDFT J/K operator calculation. If insufficient, multiple passes over integrals are needed, reducing efficiency.

$TDDFT
memjkop
  2048          # Allocate 2048 MW = 2048 * 8 MB = 16 GB memory
$End

Imemshrink Parameter Type: Integer

  • Default: 0

  • Options: 0, 1

Controls OpenMP parallel memory usage for integral-direct J/K calculation: * 0: Do not reduce memory usage (default). * 1: Reduce OpenMP memory footprint (slightly less efficient). Use if memjkop cannot be increased further for large systems/many states.

Solvation Effect Control Keywords

Solneqlr Parameter Type: Boolean

Specifies linear response calculation with nonequilibrium solvation effects.

Soleqlr Parameter Type: Boolean

Specifies linear response calculation with equilibrium solvation effects.

Solneqss Parameter Type: Boolean

Specifies state-specific calculation with nonequilibrium solvation effects.

Soleqss Parameter Type: Boolean

Specifies state-specific calculation with equilibrium solvation effects.