31       character*8 lakon(*),lakonf(*)
    32       character*81 set(*),noset,tieset(3,*),slavset,mastset
    34       integer ne,ipkon(*),ipnei(*),ipoface(*),nodface(5,*),neifa(*),
    35      &  ielfa(4,*),nflnei,nface,i,j,k,index,indexe,neiel(*),ithree,
    36      &  nfaext,ifaext(*),isolidsurf(*),nsolidsurf,indexf,nneigh,
    37      &  nset,istartset(*),iendset(*),ialset(*),iaux,kflag,ifour,iel2,
    38      &  ifaceq(8,6),ifacet(7,4),ifacew(8,5),kon(*),
nodes(4),iel1,j2,
    39      &  indexold,ifree,ifreenew,ifreenei,mi(*),neij(*),ifreenei2,nef,
    40      &  nactdoh(*),ipkonf(*),ielmatf(mi(3),*),ielmat(mi(3),*),nf(5),
    41      &  nope,ielorien(mi(3),*),ielorienf(mi(3),*),norien,jopposite8(6),
    42      &  jopposite6(5),itie,nx(*),ny(*),nz(*),noden(1),nelemm,nelems,
    43      &  n,mcs,l,jfacem,jfaces,islav,imast,ifaces,ifacem,ifatie(*),
    44      &  nodeinface,nodeoutface,nopes,jop
    46       real*8 vel(nef,0:7),vold(0:mi(2),*),coords(3),cs(17,*),x(*),
    47      &  y(*),z(*),xo(*),yo(*),zo(*),co(3,*),a(3),b(3),xn(3),p(3),
    48      &  q(3),c(3,3),dot,dc,ds,dd,theta,pi
    52       data ifaceq /4,3,2,1,11,10,9,12,
    53      &            5,6,7,8,13,14,15,16,
    55      &            2,3,7,6,10,19,14,18,
    56      &            3,4,8,7,11,20,15,19,
    57      &            4,1,5,8,12,17,16,20/
    58       data ifacet /1,3,2,7,6,5,11,
    62       data ifacew /1,3,2,9,8,7,0,0,
    67       data jopposite6 /2,1,0,0,0/
    68       data jopposite8 /2,1,5,6,3,4/
    79          if(nactdoh(i).ne.0) 
then    80             ipkonf(nactdoh(i))=ipkon(i)
    81             lakonf(nactdoh(i))=lakon(i)
    83                ielmatf(j,nactdoh(i))=ielmat(j,i)
    84                if(norien.gt.0) ielorienf(j,nactdoh(i))=ielorien(j,i)
   114          if(lakonf(i)(4:4).eq.
'8') 
then   121                   nodes(k)=kon(indexe+ifaceq(k,j))
   125                index=ipoface(
nodes(1))
   132                      ifreenew=nodface(5,ifree)
   133                      nodface(1,ifree)=
nodes(2)
   134                      nodface(2,ifree)=
nodes(3)
   137                      nodface(5,ifree)=ipoface(
nodes(1))
   138                      ipoface(
nodes(1))=ifree
   140                      neifa(ifreenei)=ifree
   150                   if((nodface(1,index).eq.
nodes(2)).and.
   151      &               (nodface(2,index).eq.
nodes(3))) 
then   156                      neifa(ifreenei)=index
   172                      ifreenei2=ipnei(iel2)+j2
   178                   index=nodface(5,index)
   181          else if(lakonf(i)(4:4).eq.
'6') 
then   188                   nodes(k)=kon(indexe+ifacew(k,j))
   192                index=ipoface(
nodes(1))
   199                      ifreenew=nodface(5,ifree)
   200                      nodface(1,ifree)=
nodes(2)
   201                      nodface(2,ifree)=
nodes(3)
   204                      nodface(5,ifree)=ipoface(
nodes(1))
   205                      ipoface(
nodes(1))=ifree
   207                      neifa(ifreenei)=ifree
   217                   if((nodface(1,index).eq.
nodes(2)).and.
   218      &               (nodface(2,index).eq.
nodes(3))) 
then   223                      neifa(ifreenei)=index
   239                      ifreenei2=ipnei(iel2)+j2
   245                   index=nodface(5,index)
   255                   nodes(k)=kon(indexe+ifacet(k,j))
   259                index=ipoface(
nodes(1))
   266                      ifreenew=nodface(5,ifree)
   267                      nodface(1,ifree)=
nodes(2)
   268                      nodface(2,ifree)=
nodes(3)
   271                      nodface(5,ifree)=ipoface(
nodes(1))
   272                      ipoface(
nodes(1))=ifree
   274                      neifa(ifreenei)=ifree
   284                   if((nodface(1,index).eq.
nodes(2)).and.
   285      &               (nodface(2,index).eq.
nodes(3))) 
then   290                      neifa(ifreenei)=index
   306                      ifreenei2=ipnei(iel2)+j2
   312                   index=nodface(5,index)
   319       ipnei(nef+1)=ifreenei
   326          if((tieset(1,itie)(81:81).ne.
'P').and.
   327      &      (tieset(1,itie)(81:81).ne.
'Z')) cycle
   329          slavset=tieset(2,itie)
   330          mastset=tieset(3,itie)
   333             if(set(j).eq.slavset) 
exit   338             if(set(j).eq.mastset) 
exit   345          do j=istartset(imast),iendset(imast)
   348             nelemm=int(ifacem/10)
   349             jfacem=ifacem-nelemm*10
   353             nelemm=nactdoh(nelemm)
   355             indexe=ipkonf(nelemm)
   359             if(lakonf(nelemm)(4:4).eq.
'8') 
then   364                   nodes(k)=kon(indexe+ifaceq(k,jfacem))
   366                      coords(l)=coords(l)+co(l,
nodes(k))
   370                   coords(l)=coords(l)/4.d0
   372             elseif(lakonf(nelemm)(4:4).eq.
'6') 
then   377                   nodes(k)=kon(indexe+ifacew(k,jfacem))
   379                      coords(l)=coords(l)+co(l,
nodes(k))
   383                   coords(l)=coords(l)/nf(jfacem)
   390                   nodes(k)=kon(indexe+ifaceq(k,jfacem))
   392                      coords(l)=coords(l)+co(l,
nodes(k))
   396                   coords(l)=coords(l)/3.d0
   400             if(j.eq.istartset(imast)) 
then   401                if(tieset(1,itie)(81:81).eq.
'Z') 
then   405                   if(lakonf(nelemm)(4:4).eq.
'8') 
then   408                   elseif(lakonf(nelemm)(4:4).eq.
'6') 
then   426                      if((co(1,
nodes(k))-a(1))**2+
   427      &                  (co(2,
nodes(k))-a(2))**2+
   428      &                  (co(3,
nodes(k))-a(3))**2.gt.1.d-20) 
exit   436                      nodeoutface=kon(indexe+k)
   438                         if(
nodes(l).eq.nodeoutface) cycle loop
   445                   dd=dsqrt((b(1)-a(1))**2+
   456                      p(k)=co(k,nodeinface)-a(k)
   457                      q(k)=co(k,nodeoutface)-a(k)
   466                   dot=xn(1)*(p(2)*q(3)-q(2)*p(3))
   467      &               +xn(2)*(p(3)*q(1)-q(3)*p(1))
   468      &               +xn(3)*(p(1)*q(2)-q(1)*p(2))
   483                   theta=-2.d0*pi/cs(1,i)
   495                   c(1,1)=dc+(1.d0-dc)*xn(1)*xn(1)
   496                   c(1,2)=   (1.d0-dc)*xn(1)*xn(2)-ds*xn(3)
   497                   c(1,3)=   (1.d0-dc)*xn(1)*xn(3)+ds*xn(2)
   498                   c(2,1)=   (1.d0-dc)*xn(2)*xn(1)+ds*xn(3)
   499                   c(2,2)=dc+(1.d0-dc)*xn(2)*xn(2)
   500                   c(2,3)=   (1.d0-dc)*xn(2)*xn(3)-ds*xn(1)
   501                   c(3,1)=   (1.d0-dc)*xn(3)*xn(1)-ds*xn(2)
   502                   c(3,2)=   (1.d0-dc)*xn(3)*xn(2)+ds*xn(1)
   503                   c(3,3)=dc+(1.d0-dc)*xn(3)*xn(3)
   511             if(tieset(1,itie)(81:81).eq.
'P') 
then   512                x(n)=coords(1)-cs(6,i)
   513                y(n)=coords(2)-cs(7,i)
   514                z(n)=coords(3)-cs(8,i)
   522                dd=p(1)*xn(1)+p(2)*xn(2)+p(3)*xn(3)
   530                   q(k)=c(k,1)*p(1)+c(k,2)*p(2)+c(k,3)*p(3)
   535                x(n)=coords(1)+q(1)-p(1)
   536                y(n)=coords(2)+q(2)-p(2)
   537                z(n)=coords(3)+q(3)-p(3)
   552          call dsort(x,nx,n,kflag)
   553          call dsort(y,ny,n,kflag)
   554          call dsort(z,nz,n,kflag)
   558          do j=istartset(islav),iendset(islav)
   561             nelems=int(ifaces/10)
   562             jfaces=ifaces-nelems*10
   566             nelems=nactdoh(nelems)
   568             indexe=ipkonf(nelems)
   572             if(lakonf(nelems)(4:4).eq.
'8') 
then   577                   nodes(k)=kon(indexe+ifaceq(k,jfaces))
   579                      coords(l)=coords(l)+co(l,
nodes(k))
   583                   coords(l)=coords(l)/4.d0
   585             elseif(lakonf(nelems)(4:4).eq.
'6') 
then   590                   nodes(k)=kon(indexe+ifacew(k,jfaces))
   592                      coords(l)=coords(l)+co(l,
nodes(k))
   596                   coords(l)=coords(l)/nf(jfaces)
   603                   nodes(k)=kon(indexe+ifaceq(k,jfaces))
   605                      coords(l)=coords(l)+co(l,
nodes(k))
   609                   coords(l)=coords(l)/3.d0
   614             call near3d(xo,yo,zo,x,y,z,nx,ny,nz,coords(1),
   615      &           coords(2),coords(3),n,noden,nneigh)
   617             ifacem=ialset(istartset(imast)+noden(1)-1)
   619             nelemm=int(ifacem/10)
   620             jfacem=ifacem-nelemm*10
   624             nelemm=nactdoh(nelemm)
   626             ielfa(2,neifa(ipnei(nelems)+jfaces))=nelemm
   627             ielfa(2,neifa(ipnei(nelemm)+jfacem))=nelems
   629             neiel(ipnei(nelems)+jfaces)=nelemm
   630             neiel(ipnei(nelemm)+jfacem)=nelems
   632             neij(ipnei(nelems)+jfaces)=jfacem
   633             neij(ipnei(nelemm)+jfacem)=jfaces
   638             ifatie(neifa(ipnei(nelems)+jfaces))=i
   639             ifatie(neifa(ipnei(nelemm)+jfacem))=-i
   648          if(ielfa(2,i).ne.0) cycle
   653          if(lakonf(iel1)(4:4).eq.
'8') 
then   659          elseif(lakonf(iel1)(4:4).eq.
'6') 
then   670                if(neiel(indexf+jop).eq.0) 
then   673                   if(neiel(indexf+jop).eq.0) cycle
   681          ielfa(3,i)=neiel(indexf+j)
   700       noset(1:13)=
'SOLIDSURFACET'   702          if(set(i)(1:13).eq.noset(1:13)) 
exit   705          write(*,*) 
'*WARNING in precfd: facial surface SOLID SURFACE '   706          write(*,*) 
'         has not been defined.'   710          do j=istartset(i),iendset(i)
   711             nsolidsurf=nsolidsurf+1
   712             isolidsurf(nsolidsurf)=ialset(j)
   714          call isortii(isolidsurf,iaux,nsolidsurf,kflag)
   725          if(lakonf(i)(4:4).eq.
'8') 
then   727          elseif(lakonf(i)(4:4).eq.
'6') 
then   734                vel(i,j)=vel(i,j)+vold(j,kon(indexe+k))
   736             vel(i,j)=vel(i,j)/nope
 subroutine near3d(xo, yo, zo, x, y, z, nx, ny, nz, xp, yp, zp, n, neighbor, k)
Definition: near3d.f:20
 
subroutine isortii(ix, iy, n, kflag)
Definition: isortii.f:6
 
subroutine nodes(inpc, textpart, co, nk, nk_, set, istartset, iendset, ialset, nset, nset_, nalset, nalset_, istep, istat, n, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: nodes.f:22
 
subroutine dsort(dx, iy, n, kflag)
Definition: dsort.f:6