34       character*81 tieset(3,*),slavset,set(*),noset,setname
    36       character*132 jobnamef(*)
    38       integer ntie,ifree,nasym,icutb,ne0,
    39      &  itietri(2,ntie),ipkon(*),kon(*),koncont(4,*),ne,node,
    40      &  neigh(1),iflag,kneigh,i,j,k,l,isol,iset,idummy,
    41      &  itri,ll,kflag,n,nx(*),ny(*),istep,iinc,mi(*),
    42      &  nz(*),nstart,ielmat(mi(3),*),imat,ifaceq(8,6),ifacet(6,4),
    43      &  ifacew1(4,5),ifacew2(8,5),nelem,jface,indexe,iit,
    44      &  nface,nope,nodef(9),ncmat_,ntmat_,index1,indexel,
    45      &  nmethod,iteller,ifaces,jfaces,irelslavface,number(4),lenset,
    46      &  imastop(3,*), itriangle(100),ntriangle,ntriangle_,itriold,
    47      &  itrinew,id,nslavnode(*),islavnode(*),islavsurf(2,*),
    48      &  itiefac(2,*),iponoels(*),inoels(2,*),konl(26),nelems,m,
    49      &  mint2d,nopes,ipos,nset,istartset(*),iendset(*),
    52       real*8 cg(3,*),straight(16,*),co(3,*),vold(0:mi(2),*),p(3),
    53      &  
dist,xo(*),yo(*),zo(*),x(*),y(*),z(*),c0coef,
    54      &  beta,c0,elcon(0:ncmat_,ntmat_,*),weight,
    55      &  areaslav(*),springarea(2,*),xl2(3,9),area,xi,et,shp2(7,9),
    56      &  xs2(3,2),xsj2(3),adjust,tietol(3,*),reltime,
    57      &  clear,ratio(9),pl(3,9),
    58      &  pproj(3),al(3),xn(3),xm(3),dm,xnoels(*)
    62       data ifaceq /4,3,2,1,11,10,9,12,
    63      &            5,6,7,8,13,14,15,16,
    65      &            2,3,7,6,10,19,14,18,
    66      &            3,4,8,7,11,20,15,19,
    67      &            4,1,5,8,12,17,16,20/
    71       data ifacet /1,3,2,7,6,5,
    78       data ifacew1 /1,3,2,0,
    86       data ifacew2 /1,3,2,9,8,7,0,0,
   103       if(filab(1)(3:3).eq.
'C') 
then   107             if(jobnamef(1)(i:i).eq.
' ') 
exit   110          cfile=jobnamef(1)(1:i)//
'.cel'   111          open(27,file=cfile,status=
'unknown',position=
'append')
   113          setname(1:15)=
'contactelements'   119          if(number(4).le.0) number(4)=1
   121             setname(lenset+1:lenset+1)=
'_'   123                setname(lenset+2:lenset+3)=
'st'   125                setname(lenset+2:lenset+3)=
'in'   127                setname(lenset+2:lenset+3)=
'at'   129                setname(lenset+2:lenset+3)=
'it'   131             if(number(i).lt.10) 
then   132                write(setname(lenset+4:lenset+4),
'(i1)') number(i)
   134             elseif(number(i).lt.100) 
then   135                write(setname(lenset+4:lenset+5),
'(i2)') number(i)
   137             elseif(number(i).lt.1000) 
then   138                write(setname(lenset+4:lenset+6),
'(i3)') number(i)
   141                write(*,*) 
'*ERROR in gencontelem_f2f: no more than 1000'   142                write(*,*) 
'       steps/increments/cutbacks/iterations'   143                write(*,*) 
'       allowed (for output in '   144                write(*,*) 
'       contactelements.inp)'   151          if(tieset(1,i)(81:81).ne.
'C') cycle
   154          imat=int(tietol(2,i))
   155          c0coef=elcon(4,1,imat)
   161          if((istep.eq.1).and.(iit.lt.0)) 
then   163             if(tieset(1,i)(1:1).ne.
' ') 
then   164                noset(1:80)=tieset(1,i)(1:80)
   166                ipos=index(noset,
' ')
   169                   if(set(iset).eq.noset) 
exit   172                call isortii(ialset(istartset(iset)),idummy,
   173      &            iendset(iset)-istartset(iset)+1,kflag)
   179          do l = itiefac(1,i), itiefac(2,i)
   180             ifaces = islavsurf(1,l)
   181             nelems = int(ifaces/10)
   182             jfaces = ifaces - nelems*10
   186             if(lakon(nelems)(4:5).eq.
'8R') 
then   190             elseif(lakon(nelems)(4:4).eq.
'8') 
then   194             elseif(lakon(nelems)(4:6).eq.
'20R') 
then   198             elseif(lakon(nelems)(4:5).eq.
'20') 
then   202             elseif(lakon(nelems)(4:5).eq.
'10') 
then   206             elseif(lakon(nelems)(4:4).eq.
'4') 
then   213             elseif(lakon(nelems)(4:4).eq.
'6') 
then   221             elseif(lakon(nelems)(4:5).eq.
'15') 
then   236                konl(j)=kon(ipkon(nelems)+j)
   239             if((nope.eq.20).or.(nope.eq.8)) 
then   242                      xl2(j,m)=co(j,konl(ifaceq(m,jfaces)))+
   243      &                    vold(j,konl(ifaceq(m,jfaces)))
   246             elseif((nope.eq.10).or.(nope.eq.4)) 
then   249                      xl2(j,m)=co(j,konl(ifacet(m,jfaces)))+
   250      &                    vold(j,konl(ifacet(m,jfaces)))
   253             elseif(nope.eq.15) 
then   256                      xl2(j,m)=co(j,konl(ifacew2(m,jfaces)))+
   257      &                    vold(j,konl(ifacew2(m,jfaces)))
   263                      xl2(j,m)=co(j,konl(ifacew1(m,jfaces)))+
   264      &                    vold(j,konl(ifacew1(m,jfaces)))
   273                if((lakon(nelems)(4:5).eq.
'8R').or.
   274      &              ((lakon(nelems)(4:4).eq.
'6').and.(nopes.eq.4))) 
then   278                elseif((lakon(nelems)(4:4).eq.
'8').or.
   279      &                 (lakon(nelems)(4:6).eq.
'20R').or.
   280      &                 ((lakon(nelems)(4:5).eq.
'15').and.
   281      &                 (nopes.eq.8))) 
then   285                elseif(lakon(nelems)(4:4).eq.
'2') 
then   289                elseif((lakon(nelems)(4:5).eq.
'10').or.
   290      &                 ((lakon(nelems)(4:5).eq.
'15').and.
   291      &                 (nopes.eq.6))) 
then   295                elseif((lakon(nelems)(4:4).eq.
'4').or.
   296      &                 ((lakon(nelems)(4:4).eq.
'6').and.
   297      &                 (nopes.eq.3))) 
then   304                   call shape9q(xi,et,xl2,xsj2,xs2,shp2,iflag)
   305                elseif(nopes.eq.8) 
then   306                   call shape8q(xi,et,xl2,xsj2,xs2,shp2,iflag)
   307                elseif(nopes.eq.4) 
then   308                   call shape4q(xi,et,xl2,xsj2,xs2,shp2,iflag)
   309                elseif(nopes.eq.6) 
then   310                   call shape6tri(xi,et,xl2,xsj2,xs2,shp2,iflag)
   311                elseif(nopes.eq.7) 
then   312                   call shape7tri(xi,et,xl2,xsj2,xs2,shp2,iflag)
   314                   call shape3tri(xi,et,xl2,xsj2,xs2,shp2,iflag)
   316                area=area+weight*dsqrt(xsj2(1)**2+xsj2(2)**2+
   325          nstart=itietri(1,i)-1
   326          n=itietri(2,i)-nstart
   327          if(n.lt.kneigh) kneigh=n
   340          call dsort(x,nx,n,kflag)
   341          call dsort(y,ny,n,kflag)
   342          call dsort(z,nz,n,kflag)
   344          do j=nslavnode(i)+1,nslavnode(i+1)
   345             if(iit.le.0) springarea(2,j)=0.d0
   353             index1=iponoels(node)
   356                irelslavface=inoels(1,index1)
   357                if((itiefac(1,i).le.irelslavface).and.
   358      &            (irelslavface.le.itiefac(2,i))) 
then   359                   area=area+areaslav(irelslavface)*
   362                index1=inoels(2,index1)
   366                p(k)=co(k,node)+vold(k,node)
   372             call near3d(xo,yo,zo,x,y,z,nx,ny,nz,p(1),p(2),p(3),
   378             itri=neigh(1)+itietri(1,i)-1
   385                dist=straight(ll,itri)*p(1)+
   386      &              straight(ll+1,itri)*p(2)+
   387      &              straight(ll+2,itri)*p(3)+
   388      &              straight(ll+3,itri)
   395                if(
dist.gt.1.d-3*dsqrt(area)) 
then   396                   itrinew=imastop(l,itri)
   397                   if(itrinew.eq.0) 
then   400                   elseif((itrinew.lt.itietri(1,i)).or.
   401      &                    (itrinew.gt.itietri(2,i))) 
then   404                   elseif(itrinew.eq.itriold) 
then   409                      call nident(itriangle,itrinew,ntriangle,id)
   411                               if(itriangle(id).eq.itrinew) 
then   416                            ntriangle=ntriangle+1
   417                            if(ntriangle.gt.ntriangle_) 
then   421                            do k=ntriangle,id+2,-1
   422                               itriangle(k)=itriangle(k-1)
   424                            itriangle(id+1)=itrinew
   447                   nelem=int(koncont(4,itri)/10.d0)
   448                   jface=koncont(4,itri)-10*nelem
   451                   if(lakon(nelem)(4:5).eq.
'20') 
then   454                   elseif(lakon(nelem)(4:4).eq.
'8') 
then   457                   elseif(lakon(nelem)(4:5).eq.
'10') 
then   460                   elseif(lakon(nelem)(4:4).eq.
'4') 
then   463                   elseif(lakon(nelem)(4:5).eq.
'15') 
then   471                   elseif(lakon(nelem)(4:4).eq.
'6') 
then   487                         nodef(k)=kon(indexe+ifacet(k,jface))
   489                   elseif(nface.eq.5) 
then   492                            nodef(k)=kon(indexe+ifacew1(k,jface))
   494                      elseif(nope.eq.15) 
then   496                            nodef(k)=kon(indexe+ifacew2(k,jface))
   499                   elseif(nface.eq.6) 
then   501                         nodef(k)=kon(indexe+ifaceq(k,jface))
   509                         pl(l,k)=co(l,nodef(k))+vold(l,nodef(k))
   525                      call shape9q(xi,et,pl,xm,xs2,shp2,iflag)
   526                   elseif(nopes.eq.8) 
then   527                      call shape8q(xi,et,pl,xm,xs2,shp2,iflag)
   528                   elseif(nopes.eq.4) 
then   529                      call shape4q(xi,et,pl,xm,xs2,shp2,iflag)
   530                   elseif(nopes.eq.6) 
then   531                      call shape6tri(xi,et,pl,xm,xs2,shp2,iflag)
   532                   elseif(nopes.eq.7) 
then   533                      call shape7tri(xi,et,pl,xm,xs2,shp2,iflag)
   535                      call shape3tri(xi,et,pl,xm,xs2,shp2,iflag)
   540                   dm=dsqrt(xm(1)*xm(1)+xm(2)*xm(2)+xm(3)*xm(3))
   547                   clear=al(1)*xn(1)+al(2)*xn(2)+al(3)*xn(3)
   548                   if((istep.eq.1).and.(iit.lt.0.d0)) 
then   549                      if(clear.lt.0.d0) 
then   550                         springarea(2,j)=clear
   553                   if(nmethod.eq.1) 
then   554                      clear=clear-springarea(2,j)*(1.d0-reltime)
   560                   if((istep.eq.1).and.(iit.lt.0)) 
then   566                         call nident(ialset(istartset(iset)),node,
   567      &                       iendset(iset)-istartset(iset)+1,id)
   569                            if(ialset(istartset(iset)+id-1).eq.node) 
then   571                                  co(k,node)=co(k,node)-
   572      &                                clear*straight(12+k,itri)
   577                      elseif(dabs(tietol(1,i)).ge.2.d0) 
then   581                         adjust=dabs(tietol(1,i))-2.d0
   582                         if(clear.le.adjust) 
then   584                               co(k,node)=co(k,node)-
   585      &                             clear*straight(12+k,itri)
   592                   if(int(elcon(3,1,imat)).eq.1) 
then   602                      if(dabs(area).gt.0.d0) 
then   603                         c0=c0coef*dsqrt(area)
   629                      if(elcon(6,1,imat).gt.0) 
then   634                      if(elcon(8,1,imat).gt.0) 
then   656                      kon(ifree+k)=nodef(k)
   663                   write(lakon(ne)(8:8),
'(i1)') nopes
   667                   if((nopes.eq.3).or.(nopes.eq.6)) 
then   668                      if(filab(1)(3:3).eq.
'C') 
then   669                         write(27,100) setname(1:lenset)
   670  100                    
format(
'*ELEMENT,TYPE=C3D4,ELSET=',a)
   671                         write(27,*) ne0+indexel,
',',nodef(1),
',',
   672      &                       nodef(2),
',',nodef(3),
',',node
   675                      if(filab(1)(3:3).eq.
'C') 
then   676                         write(27,101) setname(1:lenset)
   677  101                    
format(
'*ELEMENT,TYPE=C3D6,ELSET=',a)
   678                         write(27,*) ne0+indexel,
',',nodef(2),
',',node,
   680      &                     nodef(3),
',',nodef(1),
',',node,
',',nodef(4)
   690       if(filab(1)(3:3).eq.
'C') 
then subroutine near3d(xo, yo, zo, x, y, z, nx, ny, nz, xp, yp, zp, n, neighbor, k)
Definition: near3d.f:20
 
subroutine shape9q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape9q.f:20
 
subroutine shape8q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape8q.f:20
 
subroutine shape3tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape3tri.f:20
 
subroutine shape7tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape7tri.f:20
 
subroutine stop()
Definition: stop.f:20
 
subroutine isortii(ix, iy, n, kflag)
Definition: isortii.f:6
 
static double * dist
Definition: radflowload.c:42
 
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
 
subroutine nident(x, px, n, id)
Definition: nident.f:26
 
subroutine dsort(dx, iy, n, kflag)
Definition: dsort.f:6
 
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20
 
subroutine attach(pneigh, pnode, nterms, ratio, dist, xil, etl)
Definition: attach.f:20