Program settings

To configure the settings for a calculation using the DIALECT program, the file dialect.toml has to be created. You can either create the file yourself or you can run the program in a directory without the configuration file:

/your/path/to/DIALECT/dialect file.xyz

The dialect.toml will then be created using the standard values of the program. The settings of the file dialect.toml are explained in the following sections.


General Settings

jobtype = "sp"   # Type of calculation. Options:
                 # - "sp" (single-point energy calculation)
                 # - "opt" (geometry optimization)
                 # - "grad" (gradient evaluation)
                 # - "hessian" (Hessian matrix calculation)
                 # - "dynamics" (molecular dynamics)
                 # - "monomer_identification" (get the monomer index that corresponds to atomic coordinates)
                 # - "initial_conditions" (Wigner sampling for dynamics)
                 # - "polariton" (exciton-polariton simulation)
                 # - "tdm_ehrenfest" (create the TDMs and/or particle and hole densities along a trajectory of Ehrenfest FMO-LC-TDDFTB)

verbose = 0      # Level of printed output:
                 # - -1: minimal output (silent mode)
                 # -  0: normal/default verbosity
                 # -  1: verbose mode (some debug info)

Tight-Binding Method Options

[tight_binding]
use_dftb = true                  # Enable standard DFTB method (density-functional tight-binding)
use_xtb1 = false                 # Use GFN1-xTB method instead of DFTB (as of now, only ground state properties are supported)
use_gaussian_gamma = true        # Use Gaussian functions to model the gamma matrix (Coulomb interaction); set to false for Slater functions (as most DFTB parametrisations employ Slater functions, we recommend to set this option to false for esternal Slater-Koster parameters)
use_shell_resolved_gamma = false # Allow different Hubbard parameters for different orbital types (s, p, d) instead of one uniform value per atom

Fragment Molecular Orbital (FMO) Settings

[fmo]
use_fmo = false           # Enable FMO method for fragment-based calculations
vdw_scaling = 2.0         # Controls fragmentation behavior:
                          # - Higher values lead to looser fragment pairing
                          # - Controls the number of monomer pairs and ES-DIM pairs

Molecular System Information

[mol]
charge = 0                # Total charge of the system
multiplicity = 1          # Spin multiplicity. Currently, only singlet (1) is supported

SCF Convergence Criteria

[scf]
scf_max_cycles = 250           # Max number of iterations in the self-consistent charge (SCC) loop
scf_charge_conv = 0.00001      # Convergence threshold for charge density between SCC steps
scf_energy_conv = 0.00001      # Convergence threshold for energy between SCC steps

Long-Range Corrections

[lc]
long_range_correction = true   # Apply long-range correction (important for accurate CT excitation energies)
long_range_radius = 3.03       # Radius for applying long-range corrections (in au)

DFTB3 Parameters

[dftb3]
use_dftb3 = false               # Enable DFTB3 (third-order corrections)
use_gamma_damping = false       # Use damping for gamma matrix
hubbard_derivatives = [1.0, 1.0] # Values of the derivatives of the Hubbard U w.r.t. charge for each element (ordered by Z)

Geometry Optimization Options

[opt]
state_to_optimize = 0                  # Electronic state to be optimized (0 = ground state)
geom_opt_max_cycles = 500             # Max number of optimization steps
geom_opt_tol_displacement = 300.0     # Tolerance for geometry displacement, 300 * 10^-6 as default
geom_opt_tol_gradient = 1200.0        # Tolerance for gradient norm (controls convergence), 1200 * 10^-6 as default
geom_opt_tol_energy = 1.0             # Energy change threshold for convergence, 1.0 * 10^-6 as default
use_bfgs = true                       # Use LBFGS optimizer
use_line_search = true               # Enable line search for better step size in optimization

Excited State Calculations

[excited]
calculate_excited_states = false       # Enable excited state calculation
nstates = 10                           # Number of excited states to calculate
davidson_iterations = 100              # Max iterations in the Davidson solver
davidson_subspace_multiplier = 10      # Controls the max subspace size: subspace = nstates * multiplier
davidson_convergence = 0.00001         # Convergence threshold for the residuals in Davidson method
use_casida = false                     # Use full Casida equations; default is TDA
get_all_states = false                 # Calculate all excited states (not just lowest nstates)

TD-DFTB Excited States

[tddftb]
restrict_active_orbitals = false         # Enable orbital restriction (limits calculation to key orbitals)
active_orbital_threshold = 0.2           # Fraction of orbitals included (0.2 = 20% of occupied and virtual orbitals)
save_transition_densities = false        # Save transition density matrices
save_natural_transition_orbitals = false # Save NTOs as .cube files (for visualization)
states_to_analyse = [0, 1]               # Specify which excited states to analyze (e.g., save NTOs)

Slater-Koster Parameters

[slater_koster]
use_external_skf = false          # Use external Slater-Koster files (recommended)
skf_directory = " "               # Path to the directory containing .skf files

Parallelization

[parallelization]
number_of_cores = 1               # Number of CPU cores to use (parallel execution)

FMO-LC-TDDFTB Settings

[fmo_lc_tddftb]
restrict_active_space = true               # Restrict exchange integral calculation to significant transitions only; only TDM matrix elements that are above a threshold will be considered for the exchange evaluation
active_space_threshold_le = 0.0001         # Threshold for including locally excited transitions
active_space_threshold_ct = 0.0001         # Threshold for charge-transfer transitions
n_le = 2                                   # Number of local excited states to consider
n_ct = 1                                   # Number of CT states to include
calculate_all_states = false               # Whether to compute full excitonic Hamiltonian
calculate_ntos = false                     # Enable NTO calculations
calculate_transition_densities = false     # Save transition density matrices
calculate_particle_hole_densities = false  # Save particle/hole density maps
states_to_analyse = [0, 1]                 # Specify which states to analyze
calc_exact_s_sqrt_inv = false              # Compute exact inverse square root of overlap matrix (costly but accurate)

Dispersion Corrections (DFT-D3)

[dispersion]
use_dispersion = false       # Enable Grimme's DFT-D3 dispersion correction; you need to look up the dispersion parameters to the corresponding Slater-Koster files
s6 = 1.0                     # Global scaling factor for dispersion energy
s8 = 0.01                    # Scaling for higher-order dispersion terms
a1 = 0.497                   # Damping function parameter
a2 = 3.622                   # Damping function parameter

Monomer Identification

[identification_config]
atom_coordinates = [[0.0, 0.0, 0.0]]  # Coordinates of a single atom of the monomer for identification in the structure

Initial Condition Sampling (Wigner)

[wigner_config]
n_samples = 50                     # Number of samples to generate (position + velocity)
temperature = 50.0                 # Temperature for sampling (Wigner distribution)
n_cut = 6                          # Number of modes (typically rotational/translation) to exclude from Hessian
save_in_other_path = false         # Save files outside the working directory
wigner_path = " "                  # If saving elsewhere, specify full directory path
write_velocities = true            # Save velocity vectors in output (NumPy format)

Create cube files along Ehrenfest trajectory

[tdm_config]
calculate_nth_step = 10            # Create a cube file for every nth step
total_steps = 1000                 # Set the total number of steps along the trajectory
store_tdm = false                  # Save the TDM as a Numpy file
store_hole_particle = false        # Save the hole and particle density as a cube file
calc_cube = true                   # Compute the cube file of the particle and hole densities
calc_tdm_cube = false              # Compute the cube file of the transition density matrix
use_parallelization = true         # use multithreading for the calculation (high demand of RAM)

Strong light-matter interactions

[polariton]                        # If the jobtype "polariton" is chosen, these options must be considered
e = [[1.0, 1.0, 1.0]]              # activate/deactivate the electric field components of the photon 
p = [[0.0, 0.0, 0.0]]              # electric field polarization of the photon; for x-polarisation, choose [[1.0,0.0,0.0]]
photon_energy = [0.0]              # photon energy
quantized_volume = [1.0]           # quantized volume for the calculation of the light-matter coupling constant g