V-Type Three-Level: √8π Sech Pulse, √8π Coupling

[1]:
import numpy as np

sech_fwhm_conv = 1./2.6339157938
t_width = 1.0*sech_fwhm_conv # [τ]

print(np.sqrt(8))

print('t_width', t_width)

n = np.sqrt(8) # For a pulse area of nπ
ampl = n/t_width/(2*np.pi) # Pulse amplitude [2π Γ]

print('ampl', ampl)

n = np.sqrt(8) # For a pulse area of nπ
ampl_2 = n/t_width/(2*np.pi) # Pulse amplitude [2π Γ]

print('ampl_2', ampl_2)
2.8284271247461903
t_width 0.3796628587572578
ampl 1.1856786822710181
ampl_2 1.1856786822710181
[2]:
a = np.sqrt(8)
b = np.sqrt(8)

np.sqrt(a**2 + b**2)
[2]:
4.0
[3]:
mb_solve_json = """
{
  "atom": {
    "decays": [
      { "channels": [[0,1], [0,2]],
        "rate": 0.0
      }
    ],
    "energies": [],
    "fields": [
      {
        "coupled_levels": [[0, 1]],
        "detuning": 0.0,
        "detuning_positive": true,
        "label": "probe",
        "rabi_freq": 1.18567868227,
        "rabi_freq_t_args":
          {
             "ampl": 1.0,
             "centre": 0.0,
             "width": 0.3796628587572578
          },
        "rabi_freq_t_func": "sech"
      },
      {
        "coupled_levels": [[0, 2]],
        "detuning": 0.0,
        "detuning_positive": true,
        "label": "coupling",
        "rabi_freq": 1.18567868227,
        "rabi_freq_t_args":
          {
             "ampl": 1.0,
             "centre": 0.0,
             "width": 0.3796628587572578
          },
        "rabi_freq_t_func": "sech"
      }
    ],
    "num_states": 3
  },
  "t_min": -2.0,
  "t_max": 10.0,
  "t_steps": 60,
  "z_min": -0.2,
  "z_max": 1.2,
  "z_steps": 70,
  "z_steps_inner": 1,
  "interaction_strengths": [10.0, 10.0],
  "savefile": "mbs-vee-sech-sqrt8pi-sqrt8pi"
}
"""
[4]:
from maxwellbloch import mb_solve
mb_solve_00 = mb_solve.MBSolve().from_json_str(mb_solve_json)

%time Omegas_zt, states_zt = mb_solve_00.mbsolve(recalc=True)
10.0%. Run time:   1.86s. Est. time left: 00:00:00:16
20.0%. Run time:   4.12s. Est. time left: 00:00:00:16
30.0%. Run time:   7.40s. Est. time left: 00:00:00:17
40.0%. Run time:  10.83s. Est. time left: 00:00:00:16
50.0%. Run time:  14.29s. Est. time left: 00:00:00:14
60.0%. Run time:  17.91s. Est. time left: 00:00:00:11
70.0%. Run time:  21.61s. Est. time left: 00:00:00:09
80.0%. Run time:  25.38s. Est. time left: 00:00:00:06
90.0%. Run time:  29.17s. Est. time left: 00:00:00:03
Total run time:  32.89s
Saving MBSolve to mbs-vee-sech-sqrt8pi-sqrt8pi.qu
CPU times: user 32.8 s, sys: 91.5 ms, total: 32.8 s
Wall time: 32.9 s
[5]:
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

sns.set_style('darkgrid')

fig = plt.figure(1, figsize=(16, 12))

# Probe
ax = fig.add_subplot(211)
cmap_range = np.linspace(0.0, 2.0, 11)
cf = ax.contourf(mb_solve_00.tlist, mb_solve_00.zlist,
                 np.abs(mb_solve_00.Omegas_zt[0]/(2*np.pi)),
                 cmap_range, cmap=plt.cm.Blues)
ax.set_title('Rabi Frequency ($\Gamma / 2\pi $)')
ax.set_ylabel('Distance ($L$)')
ax.text(0.02, 0.95, 'Probe',
        verticalalignment='top', horizontalalignment='left',
        transform=ax.transAxes, color='grey', fontsize=16)
plt.colorbar(cf)

# Coupling
ax = fig.add_subplot(212)
cmap_range = np.linspace(0.0, 2.0, 11)
cf = ax.contourf(mb_solve_00.tlist, mb_solve_00.zlist,
                 np.abs(mb_solve_00.Omegas_zt[1]/(2*np.pi)),
                 cmap_range, cmap=plt.cm.Greens)
ax.set_xlabel('Time ($1/\Gamma$)')
ax.set_ylabel('Distance ($L$)')
ax.text(0.02, 0.95, 'Coupling',
        verticalalignment='top', horizontalalignment='left',
        transform=ax.transAxes, color='grey', fontsize=16)
plt.colorbar(cf)

# Both
for ax in fig.axes:
    for y in [0.0, 1.0]:
        ax.axhline(y, c='grey', lw=1.0, ls='dotted')
plt.tight_layout()
../_images/examples_mbs-vee-sech-sqrt8pi-sqrt8pi_5_0.png
[6]:
total_area = np.sqrt(mb_solve_00.fields_area()[0]**2 + mb_solve_00.fields_area()[1]**2)

fig, ax = plt.subplots(figsize=(16, 4))
ax.plot(mb_solve_00.zlist, mb_solve_00.fields_area()[0]/np.pi, label='Probe', clip_on=False)
ax.plot(mb_solve_00.zlist, mb_solve_00.fields_area()[1]/np.pi, label='Coupling', clip_on=False)
ax.plot(mb_solve_00.zlist, total_area/np.pi, label='Total', ls='dashed', clip_on=False)
ax.legend()
ax.set_ylim([0.0, 4.0])
ax.set_xlabel('Distance ($L$)')
ax.set_ylabel('Pulse Area ($\pi$)');
../_images/examples_mbs-vee-sech-sqrt8pi-sqrt8pi_6_0.png