TLS driver
==========
The TLS driver implements a minimal closed two-level system with a single
transition frequency and dipole moment. It is provided by
:class:`maxwelllink.mxl_drivers.python.models.TLSModel` and ships with
**MaxwellLink** for lightweight regression tests and benchmark scenarios.
.. note::
The TLS driver advances the two-level density matrix through
.. math::
\frac{d}{dt}\hat{\rho}(t) = -\frac{i}{\hbar}\Bigl[\hat{H}_0 - \widetilde{\mathbf{E}}(t)\cdot \hat{\boldsymbol{\mu}},\, \hat{\rho}(t)\Bigr],
where :math:`\hat{H}_0 = \mathrm{diag}(0, \hbar\omega_0)` and :math:`\hat{\boldsymbol{\mu}} = \mu_{12}\,\mathbf{e}_{i}\,\hat{\sigma}_x`. :math:`\mathbf{e}_i` denotes
the orientation unit vector of the dipole. The emitted dipole current is evaluated analytically as
.. math::
\frac{d}{dt}\langle \hat{\boldsymbol{\mu}} \rangle = -2\,\omega_0\,\mu_{12}\,\operatorname{Im}\!\bigl(\rho_{12}\bigr)\,\mathbf{e}_{i},
which is passed directly to Maxwell's equations.
Requirements
------------
- No additional packages are required beyond **MaxwellLink**'s dependencies.
- ``scipy`` (already bundled) is used for the short-time propagator.
Usage
-----
Socket mode
^^^^^^^^^^^
.. code-block:: bash
mxl_driver --model tls --port 31415 \
--param "omega=0.242, mu12=187, orientation=2, pe_initial=1e-4, \
checkpoint=false, restart=false"
Non-socket mode
^^^^^^^^^^^^^^^
.. code-block:: python
mxl.Molecule(
driver="tls",
driver_kwargs={
"omega": 0.242,
"mu12": 187.0,
"orientation": 2,
"pe_initial": 1e-4,
},
# ...
)
Parameters
----------
.. list-table::
:header-rows: 1
* - Name
- Description
* - ``omega``
- Transition frequency in atomic units. Default: ``2.4188843e-1``, corresponding to ``1.0`` in
`Meep `_ units when ``time_units_fs=0.1``.
* - ``mu12``
- Transition dipole moment in atomic units; scaling with the emitted source
amplitude. Default: ``1.870819866e2``, corresponding to ``0.1`` in
`Meep `_ units when ``time_units_fs=0.1``.
* - ``orientation``
- Dipole orientation: ``0`` couples to ``E_x``, ``1`` to ``E_y``, ``2`` to
``E_z``. Default: ``2``.
* - ``pe_initial``
- Initial excited-state population. Default: ``0.0``.
* - ``checkpoint``
- When ``True`` write ``tls_checkpoint_id_.npz`` after each step. Default:
``False``.
* - ``restart``
- When ``True`` resume from the latest checkpoint if present. Default:
``False``.
* - ``verbose``
- When ``True`` print field values and density-matrix diagnostics each step.
Default: ``False``.
Returned data
-------------
- ``time_au`` – Simulation time in atomic units.
- ``energy_au`` – Instantaneous TLS energy.
- ``mux_au``, ``muy_au``, ``muz_au`` – Dipole vector components (non-zero along the selected orientation) in atomic units.
- ``Pe`` / ``Pg`` – Excited- and ground-state populations.
- ``Pge_real`` / ``Pge_imag`` – Real and imaginary parts of the coherence.
Notes
-----
- The driver exposes a deterministic analytic evolution; see
``tests/test_tls/test_meep_2d_socket_tls1_relaxation.py`` for reference
output.
- The `QuTiP `_ driver replicates this model when ``preset=tls``; use the TLS driver
for the lightest-weight option.