Coupled Lorentz Oscillators#

Coupled dipoles are the simplest platform for exploring cooperative emission effects such as superradiance and subradiance. PyCharge models each dipole as a Lorentz oscillator and lets the sources exchange energy through their self-consistent fields.

Note

The appendix of the PyCharge paper details the quantum electrodynamics (QED) expressions for radiative coupling parameters. The simulations here reproduce the same physics in the weak-coupling limit.

It is well known that an atom’s surrounding environment modifies its radiative properties. In the classical model, the modification of the spontaneous emission (SE) rate arises from scattering of the atomic field (as the Lorentz oscillator is driven by the electric field at its origin position), while in QED theory, the SE rate is stimulated by vacuum field fluctuations or radiation reaction, depending in part on the ordering of the quantum field operators.

In the weak coupling regime, where the atom-field coupling constant is much less than the photon decay rate inside the cavity, the interactions can be treated perturbatively, so QED and classical theory yield the same results for the modification of the SE rate (except when the surrounding medium exhibits gain). The modification of radiative properties for two coupled LOs in close. vicinity can be obtained by invoking QED theory and using the dyadic Green’s function for a dipole.

Superradiant and Subradiant States#

The classical analogs of the superradiant and subradiant states of two coupled two-level systems (TLSs), where the dipoles are quantized, occur when they are polarized along the same axis and begin either in phase (dipole moments aligned in the same direction) or out of phase (dipole moments opposite in direction), respectively.

PyCharge can calculate the frequency shift \(\delta_{12}\) and SE rate \(\gamma^{\pm}\) of two coupled LOs in either collective state by curve fitting the discretized kinetic energy (KE) values, computed at each time step, to the expected harmonic form:

(1)#\[\mathrm{KE} = A e^{-(\gamma^{\pm} t)} \sin^2\!\left((\omega_0 \pm \delta_{12}) t + \phi\right)\]

where \(A\) and \(\phi\) are constants determined by the initial simulation conditions. The fit should be performed using KE values after a sufficient number of time steps have elapsed, allowing scattered fields to propagate back to the LO’s origin position.

When the two coupled LOs are in the superradiant or subradiant states, the populations of their excited states and their total energies \(\mathcal{E}\) decay exponentially with rates \(\gamma^{+}\) or \(\gamma^{-}\), respectively.


Radiated Power and Energy Exchange#

The total electromagnetic power radiated by an accelerating point charge in a vacuum (at non-relativistic speeds) is given by the Larmor formula:

(2)#\[P(t) = \frac{q^2 a^2(t)}{6 \pi \epsilon_0 c^3}\]

The power radiated by a dipole can be calculated using the same expression by replacing \(q^2 a^2\) with \(|\mathbf{\ddot d}|^2\). Assuming that the dipoles begin oscillating at \(t = 0\), the radiated energy at time \(t'\) is obtained by integrating the radiated power from \(t = 0\) to \(t = t'\), which can be approximated in PyCharge using discrete integration.

If two or more dipoles interact within a system, each dipole may absorb an amount of energy \(W_\mathrm{abs}\) radiated from the others. The total (constant) energy of a system containing \(N\) dipoles is the sum of all energy gains and losses:

(3)#\[W_\mathrm{total} = \sum_{\mathrm{i}=1}^N \left( \mathcal{E}_i(t') - W_{\mathrm{abs},\,i}(t') + \int_0^{t'} P_i(t)\,dt \right)\]

where \(\mathcal{E}_i\) is the total energy (sum of kinetic and potential energies) of the i-th dipole.


Simulating Coupled Dipoles in PyCharge#

Simulating coupled systems in PyCharge is straightforward. The interaction between sources is handled automatically by the simulation engine. When the simulate() function calculates the driving field for each dipole at each time step, that field is the superposition of the fields generated by all other sources in the system.

The resulting coupled_states output contains the full trajectory of both dipoles, which can then be used for further analysis. Although PyCharge calculates the system’s dynamics directly, extracting quantitative parameters, such as the modified decay rates \(\gamma^{\pm}\) or the frequency shift \(\delta_{12}\), requires additional post-processing.

A complete simulation example is provided in Simulate Coupled Dipoles.