1 subroutine pcs1qu ( nbfop1, profho,
3 > hetqua, arequa, filqua,
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c aPres adaptation - Conversion de Solution -
27 c interpolation p1 sur les noeuds lors du decoupage des QUadrangles
29 c remarque : on devrait optimiser cela car si le quadrangle etait dans
30 c un etat de decoupage avec presence de noeud central, on
31 c recalcule une valeur qui est deja presente
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . nbfop1 . e . 1 . nombre de fonctions P1 .
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 . somare . e .2*nbarto. numeros des extremites d'arete .
41 c . hetqua . e . nbquto . historique de l'etat des quadrangles .
42 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
43 c . filqua . e . nbquto . premier fils des quadrangles .
44 c . vap1ho . es . nbfop1*. variables p1 numerotation homard .
46 c ______________________________________________________________________
49 c 0. declarations et dimensionnement
52 c 0.1. ==> generalites
68 integer profho(nbnoto)
69 integer somare(2,nbarto)
70 integer hetqua(nbquto), arequa(nbquto,4), filqua(nbquto)
72 double precision vap1ho(nbfop1,*)
74 c 0.4. ==> variables locales
77 integer a1, a2, a3, a4
78 integer sa1a2, sa2a3, sa3a4, sa4a1
82 cgn double precision TTT(2)
84 cgn parameter ( lglist = 15)
85 cgn integer listno(lglist)
86 c ______________________________________________________________________
89 c 1. interpolation p1 pour les quadrangles qui viennent d'etre decoupes
90 c on a une valeur a mettre sur le noeud central. Ce noeud est
91 c au barycentre des 4 sommets du quadrangle pere. Donc on prend la
92 c moyenne de la fonction sur ces 4 noeuds.
94 cgn listno( 1) = 16358
95 cgn listno( 2) = 14604
96 cgn listno( 3) = 16395
97 cgn listno( 4) = 17054
98 cgn listno( 5) = 16394
99 cgn listno( 6) = 17072
100 cgn listno( 7) = 22390
101 cgn listno( 8) = 22395
102 cgn listno( 9) = 22414
103 cgn listno(10) = 22393
104 cgn listno(11) = 22418
105 cgn listno(12) = 22415
106 cgn listno(13) = 22417
107 cgn listno(14) = 25003
108 cgn listno(15) = 25006
111 cgn print *,'Avant passage dans PCS1QU'
112 cgn do 888 , nuv=1,13
114 cgn print 1786,sm,vap1ho(nbfop1,sm)
115 cgn ttt(1)=min(ttt(1),vap1ho(nbfop1,sm))
116 cgn ttt(2)=max(ttt(2),vap1ho(nbfop1,sm))
118 cgn print *,'minimum sur les 13 noeuds ',ttt(1)
119 cgn print *,'maximum sur les 13 noeuds ',ttt(2)
121 if ( nbfop1.ne.0 ) then
123 do 10 , lequad = 1, nbquto
125 cgn if ( lequad.eq.17127 .or. lequad.eq.17198 ) then
126 cgn print 1789,lequad,hetqua(lequad)
127 cgn print 1788,arequa(lequad,1),arequa(lequad,2),
128 cgn >arequa(lequad,3),arequa(lequad,4)
130 cgn 1789 format('Quadrangle ',i6,' ==> etat = ',i3)
131 cgn 1788 format('Arete 1 : ',i6,' ; Arete 2 : ',i6,
132 cgn > ,' ; Arete 3 : ',i6,' ; Arete 4 : ',i6)
133 cgn 1787 format('Sommet milieu : ',i6)
134 cgn 1786 format('Valeur sur le sommet ',i6,' : ',g14.5)
136 iaux = mod(hetqua(lequad),100)
137 if ( iaux.eq.4 .or. ( iaux.ge.41 .and. iaux.le.44 ) ) then
139 c les aretes et les sommets du quadrangle
141 a1 = arequa(lequad,1)
142 a2 = arequa(lequad,2)
143 a3 = arequa(lequad,3)
144 a4 = arequa(lequad,4)
146 call utsoqu ( somare, a1, a2, a3, a4,
147 > sa1a2, sa2a3, sa3a4, sa4a1 )
149 c tous les noeuds doivent etre dans le profil
151 if ( profho(sa1a2).eq.1 .and. profho(sa2a3).eq.1 .and.
152 > profho(sa3a4).eq.1 .and. profho(sa4a1).eq.1 ) then
154 c recherche du noeud central
157 call utnmqu ( iaux, sm,
158 > somare, arequa, filqua )
160 c le noeud central est a ajouter dans le profil
164 cgn if ( lequad.eq.17127 .or. lequad.eq.17198 ) then
166 cgn print 1786,sa1a2,vap1ho(nbfop1,sa1a2)
167 cgn print 1786,sa2a3,vap1ho(nbfop1,sa2a3)
168 cgn print 1786,sa3a4,vap1ho(nbfop1,sa3a4)
169 cgn print 1786,sa4a1,vap1ho(nbfop1,sa4a1)
172 c interpolation = 1/4 (u1+u2+u3+u4)
174 do 101 , nuv = 1, nbfop1
176 vap1ho(nuv,sm) = unsqu * ( vap1ho(nuv,sa1a2)
177 > + vap1ho(nuv,sa2a3)
178 > + vap1ho(nuv,sa3a4)
179 > + vap1ho(nuv,sa4a1) )
189 cgn print 1786,25003,vap1ho(nbfop1,25003)
190 cgn print 1786,25006,vap1ho(nbfop1,25006)
193 cgn print *,'Apres passage dans PCS1QU'
194 cgn do 889 , nuv=1,15
196 cgn print 1786,sm,vap1ho(nbfop1,sm)
197 cgn ttt(1)=min(ttt(1),vap1ho(nbfop1,sm))
198 cgn ttt(2)=max(ttt(2),vap1ho(nbfop1,sm))
200 cgn print *,'minimum sur les 15 noeuds ',ttt(1)
201 cgn print *,'maximum sur les 15 noeuds ',ttt(2)