![]() |
(B.1) |
Cependant, il faut tout d'abord savoir dans quel élément est situé
le point considéré.
Pour les éléments carrés linéaires, il suffit d'inverser la
relation (A.1). On détermine ainsi l'application
qui permet de passer de l'élément réel à l'élément
parent. On peut ainsi, connaissant les coordonnées d'un point dans
le repère global déterminer ses coordonnées dans les éléments
parents. Un point sera contenu dans un élément si ses coordonnées
dans l'élément parent sont telles que (voir fig
B.2):
![]() |
(B.2) |
Remarque : On ne peut calculer l'application que pour des éléments a fonctions de formes linéaires, en effet, l'inversion de (A.1) n'est "triviale" que dans le cas de fonctions de forme linéaires.
Une autre méthode, qui elle fonctionne avec tous les types d'éléments carrés consiste à vérifier si le point considéré est à l'intérieur de la région du plan formé de l'intersection de 4 demi-plans :
On considère la droite définissant un côté de l'élément, et on vérifie si le point M est situé dans la même région du plan que l'un des deux autres noeuds de l'élément (voir fig B.3). Si oui, on vérifie cette condition par rapport aux trois autres côtés de l'élément, si non, on essaie avec un autre élément. Le point M appartiendra à l'élément considéré s'il appartient aux 4 régions définies par ces 4 côtés de l'élément.
Exemple :
Soit l'élément :
On vérifie si le point M appartient à la région du plan définie par (AD) et B.
Si oui, on fait pareil avec (AB) et C, si non, on passe à l'élément suivant.
Dans le cas des éléments triangulaires, plusieurs méthodes ont été utilisées :
La première, est directement inspirée de ce qui précède. Elle
consiste, là encore à calculer les coordonnées du point courant
dans l'élément parent, mais cette fois-ci par le biais des
coordonnées aréolaires. On calcule L1 et L2, et on vérifie que :
![]() |
(B.3) |
Une autre méthode consiste à vérifier si le point courant appartient oui ou non à l'élément considéré, et seulement dans l'affirmative calculer ses coordonnées aréolaires.
On utilise pour cela la méthode de la "demi-droite" :
Pour cela, on regarde le nombre d'intersections entre une demi-droite provenant du point à tester et l'élément courant (son barycentre, en réalité). Si le nombre d'intersections est pair, alors le point est en dehors de l'élément, sinon (1 intersection) celui-ci est contenu dans l'élément (voir fig (B) ).
Connaissant quel élément contient le point, on calcule ensuite ses coordonnées aréolaires.
On peut aussi appliquer la méthode des régions explicitée précédemment, ou tout autre type de méthodes.
Malheureusement, toutes ces méthodes sont très lentes dans le cas de maillages conséquents (18000 noeuds et 36000 éléments).
La rapidité de cette opération est directement liée au type d'algorithme utilisé pour déterminer l'élément contenant le
point à évaluer. Mais le temps de lecture dans la table de connectivité des noeuds, ainsi que dans le fichier de
coordonnées de ceux-ci peut devenir très important dans le cas de "gros" maillages.
En effet, lors de la programmation de mes routines, j'avais pris le parti de limiter le plus possible l'utilisation de mémoire de celles-ci. L'inconvénient
majeur de cette façon de procéder est le temps passé à lire les différentes informations utiles. J'ai donc, dans un
second temps mis en mémoire les données importantes.
Il en résulte donc une réduction drastique du temps de calcul.
Malheureusement, on est vite limité par la taille maximale de vecteurs adressable, ce qui impose de fractionner ces
informations vitales, et rend cette méthode moins systématique. La dernière solution serait de paralléliser ces calculs.