Routines available in the hame module
The following routines are available in the hame module. They are the core of the calculation of one-photon, two-photon and light-shift matrix elements. For examples on how to use them, see How to use the hame module.
This module computes one-photon and two-photon matrix elements between hydrogenic states.
It includes diagonal elements of the two-photon matrix elements, that is light-shift and one-photon ionization rate.
It performs the numerical calculation in the length gauge in a Sturmian basis. It additionally performs the calculation in the velocity gauge.
It checks that results in length and velocity gauges are equal.
- hame.A_gazeau(n: int, l: int, m: int, l0: int) float
Compute the A_{ll0} factor of Gazeau, eq. (3.11) of [1]_.
- Parameters
- Returns
The A_{ll0} factor
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.B_gazeau(n: int, l: int, m: int, l0: int) float
Compute the B_{ll0} factor of Gazeau, eq. (3.11) of [1]_.
- Parameters
- Returns
The B_{ll0} factor
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.C_gazeau(n: int, l: int, m: int, l0: int) float
Compute the C_{ll0} factor of Gazeau, eq. (3.11) of [1]_.
- Parameters
- Returns
The C_{ll0} factor
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.I_gazeau(n: int, l: int, m: int, omega: float) complex
Compute the light-shift of the (n,l) state, using eq. (3.11) of [1]_.
- Parameters
- Returns
The light shift (real part) and ionization rate/2 (imaginary part)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.Integral_Gazeau(n: int, l: int, m: int, nprime: int, lprime: int, n0: int, l0: int, nprime0: int, lprime0: int, nu: float) float
Compute the Gazeau integral, eq. (3.10) of Ref. [1]_.
Note that, in order to get the correct result for the 1s->2s transition (which is known analytically), an additional multiplicative factor is needed.
- Parameters
n (int) – principal quantum number of the first state
l (int) – angular momentum of the first state
m (int) – magnetic quantum number of both states
nprime (int) – principal quantum number of the second state
lprime (int) – angular momentum of the second state
n0 (int) – principal quantum number of the first intermediate state
l0 (int) – angular momentum of the first intermediate state
nprime0 (int) – principal quantum number of the second intermediate state
lprime0 (int) – angular momentum of the second intermediate state
nu (float) – effective principal quantum number of the relay state of the two-photon transition
- Returns
The Gazeau integral, eq. (3.10) of Ref. [1]_.
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.S_gazeau(n: int, n0: int, np0: int, l0: int, nu: complex) complex
Compute the S_{n0,np0}(l0,nu) factor of Gazeau, eq. (3.11) of [1]_.
- Parameters
- Returns
The S_{n0,np0}(l0,nu) factor
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978) n : int
- hame.T_gazeau(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the T factor of Gazeau, eq. (D3) of Ref. [1]_.
For linear polarization along z, it coincides with C_{N’,N} of eq. (D2)
- Parameters
- Returns
T_{n l,nprime lprime}^m
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.a_gazeau(n: int, l: int) float
Compute the a(n,l) factor of Gazeau, eq. (D1) of Ref. [1]_.
- Parameters
- Returns
a(n,l)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.b_Marian(n: int, l: int, nprime: int, lprime: int, q: int, qprime: int, tau: float) float
Compute the b_{nprime lprime,n l}^{(qprime,q)} factor of eq. (43), in ref. [1]_.
This is the most important factor to compute two-photon transition amplitudes, as explained in [2]_.
It uses combinations of factorials and hypergeometric functions. Alternative descriptions are possible if terms of Appell functions, but this is not used here. Note that the sum over the integer nu is in principle infinite. However, the series converges quickly, it should thus not be a problem.
- Parameters
n (int) – principal quantum number of the first state
l (int) – angular momentum of the first state
nprime (int) – principal quantum number of the second state
lprime (int) – angular momentum of the second state
q (int) – change of first angular momentum (either +1 or -1)
qprime (int) – change of second angular momentum (either +1 or -1)
tau (float) – the effective principal quantum number of the intermediate state
- Returns
The b_{nprime lprime,n l}^{(qprime,q)} factor
- Return type
References
- 1
T.A. Marian, Phys. Rev. A 39, 3803 (1989)
- 2
T.A. Marian, Phys. Rev. A 39, 3816 (1989)
- hame.b_gazeau(l: int, m: int) float
Compute the b(l,m) factor of Gazeau, eq. (D1) of Ref. [1]_.
- Parameters
- Returns
b(l,m)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.c_gazeau(l: int, m: int) float
Compute the c(l,m) factor of Gazeau, eq. (D1) of Ref. [1]_.
- Parameters
- Returns
c(l,m)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.check_orthogonality(n: int, l: int, nprime: int, lprime: int, nsup: int) float
Compute the overlap between eigenstates of the hydrogen atom.
Should be unity if n,l = nprime,lprime zero otherwise. The calculation is performed in the Sturmian basis of the n,l state, i.e. with scaling parameter alp=n. The state nprime,lprime is simple in the alp=nprime Sturmian basis. It is computed in the alp=n Sturmian basis using the matrix generated by the routine compute_dilatation_matrix.
- Parameters
- Returns
The overlap < n l|nprime lprime>
- Return type
- hame.compute_2irpz_matrix(l: int, m: int, lprime: int, nsup: int, alp: float) ndarray
Compute the matrix representing the 2*i*r*pz operator in a Sturmian basis of parameter alp.
This is the submatrix connecting the l subspace on the right side and the lprime subspace on the left side. It is non-zero only if \(|l-lprime| = 1\). The dimension of the rectangular matrix is \([0:nsup-l,0:nsup-lprime]\). This rectangular sub-matrix matrix is tridiagonal. The r*pz operator in the Sturmian basis is, according to Eq. (I-211) of [1],:math:r*pz = T_2-S_2 Its matrix elements are given by Eq. (I-197) of [1]. They are purely imaginary, this is why they are multiplied by 2*i to obtain a real result: \(2*i*r*pz = T_+-S_++S_--T_-\)
- Parameters
- Returns
Numpy array [0 (nsup-l,0:nsup-lprime] of floats.)
It should be a tridiagonal matrix.
References
[1] D. Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- hame.compute_2r_matrix(l: int, nsup: int, alp: complex) ndarray
Compute the matrix representing the 2r operator in a Sturmian basis of parameter alp.
This matrix is tridiagonal. The 2r operator in the Sturmian basis is, according to Eq. (I-211) of [1], 2r = 2*alp(U_3+U_1) = 2*alp*(S_3+S_1+T_3+T_1) Its matrix elements are given by Eq. (I-197) of [1].
- Parameters
- Returns
Numpy array – It should be a tridiagonal matrix \([0\!:\!nsup\!-\!l,0\!:\!nsup\!-\!l]\).
- Return type
References
[1] D. Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- hame.compute_Green_function_matrix(l: int, energy: float, nsup: int, alp: complex) ndarray
Compute the matrix representing the 1/(2r(E-H)) operator in a Sturmian basis of parameter alp.
One first computes the 2r(E-H) matrix and then invert it One has 2r(E-H) = U_3*(-1/alp+2*E*alp) + U_1*(1/alp+2*E*alp) + 2 with U=S+T. Its matrix elements are given by Eq. (I-197) of [1].
- Parameters
- Returns
Numpy array [0 (nsup-l,0:nsup-l] of complex or float.)
It should be a tridiagonal matrix.
References
[1] D. Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- hame.compute_dilatation_matrix(two_k: int, gamma: complex, nsup: int, debug: bool = False) ndarray
Compute the dilatation matrix for a \(D_k^+\) irreducible representation of the SO(2,1) group.
The dilatation operator is defined as \(\exp(-i\gamma S_2)\) where S_2 is the second generator of the SO(2,1) group and gamma the parameter of the dilatation. Here, we compute the matrix of this operator in the eigenbasis of the S_3 generator of the SO(2,1), for a D_k^+ irreproducible representation The eigenbasis of S_3 is such that S_3|n> = (n+k)|n>, see eq. (I-168) of [1]_, where n is a non-negative integer. k is the parameter of the D_k^+ representation and is a positive half-integer or integer. The matrix elements are given in Eq. (I-210) of [1]_. They involve hypergeometric functions. However, for small non-zero gamma, this equation generates underflows and overflows and is thus inconvenient. A better strategy, used in this routine, is to use recurrence relations between matrix elements to generate all of them from the ones at small n,n’. One must be careful to use stable recurrence relations.
- Parameters
two_k (int) – Twice the k parameter of the irreducible parameter. As k is either an half-integer of an integer, two_k is an integer. For the 3D hydrogen atom, k is l+1, so that two_k = 2*l+2 should be used. In that case, the quantum number n is n_{principal}-l-1, when n_{principal} is the usual principal quantum number.
gamma (complex) – The parameter of the dilatation matrix. It can be either a float or a complex. For a standard dilatation, gamma is real and the dilatation matrix is purely real. The complex gamma case is used when a complex dilatation takes place. This is used when complex rotation of the coordinates is used. This is not documented in [1]_.
nsup (int) – The maximum n involved in the calculation.
debug (bool, optional) – The default is False. The dilatation matrix is orthogonal so that O*Ot should be unity. When the matrix is truncated, this is no longer true. When debug is True, the routine computes O*Ot restricted to the [0:nmax,0:nmax] subspace (for nmax from 1 to nsup) and prints how much it differs from the unit matrix. Note that, for complex gamma, the dilatation matrix is complex, but still orthogonal (NOT unitary).
- Return type
A numpy array \([0\!:\!nsup\!+\!1,0\!:\!nsup\!+\!1]\) containing \(<\!n k|\exp(-i\gamma S_2)|n' k\!>\) for 0<=n,n’<=nsup.
References
- 1
Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- hame.compute_dipole_matrix_element(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the dipole matrix element between eigenstates of the hydrogen atom.
Should be zero if \(|l-lprime|\) is not 1, non-zero otherwise The calculation is performed in the Sturmian basis of the n,l state, i.e. with scaling parameter alp=n. The state nprime,lprime is simple in the alp=nprime Sturmian basis. It is computed in the alp=n Sturmian basis using the matrix generated by the routine compute_dilatation_matrix. Then, one applies successively the 2r (for going from Sturmian to hydrogenic scalar product) and the z operator
- Parameters
- Returns
The matrix element < n l m| z | nprime lprime m>
- Return type
- hame.compute_dipole_matrix_element_velocity_gauge(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the dipole matrix element between eigenstates of the hydrogen atom in the velocity gauge.
These are the matrix elements of i*p_z (the i makes the result real) Should be zero if \(|l-lprime|\) is not 1, non-zero otherwise The calculation is performed in the Sturmian basis of the n,l state, i.e. with scaling parameter alp=n. The state nprime,lprime is simple in the alp=nprime Sturmian basis. It is computed in the alp=n Sturmian basis using the matrix generated by the routine compute_dilatation_matrix. Then, one applies the 2*i*r*pz operator (the 2r is for going from Sturmian to hydrogenic scalar product)
- Parameters
- Returns
The matrix element < n l m| i*pz | nprime lprime m>
- Return type
- hame.compute_full_light_shift(n: int, l: int, m: int, omega: float, gauge: str = 'length', debug: bool = False) complex
Compute the light-shift of a eigenstate of the hydrogen atom.
This routine uses compute_partial_light_shift or compute_partial_light_shift_velocity_gauge for each possible intermediate l value, and for +/-omega. It also automatically adjust the alp parameter of the Sturmian basis as well as its size.
- Parameters
n (int) – Principal quantum number of the state.
l (int) – Angular momentum of the state.
m (int) – Magnetic quantum number of the state.
omega (float) – Frequency of the photon
gauge (str) – The gauge in which the computation is performed. Either ‘length’ (default) or ‘velocity’
debug (boolean) – If True, some intermediate values are printed
- Returns
Light-shift (real part) and ionization rate/2 (imaginary part)
- Return type
- hame.compute_full_two_photon_matrix_element(n: int, l: int, m: int, nprime: int, lprime: int, gauge: str = 'length') -> (<class 'float'>, <class 'float'>)
Compute the two photon matrix element between eigenstates of the hydrogen atom.
Should be zero if \(|l-lprime|\) is not 0 or 2. This routine uses compute_partial_two_photon_matrix_element or compute_partial_two_photon_matrix_element_velocity_gauge for each possible intermediate l value. It also automatically adjust the alp parameter of the Sturmian basis as well as its size.
- Parameters
n (int) – Principal quantum number of the first state.
l (int) – Angular momentum of the first state.
m (int) – Magnetic quantum number of the two states.
nprime (int) – Principal quantum number of the second state.
lprime (int) – Angular momentum of the second state.
gauge (str) – The gauge in which the computation is performed. Either ‘length’ (default) or ‘velocity’
- Returns
The two matrix elements < n l m| z 1/(H-Eintermediate) z | nprime lprime m> involving the two intermediate l values. If there is only one possible intermediate l value, the second term is set to 0.
- Return type
- hame.compute_partial_light_shift(n: int, l: int, m: int, lintermediate: int, omega: float, nsup: int, alp: complex) complex
Compute the two photon matrix element between eigenstates of the hydrogen atom corresponding to the light-shift.
This computes the partial contribution of states with angular momentum lintermediate Should be zero if \(|l-lintermediate|\) is not 1, non-zero otherwise. The calculation is performed in a Sturmian basis of scaling parameter alp. The state n,l is simple in the alp=n Sturmian basis. One then applies successively:
The z operator in the alp=n basis
The 2r operator (for going from Sturmian to hydrogenic scalar product)
A dilatation operator to go from scaling parameter n to alp
The 1/(2r(Eintermediate-H)) operator (Green function in Sturmian basis)
Another dilatation operator to go back from scaling parameter alp to n
The 2r operator (to compensate for the Green function)
The z operator in the alp=n basis
If one keeps in memory the state after application of z and 2r, the last two steps boil down to a scalar product
- Parameters
n (int) – Principal quantum number of the state.
l (int) – Angular momentum of the state.
m (int) – Magnetic quantum number of the state.
lintermediate (int) – The angular momentum of the intermediate state.
omega (float) – The frequency of the photon (can be positive or negative).
nsup (int) – Maximum principal quantum number included in the calculation.
alp (complex or float) – The scaling parameter of the Sturmian basis used in the calculation
- Returns
The matrix element < n l m| z 1/(H-Eintermediate) z | n l m>
- Return type
- hame.compute_partial_light_shift_velocity_gauge(n: int, l: int, m: int, lintermediate: int, omega: float, nsup: int, alp: complex) complex
Compute the two photon matrix element between eigenstates of the hydrogen atom corresponding to the light-shift, in the velocity gauge.
This computes the partial contribution of states with angular momentum lintermediate Should be zero if \(|l-lintermediate|\) is not 1, non-zero otherwise. The calculation is performed in a Sturmian basis of scaling parameter alp. The state n,l is simple in the alp=n Sturmian basis. One then applies successively:
The 2*i*r*pzz operator in the alp=n basis
A dilatation operator to go from scaling parameter n to alp
The 1/(2r(Eintermediate-H)) operator (Green function in Sturmian basis)
Another dilatation operator to go back from scaling parameter alp to n
The 2*i*r*pz operator in the alp=n basis
If one keeps in memory the state after application of 2*i*r*pz, the last step boils down to a scalar product
- Parameters
n (int) – Principal quantum number of the state.
l (int) – Angular momentum of the state.
m (int) – Magnetic quantum number of the state.
lintermediate (int) – The angular momentum of the intermediate state.
omega (float) – The frequency of the photon (can be positive or negative).
nsup (int) – Maximum principal quantum number included in the calculation.
alp (complex or float) – The scaling parameter of the Sturmian basis used in the calculation
- Returns
The matrix element < n l m| i*pz 1/(H-Eintermediate) i*pz | n l m>
- Return type
- hame.compute_partial_two_photon_matrix_element(n: int, l: int, m: int, nprime: int, lprime: int, lintermediate: int, nsup: int, alp: float) float
Compute the two photon matrix element between eigenstates of the hydrogen atom, with intermediate state of well defined angular momentum.
Should be zero if \(|l-lintermediate|\) and \(|lprime-lintermediate|\) are not 1, non-zero otherwise. As a consequence, there is the selection rule \(|l-lprime|\) = 0 or 2. The calculation is performed in a Sturmian basis of scaling parameter alp. The state nprime,lprime is simple in the alp=nprime Sturmian basis. One then applies successively:
The z operator in the alp=nprime basis
The 2r operator in the alp=nprime basis (for going from Sturmian to hydrogenic scalar product)
A dilatation operator to go from scaling parameter nprime to alp
The 1/(2r(Eintermediate-H)) operator (Green function in Sturmian basis)
Another dilatation operator to go from scaling parameter alp to n
The 2r operator in the alp=n basis(to compensate for the Green function)
The z operator in the alp=n basis
- Parameters
n (int) – Principal quantum number of the first state.
l (int) – Angular momentum of the first state.
m (int) – Magnetic quantum number of the two states.
nprime (int) – Principal quantum number of the second state.
lprime (int) – Angular momentum of the second state.
lintermediate (int) – The angular momentum of the intermediate state.
nsup (int) – Maximum principal quantum number included in the calculation.
alp (float) – The scaling parameter of the Sturmian basis used in the calculation
- Returns
The matrix element < n l m| z 1/(H-Eintermediate) z | nprime lprime m>
- Return type
- hame.compute_partial_two_photon_matrix_element_velocity_gauge(n: int, l: int, m: int, nprime: int, lprime: int, lintermediate: int, nsup: int, alp: float) float
Compute the two photon matrix element between eigenstates of the hydrogen atom, with intermediate state of well defined angular momentum, in the veolcity gauge.
Should be zero if \(|l-lintermediate|\) and \(|lprime-lintermediate|\) are not 1, non-zero otherwise. As a consequence, there is the selection rule \(|l-lprime|\) = 0 or 2. The calculation is performed in a Sturmian basis of scaling parameter alp. The state nprime,lprime is simple in the alp=nprime Sturmian basis. One then applies successively:
The 2*i*r*pz operator in the alp=nprime basis
A dilatation operator to go from scaling parameter nprime to alp
The 1/(2r(Eintermediate)-H) operator (Green function in Sturmian basis)
Another dilatation operator to go from scaling parameter alp to n
The 2*i*r*pz operator in the alp=n basis
- Parameters
n (int) – Principal quantum number of the first state.
l (int) – Angular momentum of the first state.
m (int) – Magnetic quantum number of the two states.
nprime (int) – Principal quantum number of the second state.
lprime (int) – Angular momentum of the second state.
lintermediate (int) – The angular momentum of the intermediate state.
nsup (int) – Maximum principal quantum number included in the calculation.
alp (float) – The scaling parameter of the Sturmian basis used in the calculation
- Returns
The matrix element < n l m| pz 1/(H-Eintermediate) pz | nprime lprime m>
- Return type
- hame.compute_z_matrix(l: int, m: int, lprime: int, nsup: int, alp: complex) ndarray
Compute the matrix representing the z operator in a Sturmian basis of parameter alp.
This is the submatrix connecting the l subspace on the right side and the lprime subspace on the left side. It is non-zero only if \(|l-lprime| = 1\). The dimension of the rectangular matrix is [0:nsup-l,0:nsup-lprime]. This rectangular sub-matrix matrix is tridiagonal. The z operator in the Sturmian basis is, according to Eq. (I-211) of [1], z = alp*(S_3+S_1-T_3-T_1) Its matrix elements are given by Eq. (I-197) of [1].
- Parameters
- Returns
Numpy array \([0\!:\!nsup-l,0\!:\!nsup-lprime]\) of complex or float.
It should be a tridiagonal matrix.
References
[1] D. Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- hame.d_Marian(n: int, l: int, q: int, s: int) int
Compute the d_{n,l}^{(q,s)} factor in Table VI of ref. [1]_.
Note that it is used in eq. (43) of ref. [2]_.
- Parameters
- Returns
d_{n,l}^{(q,s)}
- Return type
References
- 1
T.A. Marian, Phys. Rev. A 39, 3803 (1989)
- 2
T.A. Marian, Phys. Rev. A 39, 3816 (1989)
- hame.g1(nu: float, n0: int, n: int, nprime: int) float
Compute the g^1_{0,n’)(nu,n0,n) function of the (not numbered) equation, page 238 of Ref. [1]_.
- Parameters
- Returns
The g^1_{0,n’)(nu,n0,n) function
- Return type
References
- 1
N.L. Manakov et al., Phys. Lett. A 237, 234 (1998)
- hame.gordon_formula(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the matrix element of the dipole operator between eigenstates of the hydrogen atom.
This is <n l m | z | nprime, lprime, m>. For n=nprime, it is given by Eq. (I-48) in [1]_. For n!=nprime, it is computed using the so-called Gordon formula, Eq. (I-49) of ref. [1]_, It was originally given by Eq. (28) of ref [2]_ and is also reproduced in Eq. (63.2) of ref. 3. Note that the angular part, Eq. (I-45) of [1]_ is included, so that it is actually the matrix element of the z operator. When matrix elements of the x and y operators are needed, they can be straightforwardly deduced from the ones of z, using Eqs. (I-46,I-47) of [1]_.
- Parameters
- Returns
The matrix element <n l m | z | nprime, lprime, m>
- Return type
Notes
When the principal quantum numbers n,nprime are large, the factorials in the Gordon formula may become huge and overflow. A slight rewriting using scipy.special.comb (the number of combinations, using ratio of factorials) solves this issue. Note that this routine has been tested for small l,lprime values and may overflow/underflow for large values of l,lprime (not tested).
References
- 1
Delande, These d’Etat: Atomes de Rydberg en champs statiques intenses, Universite Pierre et Marie Curie (Paris), 1988, https://theses.hal.science/tel-00011864v1
- 2
Gordon, Ann. Phys 2, 1031 (1929)
- 3
H.A. Bethe and E. E. Salpeter, Quantum Mechanics of One- and Two-Electron Atoms, Springer (1957)
- hame.ionization_rate(nprime: int, lprime: int, m: int, l: int, omega: float, debug: bool = False) float
Compute the ionization rate of the (nprime,lprime) state to the l continuum.
It uses the Gordon formula discrete->continuum, Eq. (28’) in ref. [1]_. Note however that there are two typos in the equation:
The factor i in the first numerator should not be in the exponent, but a simple multiplication factor
In the first denominator, the power of x should be 2, not 3/2
- Parameters
nprime (int) – principal quantum number of the initial state
lprime (int) – angular momentum of the initial state
m (int) – magnetic quantum number of the initial and final states
l (int) – angular momentum of the final state
omega (float) – photon frequency
debug (boolean) – it True, print some intermediate values
- Returns
ionization rate
- Return type
References
- 1
Gordon, Ann. Phys 2, 1031 (1929)
- hame.ionization_rate_1s(omega: float) float
Compute the ionization rate of the 1s state.
It uses the Gordon formula discrete->continuum, Eq. (28’) in ref. [1]_. Note however that there are two typos in the equation:
The factor i in the first numerator should not be in the exponent. but a simple multiplication factor
In the first denominator, the power of x should be 2, not 3/2.
When specialized to the 1s initial state, the formula simplifies to Eq. (71.4) in ref. [2]_.
Note that the result should be identical to the one of hame.ionization_rate(1, 0, 1, omega).
References
- 1
Gordon, Ann. Phys 2, 1031 (1929)
- 2
H.A. Bethe and E. E. Salpeter, Quantum Mechanics of One- and Two-Electron Atoms, Springer (1957)
- hame.lambda_Marian(l: int, q: int) int
Compute the lambda_{l+q,l} coefficient, eq. (A5) of ref. [1]-.
Note that it is used in eq. (11) of ref. [2]_.
- Parameters
- Returns
The lambda_{l+q,l} coefficient, eq. (A5) of ref. [1]-.
- Return type
References
- 1
T.A. Marian, Phys. Rev. A 39, 3803 (1989)
- 2
T.A. Marian, Phys. Rev. A 39, 3816 (1989)
- hame.my_clebsch_gordan(l: int, q: int, m: int) float
Compute the Clebsch-Gordan coefficient <l+q m 1 0|l m>.
- Parameters
- Returns
Clebsch-Gordan coefficient <l+q m 1 0|l m>
- Return type
References
- 1
Section Special cases” in https://en.wikipedia.org/w/index.php?title=Clebsch–Gordan_coefficients
- hame.partial_light_shift_1s(omega: float) complex
Compute the analytic light-shift of the 1s state.
This uses Eq. (3.11) of Ref. [1]_.
- Parameters
omega (float) – Frequency of the photon (can be positive or negative)
- Returns
The light shift (real part) and ionization rate/2 (imaginary part)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.partial_light_shift_2s(omega: float) complex
Compute the analytic light-shift of the 2s state.
This uses Eq. (3.11) of Ref. [1]_.
- Parameters
omega (float) – Frequency of the photon (can be positive or negative)
- Returns
The light shift (real part) and ionization rate/2 (imaginary part)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.partial_light_shift_3s(omega: float) complex
Compute the analytic light-shift of the 3s state.
Based on Eq. (A1) of ref. [1]_.
WARNING: This result does not agree with the numerical calculation! Could well be wrong.
- Parameters
omega (float) – Frequency of the photon (can be positive or negative)
- Returns
The light shift (real part) and ionization rate/2 (imaginary part)
- Return type
References
- 1
haas et al., Phys. Rev. A 73, 052501 (2006)
- hame.two_photon_matrix_element_Gazeau(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m).
It is based on eq. (3.4) in ref. [1]_.
The T_Gazeau factors correspond to the C coefficients in the equation. The Integral_Gazeau factor is the integral in the equation (multiplied by n0).
- Parameters
- Returns
The two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m)
- Return type
References
- 1
J.P. Gazeau, J. Math. Phys. 19, 1041 (1978)
- hame.two_photon_matrix_element_Marian(n: int, l: int, m: int, nprime: int, lprime: int) float
Compute the two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m).
It is based on eq. (11) in ref. [1]_.
The b_{nprime lprime,n l}^{(qprime,q)} factor is computed in the routine b_Marian, from eq. (43) of ref. [1]_.
Some additional quantities are defined in ref. [2]_.
- Parameters
- Returns
The two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m)
- Return type
References
- 1
T.A. Marian, Phys. Rev. A 39, 3816 (1989)
- 2
T.A. Marian, Phys. Rev. A 39, 3803 (1989)
- hame.two_photon_matrix_element_from_1s_Marian(n: int, l: int) float
Compute the two-photon matrix element from 1s state to (n,l) state.
Of course, one should have l=0 or 2.
This uses the eqs. (33-34), page 3821 of Ref. [1]_.
- Parameters
- Returns
The two-photon matrix element between (n=1,l=0,m=0) and the (n,l,m=0) states
- Return type
References
- 1
T.A. Marian, Phys. Rev. A 39, 3816 (1989)
- hame.two_photon_matrix_element_from_1s_to_ns_Manakov(n: int) float
Compute the two-photon matrix element from 1s state to ns state.
This uses the (not numbered) equations, page 238 of Ref. [1]_. Note that the T_{n0,n}(nu) should be multiplied by 0.5 to get the correct results.
- Parameters
n (int) – Principal quantum number of the upper state
- Returns
The two-photon matrix element between (n=1,l=0,m=0) and the (n,l=0,m=0) states
- Return type
References
- 1
N.L. Manakov et al., Phys. Lett. A 237, 234 (1998)
- hame.two_photon_matrix_element_from_2s_to_ns_Manakov(n: int) float
Compute the two-photon matrix element from 2s state to ns state.
This uses the (not numbered) equations, page 238 of Ref. [1]_. Note that the T_{n0,n}(nu) should be multiplied by 0.5 to get the correct results.
- Parameters
n (int) – Principal quantum number of the upper state
- Returns
The two-photon matrix element between (n=2,l=0,m=0) and the (n,l=0,m=0) states
- Return type
References
- 1
N.L. Manakov et al., Phys. Lett. A 237, 234 (1998)