Вступление
В этом посте я постараюсь расказать как посчитать балансно кинетические уравнения для ND:YAG лазера. Замечу, что здесь не будет расчитываться дипольная матрица переходов. Также для нахождения коэфициентов Эйнштейна я использую диполное приближение
Схема энергетических уровней ND:YAG лазера
Теория
Пусть \(N_1, N_2, N_3\) населенности первых 3-ох уровней. Для ND:YAG лазера время переходов между 3 и 4 уровнями незначительное, поэтому им можно пренебречь, и положить \(N_4=0\). Исходя из этого схема превратиться в 3-ох уровневую. Изменение населенностей для первого уровня запишем как:
\[\frac{dN_1}{dt} = -w_p N_1(t) + w_{21} N_2(t)\tag{1}\]
Второй уровень в даной системе есть нижним енергентическим уровнем перехода на нем осусчествляесть генерация излучения. Из-за этого необходимо ввести плотность энергии этой волны \(U(t)\). Запишем второе уравнение:
\[\frac{dN_2}{dt}=-w_{21} N_2{t} + w_{32} N_3(t) - w_i N_2(t) U(t) + w_i N_3(t) U(t)\tag{2}\]
В данных уравнениях константа \(w_i\) отвечает коэфициентам Эйнштейна для вынужденых переходов \(B_{23}=B_{32}\). Для уровня 3:
\[\frac{dN_3}{dt}=-w_{32} N_3{t} + w_{p} N_1(t) + w_i N_2(t) U(t) - w_i N_3(t) U(t)\tag{3}\]
После некоторых упрощений запишем систему балансно кинетических уравнений
\[\begin{cases}\dot{N}= (w_{p}+w_{32}-\frac{1}{2}w_{21})N_{1}+\frac{1}{2}w_{21}(N_{V}-N)-w_{32}(N_{V}+N)-2w_{i}\\ \dot{N_{1}}=(w_{p}+\frac{1}{2}w_{21})N_{1}+\frac{1}{2}w_{21}(N_{V}-N)\\ \dot{U} = - \frac{U}{\tau_{c}} + w_{i} N U \end{cases}\tag{4}\]
где \(w_p=w_{13}\) - скорость накачки, \(\tau_c = \frac{Q\lambda}{2 \pi c}\)- время жизни фотона в резонаторе, \(Q\) - добротность резонатора.
%pylab inline
from ipywidgets import StaticInteract,RangeWidget
import matplotlib.gridspec as gridspec
import warnings
warnings.filterwarnings('ignore')
def kinetic_system(aw21,atc,awp):
Nv=0.3*10**20
w32=1.0/(0.23*10**-3)
w21=aw21*w32*10**3
wi=(1.8*10**-11)
tc=atc*10**-9
wp=awp*10**6
N0=(wi*tc)**-1
Ns=Nv*(wp/(wp+w32))
t0=(2*wp+w21)/(wp*w21+w21*w32+wp*w32)
U0=tc/t0*(Ns-N0)
N=0;N1=Nv;U=U0*10**-20
def Nf(N,N1,Nv,U,wp,w32,w21,wi):
return (wp+w32-0.5*w21)*N1+0.5*w21*(Nv-N)-w32*(Nv+N)-2*wi*N*U
def Nf1(N,N1,Nv,wp,w21):
return -(wp+0.5*w21)*N1+0.5*w21*(Nv-N)
def Uf(N,U,tc,wi):
return -U/tc+wi*N*U
t=linspace(0,1,600)
dx=0.00000001
Na=[];Ua=[]
for i in range(len(t)):
Na+=[N];Ua+=[U]
N+=dx*Nf(N,N1,Nv,U,wp,w32,w21,wi)
N1+=dx*Nf1(N,N1,Nv,wp,w21)
U+=dx*Uf(N,U,tc,wi)
gs = gridspec.GridSpec(2, 1)
fig=figure()
ax1=fig.add_subplot(gs[0])
axhline(y=1,linewidth=2,color='g',linestyle='--')
plot(t,array(Na)/N0)
ax2=fig.add_subplot(gs[1])
plot(t,array(Ua)/U0)
ax1.set_ylabel(r'$\frac{N}{N_{0}}$',fontsize=16)
ax2.set_ylabel(r'$\frac{U}{U_{0}}$',fontsize=16)
ax2.set_xlabel('$t$',fontsize=16)
return fig
StaticInteract(kinetic_system,
aw21=RangeWidget(0.3, 1, 0.1, description='$w_{21}$'),
atc=RangeWidget(2, 6, 1, description='$t_c$'),
awp=RangeWidget(4.7, 5, 0.1, description='$w_p$'))