1 subroutine utcorn ( lenoeu, lequad, larete,
7 > ulsort, langue, codret)
8 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 - COntroles - Reprise d'un Noeud
29 c ______________________________________________________________________
31 c . nom . e/s . taille . description .
32 c .____________________________________________________________________.
33 c . lenoeu . e . 1 . noeud dont les coordonnees sont a changer .
34 c . lequad . e . 1 . quadrangle dont lenoeu est centre (si >0) .
35 c . larete . e . 1 . arete dont lenoeu est centre (si >0) .
36 c . coonoe . es . nbnoto . coordonnees des noeuds .
38 c . somare . e .2*nbarto. numeros des extremites d'arete .
39 c . filare . e . nbarto . premiere fille des aretes .
40 c . cfaare . e . nctfar*. codes des familles des aretes .
41 c . . . nbfare . 1 : famille MED .
42 c . . . . 2 : type de segment .
43 c . . . . 3 : orientation .
44 c . . . . 4 : famille d'orientation inverse .
45 c . . . . 5 : numero de ligne de frontiere .
46 c . . . . > 0 si concernee par le suivi de frontiere.
47 c . . . . <= 0 si non concernee .
48 c . . . . 6 : famille frontiere active/inactive .
49 c . . . . 7 : numero de surface de frontiere .
50 c . . . . + l : appartenance a l'equivalence l .
51 c . famare . es . nbarto . famille des aretes .
52 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
53 c . filqua . e . nbquto . premier fils des quadrangles .
54 c . cfaqua . e . nctfqu*. codes des familles des quadrangles .
55 c . . . nbfqua . 1 : famille MED .
56 c . . . . 2 : type de quadrangle .
57 c . . . . 3 : numero de surface de frontiere .
58 c . . . . 4 : famille des aretes internes apres raf.
59 c . . . . 5 : famille des triangles de conformite .
60 c . . . . 6 : famille de sf active/inactive .
61 c . . . . + l : appartenance a l'equivalence l .
62 c . famqua . e . nbquto . famille des quadrangles .
63 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
64 c . langue . e . 1 . langue des messages .
65 c . . . . 1 : francais, 2 : anglais .
66 c . codret . es . 1 . code de retour des modules .
67 c . . . . 0 : pas de probleme .
68 c . . . . x : probleme .
69 c ______________________________________________________________________
72 c 0. declarations et dimensionnement
75 c 0.1. ==> generalites
81 parameter ( nompro = 'UTCORN' )
100 integer lenoeu, lequad, larete
101 integer somare(2,nbarto), filare(nbarto)
102 integer cfaare(nctfar,nbfare), famare(nbarto)
103 integer arequa(nbquto,4), filqua(nbquto)
104 integer cfaqua(nctfqu,nbfqua), famqua(nbquto)
106 double precision coonoe(nbnoto,sdim)
108 integer ulsort, langue, codret
110 c 0.4. ==> variables locales
114 integer noeud1, noeud2, noeud3, noeud4
117 parameter ( nbmess = 10 )
118 character*80 texte(nblang,nbmess)
120 c 0.5. ==> initialisations
121 c ______________________________________________________________________
127 c 1.1. ==> les messages
131 #ifdef _DEBUG_HOMARD_
132 write (ulsort,texte(langue,1)) 'Entree', nompro
136 texte(1,7) = '(''... Reprise du '',a,i10)'
137 texte(1,8) = '(''... Au milieu du '',a,i10)'
139 texte(2,7) = '(''... Correction of '',a,i10)'
140 texte(2,8) = '(''... Center of '',a,i10)'
144 #ifdef _DEBUG_HOMARD_
145 write (ulsort,texte(langue,7)) mess14(langue,1,-1), lenoeu
149 c 2. Noeud au milieu d'un quadrangle
151 #ifdef _DEBUG_HOMARD_
152 write (ulsort,*) '2. Noeud quadrangle ; codret = ', codret
155 if ( lequad.gt.0 ) then
157 #ifdef _DEBUG_HOMARD_
158 write (ulsort,texte(langue,8)) mess14(langue,1,4), lequad
161 c 2.1. ==> Retour au milieu
163 call utsoqu ( somare, arequa(lequad,1), arequa(lequad,2),
164 > arequa(lequad,3), arequa(lequad,4),
165 > noeud1, noeud2, noeud3, noeud4 )
167 do 21 , iaux = 1 , sdim
168 coonoe(lenoeu,iaux) =
169 > 0.25d0*(coonoe(noeud1,iaux)+coonoe(noeud2,iaux)
170 > +coonoe(noeud3,iaux)+coonoe(noeud4,iaux))
173 c 2.2. ==> Le quadrangle ne doit plus etre considere en sf, ni ses fils
175 jaux = cfaqua(cosfin,famqua(lequad))
176 famqua(lequad) = jaux
178 jaux = cfaqua(cosfin,famqua(filqua(lequad)+iaux))
179 famqua(filqua(lequad)+iaux) = jaux
185 c 3. Noeud au milieu d'une arete
187 #ifdef _DEBUG_HOMARD_
188 write (ulsort,*) '3. Noeud arete ; codret = ', codret
191 if ( larete.gt.0 ) then
193 #ifdef _DEBUG_HOMARD_
194 write (ulsort,texte(langue,8)) mess14(langue,1,1), larete
197 c 3.1. ==> Retour au milieu
199 noeud1 = somare(1,larete)
200 noeud2 = somare(2,larete)
201 do 31 , iaux = 1 , sdim
202 coonoe(lenoeu,iaux) =
203 > 0.5d0*(coonoe(noeud1,iaux)+coonoe(noeud2,iaux))
206 c 3.2. ==> L'arete ne doit plus etre consideree en sf ni ses filles
208 jaux = cfaare(cosfin,famare(larete))
209 famare(larete) = jaux
211 jaux = cfaare(cosfin,famare(filare(larete)+iaux))
212 famare(filare(larete)+iaux) = jaux
221 if ( codret.ne.0 ) then
225 write (ulsort,texte(langue,1)) 'Sortie', nompro
226 write (ulsort,texte(langue,2)) codret
230 #ifdef _DEBUG_HOMARD_
231 write (ulsort,texte(langue,1)) 'Sortie', nompro