Outils pour utilisateurs

Outils du site


wiki:projet:simu_non_perturb

MIRAGES : SIMULATION DANS UN MILIEU NON PERTURBE

CODES MATLAB

SNELL_DESCARTES

function [ xf, zf, af ] = snell_descartes( xi, zi, ai )
%SNELL_DESCARTES float * float * float -> float*float*float
%   Retourne une position et un angle refracte a partir d une position
% initiale et un angle  incident

dx = 0.0001; %pas pour le calcul
ni = indice_exp(zi); %indice en zi

dz = dx/tan(ai); %calcul de l'incrémentage de l'altitude
zf = zi - dz; %altitude final
nf = indice_exp(zf); %indice optique à l'altitude zf

af=asin(ni*sin(ai)/nf);%calcul de l'ange refracte grâce a la loi de Snell-Descartes

xf = xi + dx; %abscisse final

end

SIMULATION

%-------------------------------------------------------------------------%
%        Simulation de propagation du laser dans le mileu non perturbé
                     

z = 0.066; %z initial
x=0; %abscisse initiale
a= pi/2 - 0.018; %angle incident initial (interface horizontale)
xmax = 0.6; %limite de la cuve en abscisse
zmax = 0.1; %limite de la cuve en altitude
res(1,1)=x; %
res(1,2)=z; %
res(1,3)=a; %
i=2;

while and(x<xmax, and(z>0,z<zmax))
    [x,z,a]=snell_descartes(x,z,a); %calcul des nouvelles valeurs
    res(i,1)=x;     %remplissage
    res(i,2)=z;
    res(i,3)=a;
    i = i +1; 
end
plot(res(:,1), res(:,2)) %affichage de l'altitude en fonction de x
title('Height of the theoritical beam as a function of x')
xlabel('x (m)')
ylabel('Height (m)')

INDICE_EXP

function [ n ] = indice_exp( z )
%INDICE_EXP float -> float
%   Retourne l'indice optique n correspondant à l'altitude z


load('ft_ind.mat'); %chargement de l'ajustement de l'indice pour le calcul

n=ft_ind(z);
end

DEVFITE

function [ dz ] = devfite( x )
%DEVFITE float -> float
%   Retourne la valeur de la derivee de l'approximation de l'altitude en x

       p1 =  -1.041e+04;  %(-2.659e+04, 5763)
       p2 =   1.972e+04;  %(-6919, 4.636e+04)
       p3 =  -1.496e+04 ; %(-3.337e+04, 3460)
       p4 =        5926 ; %(-1012, 1.286e+04)
       p5 =       -1345 ; %(-2893, 201.9)
       p6 =         180 ; %(-27.59, 387.7)
       p7 =      -14.18  ;%(-30.47, 2.11)
       p8 =      0.5147 ; %(-0.1748, 1.204)
       p9 =    -0.02478  ;%(-0.03808, -0.01147)
       p10 =     0.06588 ;%(0.0658, 0.06597)

       
dz = 9*p1*x^8 + 8*p2*x^7 + 7*p3*x^6 + 6*p4*x^5 + 5*p5*x^4 + 4*p6*x^3 + 3*p7*x^2 + 2*p8*x + p9;
end

GRAPHES

COMMENTAIRES

Afin de déterminer si notre résultat pour l'indice semble cohérent avec la réalité, nous pouvons simuler le trajet d'un faisceau laser dans la cuve. On suppose toujours que l'indice est constant selon x, on découpe ainsi la cuve en bandes (non uniformes) d'indice constant. Afin de pouvoir calculer l'indice à toute altitude, on va faire un fit de l'indice obtenu précédent toujours en l'approximant par un polynôme d'ordre 9. On va ainsi pouvoir commencer la simulation, avec les conditions initiales définies par l'expérience. On ne prendra pas en compte le passage dans le plexiglas. Nous approximerons le changement d'indice continu par des interfaces parallèles au plan (x,y), et le passage d'un “milieu” à l'autre se fera grâce à la loi de Snell_Descartes pour la réfraction. Nous obtenons alors le graphe précédent qui montre une corrélation avec l'altitude expérimentale ce qui indique que nos approximations n'étaient pas aberrantes.

wiki/projet/simu_non_perturb.txt · Dernière modification: 2017/04/22 21:11 de http_fablab.sorbonne-universites.fr_wiki_doku.php_id_wiki_projet_laser