1 subroutine utb3n2 ( coonoe,
3 > lglibo, ptnubo, listbo,
4 > nbboit, boimin, boimax,
5 > 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 N2
28 c ______________________________________________________________________
30 c Classe les noeuds par boite
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . coonoe . e . nbnoto . coordonnees des noeuds .
37 c . nbintx . e . 1 . nombre maximal d'intervalle .
38 c . nbbomx . e . 1 . nombre total de boites .
39 c . lglibo . e . 1 . longueur de listbo .
40 c . ptnubo . es .0:nbbomx. pointeur dans listbo .
41 c . listbo . s . lglibo . numero des noeuds dans chaque boite .
42 c . nbboit . s . sdim . nombre de boite dans chaque direction .
43 c . boimin . e .0:nbintx. limite minimale de chaque boite .
44 c . boimax . e .0:nbintx. limite maximale de chaque boite .
45 c . ulsort . e . 1 . unite logique de la sortie generale .
46 c . langue . e . 1 . langue des messages .
47 c . . . . 1 : francais, 2 : anglais .
48 c . codret . s . 1 . code de retour des modules .
49 c . . . . 0 : pas de probleme .
50 c . . . . 1 : probleme .
51 c .____________________________________________________________________.
54 c 0. declarations et dimensionnement
57 c 0.1. ==> generalites
63 parameter ( nompro = 'UTB3N2' )
76 integer nbintx, nbbomx
78 integer ptnubo(0:nbbomx), listbo(lglibo)
81 double precision coonoe(nbnoto,sdim)
82 double precision boimin(3,0:nbintx), boimax(3,0:nbintx)
84 integer ulsort, langue, codret
86 c 0.4. ==> variables locales
89 integer lgboin, boinoe(8)
90 integer lenoeu, noedeb
93 double precision coord(3)
96 parameter (nbmess = 10 )
97 character*80 texte(nblang,nbmess)
99 c 0.5. ==> initialisations
100 c ______________________________________________________________________
110 #ifdef _DEBUG_HOMARD_
111 write (ulsort,texte(langue,1)) 'Entree', nompro
115 texte(1,2) = '(''Nombre maximal de boites : '',i10)'
117 texte(2,2) = '(''Maximum number of boxes : '',i10)'
119 #ifdef _DEBUG_HOMARD_
120 write (ulsort,texte(langue,2)) nbbomx
125 c 1.2. ==> Nombre d'intervalles
127 do 12 , iaux = 1 , sdim
128 nbinte(iaux) = nbboit(iaux) - 1
132 c 2. Creation des listes
135 c ptnubo(i) = position du dernier noeud de la boite i-1
136 c = nombre cumule de noeuds pour les (i-1) premieres boites
138 c ptnubo(i) = position du dernier noeud de la boite i
139 c = nombre cumule de noeuds pour les i premieres boites
141 c 2.0. ==> On controle tous les noeuds, sauf dans un cas : si le code
142 c de calcul associe est Saturne_2D ou Neptune_2D, le maillage
143 c est une couche 2D du maillage 3D. Dans ce cas, un noeud
144 c supplementaire a ete cree pour memoriser les cotes mini
145 c et maxi du maillage. Ce noeud etant isole se trouve en
146 c premiere position. Il doit etre retire du controle car il
147 c n'a pas de sens du point de vue du maillage.
149 if ( typcca.eq.26 .or.
150 > typcca.eq.46 ) then
156 cgn 3000 format(i10,3g12.5)
158 c 2.1. ==> en dimension 1
160 if ( sdim.eq.1 ) then
162 do 21 , lenoeu = noedeb , nbnoto
164 coord(1) = coonoe(lenoeu,1)
165 cgn write (ulsort,3000) lenoeu,coord(1)
167 #ifdef _DEBUG_HOMARD_
168 write (ulsort,texte(langue,3)) 'UTB3N5', nompro
170 call utb3n5 ( lgboin, boinoe,
175 cgn write(ulsort,*) 'lgboin =', lgboin
176 do 211 , iaux = 1 , lgboin
177 cgn write(ulsort,*) 'boinoe(',iaux,') =', boinoe(iaux)
178 ptnubo(boinoe(iaux)) = ptnubo(boinoe(iaux)) + 1
179 listbo(ptnubo(boinoe(iaux))) = lenoeu
183 cgn write(ulsort,*) ptnubo
184 cgn write(ulsort,*) listbo
186 c 2.2. ==> en dimension 2
188 elseif ( sdim.eq.2 ) then
190 do 22 , lenoeu = noedeb , nbnoto
192 coord(1) = coonoe(lenoeu,1)
193 coord(2) = coonoe(lenoeu,2)
194 cgn write (ulsort,3000) lenoeu,coord(1), coord(2)
196 #ifdef _DEBUG_HOMARD_
197 write (ulsort,texte(langue,3)) 'UTB3N4', nompro
199 call utb3n4 ( lgboin, boinoe,
204 cgn write(ulsort,*) 'lgboin =', lgboin
205 do 221 , iaux = 1 , lgboin
206 cgn write(ulsort,*) 'boinoe(',iaux,') =', boinoe(iaux)
207 ptnubo(boinoe(iaux)) = ptnubo(boinoe(iaux)) + 1
208 listbo(ptnubo(boinoe(iaux))) = lenoeu
212 cgn write(ulsort,*) ptnubo
213 cgn write(ulsort,*) listbo
215 c 2.3. ==> en dimension 3
219 do 23 , lenoeu = noedeb , nbnoto
220 cgn write (ulsort,*) lenoeu,(coonoe(lenoeu,iaux) , iaux = 1 , sdim)
222 coord(1) = coonoe(lenoeu,1)
223 coord(2) = coonoe(lenoeu,2)
224 coord(3) = coonoe(lenoeu,3)
225 cgn write (ulsort,3000) lenoeu,coord
227 #ifdef _DEBUG_HOMARD_
228 write (ulsort,texte(langue,3)) 'UTB3N3', nompro
230 call utb3n3 ( lgboin, boinoe,
235 do 231 , iaux = 1 , lgboin
236 ptnubo(boinoe(iaux)) = ptnubo(boinoe(iaux)) + 1
237 listbo(ptnubo(boinoe(iaux))) = lenoeu
248 if ( codret.ne.0 ) then
252 #ifdef _DEBUG_HOMARD_
253 write (ulsort,texte(langue,1)) 'Sortie', nompro
254 write (ulsort,texte(langue,2)) codret
259 #ifdef _DEBUG_HOMARD_
260 write (ulsort,texte(langue,1)) 'Sortie', nompro