PHY 572 : Lasers et applications

publicité
PHY 572 : Lasers et applications
Notions théoriques
François Hache, Manuel Joffre
Simulations numériques
4 séances
M. J.
Travaux expérimentaux
Antonello De Martino
Delphine Débarre, Johanne Treuffet
5 séances
http://www.enseignement.polytechnique.fr/profs/physique/Manuel.Joffre/ea/
[email protected]
PHY 572 : Lasers et applications
4 séances
ü 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 à Scilab
- Simulation numérique de la propagation d’un faisceau
Séance 2 :
- Présentation des travaux expérimentaux
- Optique non-linéaire
Séance 3 : Pratique !
- Simulation numérique de propagation en régime non-linéaire
Séance 4 : Lasers femtosecondes et applications
5 séances
1)
2)
3)
4)
ü Travaux expérimentaux en binômes
Etude approfondie d’un laser Hélium-Néon
Faisceaux gaussiens
Cohérences spatiale et temporelle d’un laser (continu ou impulsionnel)
Etude approfondie d’une diode laser
Propagation d’un faisceau lumineux
en régime linéaire
1)
2)
3)
Notions théoriques sur la propagation d’un faisceau lumineux
Introduction à Scilab
• Manipulation de matrices
• Représentations graphiques
• Transformation de Fourier
Simulation numérique de la propagation d’un faisceau lumineux
Deuxième Partie
Introduction à Scilab
Scilab est un logiciel de calcul scientifique gratuit développé par l’INRIA.
www.scilab.org
Manipulation de matrices
Fichier cours1_1.sce
// ****** Scilab
a = [1 1]
norm(a)
a = a/norm(a)
a'
a*a'
a'*a
sum(a’*a)
spec(a'*a)
1:10
zeros(3,2)
ones(3,2)
ones(a)
permet de manipuler des matrices sans boucles
// Création d'un vecteur ligne <a|
// Calcul de la norme
// Normalisation du vecteur
// Transposition matricielle --> Vecteur colonne |a>
// Carré de la norme
<a|a>
// Matrice du projecteur
|a> <a|
// Somme de tous les éléments de la matrice
// Valeurs propres d'une matrice
// Rampe linéaire de 1 à 10
// Matrice initialisée à 0
// Matrice initialisée à 1
// Matrice initialisée à 1 de même dimension que a
ü 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(a)
ü N’utiliser les boucles qu’en dernier recours !
Représentation graphique
Fichier cours1_2.sce
// ********************** 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);
clf();
// Effacement du graphe
y = exp(-x.*x);
plot(x,y);
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
-3
-2
-1
0
1
2
3
Représentation graphique à deux dimensions
Fichier cours1_2.sce
// ************ Représentation graphique à deux dimensions **************
x = -3:3
ones(x)
// Matrice remplie de 1 et de même dimension que x
X = x'*ones(x)
Y = ones(x)'*x
Z = exp(-X.*X-Y.*Y) // Gaussienne à 2D
clf();
grayplot(x,x,Z);
// Représentation en fausses couleurs
x=-3:.1:3; X = x'*ones(x); Y=ones(x)'*x; Z=exp(-X.*X-Y.*Y);
clf(); grayplot(x,x,Z);
xset('colormap',jetcolormap(64)); // Choix de l'échelle de couleurs
clf(); Sgrayplot(x,x,Z);
// Lissage de l'image
3
2
1
0
-1
-2
-3
-3 -2 -1
0
1
2
3
Fonctions
Fichier eaLasers.sci
// Prend le carré d'une grandeur
function result = sqr(x)
result = x .* x;
endfunction;
Utilisation :
exec('eaLasers.sci');
sqr(2)
sqr(1:4)
Illustration de la FFT
Fichier cours1_3.sce
// ****** Illustration de la FFT ****************************
x = 0:255;
// Sinusoïde de période 32 pixel
y = cos(2*%pi*x/32); scf(0); clf; plot(y);
scf(1); clf; plot(abs(fft(y)));
// Représentation FFT
// Gaussienne
y = exp(-sqr((x-128)/8)); scf(0);clf; plot(y); scf(1);clf;
plot(real(fft(y)));
// L'instruction fftshift
clf; plot(real(fftshift(fft(y))));
clf; plot(real(fftshift(fft(fftshift(y)))));
// La fonction ft incorpore fftshift
clf; plot(real(ft(y)));
// Calibration
[nu, t] = ftAxis(256,200); // 256 pixels, fréquence max 200 Hz
y = (rand(t)-.5)+.1*cos(2*%pi*t/.020); scf(0);clf;plot(t,y);
scf(1);clf;plot(nu,abs(ft(y)));
Fonctions utiles pour la FFT
Fichier eaLasers.sci
// Transformée de Fourier avec rotation pour centrer la fréquence nulle
function result = ft(data)
result = fftshift(fft(fftshift(data)));
endfunction;
// Transformée de Fourier inverse avec rotation pour centrer la fréquence
nulle
function result = ift(data)
result = fftshift(ifft(fftshift(data)));
endfunction;
//
//
//
//
//
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;
endfunction;
Troisième partie
Simulation de propagation d’un faisceau lumineux
Définition des paramètres initiaux du faisceau
Fichier cours1_4.sce
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] = make2DGrid(x,x);
[k_x,k_y] = make2DGrid(k,k);
// Champ dans l'espace direct
field_r = exp(-(sqr(r_x)+sqr(r_y))/sqr(w0));
scf(1); clf; image(x,x,abs(field_r)); xselect();
// Champ dans l'espace de Fourier en z=0
field_k = ft(field_r);
// Représentation graphique dans l'espace de Fourier
scf(0); clf(); image(k,k,abs(field_k)); xselect();
xtitle("Profil dans l''espace de Fourier","k_x","k_y");
Calcul de l’écart quadratique moyen
Fichier eaLasers.sci
// 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));
endfunction;
Fichier cours1_4.sce
// Calcul des écarts quadratique moyens
deltaX = ecartQuad(r_x,field_r);
deltaK = ecartQuad(k_x,field_k);
disp("DeltaX DeltaK = "+string(deltaX*deltaK));
Simulation de la propagation
Fichier cours1_5.sce
…
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
hf1 = scf(1);
// hf1 est un 'handle' pour la figure 1
hf1.pixmap = 'on'; // Ordres graphiques ultérieurs en mémoire
// Boucle de propagation
for j=1:length(z) do
// 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
clf();
image(x,x,abs(field_r));
xtitle("Profil en z = "+string(int(z(j)))+ " µm","x [µm]","y [µm]");
show_pixmap(); // Transfert l'image de la mémoire vers l'écran
end;
Calcul du diamètre du faisceau
Fichier cours1_5.sce
…
// Déclaration des tableaux pour stocker le diamètre du faisceau
deltaXThe = zeros(z);
// Diamètre théorique
deltaXMes = zeros(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
scf(3); clf;
plot(z,deltaXMes,'O');
plot(z,deltaXThe);
xtitle("","z [µm]","DeltaX [µm]");
xselect();
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
- Cours d’optique non-linéaire
Séance 3 : Pratique !
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