Mise en œuvre pratique de la méthode RK4,4
pour la fibre optique à gradient d'indice linéaire.

1. Les fichiers dont vous avez besoin.

1.1. Fichiers programme en C.

1.1.1. Les fichiers à télécharger.

         • Vous avez besoin des fichiers : rk4.c, rk4.h, que vous placerez (par exemple) dans votre répertoire "/home/travail"...
                - En mode console (sous Linux par exemple...) vous générerez le fichier objet : rk4.o .
                           • Frappez : dominique@pentiumdc:~/travail$ gcc -c rk4.c -o rk4.o
                           • Un "ls -1" donne : dominique@pentiumdc:~/travail$ ls
                                                            rk4.c
                                                            rk4.h
                                                            rk4.o
         • Vous chargerez dans le répertoire "/home/travail", le fichier "gradient_indice_lineaire_RK4.c" que vous récupérerez sur la page "GILRK4".
                - En mode console vous générerez le fichier objet : gradient_indice_lineaire_RK4.o .
                           • Frappez : dominique@pentiumdc:~/travail$ gcc -c gradient_indice_lineaire_RK4.c -o gradient_indice_lineaire_RK4.o
                           • Un "ls -1" donne : dominique@pentiumdc:~/travail$ ls -1
                                                            gradient_indice_lineaire_RK4.c
                                                            gradient_indice_lineaire_RK4.o
                                                            rk4.c
                                                            rk4.h
                                                            rk4.o
                - En mode console vous générerez le fichier exécutable : gradient_indice_lineaire_RK4 (sans extension sous Linux, avec l'extension ".exe" sous Windows).
                           • Frappez : dominique@pentiumdc:~/travail$ gcc gradient_indice_lineaire_RK4.o rk4.o -lm -o gradient_indice_lineaire_RK4
                           • Un "ls -1l" donne : dominique@pentiumdc:~/travail$ ls -1l
                                                             total 44
                                                             -rwxrwxr-x 1 dominique dominique 13432 janv. 12 17:18 gradient_indice_lineaire_RK4
                                                             -rw-r--r-- 1 dominique dominique  2538 janv. 12 16:36 gradient_indice_lineaire_RK4.c
                                                             -rw-rw-r-- 1 dominique dominique  3368 janv. 12 17:17 gradient_indice_lineaire_RK4.o
                                                             -rw-rw-r-- 1 dominique dominique  5130 oct.   9 13:58 rk4.c
                                                             -rw-rw-r-- 1 dominique dominique   211 oct.  14 14:40 rk4.h
                                                             --rw-rw-r-- 1 dominique dominique  4224 janv. 12 17:10 rk4.o
Remarque : La ligne "-rwxrwxr-x 1 dominique dominique 13432 janv. 12 17:18 gradient_indice_lineaire_RK4", montre que l'on a affaire à un fichier exécutable, lors de l'édition de liens il ne faut pas oublier de faire référence à la librairie mathématique "-lm".

1.1.2. Rôle du fichier exécutable "gradient_indice_lineaire_RK4".

         • Ce fichier permet de générer trois fichiers de données (les "tables de données") de noms respectifs :
                - gradient_indice_lineaire_RK4_0.dta
                - gradient_indice_lineaire_RK4_1.dta
                - gradient_indice_lineaire_RK4_2.dta
         • Chaque fichier contient dix mille lignes donnant les triplets : {`z, u_0(z), u_1(z)`} ; où `zin[ 0, z_(Max)]` , et où `z` varie au pas `Deltaz`.
                - En mode console, on génére chaque fichier :
                           • Frappez : dominique@pentiumdc:~/travail$ ./gradient_indice_lineaire_RK4 > gradient_indice_lineaire_RK4_0.dta
                           • Un "ls -1" donne : dominique@pentiumdc:~/travail$ ls -1
                                                            gradient_indice_lineaire_RK4
                                                            gradient_indice_lineaire_RK4_0.dta
                                                            gradient_indice_lineaire_RK4.c
                                                            gradient_indice_lineaire_RK4.o
                                                            rk4.c
                                                            rk4.h
                                                            rk4.o
                           • Le programme exécutable gradient_indice_lineaire_RK4 génére une "table de données", qu'a priori, il affiche directement dans l'écran, ici on la "redirige" (à cause du symbole >) vers le fichier (de texte) gradient_indice_lineaire_RK4_0.dta .
                           • Ci-dessous un extrait du fichier gradient_indice_lineaire_RK4_0.dta :
                       1 # Guidage dans une fibre a gradient d'indice lineaire :
                       2 # ---------------------------------------------------
                       3                0               0       0.0524078
                       4             0.17      0.00890546        0.052351
                       5             0.34       0.0177993       0.0522828
                    ...                            ...
                   10001          1699.66         3.42089     0.000108762
                   10002          1699.83         3.42091     4.06803e-05
                   10003             1700         3.42091    -2.74014e-05

                           • On a bien dix mille lignes de données !                         
                           • Dans le code du programme  gradient_indice_lineaire_RK4.c on observe les lignes suivantes :
                   /* Choix de l'angle d'incidence
                      ---------------------------- */
                      double a = 3.0*pi/180.0;
                      //double a = 5.0*pi/180;
                      //double a = acos(1-D);

                           • Les lignes précédées de "//" ne seront pas compilées, ce qui veut dire ici que `theta_1=3 °` ; on va soumettre à la méthode RK4,4 l'étude du premier chemin suivi par le rayon lumineux...
         • Pour étudier le second chemin suivi par le rayon lumineux, on doit donner à `theta_1` la valeur : `theta_1=5 °`.
                - On corrige le code source du fichier gradient_indice_lineaire_RK4.c, il devient  pour la partie qui nous intéresse :
            //double a = 3.0*pi/180.0;
            double a = 5.0*pi/180;
            //double a = cos(1-D)

                - On compile à nouveau ce programme pour obtenir une nouvelle version de l'exécutable gradient_indice_lineaire_RK4
                - On génére la seconde "table de données" gradient_indice_lineaire_RK4_1.dta    .etc.
Remarque : Je travaille un peu dans l'esprit de Monsieur John BURKARDT pour obtenir les "tables de données", bien entendu "on" pourrait sophistiquer davantage le programme...

1.2. Fichier d'exploitation graphique gnuplot®.

1.2.1. Les fichiers à télécharger.

         • Vous chargerez dans votre répertoire "/home/travail", le fichier "gradient_indice_lineaire_RK4.plt" que vous récupérerez sur la page "GILRK4".
         • Il s'agit d'un script exploitable sous gnuplot®.

1.2.2. Rôle du fichier de script "gradient_indice_lineaire_RK4.plt".

         • Le script est très compréhensible :
                - On trace un premier graphe : le profil d'indice linéaire.
                - On trace un deuxième graphe : le chemin suivit par le rayon lumineux, soit `x=x(z)` pour différents angles `theta_1`. C'est là que l'on exploite les "tables de données" gradient_indice_lineaire_RK4_n.dtan prend les valeurs 0,1 et 2...
                - On trace un troisième graphe : le plan de phase , il s'agit du tracé de `dotx(z)`  en fonction de `x(z)`, en effet dans le triplet : `z, u_0(z), u_1(z)` ; on a : `u_0(z)= x(z)` et `u_1(z)=dotx(z)`.

2. Résultats graphiques.

2.1. Profil d'indice.

Profil d'indice RK4,4.

2.2. Chemins suivis par le rayon lumineux.

         • En rouge : `color(red)(theta_1=3°)`, en vert : `color(green)(theta_1=5°)` , en bleu : `color(blue)(theta_1=8°06'34'')` .

Chemins suivis par la limère - indice linéaire RK4,4.

Remarque : Ici les échelles sur l'axe des abscisses et l'axe des cotes sont différentes ! C'est pourquoi, à l'origine 0, l'angle entre l'axe des cotes et le chemin suivi par le rayon lumineux semble erroné…

2.3. Étude dans le plan de phase.

Plan de phase - indice linéaire - RK4,4.

Remarque : Il est évident ici que les chemins suivis par la lumière sont bien périodiques dans l'espace, mais ils ne sont certainement pas sinusoïdaux !

2.4. Remarque.

         • Ces réalisations ont été faites (ici sous Linux) avec la version 5.0 "patch level 3" de gnuplot®.


Copyright© 2016-2017 [ DR ] Tous droits réservés.