1 subroutine vccfcf ( typdep, nctfde, nbfdem, nbfdep,
2 > typfin, nctffi, nbffim, nbffin, ncfffi,
9 > ulsort, langue, codret )
10 c ______________________________________________________________________
14 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
16 c Version originale enregistree le 18 juin 1996 sous le numero 96036
17 c aupres des huissiers de justice Simart et Lavoir a Clamart
18 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
19 c aupres des huissiers de justice
20 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
22 c HOMARD est une marque deposee d'Electricite de France
28 c ______________________________________________________________________
30 c aVant adaptation - Creation des Familles
32 c - gestion de la ConFormite
34 c ______________________________________________________________________
36 c . nom . e/s . taille . description .
37 c .____________________________________________________________________.
38 c . typdep . e . 1 . type de l'entite de depart .
39 c . nctfde . e . 1 . nombre de codes pour les familles de depart.
40 c . nbfdem . e . 1 . nombre de familles de depart au maximum .
41 c . nbfdep . e . 1 . nombre de familles de depart .
42 c . typfin . e . 1 . type de l'entite finale .
43 c . nctffi . e . 1 . nombre de codes pour les familles finales .
44 c . nbffim . e . 1 . nombre de familles finales au maximum .
45 c . nbffin . e . 1 . nombre de familles finales .
46 c . ncfffi . e . 1 . nombre fige de carac. de familles finales .
47 c . cofafd . e . 1 . code depart contenant la famille d'arrivee .
48 c . cfadep . e . nctfde*. codes des familles des depart .
49 c . . . nbfdep . 1 : famille MED .
51 c . . . . si quadrangle : .
52 c . . . . 3 : numero de surface de frontiere .
53 c . . . . 4 : famille des aretes internes apres raf.
54 c . . . . 5 : famille des triangles de conformite .
55 c . . . . 6 : famille de sf active/inactive .
56 c . . . . + l : appartenance a l'equivalence l .
57 c . . . . si hexaedre ou pentaedre : .
58 c . . . . 3 : famille des tetraedres de conformite .
59 c . . . . 4 : famille des pyramides de conformite .
60 c . cfafin . e . nctffi*. codes des familles finales .
61 c . . . nbffim . 1 : famille MED .
63 c . . . . si triangle : .
64 c . . . . 3 : numero de surface de frontiere .
65 c . . . . 4 : famille des aretes internes apres raf.
66 c . . . . + l : appartenance a l'equivalence l .
67 c . . . . si tetraedre ou pyramide : .
68 c . eddep1 . e . 1 . type med numero 1 au depart .
69 c . edfin1 . e . 1 . type med numero 1 au final .
70 c . eddep2 . e . 1 . type med numero 2 au depart .
71 c . edfin2 . e . 1 . type med numero 2 au final .
72 c . eddep3 . e . 1 . type med numero 3 au depart .
73 c . edfin3 . e . 1 . type med numero 3 au final .
74 c . tabaux . a . nctffi . tableau auxiliaire .
75 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
76 c . langue . e . 1 . langue des messages .
77 c . . . . 1 : francais, 2 : anglais .
78 c . codret . es . 1 . code de retour des modules .
79 c . . . . 0 : pas de probleme .
80 c . . . . 1 : probleme .
81 c ______________________________________________________________________
84 c 0. declarations et dimensionnement
87 c 0.1. ==> generalites
93 parameter ( nompro = 'VCCFCF' )
108 integer typdep, nctfde, nbfdem, nbfdep
109 integer typfin, nctffi, nbffim, nbffin, ncfffi
111 integer cfadep(nctfde,nbfdem)
112 integer cfafin(nctffi,nbffim)
113 integer eddep1, edfin1
114 integer eddep2, edfin2
115 integer eddep3, edfin3
116 integer tabaux(nctffi)
118 integer ulsort, langue, codret
120 c 0.4. ==> variables locales
123 integer nufdep, nucode
126 parameter ( nbmess = 10 )
127 character*80 texte(nblang,nbmess)
129 c 0.5. ==> initialisations
130 c ______________________________________________________________________
138 #ifdef _DEBUG_HOMARD_
139 write (ulsort,texte(langue,1)) 'Entree', nompro
143 texte(1,4) = '(a14,'' : nombre de familles :'',i8)'
144 texte(1,5) = '(''. Creation de la famille '',i8,/)'
145 texte(1,6) = '(''Ce nombre est superieur au maximum :'',i8)'
146 texte(1,7) = '(''Modifier les programmes UTINCG et/ou VCCFAM'')'
148 texte(2,4) = '(a14,'' : number of families :'',i8)'
149 texte(2,5) = '(''. Creation of family '',i8,/)'
150 texte(2,6) = '(''This number is greater than maximum:'',i8)'
151 texte(2,7) = '(''Modify the programs UTINCG and/or VCCFAM'')'
157 #ifdef _DEBUG_HOMARD_
158 write (ulsort,texte(langue,4)) mess14(langue,4,typdep), nbfdep
159 write (ulsort,texte(langue,4)) mess14(langue,4,typfin), nbffin
163 c 2. La famille libre de depart est liee a la famille libre d'arrivee
169 c 3. Creation des familles finales a partir de celles de depart
172 cgn write (ulsort,90002)'cofamd, cotyel',cofamd,cotyel
173 cgn write (ulsort,90002)'nctfde',nctfde
174 cgn write (ulsort,90002)'ncfffi, nctffi',ncfffi,nctffi
175 cgn write (ulsort,90002)'nbffin initial',nbffin
176 cgn write (ulsort,1788)
177 cgn do 3333 , iaux = 1,nbffin
178 cgn write (ulsort,90012)'famille ',iaux,
179 cgn >(cfafin(nucode,iaux),nucode=1,nctffi)
181 cgn 1788 format(' MED type surf ar.su')
183 cgn write (ulsort,90002)'... eddep1, edfin1', eddep1, edfin1
184 cgn write (ulsort,90002)'... eddep2, edfin2', eddep2, edfin2
185 cgn write (ulsort,90002)'... eddep3, edfin3', eddep3, edfin3
186 do 30 , nufdep = 2 , nbfdep
188 cgn write (ulsort,*) ' '
189 cgn write (ulsort,1788)
190 cgn write (ulsort,90012)'famille ',nufdep,
191 cgn >(cfadep(nucode,nufdep),nucode=1,nctfde)
193 c 3.1. ==> Etablissement des futurs codes dans tabaux
194 c 3.1.1. ==> La famille MED doit etre la meme
196 tabaux(cofamd) = cfadep(cofamd,nufdep)
198 c 3.1.2. ==> definition du type d'element
200 cgn write (ulsort,90002)'typel depart', cfadep(cotyel,nufdep)
201 if ( cfadep(cotyel,nufdep).eq.eddep1 ) then
202 tabaux(cotyel) = edfin1
203 elseif ( cfadep(cotyel,nufdep).eq.eddep2 ) then
204 tabaux(cotyel) = edfin2
205 elseif ( cfadep(cotyel,nufdep).eq.eddep3 ) then
206 tabaux(cotyel) = edfin3
210 cgn write (ulsort,90002)'typel arrivee', tabaux(cotyel)
212 c 3.1.3. ==> Surfaces frontieres
214 cgn write (ulsort,90002)'... cosfsu depart', cfadep(cosfsu,nufdep)
215 cgn write (ulsort,90002)'... cofafa depart', cfadep(cofafa,nufdep)
216 if ( typdep.eq.4 ) then
217 tabaux(cosfsu) = cfadep(cosfsu,nufdep)
218 tabaux(cofafa) = cfadep(cofafa,nufdep)
221 c 3.1.4. ==> Les groupes et equivalences doivent etre les memes
222 c le decalage est de 2 (cf. UTINCG/UTECF0)
224 do 314, nucode = ncfffi+1, nctffi
225 tabaux(nucode) = cfadep(nucode+2,nufdep)
228 cgn write (ulsort,1788)
229 cgn write (ulsort,90012)'tabaux a',315,
230 cgn > (tabaux(nucode),nucode=1,nctffi)
232 c 3.2. ==> Existe-t-il une famille finale avec ces caracteristiques ?
233 c Dans les nbffin familles deja definies, recherche d'une
234 c dont les codes sont les memes.
235 c Si on l'a, on note son numero (jaux) et on continue (33).
236 c Si aucune ne correspond, on en cree une nouvelle.
238 do 32 , iaux = 1 , nbffin
239 cgn write (ulsort,90002)'. Famille', iaux
240 do 321 , nucode = 1, nctffi
241 cgn write (ulsort,90012)'.. code',nucode,
242 cgn > cfafin(nucode,iaux),tabaux(nucode)
243 if ( cfafin(nucode,iaux).ne.tabaux(nucode) ) then
248 cgn write (ulsort,90002)'ok Famille ', iaux
253 cgn write (ulsort,*)'Creation de la famille ', nbffin
255 #ifdef _DEBUG_HOMARD_
256 write (ulsort,texte(langue,5)) nbffin
258 do 322, nucode = 1, nctffi
259 cfafin(nucode,nbffin) = tabaux(nucode)
262 cgn write (ulsort,1788)
263 cgn do 3221 , iaux = 1,nbffin
264 cgn write (ulsort,90012)'famille ',iaux,
265 cgn > (cfafin(nucode,iaux),nucode=1,nctffi)
268 c 3.3. ==> memorisation du type de famille finale
272 cgn write (ulsort,*)'Stockage de ', jaux,
273 cgn > ' dans la famille de depart',nufdep
274 cfadep(cofafd,nufdep) = jaux
282 #ifdef _DEBUG_HOMARD_
283 write (ulsort,texte(langue,4)) mess14(langue,4,typfin), nbffin
286 if ( nbffin.gt.nbffim ) then
287 write (ulsort,texte(langue,4)) mess14(langue,4,typfin), nbffin
288 write (ulsort,texte(langue,6)) nbffim
289 write (ulsort,texte(langue,7))
297 if ( codret.ne.0 ) then
301 write (ulsort,texte(langue,1)) 'Sortie', nompro
302 write (ulsort,texte(langue,2)) codret
306 #ifdef _DEBUG_HOMARD_
307 write (ulsort,texte(langue,1)) 'Sortie', nompro