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),gradoel(3,*),gradofa(3,*),rf(3),area(*),
37 & volume(*),xle(*),xxi(3,*),c(3,3),gradnor,xxn(3,*),umfa(*),
38 & xxj(3,*),dd,xlet(*),coefmpc(*),cinf,physcon(*),dy(*)
40 intent(in) nface,ielfa,xrlfa,vel,umfa,physcon,
41 & ifabou,xbounact,nef,neifa,rf,area,volume,
42 & xle,xxi,icyclic,xxn,ipnei,ifatie,xlet,xxj,
43 & coefmpc,nmpc,labmpc,ipompc,nodempc,ifaext,nfaext,nactdoh
45 intent(inout) vfa,gradoel,gradofa
49 cinf=5.5d0*physcon(5)/physcon(8)
64 vfap(7,i)=xl1*vel(iel1,7)+xrlfa(2,i)*vel(iel2,7)
65 elseif(ielfa(3,i).gt.0)
then 76 if(ifabou(ipointer+5).gt.0)
then 80 vfap(7,i)=dy(ifabou(ipointer+5))*umfa(i)/vfa(5,i)
81 elseif(((ifabou(ipointer+1).gt.0).and.
82 & (ifabou(ipointer+2).gt.0).and.
83 & (ifabou(ipointer+3).gt.0)).or.
84 & (ifabou(ipointer+5).lt.0))
then 88 vfap(7,i)=cinf*umfa(i)
93 vfap(7,i)=xl1*vel(iel1,7)+xrlfa(3,i)*vel(ielfa(3,i),7)
110 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfap,coefmpc,
111 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
130 do indexf=ipnei(i)+1,ipnei(i+1)
133 gradoel(l,i)=gradoel(l,i)+
134 & vfap(7,ifa)*area(ifa)*xxn(l,indexf)
141 gradoel(l,i)=gradoel(l,i)/volume(i)
164 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 166 gradofa(l,i)=xl1*gradoel(l,iel1)+
167 & xl2*gradoel(l,iel2)
169 elseif(ifatie(i).gt.0)
then 171 gradofa(l,i)=xl1*gradoel(l,iel1)+xl2*
172 & (gradoel(1,iel2)*c(l,1)+
173 & gradoel(2,iel2)*c(l,2)+
174 & gradoel(3,iel2)*c(l,3))
178 gradofa(l,i)=xl1*gradoel(l,iel1)+xl2*
179 & (gradoel(1,iel2)*c(1,l)+
180 & gradoel(2,iel2)*c(2,l)+
181 & gradoel(3,iel2)*c(3,l))
184 elseif(ielfa(3,i).gt.0)
then 194 gradofa(l,i)=xl1*gradoel(l,iel1)+
195 & xrlfa(3,i)*gradoel(l,abs(ielfa(3,i)))
201 indexf=ipnei(iel1)+ielfa(4,i)
202 gradnor=gradoel(1,iel1)*xxi(1,indexf)+
203 & gradoel(2,iel1)*xxi(2,indexf)+
204 & gradoel(3,iel1)*xxi(3,indexf)
206 gradofa(l,i)=gradoel(l,iel1)
207 & -gradnor*xxi(l,indexf)
233 vfa(7,i)=vfap(7,i)+gradofa(1,i)*rf(1)
234 & +gradofa(2,i)*rf(2)
235 & +gradofa(3,i)*rf(3)
236 elseif(ielfa(3,i).gt.0)
then 242 if(ifabou(ipointer+5).gt.0)
then 247 elseif(((ifabou(ipointer+1).gt.0).and.
248 & (ifabou(ipointer+2).gt.0).and.
249 & (ifabou(ipointer+3).gt.0)).or.
250 & (ifabou(ipointer+5).lt.0))
then 259 vfa(7,i)=vfap(7,i)+gradofa(1,i)*rf(1)+
260 & gradofa(2,i)*rf(2)+
267 indexf=ipnei(iel1)+ielfa(4,i)
269 & +(gradofa(1,i)*xxi(1,indexf)+
270 & gradofa(2,i)*xxi(2,indexf)+
271 & gradofa(3,i)*xxi(3,indexf))*xle(indexf)
282 call applympc(nface,ielfa,is,ie,ifabou,ipompc,vfa,coefmpc,
283 & nodempc,ipnei,neifa,labmpc,xbounact,nactdoh,
302 do indexf=ipnei(i)+1,ipnei(i+1)
305 gradoel(l,i)=gradoel(l,i)+
306 & vfa(7,ifa)*area(ifa)*xxn(l,indexf)
313 gradoel(l,i)=gradoel(l,i)/volume(i)
336 if((icyclic.eq.0).or.(ifatie(i).eq.0))
then 338 gradofa(l,i)=xl1*gradoel(l,iel1)+
339 & xl2*gradoel(l,iel2)
341 elseif(ifatie(i).gt.0)
then 343 gradofa(l,i)=xl1*gradoel(l,iel1)+xl2*
344 & (gradoel(1,iel2)*c(l,1)+
345 & gradoel(2,iel2)*c(l,2)+
346 & gradoel(3,iel2)*c(l,3))
350 gradofa(l,i)=xl1*gradoel(l,iel1)+xl2*
351 & (gradoel(1,iel2)*c(1,l)+
352 & gradoel(2,iel2)*c(2,l)+
353 & gradoel(3,iel2)*c(3,l))
356 elseif(ielfa(3,i).gt.0)
then 361 gradofa(l,i)=xl1*gradoel(l,iel1)+
362 & xrlfa(3,i)*gradoel(l,abs(ielfa(3,i)))
368 indexf=ipnei(iel1)+ielfa(4,i)
369 gradnor=gradoel(1,iel1)*xxi(1,indexf)+
370 & gradoel(2,iel1)*xxi(2,indexf)+
371 & gradoel(3,iel1)*xxi(3,indexf)
373 gradofa(l,i)=gradoel(l,iel1)
374 & -gradnor*xxi(l,indexf)
394 indexf=ipnei(iel1)+ielfa(4,i)
395 dd=(vel(iel2,7)-vel(iel1,7))/xlet(indexf)
396 & -gradofa(1,i)*xxj(1,indexf)
397 & -gradofa(2,i)*xxj(2,indexf)
398 & -gradofa(3,i)*xxj(3,indexf)
400 gradofa(k,i)=gradofa(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