Zpracování rotačních spekter $N_2(C\,^3\Pi_g\rightarrow B\,^3\Pi_u)$

V atmosférických výbojích často pozorujeme záření molekuly dusíky v důsledku přechodu $N_2(C\,^3\Pi_g\rightarrow B\,^3\Pi_u)$. Ve starší literatuře se setkáme s označením "druhý pozitivní systém". Většina vibračních pásů tohoto systému se nachází v blízké UV oblasti a zasahuje i do viditelné části spektra. Toto záření je tedy často původcem charakteristické fialové barvy atmosférických výbojů.

S rostoucí teplotou se více populují stavy s vyšším rotačním číslem. Ve spektrech se to projevuje tak, že roste relativní intenzita části pásů směrem ke kratším vlnovým délkám (tedy směrem "doleva").

Toho se dá využít k rychlému odhady teploty, pokud máme k dispozici kalibrační křivku

$$ \frac{I_0}{ I_1}= f(T, {\rm integrační~limity}) $$
In [1]:
#kod v teto bunce neni soucasti lekce,
#presto ho ale netajime

import massiveOES
import matplotlib.pyplot as plt
%matplotlib inline

from matplotlib import colors as mcolors
colors = dict(mcolors.BASE_COLORS, **mcolors.CSS4_COLORS)

N2 = massiveOES.SpecDB('N2CB.db')
spec_cold = N2.get_spectrum(Trot=300, Tvib=300, wmin=325, wmax=337.6)
spec_hot = N2.get_spectrum(Trot=3000, Tvib=3000, wmin=325, wmax=337.6)
dump=spec_cold.refine_mesh()
dump=spec_hot.refine_mesh()

spec_cold.convolve_with_slit_function(gauss=5e-2)
spec_hot.convolve_with_slit_function(gauss=5e-2)

plt.rcParams['font.size'] = 13
plt.rcParams['figure.figsize'] = (15,4)

fig, axs = plt.subplots(1,2)

axs[0].plot(spec_cold.x, spec_cold.y, color='blue', label = 'T$_{rot}$ = 300 K')
axs[0].plot(spec_hot.x, spec_hot.y, color='green', label = 'T$_{rot}$ = 3000 K')

axs[0].legend(loc='upper left')
axs[0].set_xlabel('wavelength [nm]')
axs[0].set_ylabel('relative photon flux [arb. u.]')

int_lims = 320, 335, 336.9

axs[1].plot(spec_hot.x, spec_hot.y, color='green', label = 'T$_{rot}$ = 3000 K')
axs[1].fill_between(spec_hot.x, spec_hot.y, 
                    where=(spec_hot.x > int_lims[0]) & (spec_hot.x<int_lims[1]),
                    color='green', alpha=0.5)
axs[1].fill_between(spec_hot.x, spec_hot.y, 
                    where=(spec_hot.x > int_lims[1]) & (spec_hot.x<int_lims[2]),
                    color='darkorange', alpha=0.5)

axs[1].annotate('$I_0$', xy=(334, 70), xytext = (330, 300), 
                arrowprops=dict(facecolor='green', width = 2, headwidth=7),
                color = 'green', alpha=0.9, size=20)

axs[1].annotate('$I_1$', xy=(336, 220), xytext = (334, 500), 
                arrowprops=dict(facecolor='darkorange', width = 2, headwidth=7),
                color = 'darkorange', alpha=1, size=20)


axs[1].set_xlabel('wavelength [nm]')
txt = axs[1].set_ylabel('relative photon flux [arb. u.]')
/home/janvorac/wheel/packages/massiveOES/massiveOES/data/N2CB.db
In [89]:
import numpy 

cal = numpy.genfromtxt('N2spec/calibration.txt')

plt.rcParams['figure.figsize'] = (7.5,4)
ax = plt.plot(cal[:,0], cal[:,1])

plt.xlabel('temperature [K]')
plt.ylabel('I$_0$ / I$_1$')

txt = plt.title('limits = (320, 335, 336.9) nm')

Úkoly

  1. Projděte všechny soubory v adresáři N2spec. Každý z nich obsahuje dusíkové spektrum získané při určité teplotě. Výše popsanou metodou s využitím kalibrační křivky (N2spec/calibration.txt) přiřaďte každému souboru správnou teplotu.
  2. Jméno každého souboru skrývá souřadnice x a y. Vyneste získané hodnoty teploty do dvourozměrného pole podle těchto souřadnic a vykreslete takto získaný obraz.