1 subroutine pcseh8 ( etanp1, hehnp1, typint,
4 > nfpyrp, nftetp, ficp, propor,
6 > nbfonc, vafoen, vafott,
11 > ulsort, langue, codret )
12 c ______________________________________________________________________
16 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
18 c Version originale enregistree le 18 juin 1996 sous le numero 96036
19 c aupres des huissiers de justice Simart et Lavoir a Clamart
20 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
21 c aupres des huissiers de justice
22 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
24 c HOMARD est une marque deposee d'Electricite de France
30 c ______________________________________________________________________
32 c aPres adaptation - Conversion de Solution Elements de volume -
34 c Hexaedres d'etat anterieur 80
36 c remarque : pcseh8 et pcsep8 sont des clones
37 c ______________________________________________________________________
39 c . nom . e/s . taille . description .
40 c .____________________________________________________________________.
41 c . etanp1 . e . 1 . ETAt du hexaedre a l'iteration N+1 .
42 c . hehnp1 . e . 1 . Hexaedre courant en numerotation Homard .
43 c . . . . a l'iteration N+1 .
44 c . typint . e . 1 . type d'interpolation .
45 c . . . . 0, si automatique .
46 c . . . . elements : 0 si intensif, sans orientation.
47 c . . . . 1 si extensif, sans orientation.
48 c . . . . 2 si intensif, avec orientation.
49 c . . . . 3 si extensif, avec orientation.
50 c . . . . noeuds : 1 si degre 1 .
51 c . . . . 2 si degre 2 .
52 c . . . . 3 si iso-P2 .
53 c . prfcan . e . * . En numero du calcul a l'iteration n : .
54 c . . . . 0 : l'entite est absente du profil .
55 c . . . . i : l'entite est au rang i dans le profil .
56 c . prfcap . es . * . En numero du calcul a l'iteration n+1 : .
57 c . . . . 0 : l'entite est absente du profil .
58 c . . . . 1 : l'entite est presente dans le profil .
59 c . ficn . e . 3,18 . fils en numerotation du calcul n .
60 c . . . . 1 : hexaedres .
61 c . . . . 2 : pyramides .
62 c . . . . 3 : tetraedres .
63 c . nfpyrp . e . 1 . nombre de fils pyramides n+1 .
64 c . nftetp . e . 1 . nombre de fils tetraedres n+1 .
65 c . ficp . e . 3,18 . fils en numerotation du calcul n+1 .
66 c . . . . 1 : hexaedres .
67 c . . . . 2 : pyramides .
68 c . . . . 3 : tetraedres .
69 c . nhesca . e . rsheto . numero des hexaedres dans le calcul sortie .
70 c . nbfonc . e . 1 . nombre de fonctions elements de volume .
71 c . vafoen . e . nbfonc*. variables en entree de l'adaptation .
73 c . vafott . es . nbfonc*. variables en sortie de l'adaptation .
75 c . vatett . a . nbfonc*. tableau temporaire de la solution pour .
76 c . . . * . les tetraedres .
77 c . prftep . es . * . En numero du calcul a l'iteration n+1 : .
78 c . . . . 0 : le tetraedre est absent du profil .
79 c . . . . 1 : le tetraedre est present dans le profil.
80 c . vapytt . a . nbfonc*. tableau temporaire de la solution pour .
81 c . . . * . les pyramides .
82 c . prfpyp . es . * . En numero du calcul a l'iteration n+1 : .
83 c . . . . 0 : la pyramide est absente du profil .
84 c . . . . 1 : la pyramide est presente dans le profil
85 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
86 c . langue . e . 1 . langue des messages .
87 c . . . . 1 : francais, 2 : anglais .
88 c . codret . es . 1 . code de retour des modules .
89 c . . . . 0 : pas de probleme .
90 c . . . . 1 : probleme .
91 c ______________________________________________________________________
94 c 0. declarations et dimensionnement
97 c 0.1. ==> generalites
103 parameter ( nompro = 'PCSEH8' )
114 integer etanp1, hehnp1
117 integer prfcan(*), prfcap(*)
120 integer nfpyrp, nftetp
123 integer nhesca(rsheto)
127 double precision propor(18)
128 double precision vafoen(nbfonc,*)
129 double precision vafott(nbfonc,*)
130 double precision vatett(nbfonc,*)
131 double precision vapytt(nbfonc,*)
133 integer ulsort, langue, codret
135 c 0.4. ==> variables locales
143 double precision daux
146 parameter ( nbmess = 10 )
147 character*80 texte(nblang,nbmess)
149 c 0.5. ==> initialisations
150 c ______________________________________________________________________
158 #ifdef _DEBUG_HOMARD_
159 write (ulsort,texte(langue,1)) 'Entree', nompro
167 c 2. seulement si des valeurs existent
173 if ( prfcan(ficn(1,iaux)).eq.0 ) then
181 c 3. L'hexaedre etait coupe en 8 hexaedres
183 c 3.1. ==> etanp1 = 0 : l'hexaedre est reactive.
184 c on lui attribue la valeur moyenne sur les huit anciens fils.
185 c remarque : cela arrive seulement avec du deraffinement.
188 cgn write(ulsort,90002) 'etanp1', etanp1
189 if ( etanp1.eq.0 ) then
191 hecnp1 = nhesca(hehnp1)
194 if ( typint.eq.0 ) then
196 do 310 , nrofon = 1, nbfonc
199 do 3101 , iaux = 1 , 8
200 daux = daux + vafoen(nrofon,prfcan(ficn(1,iaux)))
203 vafott(nrofon,hecnp1) = daux * unshu
209 do 311 , nrofon = 1, nbfonc
212 do 3111 , iaux = 1 , 8
213 daux = daux + vafoen(nrofon,prfcan(ficn(1,iaux)))
216 vafott(nrofon,hecnp1) = daux
222 c 3.2. ==> un decoupage de conformite
224 elseif ( etanp1.ge.11 ) then
226 if ( typint.eq.0 ) then
228 do 320 , nrofon = 1, nbfonc
231 do 3201 , iaux = 1 , 8
232 daux = daux + vafoen(nrofon,prfcan(ficn(1,iaux)))
236 do 3203 , iaux = 1 , nfpyrp
237 vapytt(nrofon,ficp(2,iaux)) = daux
239 do 3204 , iaux = 1 , nftetp
240 vatett(nrofon,ficp(3,iaux)) = daux
247 do 321 , nrofon = 1, nbfonc
250 do 3211 , iaux = 1 , 8
251 daux = daux + vafoen(nrofon,prfcan(ficn(1,iaux)))
254 do 3213 , iaux = 1 , nfpyrp
255 vapytt(nrofon,ficp(2,iaux)) = daux * propor(iaux)
257 do 3214 , iaux = 1 , nftetp
258 vatett(nrofon,ficp(3,iaux)) = daux * propor(iaux+nfpyrp)
268 c 4. affectation des profils
271 if ( codret.eq.0 ) then
273 do 42 , iaux = 1 , nfpyrp
274 prfpyp(ficp(2,iaux)) = 1
277 do 43 , iaux = 1 , nftetp
278 prftep(ficp(3,iaux)) = 1
289 if ( codret.ne.0 ) then
291 write (ulsort,texte(langue,1)) 'Sortie', nompro
292 write (ulsort,texte(langue,2)) codret
296 #ifdef _DEBUG_HOMARD_
297 write (ulsort,texte(langue,1)) 'Sortie', nompro