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
  • n (int) – principal quantum number

  • l (int) – angular momentum

  • m (int) – magnetic quantum number

  • l0 (int) – another angular momentum

Returns

The A_{ll0} factor

Return type

float

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
  • n (int) – principal quantum number

  • l (int) – angular momentum

  • m (int) – magnetic quantum number

  • l0 (int) – another angular momentum

Returns

The B_{ll0} factor

Return type

float

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
  • n (int) – principal quantum number

  • l (int) – angular momentum

  • m (int) – magnetic quantum number

  • l0 (int) – another angular momentum

Returns

The C_{ll0} factor

Return type

float

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
  • n (int) – principal quantum number

  • l (int) – angular momentum

  • m (int) – magnetic quantum number

  • 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

complex

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

float

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
  • n (int) – principal quantum number

  • n0 (int) – an intermediate principal quantum number

  • np0 (int) – another intermediate principal quantum number

  • l0 (int) – an intemnmediate angular momentum

  • nu (complex) – effective principal quantum number of the upper state

Returns

The S_{n0,np0}(l0,nu) factor

Return type

complex

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
  • n (int) – Principal quantum number

  • l (int) – Angular momentum

  • m (int) – Magnetic quantum number

  • nprime (int) – Principal quantum number of the other state

  • lprime (int) – Angular momentum of the other state

Returns

T_{n l,nprime lprime}^m

Return type

float

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
  • n (int) – Principal quantum number

  • l (int) – Angular momentum

Returns

a(n,l)

Return type

float

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

float

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
  • l (int) – Angular momentum

  • m (int) – Magnetic quantum number

Returns

b(l,m)

Return type

float

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
  • l (int) – Angular momentum

  • m (int) – Magnetic quantum number

Returns

c(l,m)

Return type

float

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
  • 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.

  • nsup (int) – Maximum principal quantum number included in the calculation.

Returns

The overlap < n l|nprime lprime>

Return type

float

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
  • l (int) – Angular momentum quantum number on the left side.

  • m (int) – Magnetic quantum number of the two states.

  • lprime (int) – Angular momentum quantum number on the right side.

  • nsup (int) – Maximal principal quantum number included in the calculation.

  • alp (float) – Dilatation parameter

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
  • l (int) – Angular momentum quantum number.

  • nsup (int) – Largest value of the principal quantum number.

  • alp (complex or float) – Dilatation parameter

Returns

Numpy array – It should be a tridiagonal matrix \([0\!:\!nsup\!-\!l,0\!:\!nsup\!-\!l]\).

Return type

complex or float

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
  • l (int) – Angular momentum quantum number.

  • energy (float) – The ergy at which the Green function is computed.

  • nsup (int) – Largest value of the principal quantum number.

  • alp (complex or float) – Dilatation parameter

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
  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
  • n (int) – Principal quantum number of the first state.

  • l (int) – Angular momentum of the first state.

  • m (int) – Magnetic quantum number of the first state.

  • nprime (int) – Principal quantum number of the second state.

  • lprime (int) – Angular momentum of the second state.

Returns

The matrix element < n l m| z | nprime lprime m>

Return type

float

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
  • n (int) – Principal quantum number of the first state.

  • l (int) –

    Angular momentum of the first state. m : int

    Magnetic quantum number of the first state.

  • nprime (int) – Principal quantum number of the second state.

  • lprime (int) – Angular momentum of the second state.

Returns

The matrix element < n l m| i*pz | nprime lprime m>

Return type

float

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

complex

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

(float, float)

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

complex or float

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

complex or float

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

float

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

float

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
  • l (int) –

    Angular momentum quantum number on the left side. m: int

    Magnetic quantum number of the two states.

  • lprime (int) – Angular momentum quantum number on the right side.

  • nsup (int) – Maximal principal quantum number included in the calculation.

  • alp (complex or float) – Dilatation parameter

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
  • n (int) – Principal quantum number

  • l (int) – Angular momentum

  • q (int) – The change in l (either +1 or -1)

  • s (int) – Another parameter equal to either +1 or -2

Returns

d_{n,l}^{(q,s)}

Return type

int

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
  • nu (float) – Effective principal quantum number of the intermediate state

  • n0 (int) – Principal quantum number of the initial state

  • nprime (int) – Another principal quantum number

Returns

The g^1_{0,n’)(nu,n0,n) function

Return type

float

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
  • n (int) – Principal quantum number of the first state.

  • l (int) – Angular momentum of the first state.

  • m (int) – Magneiic quantum number of the two states.

  • nprime (int) – Principal quantum number of the second state.

  • lprime (int) – Angular momentum of the second state.

Returns

The matrix element <n l m | z | nprime, lprime, m>

Return type

float

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
  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
  1. 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:

  1. The factor i in the first numerator should not be in the exponent, but a simple multiplication factor

  2. 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

float

References

1
  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:

  1. The factor i in the first numerator should not be in the exponent. but a simple multiplication factor

  2. 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).

Parameters

omega (float) – photon frequency

Returns

ionization rate

Return type

float

References

1
  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
  • l (int) – angular momentum

  • q (int) – change in angular momentum, should be +1 or -1

Returns

The lambda_{l+q,l} coefficient, eq. (A5) of ref. [1]-.

Return type

int

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
  • l (int) – angular momentum

  • q (int) – change in angluar momentum

  • m (int) – magnetic quantum number

Returns

Clebsch-Gordan coefficient <l+q m 1 0|l m>

Return type

float

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

complex

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

complex

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

complex

References

1
  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
  • 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

Returns

The two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m)

Return type

float

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
  • 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

Returns

The two-photon transition amplitude between states (n,l,m) and (nprime,lprime,m)

Return type

float

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
  • n (int) – Principal quantum number of the upper state

  • l (int) – Angular momentum of the upper state

Returns

The two-photon matrix element between (n=1,l=0,m=0) and the (n,l,m=0) states

Return type

float

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

float

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

float

References

1

N.L. Manakov et al., Phys. Lett. A 237, 234 (1998)