Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added getPower Method to Calculate Laser Power for Resonantly Driven Atoms #169

Merged
merged 1 commit into from
Dec 26, 2024

Conversation

francois-marie
Copy link
Contributor

Description

This PR introduces a new method getPower to the ARC package.
The getPower method calculates the laser power required for resonantly driving a transition between two atomic states in the center of a TEM00 mode of a driving field.

Method Details

def getPower(
    self, n1, l1, j1, mj1, n2, l2, j2, mj2, q, rabiFrequency, laserWaist, s=0.5
):
    """
    Returns a laser power for resonantly driven atom in a
    center of TEM00 mode of a driving field

    Args:
        n1, l1, j1, mj1 : state from which we are driving transition
        n2, l2, j2, mj2 : state to which we are driving transition
        q : laser polarization (-1,0,1 correspond to :math:`\\sigma^-`,
            :math:`\\pi` and :math:`\\sigma^+` respectively)
        rabiFrequency : laser power in units of rad/s
        laserWaist : laser :math:`1/e^2` waist (radius) in units of m
        s (float): optional, total spin angular momentum of state.
            By default 0.5 for Alkali atoms.

    Returns:
        float:
            laserPower in units of W
    """
    if abs(mj2) - 0.1 > j2:
        return 0
    dipole = (
                self.getDipoleMatrixElement(
                    n1, l1, j1, mj1, n2, l2, j2, mj2, q, s=s
                )
                * C_e
                * physical_constants["Bohr radius"][0]
            )
    return pi/4 * C_c * epsilon_0 * (laserWaist * hbar * rabiFrequency / abs(dipole))**2

Parameters

  • n1, l1, j1, mj1: Quantum numbers of the initial state from which the transition is driven.
  • n2, l2, j2, mj2: Quantum numbers of the final state to which the transition is driven.
  • q: Laser polarization, where -1, 0, and 1 correspond to $\sigma^-$, $\pi$, and $\sigma^+$ polarizations, respectively.
  • rabiFrequency: Laser power in units of rad/s.
  • laserWaist: Laser $1/e^2$ waist (radius) in units of meters.
  • s (optional): Total spin angular momentum of the state, defaulting to 0.5 for Alkali atoms.

Returns

  • float: The calculated laser power in units of Watts (W).

Usage

This method can be used to determine the necessary laser power for experiments involving resonantly driven transitions in Alkali atoms. It takes into account the dipole matrix element and other physical constants to provide an accurate calculation.

Example

# Quantum numbers for the ground and excited states
ground_state = [5, 0, 0.5, 0.5]
excited_state = [6, 1, 1.5, 1.5]

# Desired Rabi frequency
target_rabi_freq = 2*pi*70e6  # in Hz

# Waist of the laser beam
waist = 200e-6  # in m

# Polarization of the laser
q = 1

laserPower = getPower(
    *ground_state, *excited_state, q, rabiFrequency=target_rabi_freq, laserWaist=waist
)
print(f"{laserPower*1e3=:.2f} mW")

@nikolasibalic nikolasibalic mentioned this pull request Aug 3, 2024
@nikolasibalic nikolasibalic modified the milestones: v3.6.0, v3.7.0 Oct 4, 2024
@nikolasibalic nikolasibalic changed the base branch from master to draft_v3.6.0 December 26, 2024 10:18
@nikolasibalic nikolasibalic merged commit c5c543b into nikolasibalic:draft_v3.6.0 Dec 26, 2024
2 checks passed
@nikolasibalic
Copy link
Owner

@francois-marie thank you for your contribution, this is merged and released as ARC v3.7.0
Note just that for consistency reasons I renamed the method to getDrivingPower

@francois-marie
Copy link
Contributor Author

Thank you @nikolasibalic!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants