Quelques exemples de géométries réalisées avec Scilab pour Delos

Si vous avez quelques notions de Scilab, Mathlab et des idées sur les polygones et autres représentations frontières passez directement aux exemples sinon pour les premiers pas suivez le lien :  prise en main de Scilab.

Représentation d'une géométrie par ses frontières

Une représentation frontière ou Brep (Boundary representation) est une représentation classique et assez naturelle où une géométrie est définie par ses limites. Nous allons en donner un exemple simple ci-dessous dans le cas 2D. Pour plus de détails et de formalisme vous pouvez consulter le chapitre 1.2 de l'introduction à la modélisation et à l'algorithmique géométrique.
arete frontière

 Frontière d'un domaine 2D

Une représentation frontière est une représentation assez naturelle où une géométrie est définie par ses limites : en 2D des arêtes. Une arête est une portion de frontière qui sépare 2 milieux. Le "vide" est un milieu particulier que l'on ne souhaite pas représenter.
Une géométrie constituée de plusieurs régions (ou "matériaux") peut ainsi être décrite simplement par une liste d'arêtes dont on donne les sommets à l'origine et à l'extrémité (et des points intermédiaires définissant la géométrie si nécessaire) ainsi que les 2 régions qu'elle sépare. L'ensemble des aretes doit définir des contours fermés et homogènes pour chaque région.
Toutes ces entités sont définies ici par des numéros correspondant à leurs indices dans des tableaux ou des listes, par exemple la définition de l'arête :
ar(5) = [ 1, 2, 3, 4 ]
reg(5,1)=3
reg(5,2)=44
signifie que l'arête 5 est constituée des sommets et points de numéros : 1,2,3 et 4, que la région à sa droite porte le numéro 44, celle à sa gauche le numéro 3 (cet ordre 1=droite, 2=gauche est une convention).


Des exemples de géométries définies avec Scilab 


vue du carre dans SCILAB

Exemple 1 : Premiers pas pour une géométrie simple

La commande pour définir les coordonnées des points (losanges noirs sur la figure) :
XYcoord=[-10,-10;10,-10;10,10;-10,10]
...
Puis la définition des arêtes (segments de droite en rouge sur la figure):
ar=[1;2;3;4;1];
...
Pour l'affichage :
plot2d(XYcoord(:,1),XYcoord(:,2),style=-4);
plot2d(XYcoord(ar,1),XYcoord(ar,2),style=5);
...
Pour la liste complète des commandes voir le script correspondant  : cliquez-ici. Le script est plus subtil : l'utilisation des listes pour représenter les arêtes s'avère beaucoup plus efficace quand on travaille sur des géométries complexes de quelques centaines de segments. Il fait appel aux fonction du fichier "DSutil.sci" qui vous facilitera la tâche pour la mise au format Delos. Vous pouvez le copier dans votre répertoire courant. Pour charger les fonctions de DSUtil.sci tapez dans la console :
exec("DSutil.sci",-1)

Exemple 1b (suite) :  Définition de la densité du maillage

Le maillage doit  être contraint à respecter une fonction "taille" définie sur tout l'espace (de la géométrie) à travers des concentrations ponctuelles ou axiales.
Le fichier exemple1b.sci vous donne la façon de procéder pour :
  • Définir la taille maximale des triangles,
  • Fixer une concentration sur un segment (qui n'appartient pas à la géoémtrie),
  • Donner une concentration ponctuelle.
Le script "DSutil.sci" vous facilitera la tâche pour la mise au format Delos (fonctions : DSWriteDens, DSReadMesh...). Vous pouvez le copier dans votre répertoire courant. Pour charger les fonctions de DSUtil.sci tapez dans la console :
exec("DSutil.sci",-1)
Pour ecrire le fichier de densités au format Delos :
DSWriteDens("ma_densite.den", XYGeo, SUI, TDEN);

Pour lancer le maillage et le visualiser :
unix("delos v   mon_carre.geo  ma_densite.geo   mon_carre.mesh   -    - ")
Attention les messages d'exécution n'apparaîssent PAS dans la fenêtre de la console scilab mais dans une autre fenêtre (un terminal sous Linux). Attention sous Linux comme sous Windows, l'executable "delos" doit être accessible...
[XY,TRI,REG]=DSReadMesh("mon_carre.mesh");
DSShowMesh(XY,TRI,REG,[],[],[]);

un maillage

Exemple 2 : visualisation de maillages

Comme une géométrie, un maillage peut être affiché dans une figure SCILAB. Si le maillage est généré par Delos vous pouvez utiliser le script "DSutil.sci" que vous copierez dans le répertoire courant. Pour charger les fonctions de DSUtil.sci tapez dans la console :
exec("DSutil.sci",-1)

Pour charger le maillage à partir du fichier ( copiez exemple52.mesh ) puis tapez dans la console :
[XY,TRI,REG]=DSReadMesh("exemple52.mesh");


Pour afficher le maillage, tapez :
DSShowMesh(XY,TRI,REG,[],[],[]);

Enfin le script correspondant à l'exemple est : cliquez-ici.