![]()
Faire avec freefem les fichiers "circle.msh", "one.dta",
"zero.dta"
contenant la triangulation d'un cercle, la fonction valant 1 sur tous les
sommets et la fonction valant zero sur tous les sommets.
Exécuter le programme et visualiser la solution avec freefem.
(Eventuelement rajouter le lien avec rgraph.h et faire une fonction
P1::show() qui visualise le résultat "online").
![]()
Comparer avec la solution analytique et faire une fonction qui calcule
l'erreur L2 et l'erreur H1. Faire un tableau des erreurs obtenues pour
3 triangulations ayant chacune 4 fois plus de points que la précedente.
Rajouter les conditions de Neuman aux bords (Voir remarque ci-dessous).
![]()
Si on a des conditions de Neuman sur une partie du bord:
![]()
il suffit de rajouter une integrale de bord dans la fonctionnelle à minimiser
et une autre intégrale de bord dans le calcul de la dérivée de la
fonctionnelle. C'est à dire remplacer
![]()
ou r est prolongée par zero sur le reste du bord.
Mais le problème est alors de reconnaitre informatiquement le bord Dirichlet du bord Neuman. Une solution consiste a utiliser une fonction P1 sol0 contenant les conditions de Dirichlet avec la définition suivante:
Si sol0[i]=0 alors i n'est pas un point de Dirichlet. Si sol0[i]!=0 alors i est un point de Dirichlet.
Dans le cas d'une condition de Dirichlet nulle il faudra remplacer sol[i]=0 par sol[i]=eps en ce point, eps étant un tout petit nombre.
![]()
En plus des conditions de Neumann faire les modifications nécessaire pour
pouvoir résoudre le problème
![]()
où
sont des constantes positives.
Comme dans l'exercice ci-dessus il faudra modifier la fonctionelle et sa dérivée en
conséquence en rajoutant le xcoefficient nu et les intégrales
![]()