38       character*81 tieset(3,*),slavset,mastset,set(*)
    42       integer ntie,i,j,k,l,nset,istartset(*),iendset(*),ialset(*),
    43      &  ifaces,nelems,jfaces,ifacem,nelemm,nslavs,nmasts,jface,
    44      &  jfacem,indexe,nopes,nopem,ipkon(*),kon(*),id,nodef(9),
    45      &  ifaceq(8,6),ifacet(6,4),ifacew1(4,5),ifacew2(8,5),node,
    46      &  itiefac(2,*),islavsurf(2,*),islavnode(*),imastnode(*),
    47      &  nslavnode(ntie+1),nmastnode(ntie+1),ifacecount,islav,imast,
    48      &  ipos,index1,iponoels(*),inoels(2,*),ifreenoels,ifreenoelold,
    49      &  mortar,numbern,numberf,iface,kflag,nk,ipoface(*),
    50      &  nodface(5,*),nface,nelem,nope
    63       data ifaceq /4,3,2,1,11,10,9,12,
    64      &            5,6,7,8,13,14,15,16,
    66      &            2,3,7,6,10,19,14,18,
    67      &            3,4,8,7,11,20,15,19,
    68      &            4,1,5,8,12,17,16,20/
    72       data ifacet /1,3,2,7,6,5,
    79       data ifacew1 /1,3,2,0,
    87       data ifacew2 /1,3,2,9,8,7,0,0,
   105          if((tieset(1,i)(81:81).eq.
'C').or.
   106      &      (tieset(1,i)(81:81).eq.
'-')) 
then   111             ipos=index(slavset,
' ')-1
   116             if(slavset(ipos:ipos).eq.
'S') 
then   123                if(set(j).eq.slavset) 
exit   127                   if((set(j)(1:ipos-1).eq.slavset(1:ipos-1)).and.
   128      &                 (set(j)(ipos:ipos).eq.
'T')) 
then   137             if((mortar.eq.0).and.(nodeslavsurf)) 
then   145                do j=istartset(islav),iendset(islav)
   146                   if(ialset(j).gt.0) 
then   148                      call nident(islavnode(nslavs+1),k,numbern,id)
   150                         if(islavnode(nslavs+id).eq.k) cycle
   154                         islavnode(nslavs+l)=islavnode(nslavs+l-1)
   156                      islavnode(nslavs+id+1)=k
   161                         if(k.ge.ialset(j-1)) 
exit   162                         call nident(islavnode(nslavs+1),k,numbern,id)
   164                            if(islavnode(nslavs+id).eq.k) cycle
   168                            islavnode(nslavs+l)=islavnode(nslavs+l-1)
   170                         islavnode(nslavs+id+1)=k
   173                   nslavnode(i+1)=nslavnode(i)+numbern
   183                itiefac(1,i)=ifacecount+1
   190                      iface=nodface(4,index1)
   195                            node=nodface(k,index1)
   200                         call nident(islavnode(nslavs+1),node,numbern,
   203                            if(islavnode(nslavs+id).eq.node) 
then   204                               call nident2(islavsurf(1,ifacecount+1),
   209                                  if(islavsurf(1,ifacecount+id).eq.iface)
   212                                     ipos=islavsurf(2,ifacecount+id)
   220                                  do l=ifacecount+numberf,ifacecount+id+2
   222                                     islavsurf(1,l)=islavsurf(1,l-1)
   223                                     islavsurf(2,l)=islavsurf(2,l-1)
   225                                  islavsurf(1,ifacecount+id+1)=iface
   226                                  islavsurf(2,ifacecount+id+1)=numberf
   234                               ifreenoelold=iponoels(node)
   235                               ifreenoels=ifreenoels+1
   236                               iponoels(node)=ifreenoels
   237                               inoels(1,ifreenoels)=ifacecount+ipos
   243                               nelem=int(iface/10.d0)
   247                               if(lakon(nelem)(4:4).eq.
'2') 
then   250                               elseif(lakon(nelem)(4:4).eq.
'8') 
then   253                               elseif(lakon(nelem)(4:5).eq.
'10') 
then   256                               elseif(lakon(nelem)(4:4).eq.
'4') 
then   259                               elseif(lakon(nelem)(4:5).eq.
'15') 
then   267                               elseif(lakon(nelem)(4:4).eq.
'6') 
then   283                                     nodef(l)=kon(indexe+ifacet(l,jface))
   284                                     if(nodef(l).eq.node) 
then   286                                           xnoels(ifreenoels)=1.d0/3.d0
   293                                           xnoels(ifreenoels)=1.d0/999.d0
   300                               elseif(nface.eq.5) 
then   304      &                                    kon(indexe+ifacew1(l,jface))
   305                                        if(nodef(l).eq.node) 
then   307                                             xnoels(ifreenoels)=1.d0/3.d0
   309                                             xnoels(ifreenoels)=1.d0/4.d0
   313                                  elseif(nope.eq.15) 
then   316      &                                    kon(indexe+ifacew2(l,jface))
   317                                        if(nodef(l).eq.node) 
then   342                               elseif(nface.eq.6) 
then   344                                     nodef(l)=kon(indexe+ifaceq(l,jface))
   345                                     if(nodef(l).eq.node) 
then   347                                           xnoels(ifreenoels)=1.d0/4.d0
   353                                           xnoels(ifreenoels)=1.d0/100.d0
   363                               inoels(2,ifreenoels)=ifreenoelold
   367                      index1=nodface(5,index1)
   376                call isorti(islavsurf(1,ifacecount+1),numberf,kflag)
   380                itiefac(2,i)=ifacecount+numberf
   382                nslavs=nslavnode(i+1)
   383                ifacecount=itiefac(2,i)
   392             itiefac(1,i)=ifacecount+1
   393             do j=istartset(islav),iendset(islav)
   394                if(ialset(j).gt.0) 
then   398                   ifacecount=ifacecount+1
   399                   islavsurf(1,ifacecount)=ialset(j)
   405                   nelems=int(ifaces/10)
   406                   jfaces=ifaces - nelems*10
   409                   if(lakon(nelems)(4:5).eq.
'20') 
then   411                   elseif(lakon(nelems)(4:4).eq.
'8') 
then   413                   elseif(lakon(nelems)(4:5).eq.
'10') 
then   415                   elseif(lakon(nelems)(4:4).eq.
'4') 
then   419                   if(lakon(nelems)(4:4).eq.
'6') 
then   426                   if(lakon(nelems)(4:5).eq.
'15') 
then   435                      if((lakon(nelems)(4:4).eq.
'2').or.
   436      &                  (lakon(nelems)(4:4).eq.
'8')) 
then   437                         node=kon(indexe+ifaceq(l,jfaces))
   438                      elseif((lakon(nelems)(4:4).eq.
'4').or.
   439      &                      (lakon(nelems)(4:5).eq.
'10')) 
then   440                         node=kon(indexe+ifacet(l,jfaces))
   441                      elseif(lakon(nelems)(4:4).eq.
'6') 
then   442                         node=kon(indexe+ifacew1(l,jfaces))
   443                      elseif(lakon(nelems)(4:5).eq.
'15') 
then   444                         node=kon(indexe+ifacew2(l,jfaces))
   446                      call nident(islavnode(nslavnode(i)+1),node,
   447      &                    nslavs-nslavnode(i),id)
   450                         if(islavnode(nslavnode(i)+id).eq.node) 
then   456                         do k=nslavs,nslavnode(i)+id+2,-1
   457                            islavnode(k)=islavnode(k-1)
   459                         islavnode(nslavnode(i)+id+1)=node
   464                      ifreenoelold=iponoels(node)
   465                      ifreenoels=ifreenoels+1
   466                      iponoels(node)=ifreenoels
   467                      inoels(1,ifreenoels)=ifacecount
   474                         xnoels(ifreenoels)=1.d0/3.d0
   475                      elseif(nopes.eq.4) 
then   476                         xnoels(ifreenoels)=1.d0/4.d0
   477                      elseif(nopes.eq.6) 
then   479                            xnoels(ifreenoels)=1.d0/999.d0
   481                            xnoels(ifreenoels)=332.d0/999.d0
   483                      elseif(nopes.eq.7) 
then   485                            xnoels(ifreenoels)=1.d0/20.d0
   487                            xnoels(ifreenoels)=2.d0/15.d0
   489                            xnoels(ifreenoels)=9.d0/20.d0
   491                      elseif(nopes.eq.8) 
then   497                            xnoels(ifreenoels)=1.d0/100.d0
   499                            xnoels(ifreenoels)=24.d0/100.d0
   501                      elseif(nopes.eq.9) 
then   503                            xnoels(ifreenoels)=1.d0/36.d0
   505                            xnoels(ifreenoels)=1.d0/9.d0
   507                            xnoels(ifreenoels)=4.d0/9.d0
   510                      inoels(2,ifreenoels)=ifreenoelold
   515             nslavnode(i+1)=nslavs
   516             itiefac(2,i)=ifacecount
   523                if(set(j).eq.mastset) 
exit   526                write(*,*) 
'*ERROR in tiefaccont: master surface'   527                write(*,*) 
'       does not exist'   533             do j=istartset(imast),iendset(imast)
   538                nelemm=int(ifacem/10)
   539                jfacem=ifacem - nelemm*10
   542                if(lakon(nelemm)(4:5).eq.
'20') 
then   544                elseif(lakon(nelemm)(4:4).eq.
'8') 
then   546                elseif(lakon(nelemm)(4:5).eq.
'10') 
then   548                elseif(lakon(nelemm)(4:4).eq.
'4') 
then   552                if(lakon(nelemm)(4:4).eq.
'6') 
then   559                if(lakon(nelemm)(4:5).eq.
'15') 
then   568                   if((lakon(nelemm)(4:4).eq.
'2').or.
   569      &                 (lakon(nelemm)(4:4).eq.
'8')) 
then   570                      node=kon(indexe+ifaceq(l,jfacem))
   571                   elseif((lakon(nelemm)(4:4).eq.
'4').or.
   572      &                    (lakon(nelemm)(4:5).eq.
'10')) 
then   573                      node=kon(indexe+ifacet(l,jfacem))
   574                   elseif(lakon(nelemm)(4:4).eq.
'6') 
then   575                      node=kon(indexe+ifacew1(l,jfacem))
   576                   elseif(lakon(nelemm)(4:5).eq.
'15') 
then   577                      node=kon(indexe+ifacew2(l,jfacem))
   579                   call nident(imastnode(nmastnode(i)+1),node,
   580      &                 nmasts-nmastnode(i),id)
   583                      if(imastnode(nmastnode(i)+id).eq.node) 
then   589                   do k=nmasts,nmastnode(i)+id+2,-1
   590                      imastnode(k)=imastnode(k-1)
   592                   imastnode(nmastnode(i)+id+1)=node
   596             nmastnode(i+1)=nmasts
   602             nslavnode(i+1)=nslavnode(i)
   604             nmastnode(i+1)=nmastnode(i)
 subroutine nident2(x, px, n, id)
Definition: nident2.f:27
 
subroutine nident(x, px, n, id)
Definition: nident.f:26
 
subroutine isorti(ix, n, kflag)
Definition: isorti.f:6