1 subroutine cmnbco ( nomail,
2 > lgopti, taopti, lgopts, taopts,
4 > ulsort, langue, codret )
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 Creation du Maillage - NomBre de mise en COnformite
27 c ______________________________________________________________________
29 c but : decompte les entites a creer lors du decoupage de mise en
30 c conformite des faces et des volumes.
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . nomail . e . ch8 . nom de l'objet contenant le maillage .
36 c . lgopti . e . 1 . longueur du tableau des options entieres .
37 c . taopti . e . lgopti . tableau des options .
38 c . lgopts . e . 1 . longueur du tableau des options caracteres .
39 c . taopts . e . lgopts . tableau des options caracteres .
40 c . lgetco . e . 1 . longueur du tableau de l'etat courant .
41 c . taetco . e . lgetco . tableau de l'etat courant .
42 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
43 c . langue . e . 1 . langue des messages .
44 c . . . . 1 : francais, 2 : anglais .
45 c . codret . e/s . 1 . code de retour des modules .
46 c . . . . 0 : pas de probleme .
47 c ______________________________________________________________________
48 c Rappel des codes de pilotage du raffinement et deraffinement :
49 c 30 : mode de conformite
50 c 0 : conforme (defaut)
51 c 1 : non-conforme avec 1 seule arete decoupee (en 2)
52 c par face (triangle ou quadrangle)
53 c 2 : non-conforme avec 1 seul noeud pendant par arete
54 c 3 : non-conforme fidele a l'indicateur
55 c -1 : conforme, avec des boites pour les quadrangles, hexaedres
59 c 0. declarations et dimensionnement
62 c 0.1. ==> generalites
68 parameter ( nompro = 'CMNBCO' )
89 integer taopti(lgopti)
92 character*8 taopts(lgopts)
95 integer taetco(lgetco)
97 integer ulsort, langue, codret
99 c 0.4. ==> variables locales
102 integer nretap, nrsset
103 integer iaux, jaux, kaux
106 integer codre1, codre2
108 integer pdecar, pdecfa
110 integer paretr, phettr, pnivtr
111 integer parequ, phetqu, pnivqu
112 integer phette, ptrite
113 integer phethe, pquahe, pcoquh
114 integer phetpe, pfacpe
118 character*8 nhnoeu, nhmapo, nharet, nhtria, nhquad
119 character*8 nhtetr, nhhexa, nhpyra, nhpent
121 character*8 nhvois, nhsupe, nhsups
125 parameter ( nbmess = 10 )
126 character*80 texte(nblang,nbmess)
128 c 0.5. ==> initialisations
129 c ______________________________________________________________________
137 c=======================================================================
138 if ( codava.eq.0 ) then
139 c=======================================================================
141 c 1.3. ==> les messages
145 #ifdef _DEBUG_HOMARD_
146 write (ulsort,texte(langue,1)) 'Entree', nompro
151 > '(/,a6,'' NOMBRE DE MISES EN CONFORMITE'')'
152 texte(1,5) = '(36(''=''),/)'
153 texte(1,6) = '(''Modification de taille des tableaux des '',a)'
154 texte(1,7) = '(5x,''==> code de retour :'',i8)'
157 > '(/,a6,'' NUMBER OF REQUESTED CONFORMITY OPERATIONS'')'
158 texte(2,5) = '(48(''=''),/)'
159 texte(2,6) = '(''Size modification of arrays for '',a)'
160 texte(2,7) = '(5x,''==> error code :'',i8)'
164 c 1.4. ==> le numero de sous-etape
167 nrsset = taetco(2) + 1
170 call utcvne ( nretap, nrsset, saux, iaux, codret )
174 write ( ulsort,texte(langue,4)) saux
175 write ( ulsort,texte(langue,5))
178 c 2. recuperation des pointeurs
181 if ( codret.eq.0 ) then
183 #ifdef _DEBUG_HOMARD_
184 write (ulsort,texte(langue,3)) 'UTNOMH', nompro
187 call utnomh ( nomail,
189 > degre, maconf, homolo, hierar,
190 > rafdef, nbmane, typcca, typsfr, maextr,
193 > nhnoeu, nhmapo, nharet,
195 > nhtetr, nhhexa, nhpyra, nhpent,
197 > nhvois, nhsupe, nhsups,
198 > ulsort, langue, codret)
202 if ( codret.eq.0 ) then
205 call gmadoj ( ntrav1, pdecar, iaux, codre1 )
207 call gmadoj ( ntrav1, pdecfa, iaux, codre2 )
209 codre0 = min ( codre1, codre2 )
210 codret = max ( abs(codre0), codret,
215 if ( codret.eq.0 ) then
217 #ifdef _DEBUG_HOMARD_
218 write (ulsort,texte(langue,3)) 'UTAD02_ar', nompro
221 call utad02 ( iaux, nharet,
222 > phetar, kaux , jaux , jaux ,
226 > ulsort, langue, codret )
228 if ( nbtrto.ne.0 ) then
230 #ifdef _DEBUG_HOMARD_
231 write (ulsort,texte(langue,3)) 'UTAD02_tr', nompro
234 call utad02 ( iaux, nhtria,
235 > phettr, paretr, jaux , jaux ,
237 > pnivtr, jaux, jaux,
239 > ulsort, langue, codret )
243 if ( nbquto.ne.0 ) then
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,texte(langue,3)) 'UTAD02_qu', nompro
249 call utad02 ( iaux, nhquad,
250 > phetqu, parequ, jaux , jaux ,
252 > pnivqu, jaux, jaux,
254 > ulsort, langue, codret )
258 if ( nbteto.ne.0 ) then
260 #ifdef _DEBUG_HOMARD_
261 write (ulsort,texte(langue,3)) 'UTAD02_te', nompro
264 call utad02 ( iaux, nhtetr,
265 > phette, ptrite, jaux , jaux,
269 > ulsort, langue, codret )
275 if ( nbheto.ne.0 ) then
277 #ifdef _DEBUG_HOMARD_
278 write (ulsort,texte(langue,3)) 'UTAD02_he', nompro
281 if ( taopti(30).ge.0 ) then
284 call utad02 ( iaux, nhhexa,
285 > phethe, pquahe, jaux , jaux,
287 > jaux, pcoquh, jaux,
289 > ulsort, langue, codret )
293 if ( nbpeto.ne.0 ) then
295 #ifdef _DEBUG_HOMARD_
296 write (ulsort,texte(langue,3)) 'UTAD02_pe', nompro
299 call utad02 ( iaux, nhpent,
300 > phetpe, pfacpe, jaux , jaux,
304 > ulsort, langue, codret )
309 c 3. decompte des nouvelles entites a creer
311 #ifdef _DEBUG_HOMARD_
312 write (ulsort,90002) '3. decompte ; codret', codret
315 if ( codret.eq.0 ) then
317 #ifdef _DEBUG_HOMARD_
318 write (ulsort,texte(langue,3)) 'UTPLCO', nompro
321 call utplco ( taopti(30),
322 > imem(pdecar), imem(pdecfa),
324 > imem(phettr), imem(paretr),
325 > imem(phetqu), imem(parequ),
326 > imem(phette), imem(ptrite),
327 > imem(phethe), imem(pquahe), imem(pcoquh),
328 > imem(phetpe), imem(pfacpe),
329 > ulsort, langue, codret )
337 if ( codret.ne.0 ) then
341 write (ulsort,texte(langue,1)) 'Sortie', nompro
342 write (ulsort,texte(langue,2)) codret
346 #ifdef _DEBUG_HOMARD_
347 write (ulsort,texte(langue,1)) 'Sortie', nompro
351 c=======================================================================
353 c=======================================================================