Impulsions contra-propagatives

Fermé
kirchhooff Messages postés 1 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 27 avril 2016 - 27 avril 2016 à 13:32
Bonjour à tous,

je suis travaille dans sur un système géré en dispersion (couplage d'une fibre de dispersion positive et une de dispersion négative).

Je veux de ce fait réaliser une contra-propagation sous Matlab de sorte à observer l'interaction entre les deux ondes injectées dans chacune des extrémités de mon système de fibre.

je vous montre le cœur du programme ci-dessous.

Question : J'aimerai juste que vous vérifiez si j'ai bien réalisé une contra-propagation et dans le cas contraire que vous m'aidez s'il vous plaît, à apporter les améliorations nécessaires.

Je vous remercie par avance


%%%%%% FABRICATION DU CHAMP INCIDENT JUSTE AVANT AMPLI %%%%%%%%%%%%%
E_inc=U;
V_plus = fftshift(ifft(E_inc));
V_plus = V_plus.*exp(i*w*t_L); %%% c'est ici que je demande à l'une des ondes de commencer sa propagation par l'extrémité (1)
E_inc_decale = fft(fftshift(V_plus));
energie_inc_ini=trapz(t,abs(E_inc).^2);

V_moins = fftshift(ifft(E_inc));
V_moins = V_plus.*exp(-i*w*t_L); %%% c'est ici que je demande à l'autre onde de commencer sa propagation par l'extrémité (2)

E_inc_recale = fft(fftshift(V_moins));


%%%%%% (cette partie est sans importance pour le problème soulevé)%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% AMPLIFICATION DU CHAMP INCIDENT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
E1=E_inc_decale*sqrt(gain_nolm);
E1_recale=E_inc_recale*sqrt(gain_nolm);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ENTREE DANS LE NOLM
%%%%%%%%%%%%%%%%%%%%%%%%%
E_plus=i*sqrt(1-coef_coup_sym)*E1;
E_moins=sqrt(coef_coup_sym)*E1_recale; %E4


%%%%% PASSAGE DU CHAMP E_moins DANS L ATTENUATEUR %%%%%%%%%%%%%
E_moins=E_moins*sqrt(delta_nolm) ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%% PROPAGATION DANS LA FIBRE DU NOLM %%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% propagation sur la distance L4 (morceaux de fibre de dispersion +)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha=alpha4; beta2=beta24;beta3=beta34;
gamma=gamma4;dz=zstep4;
disper_plus=exp(i*beta1*dz*w+(0.5*i*beta24)*dz*w.^2+i*beta34*dz*w.^3/6-dz*alpha4/2);
disper_moins=exp(i*beta1*dz*w+(0.5*i*beta25)*dz*w.^2+i*beta35*dz*w.^3/6-dz*alpha5/2);

zz=0;
for indice=1:npt4
P_plus = abs(E_plus).^2;
P_moins = abs(E_moins).^2;

%%%%% CALCUL DE LA CONTRIBUTION non linéaire %%%%%%%%%
teta_plus=gamma4*(P_plus+2*P_moins);
teta_moins=gamma5*(P_moins+2*P_plus);


E_plus=E_plus.*exp(i*dz*teta_plus);
E_moins=E_moins.*exp(i*dz*teta_moins);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
V_plus = fftshift(ifft(E_plus));
V_plus = V_plus.*disper_plus;
E_plus = fft(fftshift(V_plus));

V_moins = fftshift(ifft(E_moins));
V_moins = V_moins.*disper_moins;
E_moins = fft(fftshift(V_moins));


zz = zz + dz;
% Incrementation de z end % for indice



% semilogy(t,abs(E_plus),t,abs(E_moins))
% drawnow

% energie_dans_fibre=trapz(t,abs(E_moins).^2)+trapz(t,abs(E_plus).^2
% )
end

% format long
% z
% longueur2
%
% pause

%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% propagation sur la distance L5 (morceau de fibre de dispersion -, les deux sont lié par soudure expérimentalement)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
alpha=alpha5; beta2=beta25;beta3=beta35;
gamma=gamma5;dz=zstep5;
disper_plus=exp(i*beta1*dz*w+(0.5*i*beta24)*dz*w.^2+i*beta34*dz*w.^3/6-dz*alpha4/2);
disper_moins=exp(i*beta1*dz*w+(0.5*i*beta25)*dz*w.^2+i*beta35*dz*w.^3/6-dz*alpha5/2);

for indice=1:npt5
P_plus = abs(E_plus).^2;
P_moins = abs(E_moins).^2;

%%%%% CALCUL DE LA CONTRIBUTION non linéaire %%%%%%%%%
teta_plus=gamma4*(P_plus+2*P_moins);
teta_moins=gamma5*(P_moins+2*P_plus);


E_plus=E_plus.*exp(i*dz*teta_plus);
E_moins=E_moins.*exp(i*dz*teta_moins);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
V_plus = fftshift(ifft(E_plus));
V_plus = V_plus.*disper_plus;
E_plus = fft(fftshift(V_plus));

V_moins = fftshift(ifft(E_moins));
V_moins = V_moins.*disper_moins;
E_moins = fft(fftshift(V_moins));


zz = zz + dz;
% Incrementation de z end % for indice



% semilogy(t,abs(E_plus),t,abs(E_moins))
%drawnow
%
% energie_dans_fibre=trapz(t,abs(E_moins).^2)+trapz(t,abs(E_plus).^2
% )
end

%%%%%%%%%%% PASSAGE de E_plus DANS L ATTENUATEUR %%%%%%%%%%%%%
E_plus=E_plus*sqrt(delta_nolm);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% il faut décaler le champ E_plus et le remettre au centre de
% la fenètre temporelle
% decalage de E_plus
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
V_plus = fftshift(ifft(E_plus));
V_plus = V_plus.*exp(-i*w*t_L);
E_plus_decale = fft(fftshift(V_plus));

V_moins = fftshift(ifft(E_moins));
V_moins = V_moins.*exp(i*w*t_L);
E_moins_recale = fft(fftshift(V_moins));

%
%%%%%%%%%%%%%%% SORTIE DU NOLM %%%%%%%%%%%%%%%%%%%%%


E_plus=i*sqrt(1-coef_coup_sym)*E_plus_decale;
E_moins=sqrt(coef_coup_sym)*E_moins_recale; %E4

U=E_plus+E_moins;
V = fftshift(ifft(U));
energie_inc_ini;
energie_trans_fin=trapz(t,abs(U).^2);