1 subroutine pcsipe ( nbfop2, profho, vap2ho,
2 > hetpen, facpen, cofape, filpen, fppyte,
7 > ulsort, langue, codret )
8 c ______________________________________________________________________
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
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
20 c HOMARD est une marque deposee d'Electricite de France
26 c ______________________________________________________________________
28 c aPres adaptation - Conversion de Solution -
30 c interpolation iso/p2 sur les noeuds - decoupage des PEntaedres
32 c remarque : on devrait optimiser cela car si le pentaedre etait dans
33 c un etat de decoupage similaire, on recalcule une valeur
34 c qui est deja presente
35 c remarque : pcsipe et pcsipe sont des clones
36 c ______________________________________________________________________
38 c . nom . e/s . taille . description .
39 c .____________________________________________________________________.
40 c . nbfop2 . e . 1 . nombre de fonctions P2 .
41 c . profho . es . * . pour chaque entite en numerotation homard :.
42 c . . . . 0 : l'entite est absente du profil .
43 c . . . . 1 : l'entite est presente dans le profil .
44 c . vap2ho . es . nbfop2*. variables p1 numerotation homard .
46 c . hetpen . e . nbpeto . historique de l'etat des pentaedres .
47 c . facpen . e .nbpecf*5. numeros des faces des pentaedres .
48 c . cofape . e .nbpecf*5. codes des faces des pentaedres .
49 c . filpen . e . nbpeto . premier fils des pentaedres .
50 c . fppyte . e .2*nbpeco. fppyte(1,j) = numero de la 1ere pyramide .
51 c . . . . fille du pentaedre k tel que filpen(k) =-j .
52 c . . . . fppyte(2,j) = numero du 1er tetraedre .
53 c . . . . fils du pentaedre k tel que filpen(k) = -j .
54 c . somare . e .2*nbarto. numeros des extremites d'arete .
55 c . np2are . e . nbarto . numero des noeuds p2 milieux d'aretes .
56 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
57 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
58 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
59 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
60 c . cofapy . e .nbpycf*5. codes des 5 faces des pyramides .
61 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
62 c . langue . e . 1 . langue des messages .
63 c . . . . 1 : francais, 2 : anglais .
64 c . codret . es . 1 . code de retour des modules .
65 c . . . . 0 : pas de probleme .
66 c . . . . 1 : probleme .
67 c ______________________________________________________________________
70 c 0. declarations et dimensionnement
73 c 0.1. ==> generalites
79 parameter ( nompro = 'PCSIPE' )
98 integer hetpen(nbpeto), facpen(nbpecf,5), cofape(nbpecf,5)
99 integer filpen(nbpeto), fppyte(2,nbpeco)
100 integer somare(2,nbarto), np2are(nbarto)
101 integer aretri(nbtrto,3)
102 integer arequa(nbquto,4)
103 integer tritet(nbtecf,4), cotrte(nbtecf,4)
104 integer facpyr(nbpycf,5), cofapy(nbpycf,5)
106 double precision vap2ho(nbfop2,*)
108 integer ulsort, langue, codret
110 c 0.4. ==> variables locales
114 integer typdec, etanp1
116 integer listar(9), listno(15)
122 double precision daux
125 parameter ( nbmess = 10 )
126 character*80 texte(nblang,nbmess)
127 c ______________________________________________________________________
137 #ifdef _DEBUG_HOMARD_
138 write (ulsort,texte(langue,1)) 'Entree', nompro
146 do 100 , jaux = 1, nbpeto
151 c 2. recherche des types d'interpolations a faire
154 if ( codret.eq.0 ) then
156 #ifdef _DEBUG_HOMARD_
157 write(ulsort,texte(langue,3)) 'PCS0PE', nompro
159 call pcs0pe ( lepent, profho,
160 > hetpen, facpen, cofape, filpen, fppyte,
165 > afaire, listar, listno, typdec, etanp1, sm )
166 cgn write(ulsort,90002) 'typdec',typdec
173 c 3. L'eventuel noeud central
174 c decoupage selon 2 aretes tria/tria
175 c decoupage selon 1 face traingulaire
178 if ( codret.eq.0 ) then
180 if ( mod(typdec,2).eq.0 ) then
185 c interpolation = moyenne des valeurs sur les noeuds au milieu
186 c des aretes du pentaedre
188 do 31 , nuv = 1, nbfop2
191 do 311 , iaux = 9 , 15
192 daux = daux + vap2ho(nuv,listno(iaux))
194 vap2ho(nuv,sm) = unssix * daux
195 cgn write(ulsort,*) 'vap2ho(nuv,',sm,') =',vap2ho(nuv,sm)
204 c 4. Recuperation des aretes internes
207 if ( codret.eq.0 ) then
211 c 4.1. ==> Du centre aux milieux d'aretes
212 c (selon 2 aretes tri ou 1 face tri)
214 if ( mod(typdec,5).eq.0 ) then
218 c 4.2. ==> Du centre aux sommets
219 c (selon 2 aretes tri ou 1 face tri)
221 if ( mod(typdec,7).eq.0 ) then
225 c 4.3. ==> Entre les milieux de faces
226 c D'un milieu d'arete a un autre
227 c D'un milieu d'arete a un sommet
228 c D'un milieu de face a un sommet
230 if ( mod(typdec,3).eq.0 .or.
231 > mod(typdec,11).eq.0 .or.
232 > mod(typdec,13).eq.0 .or.
233 > mod(typdec,17).eq.0 ) then
237 c 4.4. ==> Les aretes
239 #ifdef _DEBUG_HOMARD_
240 write(ulsort,texte(langue,3)) 'UTAIPE', nompro
242 call utaipe ( lepent, iaux,
243 > hetpen, facpen, filpen, fppyte,
247 > ulsort, langue, codret )
255 if ( codret.eq.0 ) then
256 cgn write(ulsort,90002) 'Aretes', (nuaret(iaux),iaux=1,nbarco)
258 #ifdef _DEBUG_HOMARD_
259 write(ulsort,texte(langue,3)) 'PCSI00', nompro
261 call pcsi00 ( nbfop2, profho, vap2ho,
275 if ( codret.ne.0 ) then
279 write (ulsort,texte(langue,1)) 'Sortie', nompro
280 write (ulsort,texte(langue,2)) codret
284 #ifdef _DEBUG_HOMARD_
285 write (ulsort,texte(langue,1)) 'Sortie', nompro