Laboratoire d `Optique et Biosciences Ecole Polytechnique

publicité
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é.
Téléchargement