1 subroutine utqtr0 ( qualit, surf, sdim, coonoe )
2 c ______________________________________________________________________
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c HOMARD est une marque deposee d'Electricite de France
20 c ______________________________________________________________________
22 c UTilitaire : Qualite d'un TRiangle - phase 0
24 c ______________________________________________________________________
26 c on utilise le critere decrit dans
27 c 'Maillages, applications aux elements finis'
28 c Pascal Jean Frey, Paul-Louis George
30 c Chapitre 18.2, page 606
32 c le critere de qualite, q, vaut alpha * -
34 c h est le diametre du triangle, i.e. son plus grand cote
35 c r est le rayon du cercle inscrit
36 c alpha est un coefficient de normalisation pour que le critere q
37 c vaille 1 pour un triangle equilateral ==> alpha = 1/racine(12)
39 c pour tout autre triangle, le critere est donc superieur a 1
41 c max(ak) * somme des ak
42 c tous calculs faits q vaut ----------------------
43 c racine(48) * surface
45 c ou si est la surface du i-eme triangle,
46 c ak est la longueur du k-eme cote
47 c surface est la surface du triangle.
48 c ______________________________________________________________________
50 c . nom . e/s . taille . description .
51 c .____________________________________________________________________.
52 c . qualit . s . 1 . qualite .
53 c . surf . s . 1 . surface .
54 c . sdim . e . 1 . dimension du probleme .
55 c . coonoe . e . 3*sdim . coordonnees des 3 noeuds du triangle .
56 c .____________________________________________________________________.
59 c 0. declarations et dimensionnement
62 c 0.1. ==> generalites
68 parameter ( nompro = 'UTQTR0' )
75 double precision qualit, surf, coonoe(3,sdim)
77 c 0.4. ==> variables locales
79 double precision ar1, ar2, ar3
80 double precision v1(3), v2(3), v3(3)
81 double precision alpha
88 c 0.5. ==> initialisations
91 c ______________________________________________________________________
94 c 1. le coefficient normalisateur
103 c 2. les diverses longueurs et la surface
106 c 2.1. ==> en dimension 2
108 if ( sdim.eq.2 ) then
110 c 2.1.1. ==> calcul des longueurs des aretes
112 v1(1) = coonoe(2,1) - coonoe(1,1)
113 v1(2) = coonoe(2,2) - coonoe(1,2)
114 ar1 = sqrt ( v1(1)*v1(1) + v1(2)*v1(2) )
116 v2(1) = coonoe(3,1) - coonoe(2,1)
117 v2(2) = coonoe(3,2) - coonoe(2,2)
118 ar2 = sqrt ( v2(1)*v2(1) + v2(2)*v2(2) )
120 v3(1) = coonoe(1,1) - coonoe(3,1)
121 v3(2) = coonoe(1,2) - coonoe(3,2)
122 ar3 = sqrt ( v3(1)*v3(1) + v3(2)*v3(2) )
124 c 2.1.2. ==> calcul de la surface (plutot 2 fois la surface)
125 c on rappelle que la surface d'un triangle est egale
126 c a la moitie de la norme du produit vectoriel de deux
127 c des vecteurs representant les aretes.
129 surf = abs ( v1(1)*v3(2) - v1(2)*v3(1) )
131 c 2.2. ==> en dimension 3
135 c 2.2.1. ==> calcul des longueurs des aretes
137 v1(1) = coonoe(2,1) - coonoe(1,1)
138 v1(2) = coonoe(2,2) - coonoe(1,2)
139 v1(3) = coonoe(2,3) - coonoe(1,3)
140 ar1 = sqrt ( v1(1)*v1(1) + v1(2)*v1(2) + v1(3)*v1(3) )
142 v2(1) = coonoe(3,1) - coonoe(2,1)
143 v2(2) = coonoe(3,2) - coonoe(2,2)
144 v2(3) = coonoe(3,3) - coonoe(2,3)
145 ar2 = sqrt ( v2(1)*v2(1) + v2(2)*v2(2) + v2(3)*v2(3) )
147 v3(1) = coonoe(1,1) - coonoe(3,1)
148 v3(2) = coonoe(1,2) - coonoe(3,2)
149 v3(3) = coonoe(1,3) - coonoe(3,3)
150 ar3 = sqrt ( v3(1)*v3(1) + v3(2)*v3(2) + v3(3)*v3(3) )
152 c 2.2.2. ==> calcul de la surface (plutot 2 fois la surface)
153 c on rappelle que la surface d'un triangle est egale
154 c a la moitie de la norme du produit vectoriel de deux
155 c des vecteurs representant les aretes.
157 v2(1) = v1(2)*v3(3) - v1(3)*v3(2)
158 v2(2) = v1(3)*v3(1) - v1(1)*v3(3)
159 v2(3) = v1(1)*v3(2) - v1(2)*v3(1)
160 surf = sqrt ( v2(1)*v2(1) + v2(2)*v2(2) + v2(3)*v2(3) )
165 c 3. qualite et surface
168 qualit = alpha * max(ar1,ar2,ar3) * (ar1+ar2+ar3) / surf