1 subroutine utetri ( nbtrto, nbtral,
3 > nmprog, avappr, ulbila,
4 > ulsort, langue, codret )
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c UTilitaire - Examen des TRIangles
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . nbtrto . e . 1 . nombre de triangles a examiner .
32 c . nbtral . e . 1 . nombre de triangles pour les allocations .
33 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
34 c . somare . e . 2*nbar . numeros des extremites d'arete .
35 c . nmprog . e . char* . nom du programme a pister .
36 c . avappr . e . 1 . 1 : impression avant l'appel a "nmprog" .
37 c . . . . 2 : impression apres l'appel a "nmprog" .
38 c . ulbila . e . 1 . unite logique d'ecriture du bilan .
39 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
40 c . langue . e . 1 . langue des messages .
41 c . . . . 1 : francais, 2 : anglais .
42 c . codret . es . 1 . code de retour des modules .
43 c . . . . 0 : pas de probleme .
44 c . . . . >0 : probleme dans le controle .
45 c ______________________________________________________________________
48 c 0. declarations et dimensionnement
51 c 0.1. ==> generalites
57 parameter ( nompro = 'UTETRI' )
67 integer nbtrto, nbtral
68 integer aretri(nbtral,3)
76 integer ulsort, langue, codret
78 c 0.4. ==> variables locales
81 integer iaux, jaux, kaux
83 integer sa1a2, sa2a3, sa3a1
87 parameter ( nbmess = 20 )
88 character*80 texte(nblang,nbmess)
90 c 0.5. ==> initialisations
91 c ______________________________________________________________________
100 write (ulsort,texte(langue,1)) 'Entree', nompro
104 texte(1,6) = '(5x,''Controle des '',i10,'' triangles.'')'
106 > '(''Le triangle '',i10,'' a des aretes confondues :'',3i10)'
108 > '(''Le triangle '',i10,'' a des noeuds confondus :'',3i10)'
110 > '(5x,''Pas de probleme dans la definition des triangles'',/)'
111 texte(1,17) = '(/,''Mauvais code pour '',a,'' : '',i10,/)'
112 texte(1,18) = '(/,''.. A l''''entree de '',a,'' :'',/)'
113 texte(1,19) = '(/,''.. Avant appel a '',a,'' :'',/)'
114 texte(1,20) = '(/,''.. Apres appel a '',a,'' :'',/)'
116 texte(2,6) = '(5x,''Control of '',i10,'' triangles.'')'
118 > '(''Edges of triangle # '',i10,'' are similar :'',3i10)'
120 > '(''Nodes of triangle # '',i10,'' are similar :'',3i10)'
121 texte(2,16) = '(5x,''No problem with triangle definition'',/)'
122 texte(2,17) = '(/,''Bad code for '',a,'' : '',i10,/)'
123 texte(2,18) = '(/,''.. At the beginning of '',a,'' :'',/)'
124 texte(2,19) = '(/,''.. Before calling '',a,'' :'',/)'
125 texte(2,20) = '(/,''.. After calling '',a,'' :'',/)'
127 #ifdef _DEBUG_HOMARD_
128 if ( avappr.ge.0 .and. avappr.le.2 ) then
129 write (ulsort,texte(langue,18+avappr)) nmprog
131 write (ulsort,texte(langue,17)) nmprog, avappr
134 write (ulsort,texte(langue,6)) nbtrto
142 do 20 , iaux = 1 , nbtrto
146 c 2.1. ==> les aretes doivent etre differentes ...
156 write (ulsort,texte(langue,7)) iaux, a1, a2, a3
157 write (ulbila,texte(langue,7)) iaux, a1, a2, a3
160 c 2.2. ==> les aretes doivent se suivre ...
162 if ( codre0.eq.0 ) then
170 #ifdef _DEBUG_HOMARD_
171 write (ulsort,texte(langue,3)) 'UTVAR0', nompro
173 call utvar0 ( jaux, iaux, kaux, listar, somare,
174 > ulbila, ulsort, langue, codre0 )
178 c 2.3. ==> les sommets doivent etre differents ...
180 if ( codre0.eq.0 ) then
182 #ifdef _DEBUG_HOMARD_
183 write (ulsort,texte(langue,3)) 'UTSOTR', nompro
185 call utsotr ( somare, a1, a2, a3,
186 > sa1a2, sa2a3, sa3a1 )
188 if ( sa1a2.eq.sa2a3 .or.
189 > sa1a2.eq.sa3a1 .or.
190 > sa2a3.eq.sa3a1 ) then
192 write (ulsort,texte(langue,8)) iaux, sa1a2, sa2a3, sa3a1
193 write (ulbila,texte(langue,8)) iaux, sa1a2, sa2a3, sa3a1
198 c 2.4. ==> cumul des erreurs
200 codret = codret + codre0
204 c 2.4. ==> tout va bien
206 if ( codret.eq.0 ) then
207 write (ulsort,texte(langue,16))
208 write (ulbila,texte(langue,16))
215 if ( codret.ne.0 ) then
219 write (ulsort,texte(langue,1)) 'Sortie', nompro
220 write (ulsort,texte(langue,2)) codret
224 #ifdef _DEBUG_HOMARD_
225 write (ulsort,texte(langue,1)) 'Sortie', nompro