Table des matières

Équation de Poisson 2D : solveur javascript et WebCL

1. Introduction

2. Exemple

Cet exemple modélise un condensateur, constitué de deux plaques parallèles aux potentiels 1 et -1. Les bords du domaine sont au potentiel nul (condition de dirichlet).

2.a. Calcul en javascript standard

On commence par définir le système. La taille du maillage est pxp. Les plaques du condensateur sont définies dans un maillage plus grossier de 4x4. De cette manière, on peut changer la valeur de p sans avoir à redéfinir les plaques.

Après définition du système, on lance les itérations avec le calcul des normes. Le calcul est lancé dans un "web worker" (thread d'exécution parallèle au thread javascript), de manière à ne pas bloquer le navigateur pendant l'exécution du calcul (durée d'environ 20 secondes).

On attend que le calcul soit terminé (Worker finished), puis on exécute le bloc suivant, qui récupère la norme de la matrice U en fonction du nombre d'itérations et trace la courbe. Cette courbe donne une indication sur la convergence.

Enfin on récupère la matrice des valeurs pour tracer une surface (cette partie nécessite un navigateur avec WebGL) :

2.b. Calcul avec WebCL

Attention : cette partie ne fonctionne que sur Firefox avec l'implémentation WebCL de nokia. WebCL est une interface javascript pour OpenCL qui est en cours de développement. Elle permet d'effectuer des calculs sur les processeurs graphiques.

On commence par définir le système comme précédemment :

Après avoir sélectionné la platforme et le périphérique de calcul, on initialise le moteur de calcul openCL puis on lance les même itérations que plus haut, avec le calcul des normes :

L'exécution est beaucoup plus rapide que plus haut (le gain en vitesse dépend du processeur central et du processeur de la carte graphique), et ne nécessite pas de "web worker" (qui d'ailleurs ne fonctionne pas avec WebCL).

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.