Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utnc14.F
1       subroutine utnc14 ( nbnocq, qureca, qurecb,
2      >                    nouqua, tabaux,
3      >                    arequa, hetqua,
4      >                    filqua, perqua,
5      >                    coexqu, nqusho, nqusca,
6      >                    quahex,
7      >                    ulsort, langue, codret )
8 c ______________________________________________________________________
9 c
10 c                             H O M A R D
11 c
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c
14 c Version originale enregistree le 18 juin 1996 sous le numero 96036
15 c aupres des huissiers de justice Simart et Lavoir a Clamart
16 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
17 c aupres des huissiers de justice
18 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c
20 c    HOMARD est une marque deposee d'Electricite de France
21 c
22 c Copyright EDF 1996
23 c Copyright EDF 1998
24 c Copyright EDF 2002
25 c Copyright EDF 2020
26 c ______________________________________________________________________
27 c
28 c    UTilitaire - Non Conformite - phase 14
29 c    --           -   -                  --
30 c ______________________________________________________________________
31 c .        .     .        .                                            .
32 c .  nom   . e/s . taille .           description                      .
33 c .____________________________________________________________________.
34 c . nbnocq . e   .    1   . nombre de non conformites de quadrangles   .
35 c . qureca . e   .4*nbnocq. liste des quad. recouvrant un autre        .
36 c . qurecb . e   .4*nbnocq. liste des quad. recouverts par un autre    .
37 c . nouqua . e   . nbquto . nouveau numero des quadrangles             .
38 c . tabaux . a   .   *    . tableau auxiliaire                         .
39 c . arequa . es  .nbquto*4. numeros des 4 aretes des quadrangles       .
40 c . hetqua . es  . nbquto . historique de l'etat des quadrangles       .
41 c . filqua . es  . nbquto . premier fils des quadrangles               .
42 c . perqua . es  . nbquto . pere des quadrangles                       .
43 c . coexqu . es  . nbquto*. codes de conditions aux limites portants   .
44 c .        .     . nctfqu . sur les quadrangles                        .
45 c . nqusho . es  . rsquac . numero des quadrangles dans HOMARD         .
46 c . nqusca . es  . rsquto . numero des quadrangles du calcul           .
47 c . quahex . es  .nbhecf*6. numeros des 6 quadrangles des hexaedres    .
48 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
49 c . langue . e   .    1   . langue des messages                        .
50 c .        .     .        . 1 : francais, 2 : anglais                  .
51 c . codret . es  .    1   . code de retour des modules                 .
52 c .        .     .        . 0 : pas de probleme                        .
53 c ______________________________________________________________________
54 c
55 c====
56 c 0. declarations et dimensionnement
57 c====
58 c
59 c 0.1. ==> generalites
60 c
61       implicit none
62       save
63 c
64       character*6 nompro
65       parameter ( nompro = 'UTNC14' )
66 c
67 #include "nblang.h"
68 c
69 c 0.2. ==> communs
70 c
71 #include "envex1.h"
72 c
73 #include "nombqu.h"
74 #include "nombhe.h"
75 #include "dicfen.h"
76 #include "nombsr.h"
77 c
78 c 0.3. ==> arguments
79 c
80       integer nbnocq
81       integer qureca(4*nbnocq), qurecb(4*nbnocq)
82       integer nouqua(0:nbquto)
83       integer tabaux(*)
84       integer hetqua(nbquto), arequa(nbquto,4)
85       integer filqua(nbquto), perqua(nbquto)
86       integer coexqu(nbquto,nctfqu)
87       integer nqusho(rsquac), nqusca(rsquto)
88       integer quahex(nbhecf,6)
89 c
90       integer ulsort, langue, codret
91 c
92 c 0.4. ==> variables locales
93 c
94       integer iaux, jaux, kaux
95       integer ifin
96 c
97       integer nbmess
98       parameter ( nbmess = 10 )
99       character*80 texte(nblang,nbmess)
100 c
101 c 0.5. ==> initialisations
102 c ______________________________________________________________________
103 c
104 c====
105 c 1. preliminaires
106 c====
107 c
108 c 1.1. ==> messages
109 c
110 #include "impr01.h"
111 c
112 #ifdef _DEBUG_HOMARD_
113       write (ulsort,texte(langue,1)) 'Entree', nompro
114       call dmflsh (iaux)
115
116 #endif
117 c
118       codret = 0
119 c
120 c====
121 c 2. Prise en compte du changement de numerotation des aretes
122 c    dans les tableaux de reperage des non conformites
123 c====
124 c
125       ifin = 4*nbnocq
126       do 21 , iaux = 1 , ifin
127 c
128         qureca(iaux) = nouqua(qureca(iaux))
129         qurecb(iaux) = nouqua(qurecb(iaux))
130 c
131    21 continue
132 c
133 c====
134 c 3. Renumerotation des caracteristiques liees aux quadrangles
135 c====
136 c 3.1. ==> Aretes
137 c
138       if ( codret.eq.0 ) then
139 c
140       iaux = 1
141       jaux = 4
142 #ifdef _DEBUG_HOMARD_
143       write (ulsort,texte(langue,3)) 'UTCHNU - arequa', nompro
144 #endif
145       call utchnu ( iaux, nbquto, nouqua,
146      >              nbquto, jaux, arequa,
147      >              tabaux,
148      >              ulsort, langue, codret )
149 c
150       endif
151 c
152 c 3.2. ==> Historiques de l'etat
153 c
154       if ( codret.eq.0 ) then
155 c
156       iaux = 1
157       jaux = 1
158 #ifdef _DEBUG_HOMARD_
159       write (ulsort,texte(langue,3)) 'UTCHNU - hetqua', nompro
160 #endif
161       call utchnu ( iaux, nbquto, nouqua,
162      >              jaux, nbquto, hetqua,
163      >              tabaux,
164      >              ulsort, langue, codret )
165 c
166       endif
167 c
168 c 3.3. ==> Code externe sur les conditions aux limites
169 c
170       if ( codret.eq.0 ) then
171 c
172       iaux = 1
173 #ifdef _DEBUG_HOMARD_
174       write (ulsort,texte(langue,3)) 'UTCHNU - coexqu', nompro
175 #endif
176       call utchnu ( iaux, nbquto, nouqua,
177      >              nbquto, nctfqu, coexqu,
178      >              tabaux,
179      >              ulsort, langue, codret )
180 c
181       endif
182 c
183 c 3.4. ==> Filiation
184 c
185       if ( codret.eq.0 ) then
186 c
187       do 341 , iaux = 1 , nbquto
188         filqua(iaux) = 0
189         perqua(iaux) = 0
190   341 continue
191 c
192       kaux = 4*nbnocq
193       do 342 , iaux = 1 , kaux
194         jaux = qureca(iaux)
195         if ( filqua(jaux).eq.0 ) then
196           filqua(jaux) = qurecb(iaux)
197           hetqua(jaux) = 4
198         else
199           filqua(jaux) = min(qurecb(iaux),filqua(jaux))
200         endif
201         perqua(qurecb(iaux)) = jaux
202   342 continue
203 c
204       endif
205 cgn        do jaux=1,nbquto
206 cgn        print *,filqua(jaux),perqua(jaux)
207 cgn        enddo
208 c
209 c 3.7. ==> Eventuelle renumerotation avec le code de calcul
210 c
211       if ( rsquac.gt.0 ) then
212 c
213         if ( codret.eq.0 ) then
214 c
215         iaux = 2
216         jaux = 1
217 #ifdef _DEBUG_HOMARD_
218         write (ulsort,texte(langue,3)) 'UTCHNU - nqusho', nompro
219 #endif
220         call utchnu ( iaux, nbquto, nouqua,
221      >                jaux, rsquac, nqusho,
222      >                tabaux,
223      >                ulsort, langue, codret )
224 c
225         endif
226 c
227       endif
228 c
229       if ( rsquto.gt.0 ) then
230 c
231         if ( codret.eq.0 ) then
232 c
233         iaux = 1
234         jaux = 1
235 #ifdef _DEBUG_HOMARD_
236         write (ulsort,texte(langue,3)) 'UTCHNU - nqusca', nompro
237 #endif
238         call utchnu ( iaux, nbquto, nouqua,
239      >                jaux, rsquto, nqusca,
240      >                tabaux,
241      >                ulsort, langue, codret )
242 c
243         endif
244 c
245       endif
246 c
247 c====
248 c 4. Renumerotation des quadrangles definissant les hexaedres
249 c====
250 c
251       if ( nbheto.gt.0 ) then
252 c
253         if ( codret.eq.0 ) then
254 c
255 #ifdef _DEBUG_HOMARD_
256         write (ulsort,texte(langue,3)) 'UTCHNU - quahex', nompro
257 #endif
258 cgn        iaux=437
259 cgn        write(ulsort,1000) iaux, (quahex(iaux,jaux),jaux=1,6)
260 cgn 1000 format(i10,' :',6i10)
261         iaux = 2
262         jaux = 6
263         call utchnu ( iaux, nbquto, nouqua,
264      >                nbheto, jaux, quahex,
265      >                tabaux,
266      >                ulsort, langue, codret )
267 c
268         endif
269 c
270       endif
271 c
272 c====
273 c 6. la fin
274 c====
275 c
276       if ( codret.ne.0 ) then
277 c
278 #include "envex2.h"
279 c
280       write (ulsort,texte(langue,1)) 'Sortie', nompro
281       write (ulsort,texte(langue,2)) codret
282 c
283       endif
284 c
285 #ifdef _DEBUG_HOMARD_
286       write (ulsort,texte(langue,1)) 'Sortie', nompro
287       call dmflsh (iaux)
288 #endif
289 c
290       end