28 character*20 labmpc(*)
30 integer nface,ielfa(4,*),ifabou(*),i,iel1,iel2,nef,ibou,
31 & neifa(*),icyclic,ifa,indexf,l,m,ipnei(*),ifatie(*),
32 & is,ie,nmpc,ipompc(*),nodempc(3,*),ifaext(*),nfaext,nactdoh(*)
34 real*8 xrlfa(3,*),vel(nef,0:7),vfa(0:7,*),xbounact(*),xl1,xl2,
35 & vfap(0:7,nface),gradpel(3,*),gradpfa(3,*),rf(3),area(*),
36 & volume(*),xle(*),xxi(3,*),c(3,3),gradnor,xxn(3,*),coefmpc(*)
38 intent(in) nface,ielfa,xrlfa,vel,
39 & ifabou,xbounact,nef,neifa,rf,area,volume,
40 & xle,xxi,icyclic,xxn,ipnei,ifatie,
41 & coefmpc,nmpc,labmpc,ipompc,nodempc,ifaext,nfaext,nactdoh
43 intent(inout) vfa,gradpel,gradpfa
57 vfap(4,i)=xl1*vel(iel1,4)+xrlfa(2,i)*vel(iel2,4)
58 elseif(ielfa(3,i).ne.0)
then 64 if(ifabou(-iel2+4).gt.0)
then 73 vfap(4,i)=xbounact(ibou)
78 vfap(4,i)=xl1*vel(iel1,4)
79 & +xrlfa(3,i)*vel(abs(ielfa(3,i)),4)
96 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfap,coefmpc,
97 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
116 do indexf=ipnei(i)+1,ipnei(i+1)
119 gradpel(l,i)=gradpel(l,i)+
120 & vfap(4,ifa)*area(ifa)*xxn(l,indexf)
127 gradpel(l,i)=gradpel(l,i)/volume(i)
150 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 152 gradpfa(l,i)=xl1*gradpel(l,iel1)+
153 & xl2*gradpel(l,iel2)
155 elseif(ifatie(i).gt.0)
then 157 gradpfa(l,i)=xl1*gradpel(l,iel1)+xl2*
158 & (gradpel(1,iel2)*c(l,1)+
159 & gradpel(2,iel2)*c(l,2)+
160 & gradpel(3,iel2)*c(l,3))
164 gradpfa(l,i)=xl1*gradpel(l,iel1)+xl2*
165 & (gradpel(1,iel2)*c(1,l)+
166 & gradpel(2,iel2)*c(2,l)+
167 & gradpel(3,iel2)*c(3,l))
170 elseif(ielfa(3,i).ne.0)
then 175 gradpfa(l,i)=xl1*gradpel(l,iel1)+
176 & xrlfa(3,i)*gradpel(l,abs(ielfa(3,i)))
182 indexf=ipnei(iel1)+ielfa(4,i)
183 gradnor=gradpel(1,iel1)*xxi(1,indexf)+
184 & gradpel(2,iel1)*xxi(2,indexf)+
185 & gradpel(3,iel1)*xxi(3,indexf)
187 gradpfa(l,i)=gradpel(l,iel1)
188 & -gradnor*xxi(l,indexf)
214 vfa(4,i)=vfap(4,i)+gradpfa(1,i)*rf(1)
215 & +gradpfa(2,i)*rf(2)
216 & +gradpfa(3,i)*rf(3)
217 elseif(ielfa(3,i).ne.0)
then 223 if(ifabou(-iel2+4).gt.0)
then 237 vfa(4,i)=vfap(4,i)+gradpfa(1,i)*rf(1)
238 & +gradpfa(2,i)*rf(2)
239 & +gradpfa(3,i)*rf(3)
245 indexf=ipnei(iel1)+ielfa(4,i)
247 & +(gradpfa(1,i)*xxi(1,indexf)+
248 & gradpfa(2,i)*xxi(2,indexf)+
249 & gradpfa(3,i)*xxi(3,indexf))*xle(indexf)
260 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfa,coefmpc,
261 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
280 do indexf=ipnei(i)+1,ipnei(i+1)
283 gradpel(l,i)=gradpel(l,i)+
284 & vfa(4,ifa)*area(ifa)*xxn(l,indexf)
291 gradpel(l,i)=gradpel(l,i)/volume(i)
314 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 316 gradpfa(l,i)=xl1*gradpel(l,iel1)+
317 & xl2*gradpel(l,iel2)
319 elseif(ifatie(i).gt.0)
then 321 gradpfa(l,i)=xl1*gradpel(l,iel1)+xl2*
322 & (gradpel(1,iel2)*c(l,1)+
323 & gradpel(2,iel2)*c(l,2)+
324 & gradpel(3,iel2)*c(l,3))
328 gradpfa(l,i)=xl1*gradpel(l,iel1)+xl2*
329 & (gradpel(1,iel2)*c(1,l)+
330 & gradpel(2,iel2)*c(2,l)+
331 & gradpel(3,iel2)*c(3,l))
334 elseif(ielfa(3,i).ne.0)
then 339 gradpfa(l,i)=xl1*gradpel(l,iel1)+
340 & xrlfa(3,i)*gradpel(l,abs(ielfa(3,i)))
346 indexf=ipnei(iel1)+ielfa(4,i)
347 gradnor=gradpel(1,iel1)*xxi(1,indexf)+
348 & gradpel(2,iel1)*xxi(2,indexf)+
349 & gradpel(3,iel1)*xxi(3,indexf)
351 gradpfa(l,i)=gradpel(l,iel1)
352 & -gradnor*xxi(l,indexf)
subroutine applympc(nface, ielfa, is, ie, ifabou, ipompc, vfa, coefmpc, nodempc, ipnei, neifa, labmpc, xbounact, nactdoh, ifaext, nfaext)
Definition: applympc.f:21