1 subroutine pcs2p2 ( nbfop2, profho, vap2ho,
6 c ______________________________________________________________________
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c HOMARD est une marque deposee d'Electricite de France
24 c ______________________________________________________________________
26 c aPres adaptation - Conversion de Solution -
28 c interpolation p2 sur les noeuds - decoupage des Pentaedres - 2
30 c Du centre aux milieux d'aretes
31 c remarque : pcs2p2 et pcsip2 sont des clones
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . nbfop2 . e . 1 . nombre de fonctions P2 .
37 c . profho . es . * . pour chaque entite en numerotation homard :.
38 c . . . . 0 : l'entite est absente du profil .
39 c . . . . 1 : l'entite est presente dans le profil .
40 c . vap2ho . es . nbfop2*. variables p2 numerotation homard .
42 c . np2are . e . nbarto . numero des noeuds p2 milieux d'aretes .
43 c . etapen . e . 1 . etat du pentaedre a traiter .
44 c . listso . e . 6 . Liste des sommets ordonnes du pentaedre .
45 c . listno . e . 9 . Liste des noeuds ordonnees du pentaedre .
46 c . nbarco . e . 1 . nombre d'aretes concernees .
47 c . nuaret . e . nbarco . numero des aretes a traiter .
48 c ______________________________________________________________________
51 c 0. declarations et dimensionnement
54 c 0.1. ==> generalites
74 integer np2are(nbarto)
76 integer listso(6), listno(9)
77 integer nbarco, nuaret(nbarco)
79 double precision vap2ho(nbfop2,*)
81 c 0.4. ==> variables locales
90 c ______________________________________________________________________
94 cgn write(1,90002) 'listso', (listso(iaux),iaux=1,6)
95 cgn write(1,90002) 'listno', (listno(iaux),iaux=1,9)
98 c Reperage des aretes entre noeud central et noeud d'une arete coupee
99 c . Quand une face triangulaire est coupee, etat 51/52, on doit
100 c regarder sucessivement les 3 aretes internes depuis les milieux
101 c des aretes de cette face.
102 c Les aretes transmises en argument sont dans l'ordre :
103 c . etat 51 : N1, N2, N3
104 c . etat 52 : N4, N6, N5
105 c . Quand 2 aretes sont coupees, etat 31-36, on doit regarder
106 c sucessivement les 2 aretes depuis chacun des milieux.
107 c Les aretes renvoyees par utaipe pointent d'abord sur le noeud
108 c de la face F1, puis celui de la face F2
110 c Consequence pour la boucle 10 :
111 c Cas !! Etat ! iaux !! Etat ! iaux !! Etat ! iaux
112 c N1-M !! 51 ! 1 !! 31 ! 1 !! 34 ! 1
113 c N2-M !! 51 ! 2 !! 32 ! 1 !! 35 ! 1
114 c N3-M !! 51 ! 3 !! 33 ! 1 !! 36 ! 1
115 c N4-M !! 52 ! 1 !! 33 ! 2 !! 35 ! 2
116 c N5-M !! 52 ! 3 !! 31 ! 2 !! 36 ! 2
117 c N6-M !! 52 ! 2 !! 32 ! 2 !! 34 ! 2
120 cgn write(1,90002) 'Aretes', (nuaret(iaux),iaux=1,nbarco)
122 do 10 , iaux = 1 , nbarco
125 c 2. Reperage du noeud milieu a relier
128 if ( etapen.eq.31 ) then
129 if ( iaux.eq.1 ) then
134 elseif ( etapen.eq.32 ) then
135 if ( iaux.eq.1 ) then
140 elseif ( etapen.eq.33 ) then
141 if ( iaux.eq.1 ) then
146 elseif ( etapen.eq.34 ) then
147 if ( iaux.eq.1 ) then
152 elseif ( etapen.eq.35 ) then
153 if ( iaux.eq.1 ) then
158 elseif ( etapen.eq.36 ) then
159 if ( iaux.eq.1 ) then
164 elseif ( etapen.eq.51 ) then
167 if ( iaux.eq.1 ) then
169 elseif ( iaux.eq.2 ) then
176 listns(7) = listno(nulono)
177 cgn write(1,90002) 'noeud de l''arete coupee', listns(7)
181 c 1, 2 : les sommets de l'arete coupee
182 c 3 : le 3eme sommet de la face
183 c 4, 5, 6 : les sommets semblables sur la face opposee
186 if ( nulono.eq.1 ) then
193 elseif ( nulono.eq.2 ) then
200 elseif ( nulono.eq.3 ) then
207 elseif ( nulono.eq.4 ) then
214 elseif ( nulono.eq.5 ) then
230 listns(1) = listso(iaux1(1))
231 listns(2) = listso(iaux1(3))
232 listns(3) = listso(iaux1(2))
233 listns(4) = listso(iaux1(4))
234 listns(5) = listso(iaux1(6))
235 listns(6) = listso(iaux1(5))
236 cgn write(1,90002) 'listns 1-6', (listns(jaux),jaux=1,6)
239 c 4. Les noeuds des faces triangulaires
240 c 8, 9 : les deux autres noeuds sur la face de l'arete coupee
241 c 10 : le noeud semblable sur la face opposee
242 c 11, 12 : les deux autres noeuds sur la face opposee
245 if ( nulono.eq.1 ) then
251 elseif ( nulono.eq.2 ) then
257 elseif ( nulono.eq.3 ) then
263 elseif ( nulono.eq.4 ) then
269 elseif ( nulono.eq.5 ) then
283 listns( 8) = listno(iaux1(1))
284 listns( 9) = listno(iaux1(2))
285 listns(10) = listno(iaux1(3))
286 listns(11) = listno(iaux1(4))
287 listns(12) = listno(iaux1(5))
288 cgn write(1,90002) 'listns 8-12', (listns(jaux),jaux=8,12)
291 c 5. Les noeuds des faces quadrangulaires
292 c 13, 14 : les noeuds du cote de l'arete coupee
293 c 15 : le dernier noeud
296 if ( nulono.eq.1 .or. nulono.eq.4 ) then
300 elseif ( nulono.eq.2 .or. nulono.eq.5 ) then
310 listns(13) = listno(iaux1(1))
311 listns(14) = listno(iaux1(2))
312 listns(15) = listno(iaux1(3))
313 cgn write(1,90002) 'listns 13-15', (listns(jaux),jaux=13,15)
319 sm = np2are(nuaret(iaux))
320 cgn write(1,90002) 'sm',sm
324 do 61 , nuv = 1, nbfop2
326 cgn write(1,*) 'vap2ho=',(vap2ho(nuv,listns(jaux)),jaux=1,15)
327 vap2ho(nuv,sm) = cqs24 * ( vap2ho(nuv,listns(8))
328 > + vap2ho(nuv,listns(9))
329 > - vap2ho(nuv,listns(1))
330 > - vap2ho(nuv,listns(2)) )
331 > - sts48 * vap2ho(nuv,listns(3))
332 > + vc144 * ( vap2ho(nuv,listns(10))
333 > - vap2ho(nuv,listns(4))
334 > - vap2ho(nuv,listns(5)) )
335 > - tz144 * vap2ho(nuv,listns(6))
336 > + vcs48 * vap2ho(nuv,listns(7))
337 > + cqs72 * ( vap2ho(nuv,listns(11))
338 > + vap2ho(nuv,listns(12)) )
339 > + cqssz * ( vap2ho(nuv,listns(13))
340 > + vap2ho(nuv,listns(14)) )
341 > + unshu * vap2ho(nuv,listns(15))
342 cgn write(1,*) 'vap2ho(nuv,',sm,') =',vap2ho(nuv,sm)