Introdução à Modelagem de Lasers de Modo Trancado
A simulação precisa de lasers de modo trancaod é crucial para entender sua dinâmica complexa em física óptica. Neste artigo, apresentamos como utilizar o MATLAB para resolver as equações de Schrödinger não lineares acopladas (CNLSE) por meio do método split-step Fourier (SSFM) combinado com o algoritmo Runge-Kutta, permitindo observar a evolução dinâmica de pulsos e espectros.
Equações de Schrödinger Não Lineares Acopladas
As equações CNLSE descrevem a propagação de pulsos ópticos em meios dispersivos e não lineares, como fibras ópticas. A forma geral é dada por:
i ∂E/∂z + (β₂/2) ∂²E/∂t² - γ|E|²E = 0
Aqui, E representa o envelope do campo elétrico, z é a distância de propagação, t é o tempo, β₂ é o coeficiente de dispersão de segunda ordem e γ é o coeficiente não linear. Em simulações realistas de lasers de modo trancado, as equações podem incluir termos adicionais de acoplamento entre modos.
Implementação do Método Split-Step Fourier
O SSFM separa o processo de propagação em etapas de dispersão e não linearidade, tratando cada uma individualmente. A seguir, um exemplo de código em MATLAB adaptado com variáveis renomeadas e ligeiras modificações na estrutura:
% Definição de parâmetros
distancia_max = 1;
passo_z = 0.01;
janela_tempo = 10;
passo_t = 0.01;
tempo = (-janela_tempo/2:passo_t:janela_tempo/2 - passo_t)';
num_pontos = length(tempo);
distancia = 0:passo_z:distancia_max;
coef_disp = -0.02;
coef_nao_linear = 1;
% Pulso inicial
campo_e = exp(-(tempo.^2)/(2*0.1^2)); % Pulso gaussiano
% Vetor de números de onda
num_onda = 2*pi*(0:num_pontos - 1)/num_pontos/passo_t;
num_onda = [num_onda(num_pontos/2 + 1:num_pontos), num_onda(1:num_pontos/2)];
% Propagação usando split-step Fourier
for iter = 1:length(distancia) - 1
% Etapa não linear
campo_e = campo_e .* exp(-1i * coef_nao_linear * passo_z * abs(campo_e).^2);
% Transformada para o domínio da frequência
campo_f = fftshift(fft(campo_e));
% Etapa dispersiva
campo_f = campo_f .* exp(-1i * coef_disp * (num_onda.^2) * passo_z / 2);
% Transformada inversa para o domínio do tempo
campo_e = ifft(ifftshift(campo_f));
end
Este código configura os parâmetros físicos, define um pulso inicial e executa a propagação iterativa, alternando entre domínios temporal e frequencial para aplicar efeitos não lineares e dispersivos.
Algoritmo Runge-Kutta para Termos Acoplados
Para situações onde os termos de acoplamento são complexos, o método Runge-Kutta de quarta ordem oferece maior precisão. A fórmula iterativa genérica para uma EDO dy/dt = f(t, y) é:
k₁ = h f(tₙ, yₙ)
k₂ = h f(tₙ + h/2, yₙ + k₁/2)
k₃ = h f(tₙ + h/2, yₙ + k₂/2)
k₄ = h f(tₙ + h, yₙ + k₃)
yₙ₊₁ = yₙ + (1/6)(k₁ + 2k₂ + 2k₃ + k₄)
Ao integrar com o MATLAB, podemos definir um sistema de EDOs para a CNLSE. Veja uma adaptação com funções renomeadas:
function derivada = equacoes_acopladas(z, campo, gama, beta2, termo_acoplamento)
% Calcula a derivada temporal considerando dispersão, não linearidade e acoplamento
derivada = -1i * beta2 / 2 * diff(diff(campo)) / (passo_t^2) - 1i * gama * abs(campo).^2 .* campo - 1i * termo_acoplamento .* campo;
end
% Resolução com Runge-Kutta usando ode45
tolerancias = odeset('RelTol', 1e-6, 'AbsTol', 1e-9);
[solucao_z, solucao_campo] = ode45(@(z, campo) equacoes_acopladas(z, campo, coef_nao_linear, coef_disp, C), distancia, campo_e, tolerancias);
Aqui, a função equacoes_acopladas encapsula a dinâmica do sistema, e o solver ode45 aplica o Runge-Kutta para integrar numericamente.
Visualização da Evolução Dinâmica
Os resultados da simulação permitem analisar como pulsos e espectros evoluem ao longo da propagação. O código abaixo gera gráficos para essa análise:
figure;
for idx = 1:10:length(distancia)
subplot(2, 1, 1);
plot(tempo, abs(solucao_campo(idx, :)));
xlabel('Tempo (ps)');
ylabel('Amplitude');
title('Evolução do Pulso');
hold on;
subplot(2, 1, 2);
espectro = fftshift(fft(solucao_campo(idx, :)));
plot(num_onda, abs(espectro));
xlabel('Frequência (THz)');
ylabel('Amplitude');
title('Evolução Espectral');
hold on;
end
hold off;
Este script itera sobre diferentes distâncias de propagação, plotando o perfil temporal do pulso e seu espector correspondente, oferecendo uma visão completa da dinâmica óptica.