Lamb-Dicke Approximation
We saw in the derivation of the system Hamiltonian that the displacement operator on a motional mode is given by
after plugging in the definition of the coherent state parameter \(\alpha\). This operator, as is, is in general difficult to simulate due to the doubly-exponentiated time-dependence on the mode frequency. However, we may retain only the first few terms in its Taylor expansion provided that certain conditions be met.
First Order Approximation¶
For the first order condition, we consider the different ways the annihilation and creation operators can act on a Fock state \(|n\rangle\) once: \(\eta a|n\rangle = \eta \sqrt{n} |n-1\rangle\), \(\eta a^{\dagger}|n\rangle = \eta\sqrt{n+1}|n+1\rangle\). Thus, the probability \(P_1\) of changing the number of phonons by 1 is given by
If \(P_1\) is small, we may expand \(D(\alpha)\) to first order as follows:
Important
If:
Then:
Second Order Approximation¶
We can play a very similiar game with the second order condition where we consider the different ways to increase the number of phonons by 2 of a Fock state:
Similar to above, we may expand \(D(\alpha)\) to second order as follows:
Important
If:
Then:
Higher Order Approximations¶
If none of the above conditions are met, then TrICal will expand \(D(\alpha)\) out to third order:
Computing \(D(\alpha)\) Matrix Elements¶
Importantly, TrICal does not compute first and second order constriants (convert into a matrix) directly. This is because information about the oscillating terms, particular the frequency in \(e^{\pi \nu t}\), becomes difficult to retrieve when taking the RWA (described in the following section).
Instead, the order to which we must expand is used to discard \(D(\alpha)\) matrix elements, computed using Laguerre polynomials. According to Glauber and Cahill, the matrix elements of \(D(\alpha)\) in the Fock basis, \(D_{mn} \equiv \langle m|D(\alpha)|n\rangle\), can be written as
For \(m \geq n\):
For \(m < n\):
Note
The matrix elements are not computed until the abstract syntax tree representation is converted to a QuTiP-compatible object by the [QutipConversion][trical.backend.qutip.QutipConversion] rewrite rule.
It's at this point that the Lamb-Dicke approximation, and the order we've determined we must expand to, takes effect: if \(|m-n| >\) Lamb-Dicke order, set the matrix element to 0.