1 subroutine utb3d1 ( nbcoqu, nbcoar,
3 > somare, filare, np2are,
6 > hettet, tritet, cotrte, aretet,
9 > ulsort, langue, codret )
10 c ______________________________________________________________________
14 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
16 c Version originale enregistree le 18 juin 1996 sous le numero 96036
17 c aupres des huissiers de justice Simart et Lavoir a Clamart
18 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
19 c aupres des huissiers de justice
20 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
22 c HOMARD est une marque deposee d'Electricite de France
28 c ______________________________________________________________________
30 c UTilitaire - Bilan - option 3 - phase D1
32 c ______________________________________________________________________
34 c but : controle la presence de noeuds dans les tetraedres
35 c ______________________________________________________________________
37 c . nom . e/s . taille . description .
38 c .____________________________________________________________________.
39 c . nbcoqu . es . 1 . nombre de corrections pour les quadrangles .
40 c . nbcoar . es . 1 . nombre de corrections pour les aretes .
41 c . coonoe . e . nbnoto . coordonnees des noeuds .
43 c . somare . e .2*nbarto. numeros des extremites d'arete .
44 c . filare . e . nbarto . premiere fille des aretes .
45 c . np2are . e . nbarto . noeud milieux des aretes .
46 c . cfaare . e . nctfar*. codes des familles des aretes .
47 c . . . nbfare . 1 : famille MED .
48 c . . . . 2 : type de segment .
49 c . . . . 3 : orientation .
50 c . . . . 4 : famille d'orientation inverse .
51 c . . . . 5 : numero de ligne de frontiere .
52 c . . . . > 0 si concernee par le suivi de frontiere.
53 c . . . . <= 0 si non concernee .
54 c . . . . 6 : famille frontiere active/inactive .
55 c . . . . 7 : numero de surface de frontiere .
56 c . . . . + l : appartenance a l'equivalence l .
57 c . famare . e . nbarto . famille des aretes .
58 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
59 c . hettet . e . nbteto . historique de l'etat des tetraedres .
60 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
61 c . cotrte . e .nbtecf*4. code des 4 triangles des tetraedres .
62 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
63 c . nbarfr . e . 1 . nombre d'aretes concernees .
64 c . arefro . es . nbarfr . liste des aretes concernees .
65 c . nbqufr . e . 1 . nombre de quadrangles concernes .
66 c . quafro . es . nbqufr . liste des quadrangles concernes .
67 c . ulsort . e . 1 . unite logique de la sortie generale .
68 c . langue . e . 1 . langue des messages .
69 c . . . . 1 : francais, 2 : anglais .
70 c . codret . s . 1 . code de retour des modules .
71 c . . . . 0 : pas de probleme .
72 c . . . . 1 : probleme .
73 c .____________________________________________________________________.
76 c 0. declarations et dimensionnement
79 c 0.1. ==> generalites
85 parameter ( nompro = 'UTB3D1' )
88 parameter ( typenh = 3 )
107 double precision coonoe(nbnoto,sdim)
109 integer nbcoar, nbcoqu
110 integer somare(2,nbarto), filare(nbarto), np2are(nbarto)
111 integer cfaare(nctfar,nbfare), famare(nbarto)
112 integer aretri(nbtrto,3)
113 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
114 integer hettet(nbteto)
115 integer nbarfr, arefro(nbarfr)
116 integer nbqufr, quafro(nbqufr)
118 integer ulsort, langue, codret
120 c 0.4. ==> variables locales
123 integer letetr, larete, lenoeu
125 integer nbexam, examno(2), examar(2)
126 integer sommet(10), nbsomm
128 integer arequa(1,4), filqua(1)
129 integer cfaqua(1,1), famqua(1)
130 #ifdef _DEBUG_HOMARD_
134 double precision v0(4,3)
135 double precision v1(3), v2(3), v3(3), v4(3)
136 double precision v21(3), v23(3), v24(3), v41(3), v43(3)
137 double precision vn(3)
138 double precision xmax, xmin, ymax, ymin, zmax, zmin
139 double precision prmito, prmilo
140 double precision daux1
145 parameter (nbmess = 10 )
146 character*80 texte(nblang,nbmess)
148 c 0.5. ==> initialisations
149 c ______________________________________________________________________
159 #ifdef _DEBUG_HOMARD_
160 write (ulsort,texte(langue,1)) 'Entree', nompro
166 c 1.2. ==> constantes
170 if ( degre.eq.1 ) then
180 c 2. controle de la penetration de noeuds dans les tetraedres
181 c remarque : on ne s'interesse qu'aux actifs car les autres sont
182 c censes avoir ete controles aux iterations anterieures
186 do 20 , letetr = 1 , nbteto
188 #ifdef _DEBUG_HOMARD_
189 if ( letetr.lt.0 ) then
196 if ( mod(hettet(letetr),100).eq.0 ) then
198 cgn write (ulsort,*) '.. ', mess14(langue,2,3), letetr
202 c 2.2. ==> Les aretes
204 do 22 , nuarfr = 1 , nbarfr
210 if ( codret.eq.0 ) then
212 #ifdef _DEBUG_HOMARD_
213 write (ulsort,texte(langue,4)) mess14(langue,1,1), larete
216 do 223 , jaux = 1 , nbexam
218 lenoeu = examno(jaux)
224 c 2.2.8. ==> si logaux(7) est encore vrai, c'est que le noeud est
225 c a l'interieur du tetraedre ... correction
227 if ( logaux(7) ) then
229 if ( codret.eq.0 ) then
231 #ifdef _DEBUG_HOMARD_
232 write (ulsort,texte(langue,8)) mess14(langue,1,-1), lenoeu
236 arefro(nuarfr) = -larete
237 #ifdef _DEBUG_HOMARD_
238 write (ulsort,texte(langue,3)) 'UTCORN_arete', nompro
240 call utcorn ( lenoeu, 0, larete,
246 > ulsort, langue, codret)
270 if ( codret.ne.0 ) then
274 write (ulsort,texte(langue,1)) 'Sortie', nompro
275 write (ulsort,texte(langue,2)) codret
279 #ifdef _DEBUG_HOMARD_
280 write (ulsort,texte(langue,1)) 'Sortie', nompro