RT-TDDFT driver =============== The RT-TDDFT driver couples **MaxwellLink** to the `Psi4 `_ quantum chemistry package for real-time time-dependent density functional theory propagation. It is implemented by :class:`maxwelllink.mxl_drivers.python.models.RTTDDFTModel`, which supports delta-kick excitations, automatic sub-stepping, and optional checkpoint/restart workflows. .. note:: Electronic dynamics are propagated through .. math:: \frac{d}{dt} \mathbf{P}^{\mathrm{e}}_{\mathrm{o}}(t) = -\frac{i}{\hbar}\Bigl[\mathbf{F}^{\mathrm{e}}_{\mathrm{o}}(t) - \widetilde{\mathbf{E}}(t)\cdot \vec{\boldsymbol{\mu}}^{\mathrm{e}}_{\mathrm{o}},\, \mathbf{P}^{\mathrm{e}}_{\mathrm{o}}(t)\Bigr], where the Kohn--Sham matrix :math:`\mathbf{F}^{\mathrm{e}}(t)` is rebuilt self-consistently from the evolving density and transformed between orthogonal and non-orthogonal bases each step. After every integration the driver reports the dipole current through .. math:: \frac{d}{dt}\langle \vec{\boldsymbol{\mu}}^{\mathrm{e}} \rangle = \mathrm{Tr}\!\left(\frac{d}{dt}\mathbf{P}^{\mathrm{e}}(t)\,\vec{\boldsymbol{\mu}}^{\mathrm{e}}\right), providing the light--matter source term for the Maxwell solver. The nuclei are assumed fixed during the simulation. Requirements ------------ - ``psi4`` available in the driver environment (`Psi4 `_ with Python bindings). - The molecular geometry provided via an XYZ file whose second line specifies charge and multiplicity (e.g. ``0 1``). Usage ----- Socket mode ^^^^^^^^^^^ .. code-block:: bash mxl_driver --model rttddft --port 31415 \ --param "molecule_xyz=${PWD}/tests/data/hcn.xyz, functional=PBE0, \ basis=cc-pVDZ, dt_rttddft_au=0.04, delta_kick_au=1e-2, \ delta_kick_direction=xyz, electron_propagation=pc, \ threshold_pc=1e-6, memory=8GB, num_threads=4, \ checkpoint=false, restart=false" Non-socket mode ^^^^^^^^^^^^^^^ .. code-block:: python mxl.Molecule( driver="rttddft", driver_kwargs={ "molecule_xyz": "tests/data/hcn.xyz", "functional": "PBE0", "basis": "cc-pVDZ", "dt_rttddft_au": 0.04, "delta_kick_au": 1e-2, "delta_kick_direction": "xyz", "electron_propagation": "pc", "memory": "8GB", "num_threads": 4, }, # ... ) Parameters ---------- .. list-table:: :header-rows: 1 * - Name - Description * - ``engine`` - Computational backend. Currently only ``psi4`` is supported. Default: ``psi4``. * - ``molecule_xyz`` - Path to the geometry file. Relative paths are resolved on the driver side. Required. * - ``functional`` - `Psi4 `_ functional label (``SCF``, ``PBE0``, ``B3LYP`` …). Default: ``SCF``. * - ``basis`` - `Psi4 `_ basis set label (``sto-3g``, ``6-31g``, ``cc-pVDZ`` …). Default: ``sto-3g``. * - ``dt_rttddft_au`` - Electronic time step in atomic units. Sub-stepping is applied when this is smaller than the FDTD step. Default: ``0.04``. * - ``delta_kick_au`` - Magnitude of the initial delta-kick applied along the selected axes (a.u.). Default: ``0.0``. * - ``delta_kick_direction`` - Axes for the delta-kick (``x``, ``y``, ``z``, ``xy``, ``xz``, ``yz``, ``xyz``). Default: ``xyz``. * - ``memory`` - `Psi4 `_ memory allocation string (e.g. ``8GB``). Default: ``8GB``. * - ``num_threads`` - Number of threads assigned to `Psi4 `_. Default: ``1``. * - ``electron_propagation`` - Electronic propagator: ``etrs`` (enforced time-reversal symmetry) or ``pc`` (predictor–corrector). Default: ``pc``. * - ``threshold_pc`` - Convergence threshold for the predictor–corrector scheme. Default: ``1e-6``. * - ``remove_permanent_dipole`` - When ``True`` subtract the permanent dipole from the light–matter coupling. Default: ``False``. * - ``dft_grid_name`` - `Psi4 `_ quadrature grid label (``SG0``, ``SG1`` …). Default: ``SG0``. * - ``dft_radial_points`` - Number of radial grid points (negative values select `Psi4 `_ defaults). Default: ``-1``. * - ``dft_spherical_points`` - Number of angular grid points (negative values select `Psi4 `_ defaults). Default: ``-1``. * - ``checkpoint`` - When ``True`` write ``rttddft_checkpoint_id_.npy`` snapshots for restart. Default: ``False``. * - ``restart`` - When ``True`` attempt to resume from the last checkpoint. Default: ``False``. * - ``verbose`` - When ``True`` print propagation diagnostics and dipole traces. Default: ``False``. Returned data ------------- - ``time_au`` – Simulation clock in atomic units. - ``energy_au`` – Total electronic energy from `Psi4 `_. - ``mux_au``, ``muy_au``, ``muz_au`` – Time-dependent dipole components in atomic units. Notes ----- - Ensure the `Psi4 `_ executable or Python module is available on ``PATH``/ ``PYTHONPATH`` for the driver process. - Additional `Psi4 `_ keywords can be supplied via environment variables or by editing the `Psi4 `_ input template prior to running the driver.