Laboratoire d ’Optique et Biosciences Ecole Polytechnique PHY 572 : Lasers et applications Expérimentation numérique Lasers femtosecondes et applications 4 séances Propagation, optique non-linéaire Travaux expérimentaux Antonello De Martino 5 séances http://www.enseignement.polytechnique.fr/profs/physique/Manuel.Joffre/ea/ [email protected] PHY 572 : Lasers et applications 4 séances 9 Cours théorique et introduction à la simulation numérique en optique Séance 1 : Propagation d’un faisceau lumineux en régime linéaire - Notions théoriques de propagation linéaire - Introduction à Matlab - Simulation numérique de la propagation d’un faisceau Séance 2 : - Présentation des travaux expérimentaux Salle info 33 - Optique non-linéaire. Simulations numériques. Séance 3 : Lasers femtosecondes. Simulations numériques. Séance 4 : De l’électron lié au régime relativiste 5 séances 9 Travaux expérimentaux en binômes Centre de Travaux expérimentaux Laboratoire d’Optique Appliquée Laboratoire d’Optique et Biosciences Propagation d’un faisceau lumineux en régime linéaire 1) 2) 3) Notions théoriques sur la propagation d’un faisceau lumineux Introduction à Matlab • Manipulation de matrices • Représentations graphiques • Transformation de Fourier Simulation numérique de la propagation d’un faisceau lumineux Deuxième Partie Introduction à Matlab Manipulation de matrices Fichier cours1_1.m % ****** Matlab permet de manipuler des matrices sans boucles a = [1 1] % Création d'un vecteur ligne <a| norm(a) % Calcul de la norme a = a/norm(a) % Normalisation du vecteur a' % Transposition matricielle --> Vecteur colonne |a> a*a' % Carré de la norme <a|a> a'*a % Matrice du projecteur |a> <a| sum(sum(a’*a)) % Somme de tous les éléments de la matrice eig(a'*a) % Valeurs propres d'une matrice 1:10 % Rampe linéaire de 1 à 10 zeros(3,2) % Matrice initialisée à 0 ones(3,2) % Matrice initialisée à 1 9 Possibilité d’effectuer de nombreuses opérations sans boucles De la lenteur des boucles Méthode avec boucle a = 1:1000000; total = 0; for i=1:length(a) do total = total+a(i); end; Méthode sans boucle sum(sum(a)) 9 N’utiliser les boucles qu’en dernier recours ! Représentation graphique Fichier cours1_2.m % ********************** Représentation graphique ********************** x = -3:3 % Création d'une rampe linéaire de -3 à 3 % Calcul du carré. z = x*x serait illégal car multiplication MATRICIELLE y = x.*x % .* signifie la multiplication terme à terme plot(x,y) % Représentation graphique x = -3:.1:3; % Création d'une rampe linéaire de pas 0.1 y = x.*x; plot(x,y); y = exp(-x.*x); plot(x,y); Représentation graphique à deux dimensions Fichier cours1_2.m % ************ Représentation graphique à deux dimensions ************** x = -3:3 ones(size(x)) % Matrice remplie de 1 et de même dimension que x X = ones(size(x))’*x Y = x’*ones(size(x)) Z = exp(-X.*X-Y.*Y) % Gaussienne à 2D [X Y] = meshgrid(x,x) plot2(x,x,Z); % Représentation en fausses couleurs x = -3:.1:3; [X Y] = meshgrid(x,x); Z = exp(-X.*X-Y.*Y); plot2(x,x,Z); -3 axis square; -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Fonctions Fichier sqr.m % sqr % % Prend le carré d'une grandeur function result = sqr(x) result = x .* x; Utilisation : sqr(2) sqr(1:4) Illustration de la FFT Fichier cours1_3.m % ****** Illustration de la FFT **************************** x = 0:255; % Sinusoïde de période 32 pixel y = cos(2*pi*x/32); figure(1); plot(y); figure(2); plot(abs(fft(y))); % Représentation FFT % Gaussienne y = exp(-sqr((x-128)/8)); figure(1); plot(y); figure(2); plot(real(fft(y))); % L'instruction fftshift plot(real(fftshift(fft(y)))); plot(real(fftshift(fft(fftshift(y))))); % La fonction ft incorpore fftshift plot(real(ft(y))); % Calibration [nu, t] = ftAxis(256,200); % 256 pixels, fréquence max 200 Hz y = (rand(size(t))-.5)+.1*cos(2*pi*t/.020); figure(1); plot(t,y); figure(2); plot(nu,abs(ft(y))); Fonctions utiles pour la FFT Fichiers ft.m, ift.m, ftAxis.m % Transformée de Fourier avec rotation pour centrer la fréquence nulle function result = ft(data) result = fftshift(fft(fftshift(data))); %Transformée de Fourier inverse avec rotation pour centrer la fréquence nulle function result = ift(data) result = fftshift(ifft(fftshift(data))); % % % % % ftAxis crée deux tableaux (fréquence et temps) calibrés nPoints : Nombre de points (en général une puissance de 2) nuMax : Valeur maximale de la fréquence nu : Axe des fréquences. Le point d'indice nPoints/2 vaut toujours 0 t : Axe des temps. Le point d'indice nPoints/2 vaut toujours 0 function [nu, t] = ftAxis(nPoints, nuMax) deltaNu = 2*nuMax/nPoints; deltaT = 1/(2*nuMax); nu = -nuMax:2*nuMax/nPoints:nuMax-(2*nuMax/nPoints); t = -nPoints/2*deltaT:deltaT:(nPoints/2-1)*deltaT; Troisième partie Simulation de propagation d’un faisceau lumineux Définition des paramètres initiaux du faisceau Fichier cours1_4.m lambda = 0.8; k0 = 2*pi/lambda; w0 = 2; nPoints = 64; % % % % Longueur d'onde en microns Vecteur d'onde Diamètre du faisceau (en microns) Nombre de points transverses [x,nu_x] = ftAxis(nPoints, w0*25); % nu_x est la fréquence spatiale k = 2*pi*nu_x; % k est le vecteur d'onde transverse [r_x,r_y] = meshgrid(x,x); [k_x,k_y] = meshgrid(k,k); % Champ dans l'espace direct field_r = exp(-(sqr(r_x)+sqr(r_y))/sqr(w0)); figure(1); plot2(x,x,abs(field_r)); % Champ dans l'espace de Fourier en z=0 field_k = ft2(field_r); % Représentation graphique dans l'espace de Fourier figure(2); plot2(k,k,abs(field_k)); xtitle("Profil dans l''espace de Fourier","k_x","k_y"); Calcul de l’écart quadratique moyen Fichier ecartQuad.m % Calcul de l'écart quadratique d'une grandeur x pondérée par % l'amplitude de probabilité field function result = ecartQuad(x,field) n2 = sum(sqr(abs(field))); xMoy = sum(x.*sqr(abs(field)))/n2; x2Moy = sum(x.*x.*sqr(abs(field)))/n2; result = sqrt(x2Moy-sqr(xMoy)); Fichier cours1_4.m % Calcul des écarts quadratique moyens deltaX = ecartQuad(r_x,field_r); deltaK = ecartQuad(k_x,field_k); disp(['deltaX*deltaK = ' num2str(deltaX*deltaK)]); Simulation de la propagation Fichier cours1_5.m … nSteps = 64; % Nombre de pas d'intégration dans la direction z zMax = 300; % Distance maximale de propagation z = 0:zMax/nSteps:zMax; % Axe longitudinal % Boucle de propagation for j=1:length(z) % Calcul dans l'espace de Fourier du profil au point z field_k = field_k_0.*exp(-%i*(sqr(k_x)+sqr(k_y))/2/k0*z(j)); % Passage dans l'espace réel xy field_r = ift(field_k); % Calcul d'une coupe en y=0 field_xz(:,j)=field_r(:,nPoints/2); % Représentation graphique plot2(x,x,abs(field_r)); title(['Profil transverse en z = ' num2str(floor(z(j))) ' µm']); end; Calcul du diamètre du faisceau Fichier cours1_5.m … % Déclaration des tableaux pour stocker le diamètre du faisceau deltaXThe = zeros(size(z)); % Diamètre théorique deltaXMes = zeros(size(z)); % Diamètre calculé numériquement … % Boucle de propagation for j=1:length(z) do % Calcul dans l'espace de Fourier du profil au point z … % Calcul de l'écart quadratique deltaXMes(j) = ecartQuad(r_x,field_r); deltaXThe(j) = sqrt(sqr(deltaX)+sqr(deltaK*z(j)/k0)); … end; … % Représentation du diamètre du faisceau figure(4); plot(z,deltaXMes,'O‘,z,deltaXThe); xlabel('z [µm]‘); ylabel('DeltaX [µm]'); Franges d’Young Deux faisceaux mutuellement cohérents DeltaX [µm] 20 18 16 14 12 10 8 6 4 2 0 0 50 100 150 200 250 z [µm] 300 Perspectives Séance 2 : - Présentation des travaux expérimentaux - Optique non-linéaire Séance 3 : Lasers femtosecondes Prise en compte d’un terme source dans l’équation paraxiale provenant : - soit d’une inhomogénéité de l’indice de réfraction - soit d’un processus non-linéaire ou encore Équation similaire à l’équation de Schrödinger dans un potentiel non nul Méthode de résolution dite « split-step operator » ou pas fractionné.