29 character*20 labmpc(*)
31 integer nface,ielfa(4,*),ifabou(*),i,iel1,iel2,nef,
32 & neifa(*),icyclic,ifa,indexf,k,l,m,ipnei(*),ifatie(*),ipointer,
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 & vfap(0:7,nface),gradkel(3,*),gradkfa(3,*),rf(3),area(*),
37 & volume(*),xle(*),xxi(3,*),c(3,3),gradnor,xxn(3,*),umfa(*),
38 & xxj(3,*),dd,xlet(*),coefmpc(*),constant,
41 intent(in) nface,ielfa,xrlfa,umfa,physcon,
42 & ifabou,xbounact,nef,neifa,rf,area,volume,
43 & xle,xxi,icyclic,xxn,ipnei,ifatie,xlet,xxj,
44 & coefmpc,nmpc,labmpc,ipompc,nodempc,ifaext,nfaext,nactdoh
46 intent(inout) vfa,gradkel,gradkfa,vel
50 constant=1.7393d-3*physcon(5)/(physcon(7)*physcon(8))
65 vfap(6,i)=xl1*vel(iel1,6)+xrlfa(2,i)*vel(iel2,6)
66 elseif(ielfa(3,i).gt.0)
then 77 if(ifabou(ipointer+5).gt.0)
then 82 elseif(((ifabou(ipointer+1).gt.0).and.
83 & (ifabou(ipointer+2).gt.0).and.
84 & (ifabou(ipointer+3).gt.0)).or.
85 & (ifabou(ipointer+5).lt.0))
then 92 vfap(6,i)=constant*umfa(i)
97 vfap(6,i)=xl1*vel(iel1,6)+xrlfa(3,i)*vel(ielfa(3,i),6)
103 vfap(6,i)=vel(iel1,6)
114 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfap,coefmpc,
115 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
134 do indexf=ipnei(i)+1,ipnei(i+1)
137 gradkel(l,i)=gradkel(l,i)+
138 & vfap(6,ifa)*area(ifa)*xxn(l,indexf)
145 gradkel(l,i)=gradkel(l,i)/volume(i)
168 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 170 gradkfa(l,i)=xl1*gradkel(l,iel1)+
171 & xl2*gradkel(l,iel2)
173 elseif(ifatie(i).gt.0)
then 175 gradkfa(l,i)=xl1*gradkel(l,iel1)+xl2*
176 & (gradkel(1,iel2)*c(l,1)+
177 & gradkel(2,iel2)*c(l,2)+
178 & gradkel(3,iel2)*c(l,3))
182 gradkfa(l,i)=xl1*gradkel(l,iel1)+xl2*
183 & (gradkel(1,iel2)*c(1,l)+
184 & gradkel(2,iel2)*c(2,l)+
185 & gradkel(3,iel2)*c(3,l))
188 elseif(ielfa(3,i).gt.0)
then 198 gradkfa(l,i)=xl1*gradkel(l,iel1)+
199 & xrlfa(3,i)*gradkel(l,abs(ielfa(3,i)))
205 indexf=ipnei(iel1)+ielfa(4,i)
206 gradnor=gradkel(1,iel1)*xxi(1,indexf)+
207 & gradkel(2,iel1)*xxi(2,indexf)+
208 & gradkel(3,iel1)*xxi(3,indexf)
210 gradkfa(l,i)=gradkel(l,iel1)
211 & -gradnor*xxi(l,indexf)
237 vfa(6,i)=vfap(6,i)+gradkfa(1,i)*rf(1)
238 & +gradkfa(2,i)*rf(2)
239 & +gradkfa(3,i)*rf(3)
240 elseif(ielfa(3,i).gt.0)
then 246 if(ifabou(ipointer+5).gt.0)
then 251 elseif(((ifabou(ipointer+1).gt.0).and.
252 & (ifabou(ipointer+2).gt.0).and.
253 & (ifabou(ipointer+3).gt.0)).or.
254 & (ifabou(ipointer+5).lt.0))
then 263 vfa(6,i)=vfap(6,i)+gradkfa(1,i)*rf(1)+
264 & gradkfa(2,i)*rf(2)+
271 indexf=ipnei(iel1)+ielfa(4,i)
273 & +(gradkfa(1,i)*xxi(1,indexf)+
274 & gradkfa(2,i)*xxi(2,indexf)+
275 & gradkfa(3,i)*xxi(3,indexf))*xle(indexf)
286 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfa,coefmpc,
287 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
306 do indexf=ipnei(i)+1,ipnei(i+1)
309 gradkel(l,i)=gradkel(l,i)+
310 & vfa(6,ifa)*area(ifa)*xxn(l,indexf)
317 gradkel(l,i)=gradkel(l,i)/volume(i)
340 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 342 gradkfa(l,i)=xl1*gradkel(l,iel1)+
343 & xl2*gradkel(l,iel2)
345 elseif(ifatie(i).gt.0)
then 347 gradkfa(l,i)=xl1*gradkel(l,iel1)+xl2*
348 & (gradkel(1,iel2)*c(l,1)+
349 & gradkel(2,iel2)*c(l,2)+
350 & gradkel(3,iel2)*c(l,3))
354 gradkfa(l,i)=xl1*gradkel(l,iel1)+xl2*
355 & (gradkel(1,iel2)*c(1,l)+
356 & gradkel(2,iel2)*c(2,l)+
357 & gradkel(3,iel2)*c(3,l))
360 elseif(ielfa(3,i).gt.0)
then 365 gradkfa(l,i)=xl1*gradkel(l,iel1)+
366 & xrlfa(3,i)*gradkel(l,abs(ielfa(3,i)))
372 indexf=ipnei(iel1)+ielfa(4,i)
373 gradnor=gradkel(1,iel1)*xxi(1,indexf)+
374 & gradkel(2,iel1)*xxi(2,indexf)+
375 & gradkel(3,iel1)*xxi(3,indexf)
377 gradkfa(l,i)=gradkel(l,iel1)
378 & -gradnor*xxi(l,indexf)
398 indexf=ipnei(iel1)+ielfa(4,i)
399 dd=(vel(iel2,6)-vel(iel1,6))/xlet(indexf)
400 & -gradkfa(1,i)*xxj(1,indexf)
401 & -gradkfa(2,i)*xxj(2,indexf)
402 & -gradkfa(3,i)*xxj(3,indexf)
404 gradkfa(k,i)=gradkfa(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