Pour exécuter le code avec les paramètres par défaut, il suffit d'exécuter les commandes ci-dessus :
$ make
$ ./mainLe graphique généré est enregistré dans le fichier potential_and_field.png.
Pour changer les paramètres de l'exécution, il suffit de modifier le fichier main.c et de recompiler le code avec la commande make.
int refinement: le nombre de raffinements de la grille. Pour exécuter le code avec la grille de base, il faut intialiser la variable à0. Le nombre de raffinements maximal que j'ai réussi à calculer sur mon ordinateur est8.int disk: Permet de choisir si on veut une densité de charge nulle partout (sauf aux bords) en intialisantdiskà1ou si on veut une densité de charge nulle partout sauf sur le disque mentionné dans les consignes en initialisantdiskà 0.double Q: la charge du disque.int nice_scale: permet de choisir si on veut que l'échelle de couleur soit définie en fonction de la valeur maximale de la grille ou si les valeurs de celle-ci sont fixées entre les conditions aux bords et dans le trou. Il est utile d'initialisernice_scaleà1lorsquediskest intialisé à 1 puisque les valeurs êxtrèmes de la grilles ne seront plus les conditions aux bords et dans le trou. Dans les autres cas, il vaut mieux initialisernice_scaleà0afin d'économiser du temps de calcul.int umfpack: Lorsqu'elle est initialisée à1-> le code utilise le solveurumfpacktandis que quand elle est initialisé à0, le code utilise le solveuragmg.int cxetint cy: les indices de début et de fin du contour qui permet de calculer le flux du champ électrique. Ils sont définis plus tard dans le fichiermain.c.
Ce fichier contient les fonctions qui permettent d'intialiser le tableau de densité (initialize_density()) (qui sert ensuite à calculer la matrice b) et de le remplir suivant certaines conditions (compute_density_disk()).
Ce fichier contient la fonction prob() qui remplit les matrices A et B en fonction de la densité de charge et des conditions aux bords.
Ce fichier contient la fonction compute_residue() qui permet de calculer la norme du résidu de la solution.
Ce fichier contient les fonctions :
compute_EField_xetcompute_EField_yqui permettent de calculer les composantes du champ électrique pour un point de la grille.compute_EFieldqui utilise les 2 fonctions précédentes pour calculer le champ électrique en chaque point de la grille.compute_fluxqui calcule via la méthode des trapèzes le flux du champ électrique à travers un contour en Vm.
Ce fichier contient les fonctions qui permettent de visualiser les résultats :
write_data()écrit le potentiel dans un fichier.write_guplot_script()écrit le script gnuplot qui permet de générer le graphique.