1 subroutine utcoq5 ( hetare, somare, filare, a1, a2, a3, a4,
2 > numdec, ai, aj, ak, al,
5 > saiaj, sajak, sakal, salai,
6 > ulsort, langue, codret )
7 c ______________________________________________________________________
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c Version originale enregistree le 18 juin 1996 sous le numero 96036
14 c aupres des huissiers de justice Simart et Lavoir a Clamart
15 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
16 c aupres des huissiers de justice
17 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c HOMARD est une marque deposee d'Electricite de France
25 c ______________________________________________________________________
27 c UTilitaire - decoupage de COnformite d'un Quadrangle
30 c ______________________________________________________________________
32 c . nom . e/s . taille . description .
33 c .____________________________________________________________________.
34 c . hetare . e . nbaret . historique de l'etat des aretes .
35 c . somare . e .2*nbaret. numeros des extremites d'arete .
36 c . filare . e . nbaret . premiere fille des aretes .
37 c .a1,..,a4. e . 1 . les numeros d'arete du quadrangle .
38 c . numdec . s . 1 . numero local de l'arete decoupee .
39 c . ai . s . 1 . l'arete du quadrangle qui est decoupee .
40 c .aj,ak,al. s . 1 . les 3 autres aretes dans l'ordre oriente .
41 c . aifj . s . 1 . fille de ai allant vers saiaj .
42 c . aifl . s . 1 . fille de ai allant vers salai .
43 c . ni . s . 1 . milieu de l'arete ai .
44 c . ajfi . s . 1 . fille de aj allant vers saiaj .
45 c . ajfk . s . 1 . fille de aj allant vers sajak .
46 c . nj . s . 1 . milieu de l'arete aj .
47 c . saiaj . s . 1 . sommet commun aux aretes i et j .
48 c . sajak . s . 1 . sommet commun aux aretes j et k .
49 c . sakal . s . 1 . sommet commun aux aretes k et l .
50 c . salai . s . 1 . sommet commun aux aretes l et i .
51 c . ulsort . e . 1 . unite logique de la sortie generale .
52 c . langue . e . 1 . langue des messages .
53 c . . . . 1 : francais, 2 : anglais .
54 c . codret . es . 1 . code de retour des modules .
55 c . . . . 0 : pas de probleme .
56 c ______________________________________________________________________
58 c saiaj aifj ai/ni aifl salai
59 c ._____________________________________________.
69 c aj/nj .----------------------.n0 nq3 . al
79 c ._____________________________________________.
83 c 0. declarations et dimensionnement
86 c 0.1. ==> generalites
92 parameter ( nompro = 'UTCOQ5' )
104 integer hetare(*), somare(2,*), filare(*)
106 integer a1, a2, a3, a4
107 integer ai, aj, ak, al
108 integer aifj, aifl, ni
109 integer ajfi, ajfk, nj
110 integer saiaj, sajak, sakal, salai
112 integer ulsort, langue, codret
114 c 0.4. ==> variables locales
117 integer iaux, jaux, kaux
120 parameter ( nbmess = 10 )
121 character*80 texte(nblang,nbmess)
122 c 0.5. ==> initialisations
123 c ______________________________________________________________________
131 #ifdef _DEBUG_HOMARD_
132 write (ulsort,texte(langue,1)) 'Entree', nompro
136 texte(1,10) ='(''Impossible de trouver l''''arete coupee.''))'
138 texte(2,10) ='(''Cut edge cannot be found.'')'
143 c 2. recherche du numero local de la premiere arete coupee
150 cgn write(ulsort,*) a1,hetare(a1)
151 cgn write(ulsort,*) a2,hetare(a2)
152 cgn write(ulsort,*) a3,hetare(a3)
153 cgn write(ulsort,*) a4,hetare(a4)
158 if ( mod(hetare(arete(iaux)),10).eq.2 ) then
159 if ( jaux.eq.0 ) then
167 cgn write (ulsort,*) jaux, kaux
168 if ( kaux.eq.0 ) then
169 write (ulsort,texte(langue,10))
171 elseif ( jaux.eq.1 .and. kaux.eq.4 ) then
178 c 3. les numeros globaux des noeuds et des aretes
181 if ( codret.eq.0 ) then
183 c 3.1. ==> la premiere arete coupee
187 c 3.2. ==> les autres aretes sont dans le meme ordre de rotation
189 iaux = per1a4(1,numdec)
192 iaux = per1a4(1,iaux)
195 iaux = per1a4(1,iaux)
198 c 3.3. ==> les sommets du quadrangle
200 call utsoqu ( somare, ai, aj, ak, al,
201 > saiaj, sajak, sakal, salai )
203 c 3.4. ==> le decoupage de l'arete ai
206 if ( somare(1,iaux).eq.saiaj ) then
216 c 3.5. ==> le decoupage de l'arete aj
219 if ( somare(1,iaux).eq.saiaj ) then
235 if ( codret.ne.0 ) then
239 write (ulsort,texte(langue,1)) 'Sortie', nompro
240 write (ulsort,texte(langue,2)) codret
244 #ifdef _DEBUG_HOMARD_
245 write (ulsort,texte(langue,1)) 'Sortie', nompro