RT-TDDFT-Ehrenfest driver¶
The RT-TDDFT-Ehrenfest driver extends rttddft with classical
nuclear propagation using Ehrenfest or Born–Oppenheimer forces. It is provided
by maxwelllink.mxl_drivers.python.models.RTEhrenfestModel, which
computes electronic dynamics with RT-TDDFT while integrating nuclear motion under
mean-field electronic potential energy surfaces. This Python driver couples to
EM solvers in both electronic and nuclear degrees of freedom.
Note
Electronic propagation follows the RT-TDDFT equation of motion
while the nuclei are propagated through
where \(E_{\mathrm{mf}}\) denotes the Ehrenfest mean-field or Born–Oppenheimer potential specified by force_type, and \(Z_n\) is the nuclear
charge of atom \(n\). The emitted dipole current combines both nuclear and electronic contributions,
and is sent back to the Maxwell solver each time step.
Requirements¶
psi4available in the driver environment (Psi4 with Python bindings).Same structure requirements as the RT-TDDFT driver (XYZ file with charge and multiplicity on the second line).
Usage¶
Socket mode¶
mxl_driver --model rtehrenfest --port 31415 \
--param "molecule_xyz=${PWD}/tests/data/hcn.xyz, functional=B3LYP, \
basis=sto-3g, dt_rttddft_au=0.04, force_type=ehrenfest, \
n_fock_per_nuc=10, n_elec_per_fock=10, \
checkpoint=false, restart=false"
Non-socket mode¶
mxl.Molecule(
driver="rtehrenfest",
driver_kwargs={
"molecule_xyz": "tests/data/hcn.xyz",
"functional": "B3LYP",
"basis": "sto-3g",
"dt_rttddft_au": 0.04,
"force_type": "bo",
"n_fock_per_nuc": 10,
"n_elec_per_fock": 10,
"partial_charges": [1.0, -1.0, 0.0],
},
# ...
)
Parameters¶
Name |
Description |
|---|---|
|
Computational backend. Currently only |
|
Path to the geometry file (charge/multiplicity on the second line). Required. |
|
Psi4 functional label. Default: |
|
Psi4 basis set label. Default: |
|
Electronic time step in atomic units. Default: |
|
Initial delta-kick amplitude (a.u.). Default: |
|
Axes for the delta-kick ( |
|
Psi4 memory allocation string. Default: |
|
CPU threads assigned to Psi4. Default: |
|
Electronic propagator: |
|
Predictor–corrector convergence threshold (used when
|
|
When |
|
Psi4 quadrature grid label. Default: |
|
Grid sizes (negative values fall back to Psi4 defaults). Defaults:
|
|
|
|
Number of Fock builds per nuclear update. Default: |
|
Number of electronic steps per Fock build. Default: |
|
Optional per-atom masses (amu). Default: |
|
Langevin friction coefficient in atomic units. Default: |
|
Target temperature for Langevin dynamics. Default: |
|
Random seed for the Langevin thermostat. Default: |
|
Optional per-atom charges for coupling to external fields. Default:
|
|
When |
|
Indices of nuclei to freeze during propagation. Default: |
|
Optional path to append XYZ snapshots of the trajectory during propagation.
Default: |
|
When |
|
When |
|
When |
Note
partial_charges should only be provided when force_type="bo". When defining
this parameter in the socket mode (command line), please always use "[1.0 -1.0 0.0]"
(no comma separating values) to ensure correct parsing. When force_type="ehrenfest", the driver
computes forces from the Ehrenfest mean-field potential and ignores partial_charges.
Returned data¶
time_au– Simulation clock in atomic units.energy_au– Total energy including nuclear and electronic contributions.mux_au,muy_au,muz_au– Time-dependent dipole components in atomic units.