29 character*20 labmpc(*)
31 integer nface,ielfa(4,*),ifabou(*),iel1,iel2,iel3,i,j,ipointer,
32 & indexf,ipnei(*),nef,icyclic,ifatie(*),k,l,m,ifa,neifa(*),
33 & is,ie,nmpc,ipompc(*),nodempc(3,*),ifaext(*),nfaext,nactdoh(*)
35 real*8 xrlfa(3,*),vel(nef,0:7),vfa(0:7,*),xbounact(*),xl1,xl2,
36 & c(3,3),xxn(3,*),dd,vfap(0:7,nface),gradvel(3,3,*),
38 & rf(3),area(*),volume(*),xle(*),xxi(3,*),gradnor,xxj(3,*),
41 intent(in) nface,ielfa,xrlfa,vel,
42 & ifabou,xbounact,ipnei,nef,icyclic,c,ifatie,xxn,
43 & neifa,rf,area,volume,xle,xxi,xxj,xlet,
44 & coefmpc,nmpc,labmpc,ipompc,nodempc,ifaext,nfaext,nactdoh
46 intent(inout) vfa,gradvel,gradvfa
64 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 66 vfap(j,i)=xl1*vel(iel1,j)+xl2*vel(iel2,j)
68 elseif(ifatie(i).gt.0)
then 70 vfap(j,i)=xl1*vel(iel1,j)+xl2*
73 & +c(j,3)*vel(iel2,3))
77 vfap(j,i)=xl1*vel(iel1,j)+xl2*
80 & +c(3,j)*vel(iel2,3))
83 elseif(ielfa(3,i).gt.0)
then 92 if(ifabou(ipointer+1).gt.0)
then 96 vfap(1,i)=xbounact(ifabou(ipointer+1))
101 vfap(1,i)=xl1*vel(iel1,1)+xrlfa(3,i)*vel(iel3,1)
106 if(ifabou(ipointer+2).gt.0)
then 110 vfap(2,i)=xbounact(ifabou(ipointer+2))
115 vfap(2,i)=xl1*vel(iel1,2)+xrlfa(3,i)*vel(iel3,2)
120 if(ifabou(ipointer+3).gt.0)
then 124 vfap(3,i)=xbounact(ifabou(ipointer+3))
129 vfap(3,i)=xl1*vel(iel1,3)+xrlfa(3,i)*vel(iel3,3)
134 if(ifabou(ipointer+5).lt.0)
then 135 indexf=ipnei(iel1)+ielfa(4,i)
136 dd=vfap(1,i)*xxn(1,indexf)+
137 & vfap(2,i)*xxn(2,indexf)+
138 & vfap(3,i)*xxn(3,indexf)
140 vfap(j,i)=vfap(j,i)-dd*xxn(j,indexf)
149 vfap(j,i)=vel(iel1,j)
161 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfap,coefmpc,
162 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
183 do indexf=ipnei(i)+1,ipnei(i+1)
187 gradvel(k,l,i)=gradvel(k,l,i)+
188 & vfap(k,ifa)*area(ifa)*xxn(l,indexf)
197 gradvel(k,l,i)=gradvel(k,l,i)/volume(i)
221 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 224 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+
225 & xl2*gradvel(k,l,iel2)
228 elseif(ifatie(i).gt.0)
then 231 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+xl2*
232 & (c(k,1)*gradvel(1,1,iel2)*c(l,1)+
233 & c(k,1)*gradvel(1,2,iel2)*c(l,2)+
234 & c(k,1)*gradvel(1,3,iel2)*c(l,3)+
235 & c(k,2)*gradvel(2,1,iel2)*c(l,1)+
236 & c(k,2)*gradvel(2,2,iel2)*c(l,2)+
237 & c(k,2)*gradvel(2,3,iel2)*c(l,3)+
238 & c(k,3)*gradvel(3,1,iel2)*c(l,1)+
239 & c(k,3)*gradvel(3,2,iel2)*c(l,2)+
240 & c(k,3)*gradvel(3,3,iel2)*c(l,3))
246 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+xl2*
247 & (c(1,k)*gradvel(1,1,iel2)*c(1,l)+
248 & c(1,k)*gradvel(1,2,iel2)*c(2,l)+
249 & c(1,k)*gradvel(1,3,iel2)*c(3,l)+
250 & c(2,k)*gradvel(2,1,iel2)*c(1,l)+
251 & c(2,k)*gradvel(2,2,iel2)*c(2,l)+
252 & c(2,k)*gradvel(2,3,iel2)*c(3,l)+
253 & c(3,k)*gradvel(3,1,iel2)*c(1,l)+
254 & c(3,k)*gradvel(3,2,iel2)*c(2,l)+
255 & c(3,k)*gradvel(3,3,iel2)*c(3,l))
259 elseif(ielfa(3,i).gt.0)
then 265 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+
266 & xrlfa(3,i)*gradvel(k,l,ielfa(3,i))
273 indexf=ipnei(iel1)+ielfa(4,i)
275 gradnor=gradvel(k,1,iel1)*xxi(1,indexf)
276 & +gradvel(k,2,iel1)*xxi(2,indexf)
277 & +gradvel(k,3,iel1)*xxi(3,indexf)
279 gradvfa(k,l,i)=gradvel(k,l,iel1)
280 & -gradnor*xxi(l,indexf)
307 vfa(j,i)=vfap(j,i)+gradvfa(j,1,i)*rf(1)+
308 & gradvfa(j,2,i)*rf(2)+
309 & gradvfa(j,3,i)*rf(3)
311 elseif(ielfa(3,i).gt.0)
then 319 if(ifabou(ipointer+1).gt.0)
then 322 vfa(1,i)=vfap(1,i)+gradvfa(1,1,i)*rf(1)+
323 & gradvfa(1,2,i)*rf(2)+
324 & gradvfa(1,3,i)*rf(3)
329 if(ifabou(ipointer+2).gt.0)
then 332 vfa(2,i)=vfap(2,i)+gradvfa(2,1,i)*rf(1)+
333 & gradvfa(2,2,i)*rf(2)+
334 & gradvfa(2,3,i)*rf(3)
339 if(ifabou(ipointer+3).gt.0)
then 342 vfa(3,i)=vfap(3,i)+gradvfa(3,1,i)*rf(1)+
343 & gradvfa(3,2,i)*rf(2)+
344 & gradvfa(3,3,i)*rf(3)
349 if(ifabou(ipointer+5).lt.0)
then 350 indexf=ipnei(iel1)+ielfa(4,i)
351 dd=vfa(1,i)*xxn(1,indexf)+
352 & vfa(2,i)*xxn(2,indexf)+
353 & vfa(3,i)*xxn(3,indexf)
355 vfa(j,i)=vfa(j,i)-dd*xxn(j,indexf)
362 indexf=ipnei(iel1)+ielfa(4,i)
364 vfa(j,i)=vel(iel1,j)+
365 & (gradvfa(j,1,i)*xxi(1,indexf)+
366 & gradvfa(j,2,i)*xxi(2,indexf)+
367 & gradvfa(j,3,i)*xxi(3,indexf))*xle(indexf)
379 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfa,coefmpc,
380 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
401 do indexf=ipnei(i)+1,ipnei(i+1)
405 gradvel(k,l,i)=gradvel(k,l,i)+
406 & vfa(k,ifa)*area(ifa)*xxn(l,indexf)
415 gradvel(k,l,i)=gradvel(k,l,i)/volume(i)
439 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 442 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+
443 & xl2*gradvel(k,l,iel2)
446 elseif(ifatie(i).gt.0)
then 449 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+xl2*
450 & (c(k,1)*gradvel(1,1,iel2)*c(l,1)+
451 & c(k,1)*gradvel(1,2,iel2)*c(l,2)+
452 & c(k,1)*gradvel(1,3,iel2)*c(l,3)+
453 & c(k,2)*gradvel(2,1,iel2)*c(l,1)+
454 & c(k,2)*gradvel(2,2,iel2)*c(l,2)+
455 & c(k,2)*gradvel(2,3,iel2)*c(l,3)+
456 & c(k,3)*gradvel(3,1,iel2)*c(l,1)+
457 & c(k,3)*gradvel(3,2,iel2)*c(l,2)+
458 & c(k,3)*gradvel(3,3,iel2)*c(l,3))
464 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+xl2*
465 & (c(1,k)*gradvel(1,1,iel2)*c(1,l)+
466 & c(1,k)*gradvel(1,2,iel2)*c(2,l)+
467 & c(1,k)*gradvel(1,3,iel2)*c(3,l)+
468 & c(2,k)*gradvel(2,1,iel2)*c(1,l)+
469 & c(2,k)*gradvel(2,2,iel2)*c(2,l)+
470 & c(2,k)*gradvel(2,3,iel2)*c(3,l)+
471 & c(3,k)*gradvel(3,1,iel2)*c(1,l)+
472 & c(3,k)*gradvel(3,2,iel2)*c(2,l)+
473 & c(3,k)*gradvel(3,3,iel2)*c(3,l))
477 elseif(ielfa(3,i).gt.0)
then 483 gradvfa(k,l,i)=xl1*gradvel(k,l,iel1)+
484 & xrlfa(3,i)*gradvel(k,l,ielfa(3,i))
491 indexf=ipnei(iel1)+ielfa(4,i)
493 gradnor=gradvel(k,1,iel1)*xxi(1,indexf)
494 & +gradvel(k,2,iel1)*xxi(2,indexf)
495 & +gradvel(k,3,iel1)*xxi(3,indexf)
497 gradvfa(k,l,i)=gradvel(k,l,iel1)
498 & -gradnor*xxi(l,indexf)
518 indexf=ipnei(iel1)+ielfa(4,i)
520 dd=(vel(iel2,l)-vel(iel1,l))/xlet(indexf)
521 & -gradvfa(l,1,i)*xxj(1,indexf)
522 & -gradvfa(l,2,i)*xxj(2,indexf)
523 & -gradvfa(l,3,i)*xxj(3,indexf)
525 gradvfa(l,k,i)=gradvfa(l,k,i)+dd*xxj(k,indexf)
subroutine applympc(nface, ielfa, is, ie, ifabou, ipompc, vfa, coefmpc, nodempc, ipnei, neifa, labmpc, xbounact, nactdoh, ifaext, nfaext)
Definition: applympc.f:21