1 subroutine utb3n4 ( lgboin, boinoe,
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 - Bilan - option 3 - phase N4
27 c ______________________________________________________________________
29 c Retourne la liste des boites d'un noeud - 2D
30 c ______________________________________________________________________
32 c . nom . e/s . taille . description .
33 c .____________________________________________________________________.
34 c . lgboin . s . 1 . longueur de boinoe .
35 c . boinoe . s . 8 . liste des boites du noeud en cours .
36 c . coonoe . e . sdim . coordonnees du noeud .
37 c . nbboit . e . sdim . nombre de boites dans chaque dimension .
38 c . nbinte . e . sdim . nombre d'intervalles dans chaque dimension .
39 c . boimin . a .0:nbintx. limite minimale de chaque boite .
40 c . boimax . a .0:nbintx. limite maximale de chaque boite .
41 c .____________________________________________________________________.
44 c 0. declarations et dimensionnement
47 c 0.1. ==> generalites
53 parameter ( nompro = 'UTB3N4' )
57 parameter ( ulsort = 1 )
59 parameter ( langue = 1 )
63 parameter ( sdim = 2 )
71 integer lgboin, boinoe(8)
72 integer nbboit(sdim), nbinte(sdim)
74 double precision coonoe(sdim)
75 double precision boimin(3,0:*), boimax(3,0:*)
77 c 0.4. ==> variables locales
84 parameter (nbmess = 10 )
85 character*80 texte(nblang,nbmess)
87 c 0.5. ==> initialisations
98 write (ulsort,texte(langue,1)) 'Entree', nompro
107 c 2. Pour une dimension iaux donnee, on passe en revue tous les
109 c . Quand on rencontre la premiere limite qui est superieure a
110 c la coordonnee, on stocke le numero de l'intervalle
111 c dans numint(1,iaux)
112 c . Sachant que les limites sont legerement recouvrantes, on
113 c regarde si la coordonnee n'est pas superieure au minima de
114 c l'intervalle suivant. Si oui, on stocke le numero de
115 c l'intervalle suivant dans numint(2,iaux). Sinon,
116 c numint(2,iaux) vaut numint(1,iaux).
123 cgn 3000 format(i10,3g12.5)
124 cgn 3001 format(10i4)
125 cgn 3002 format(a,' :',3i10)
127 cgn write (ulsort,3002) 'sdim', sdim
129 do 21 , iaux = 1 , sdim
130 cgn write (ulsort,3002) '. Dimension', iaux
131 cgn write (ulsort,3002) '. nbinte(iaux)', nbinte(iaux)
135 do 211 , jaux = 1 , nbinte(iaux)
136 cgn write (ulsort,3000) jaux,boimax(iaux,jaux)
137 if ( coonoe(iaux).le.boimax(iaux,jaux) ) then
138 if ( numint(1,iaux).eq.0 ) then
139 numint(1,iaux) = jaux
140 numint(2,iaux) = jaux
141 if ( coonoe(iaux).ge.boimin(iaux,jaux+1) ) then
142 numint(2,iaux) = jaux + 1
149 numint(1,iaux) = nbboit(iaux)
150 numint(2,iaux) = nbboit(iaux)
153 cgn write (ulsort,3002) 'numint(1,*)',(numint(1,iaux),iaux=1,sdim)
154 cgn write (ulsort,3002) 'numint(2,*)',(numint(2,iaux),iaux=1,sdim)
155 cgn write (ulsort,3002) 'nombre de boites', nombbo
157 c 2.2. ==> Increment des pointeurs
158 c 2.2.1. ==> La boite principale
159 iaux = nbboit(1)*(numint(1,2)-1)
161 cgn write (ulsort,3002) 'boite principale',iaux
163 boinoe(lgboin) = iaux
165 c 2.2.2. ==> Les boites secondaires
167 if ( nombbo.gt.1 ) then
169 iaux = nbboit(1)*(numint(1,2)-1)
171 if ( iaux.ne.boinoe(1) ) then
172 cgn write (ulsort,3002) 'b1',iaux
174 boinoe(lgboin) = iaux
176 cgn write (ulsort,3001) (boinoe(jaux),jaux = 1,lgboin)
179 iaux = nbboit(1)*(numint(2,2)-1)
181 do 221 , jaux = 1 , lgboin
182 if ( iaux.eq.boinoe(jaux) ) then
186 cgn write (ulsort,3002) 'b2',iaux
188 boinoe(lgboin) = iaux
189 cgn write (ulsort,3001) (boinoe(jaux),jaux = 1,lgboin)
192 c recouvrement en x et y
193 iaux = nbboit(1)*(numint(2,2)-1)
195 do 222 , jaux = 1 , lgboin
196 if ( iaux.eq.boinoe(jaux) ) then
201 boinoe(lgboin) = iaux
202 cgn write (ulsort,3002) 'b3',iaux
211 #ifdef _DEBUG_HOMARD_
212 write (ulsort,texte(langue,1)) 'Sortie', nompro