next up previous contents
Next: lecture de chaine Up: Renumérotations Previous: Renumérotations

Une fonction de renumérotation

On trouvera dans le fichier gibbs.cxx de freefem un implémentation de la méthode décrite. La fonction prend un maillage comme entrée, ressort le même maillage renuméroté en sortie et renvoie un messgae d'erreur éventuel:

typedef struct { float x,y; }rpoint;
typedef long triangle[3];

typedef struct
{
 long np, nt;
 rpoint *rp;
 triangle *tr;
 int *ngt, *ng;
} triangulation;

int renum (triangulation * mesh)


exer574
Identifier dans la façon dont renum appelle gibbs ou est le tableau qui donne le nouveau numéro d'un point en fonction de l'ancien.


exer576
Remplacer l'ancien mailleur par le nouveau dans l'interpreteur DBI2. (Contacter Pironneau par email pour avoir les fichiers sources si vous ne les avez pas. Ils seront disponibles ultérieurement dans ftp:://ftp.ann.jussieu.fr/ pironneau.) les fichiers sources contiennent: l'interpréteur DBI2 et le mailleur MFH. Ces deux modules fonctionnent de mainière indépendante, c'est a dire qu'il faut d'abord lancer DBI2, ce qui produit un fichier "prepmesh.dta" lequel sert de fichier données pour MFH. DBI2 contient aussi toujours l'ancien mailleur. Le but de cet exercice est d'intégrer MFH à l'intérieur de DBI2 et donc de retirer l'ancien mailleur. Pour plus de détail voir la description du projet ci-dessous.

Aide Procedure pour incorporer le nouveau mailleur (dossier meshpp2) dans le nouvel interpreteur (dossier NDBI2).

L'équivalence des champs est comme suit

classe triangulation                 classe Triangles
--------------------                 ----------------
for(int i=0;i<Th.nbt;i++)            //Th conserve des triangles inutiles
	if(Th.triangles[i].link) t.nt++;    Th.nbt
t.np                                 Th.nbv
t.rp[i].x                            Th.vertices[i].r.x
t.rp[i].y                            Th.vertices[i].r.y
t.ng[i]                              Th.vertices[i].ref
t.me[i][j]                           Th.Number(Th.triangles[i][j]) (tester link)
Attention, il faut aussi tester Th.triangles[i].det>0 sinon on recupère des triangles ayant un point a l'infini. Enfin il faut aussi éliminer les triangles qui sont dans les trous du domaines.


exer574
Rajouter dans le programme issu de l'exercice précédent l'appel à la fonction gibbs pour la renumérotation.


exer574
Rajouter dans l'interpréteur le mot reservé "savemesh" avec sa fonctionalité c'est à dire par exemple: savemesh("test.msh");

Pour faire cela on consultera la leçon suivante ainsi que l'aide çi-dessous.


next up previous contents
Next: lecture de chaine Up: Renumérotations Previous: Renumérotations

Pironneau Olivier
Jeudi 12 mars 1998 16:24:39