1 subroutine utdpyr ( lapyra, diamet,
2 > coonoe, somare, aretri,
3 > facpyr, cofapy, arepyr )
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
22 c ______________________________________________________________________
24 c UTilitaire : Diametre d'une PYRamide
26 c ______________________________________________________________________
28 c Le diametre d'une maille est la longueur du plus grand segment que
29 c l'on peut tracer a l'interieur de cette maille.
30 c Pour un pyramide, le diametre est le maximum des longueurs des
31 c aretes et des diagonales de la base
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . lapyra . e . 1 . numero de la pyramide a examiner .
37 c . diamet . s . 1 . qualite .
38 c . coonoe . e . nbnoto . coordonnees des noeuds .
40 c . somare . e .2*nbarto. numeros des extremites d'arete .
41 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
42 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
43 c . cofapy . e .nbpycf*5. codes des faces des pyramides .
44 c . arepyr . e .nbpyca*8. numeros des 8 aretes des pyramides .
45 c ______________________________________________________________________
48 c 0. declarations et dimensionnement
51 c 0.1. ==> generalites
65 double precision diamet, coonoe(nbnoto,3)
68 integer somare(2,nbarto)
69 integer aretri(nbtrto,3)
70 integer facpyr(nbpycf,5), cofapy(nbpycf,5), arepyr(nbpyca,8)
72 c 0.4. ==> variables locales
74 integer s1, s2, s3, s4, s5
76 integer listar(8), listso(5)
79 double precision var(3)
80 double precision ar1, ar2, ar3, ar4, ar5, ar6
81 double precision ar7, ar8
82 double precision ad1, ad2
84 c 0.5. ==> initialisations
102 c x--------------------------------------------------------x
104 c La face f5 est le quadrangle.
105 c La face fi, i<5, est le triangle s'appuyant sur l'arete ai.
108 c 1. les aretes et les sommets de la pyramide
111 call utaspy ( lapyra,
112 > nbtrto, nbpycf, nbpyca,
114 > facpyr, cofapy, arepyr,
124 c 2. les carres des longueurs des 8 aretes et des
125 c diagonales du quadrangle
128 c 2.1. ==> les aretes
130 var(1) = coonoe(s5,1) - coonoe(s1,1)
131 var(2) = coonoe(s5,2) - coonoe(s1,2)
132 var(3) = coonoe(s5,3) - coonoe(s1,3)
133 ar1 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
135 var(1) = coonoe(s5,1) - coonoe(s2,1)
136 var(2) = coonoe(s5,2) - coonoe(s2,2)
137 var(3) = coonoe(s5,3) - coonoe(s2,3)
138 ar2 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
140 var(1) = coonoe(s5,1) - coonoe(s3,1)
141 var(2) = coonoe(s5,2) - coonoe(s3,2)
142 var(3) = coonoe(s5,3) - coonoe(s3,3)
143 ar3 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
145 var(1) = coonoe(s5,1) - coonoe(s4,1)
146 var(2) = coonoe(s5,2) - coonoe(s4,2)
147 var(3) = coonoe(s5,3) - coonoe(s4,3)
148 ar4 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
150 var(1) = coonoe(s2,1) - coonoe(s1,1)
151 var(2) = coonoe(s2,2) - coonoe(s1,2)
152 var(3) = coonoe(s2,3) - coonoe(s1,3)
153 ar5 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
155 var(1) = coonoe(s3,1) - coonoe(s2,1)
156 var(2) = coonoe(s3,2) - coonoe(s2,2)
157 var(3) = coonoe(s3,3) - coonoe(s2,3)
158 ar6 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
160 var(1) = coonoe(s4,1) - coonoe(s3,1)
161 var(2) = coonoe(s4,2) - coonoe(s3,2)
162 var(3) = coonoe(s4,3) - coonoe(s3,3)
163 ar7 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
165 var(1) = coonoe(s1,1) - coonoe(s4,1)
166 var(2) = coonoe(s1,2) - coonoe(s4,2)
167 var(3) = coonoe(s1,3) - coonoe(s4,3)
168 ar8 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
170 c 2.2. ==> les diagonales de la base
172 var(1) = coonoe(s3,1) - coonoe(s1,1)
173 var(2) = coonoe(s3,2) - coonoe(s1,2)
174 var(3) = coonoe(s3,3) - coonoe(s1,3)
175 ad1 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
177 var(1) = coonoe(s4,1) - coonoe(s2,1)
178 var(2) = coonoe(s4,2) - coonoe(s2,2)
179 var(3) = coonoe(s4,3) - coonoe(s2,3)
180 ad2 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
184 c on ne prend la racine carre qu'ici pour economiser du temps calcul
187 diamet = max( ar1, ar2, ar3, ar4, ar5, ar6,
188 > ar7, ar8, ad1, ad2 )
189 diamet = sqrt(diamet)