1 subroutine utb3n0 ( coonoe,
2 > numcoi, coinpt, coinnn,
3 > nbbomx, lglibo, ptnubo, listbo,
5 > ulbila, ulsort, langue, codret )
6 c ______________________________________________________________________
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c HOMARD est une marque deposee d'Electricite de France
24 c ______________________________________________________________________
26 c UTilitaire - Bilan - option 3 - phase N0
28 c ______________________________________________________________________
30 c but : controle la non coincidence des noeuds.
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . coonoe . e . nbnoto . coordonnees des noeuds .
37 c . numcoi . s . nbnoto . numero de la coincidence du noeud .
38 c . coinpt . s . * . pointeur de la i-eme coincidence dans coinn.
39 c . coinnn . s . * . liste des noeuds coincidents .
40 c . nbbomx . e . 1 . nombre total de boites .
41 c . lglibo . e . 1 . longueur de listbo .
42 c . ptnubo . e .0:nbbomx. pointeur dans listbo .
43 c . listbo . e . lglibo . numero des noeuds dans chaque boite .
44 c . nbpbco . es . -1:7 . nombre de problemes de coincidences .
45 c . mess54 . e .nblang,*. messages .
46 c . ulbila . e . 1 . unite logique d'ecriture du bilan .
47 c . ulsort . e . 1 . unite logique de la sortie generale .
48 c . langue . e . 1 . langue des messages .
49 c . . . . 1 : francais, 2 : anglais .
50 c . codret . s . 1 . code de retour des modules .
51 c . . . . 0 : pas de probleme .
52 c . . . . 1 : probleme .
53 c .____________________________________________________________________.
56 c 0. declarations et dimensionnement
59 c 0.1. ==> generalites
65 parameter ( nompro = 'UTB3N0' )
68 parameter ( typenh = -1 )
80 double precision coonoe(nbnoto,sdim)
82 integer numcoi(nbnoto), coinpt(*), coinnn(*)
84 integer nbbomx, lglibo
85 integer ptnubo(0:nbbomx), listbo(lglibo)
87 character*54 mess54(nblang,*)
90 integer ulsort, langue, codret
92 c 0.4. ==> variables locales
94 integer iaux, jaux, kaux
96 integer nucoin, nucoix, ptcoin, ptcode, ptcofi
97 integer numboi, ptldeb, ptlfin
100 parameter (nbmess = 10 )
101 character*80 texte(nblang,nbmess)
103 c 0.5. ==> initialisations
104 c ______________________________________________________________________
114 #ifdef _DEBUG_HOMARD_
115 write (ulsort,texte(langue,1)) 'Entree', nompro
120 > '(/,3x,''... Coincidence des noeuds'',/,3x,26(''-''),/)'
122 > '(5x,''Deux noeuds sont dits coincidents si l''''ecart absolu'')'
124 > '(5x,''entre leurs coordonnees est inferieur a :'',g9.2)'
126 texte(2,4) = '(/,3x,''... Coincident nodes'',/,3x,20(''-''),/)'
127 texte(2,5) = '(5x,''Nodes are declared coincident if their'')'
129 > '(5x,''absolute coordinate difference is lower than '',g9.2)'
133 c 1.2. ==> constantes
137 do 12 , lenoeu = 1 , nbnoto
146 #ifdef _DEBUG_HOMARD_
149 if ( iaux.eq.1 ) then
152 if ( ulbila.eq.ulsort ) then
159 write (jaux,texte(langue,4))
160 write (jaux,texte(langue,5))
161 write (jaux,texte(langue,6)) epsima
167 c 2. controle de la coincidence des noeuds, boite par boite
169 c 1. La verification est sujette a caution car le test sur la
170 c coincidence est un test sur une egalite de reels ...
173 cgn call gtdems (113)
174 cgn print *,'nbnoto =', nbnoto
175 cgn print *,'nbbomx =', nbbomx
179 do 20 , numboi = 1 , nbbomx
182 ptlfin = ptnubo(numboi)
183 cgn print *,numboi, ' : ',ptldeb,ptlfin
187 if ( sdim.eq.1 ) then
189 do 21 , iaux = ptldeb, ptlfin
191 lenoeu = listbo(iaux)
193 if ( numcoi(lenoeu).eq.0 ) then
195 do 211 , jaux = iaux+1 , ptlfin
200 > abs(coonoe(kaux,1)-coonoe(lenoeu,1)).le.epsima ) then
202 if ( numcoi(lenoeu).eq.0 ) then
204 numcoi(lenoeu) = nucoin
206 coinnn(ptcoin) = lenoeu
208 numcoi(kaux) = nucoin
210 coinpt(nucoin+1) = ptcoin
211 coinnn(ptcoin) = kaux
223 elseif ( sdim.eq.2 ) then
225 do 22 , iaux = ptldeb, ptlfin
227 lenoeu = listbo(iaux)
229 if ( numcoi(lenoeu).eq.0 ) then
231 do 221 , jaux = iaux+1 , ptlfin
236 > abs(coonoe(kaux,1)-coonoe(lenoeu,1)).le.epsima ) then
239 > abs(coonoe(kaux,2)-coonoe(lenoeu,2)).le.epsima ) then
241 if ( numcoi(lenoeu).eq.0 ) then
243 numcoi(lenoeu) = nucoin
245 coinnn(ptcoin) = lenoeu
247 numcoi(kaux) = nucoin
249 coinpt(nucoin+1) = ptcoin
250 coinnn(ptcoin) = kaux
266 do 23 , iaux = ptldeb, ptlfin
268 lenoeu = listbo(iaux)
269 cgn print *,'. Noeud ', lenoeu
271 if ( numcoi(lenoeu).eq.0 ) then
273 do 231 , jaux = iaux+1 , ptlfin
278 > abs(coonoe(kaux,1)-coonoe(lenoeu,1)).le.epsima ) then
281 > abs(coonoe(kaux,2)-coonoe(lenoeu,2)).le.epsima ) then
284 > abs(coonoe(kaux,3)-coonoe(lenoeu,3)).le.epsima )then
286 if ( numcoi(lenoeu).eq.0 ) then
288 numcoi(lenoeu) = nucoin
290 coinnn(ptcoin) = lenoeu
292 numcoi(kaux) = nucoin
294 coinpt(nucoin+1) = ptcoin
295 coinnn(ptcoin) = kaux
313 nbpbco(typenh) = nucoin
314 cgn call gtfims (113)
318 c nucoix = numero de la derniere coincidence imprimee
319 c Attention : il faut imprimer boite par boite sinon on en oublie ...
321 cgn call gtdems (114)
327 do 31 , numboi = 1 , nbbomx
330 ptlfin = ptnubo(numboi)
332 do 311 , iaux = ptldeb, ptlfin
334 lenoeu = listbo(iaux)
336 nucoin = numcoi(lenoeu)
338 if ( nucoin.ne.0 .and. nucoin.gt.nucoix ) then
341 write (ulbila,11100) mess54(langue,4)
342 ptcode = coinpt(nucoin)+1
343 ptcofi = coinpt(nucoin+1)
344 write (ulbila,12100) (coinnn(jaux),jaux = ptcode, ptcofi)
345 if ( sdim.eq.1 ) then
346 write (ulbila,14101) coonoe(lenoeu,1)
347 elseif ( sdim.eq.2 ) then
348 write (ulbila,14102) coonoe(lenoeu,1), coonoe(lenoeu,2)
350 write (ulbila,14103) coonoe(lenoeu,1), coonoe(lenoeu,2),
362 cgn call gtfims (114)