1 subroutine utb3f0 ( hetnoe, coonoe,
2 > numcoi, coinpt, coinnn,
5 > hetpyr, facpyr, cofapy, arepyr, np2are,
6 > nbpbco, mess08, mess54,
7 > ulbila, ulsort, langue, codret )
8 c ______________________________________________________________________
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
14 c Version originale enregistree le 18 juin 1996 sous le numero 96036
15 c aupres des huissiers de justice Simart et Lavoir a Clamart
16 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
17 c aupres des huissiers de justice
18 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
20 c HOMARD est une marque deposee d'Electricite de France
26 c ______________________________________________________________________
28 c UTilitaire - Bilan - option 3 - phase F0
30 c ______________________________________________________________________
32 c but : controle l'interpenetration des pyramides
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . hetnoe . e . nbnoto . historique de l'etat des noeuds .
38 c . coonoe . e . nbnoto . coordonnees des noeuds .
40 c . numcoi . e . nbnoto . numero de la coincidence du noeud .
41 c . coinpt . e . * . pointeur de la i-eme coincidence dans coinn.
42 c . coinnn . e . * . liste des noeuds coincidents .
43 c . somare . e .2*nbarto. numeros des extremites d'arete .
44 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
45 c . hetpyr . e . nbpyto . historique de l'etat des pyramides .
46 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
47 c . cofapy . e .nbpycf*5. codes des faces des pyramides .
48 c . arepyr . e .nbpyca*8. numeros des 8 aretes des pyramides .
49 c . np2are . e . nbarto . noeud milieux des aretes .
50 c . nbpbco . es . -1:7 . nombre de problemes de coincidences .
51 c . mess54 . e .nblang,*. messages .
52 c . ulbila . e . 1 . unite logique d'ecriture du bilan .
53 c . ulsort . e . 1 . unite logique de la sortie generale .
54 c . langue . e . 1 . langue des messages .
55 c . . . . 1 : francais, 2 : anglais .
56 c . codret . s . 1 . code de retour des modules .
57 c . . . . 0 : pas de probleme .
58 c . . . . 1 : probleme .
59 c .____________________________________________________________________.
62 c 0. declarations et dimensionnement
65 c 0.1. ==> generalites
71 parameter ( nompro = 'UTB3F0' )
74 parameter ( typenh = 5 )
91 double precision coonoe(nbnoto,sdim)
93 integer hetnoe(nbnoto)
94 integer numcoi(nbnoto), coinpt(*), coinnn(*)
95 integer somare(2,nbarto)
96 integer aretri(nbtrto,3)
97 integer facpyr(nbpycf,5), cofapy(nbpycf,5), arepyr(nbpyca,8)
98 integer hetpyr(nbpyto)
99 integer np2are(nbarto)
102 character*08 mess08(nblang,*)
103 character*54 mess54(nblang,*)
106 integer ulsort, langue, codret
108 c 0.4. ==> variables locales
111 integer lapyra, lenoeu
112 integer nucoin, ptcoin, ptcode, ptcofi
113 integer sommet(13), nbsomm
116 double precision v0(5,3)
117 double precision v1(3), v2(3), v3(3), v4(3), v5(3)
118 double precision v51(3), v52(3), v53(3), v54(3)
119 double precision v12(3), v14(3)
120 double precision v5n(3)
121 double precision vn(3)
122 double precision xmax, xmin, ymax, ymin, zmax, zmin
123 double precision prmito, prmilo
124 double precision daux1
129 parameter (nbmess = 10 )
130 character*80 texte(nblang,nbmess)
132 c 0.5. ==> initialisations
134 #ifdef _DEBUG_HOMARD_
138 c ______________________________________________________________________
148 #ifdef _DEBUG_HOMARD_
149 write (ulsort,texte(langue,1)) 'Entree', nompro
159 c 1.2. ==> constantes
161 #ifdef _DEBUG_HOMARD_
162 write(ulsort,90002) 'nbpyca', nbpyca
163 write(ulsort,90002) 'nbpycf', nbpycf
164 write(ulsort,90002) 'nbpyto', nbpyto
169 if ( degre.eq.1 ) then
176 c 2. controle de la non-interpenetration des pyramides
177 c remarque : on ne s'interesse qu'aux actives car les autres sont
178 c censees avoir ete controlees aux iterations anterieures
182 do 20 , lapyra = 1 , nbpyto
184 #ifdef _DEBUG_HOMARD_
185 if ( lapyra.lt.0 ) then
192 if ( mod(hetpyr(lapyra),100).eq.0 ) then
195 if ( nbpbco(typenh).eq.-1 ) then
196 #ifdef _DEBUG_HOMARD_
197 write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
204 #ifdef _DEBUG_HOMARD_
205 if ( glop.ne.0 ) then
206 write (ulbila,14203) sommet(1), v1(1), v1(2), v1(3)
207 write (ulbila,14203) sommet(2), v2(1), v2(2), v2(3)
208 write (ulbila,14203) sommet(3), v3(1), v3(2), v3(3)
209 write (ulbila,14203) sommet(4), v4(1), v4(2), v4(3)
210 write (ulbila,14203) sommet(5), v5(1), v5(2), v5(3)
214 do 23 , lenoeu = numip1, numap1
224 c 2.3.8. ==> si logaux(7) est encore vrai, c'est que le noeud est
225 c a l'interieur de la pyramide ... malaise ...
227 if ( logaux(7) ) then
233 write (ulbila,14203) sommet(1), v1(1), v1(2), v1(3)
234 write (ulbila,14203) sommet(2), v2(1), v2(2), v2(3)
235 write (ulbila,14203) sommet(3), v3(1), v3(2), v3(3)
236 write (ulbila,14203) sommet(4), v4(1), v4(2), v4(3)
237 write (ulbila,14203) sommet(5), v5(1), v5(2), v5(3)
254 if ( codret.ne.0 ) then
258 write (ulsort,texte(langue,1)) 'Sortie', nompro
259 write (ulsort,texte(langue,2)) codret
263 #ifdef _DEBUG_HOMARD_
264 write (ulsort,texte(langue,1)) 'Sortie', nompro