Artelia / Mesh_tools

GNU General Public License v3.0
7 stars 4 forks source link

Ajout critère(s) d'analyse de qualité du maillage #13

Closed nicogodet closed 2 years ago

nicogodet commented 2 years ago

Côté ISL, nous prévoyons d'ajouter un critère sur le nombre de voisin d'un nœud en plus des critères existants :

@ccoulet Tu évoquais l'utilisation du cercle inscrit/circonscrit ? Actuellement, je gère chaque maille via un QgsTriangle et il existe de nombreuses méthodes pour calculer des caractéristiques de ce triangle : https://qgis.org/pyqgis/master/core/QgsTriangle.html

ccoulet commented 2 years ago

POur moi c'est le diameètre du cercle inscrit du coup la méthode inscribedRadius permet d'avoir cette valeur (en la multipliant par 2) En première approche avec une couche gpkg simple, je faisais une approximation avec la formule 2*$area/$perimeter Mais le recours à la méthode sera plus précise. A mon avis cela peut se substituer à la longueur minimale d'un élément car en théorie le diamètre du cercle inscrit sera toujours inférieur à la longueur minimale d'un cote du triangle.

ccoulet commented 2 years ago

Pas vraiment certain de comprendre les lignes: for key, value in dico.items(): if value < 2: dico[key] = 2 dans meshutils.py Pourquoi cette vérification? Si un noeud n'a qu'un voisin c'est qu'on a un problème de maillage

nicogodet commented 2 years ago

Le problème est dans le décompte du nombre de voisin via les faces. Il faut que je revois la méthode de décompte pour que ce soit plus fiable.

Actuellement, je compte le nombre de fois qu'apparait un noeud dans toute les faces. SI j'initialise à 2 (un noeud à forcément 2 voisins sur des mailles triangulaires), j'arrive au final à un décompte de voisin + 1 (9 au lieu de 8, etc..) Donc en initialisant à 1, j'ai le bon décompte sauf pour les mailles des coins. D'où cette correction.

nicogodet commented 2 years ago

Modifications effectuées.

Maintenant, on détermine précisément pour chaque noeud, les noeuds voisins. dico[id_noeud] = liste des id des noeuds voisins

Le test se fait sur la longueur de cette liste.