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