31 character*8 lakon(*),lakonl
33 integer ipkon(*),inum(*),kon(*),mi(*),ne,indexe,nope,
34 & nonei20(3,12),nfield,nonei10(3,6),nk,i,j,k,l,ndim,
35 & nonei15(3,9),m,iflag,jj,indexc,islavsurf(2,*),ll,
36 & indexcj,ifacew1(4,5),islavnode(*),nslavnode(*),ntie,
37 & nlayer,nopeexp,ifacew2(8,5),ifaceq(8,6),ifacet(6,4),
38 & nopespring,ifaces,nopespringj,ifacej,jfaces,n,nelems,
39 & idgn,idgnr,idglda,idgip(4),idgldb,idginfo,igauss,islavact(*),
40 & konl(26),node,nopes,ielprop(*),ielmat(mi(3),*),ne0,
43 real*8 yi(ndim,mi(1),*),yn(nfield,*),field(nfield,20*mi(3)),
44 & co(3,*),xi,et,vold(0:mi(2),*),xs2(3,7),xsj2(3),shp2(7,8),
45 & aa(4,4),bb(4,6),pl(3,8),pslavsurf(3,*),xslavnor(3,nk),
46 & cc(3,4),dd(3,6),c_limit(2,nfield),nodepos(4,2),xn(3),
47 & t1(3),t2(3),trac(3),xquad(2,9),xtri(2,7),xl2s(3,9),
48 & stn(6,nk),dt1,dl,a2(6,2),a4(4,4),a27(20,27),a9(6,9),
51 data nonei10 /5,1,2,6,2,3,7,3,1,8,1,4,9,2,4,10,3,4/
53 data nonei15 /7,1,2,8,2,3,9,3,1,10,4,5,11,5,6,12,6,4,
54 & 13,1,4,14,2,5,15,3,6/
56 data nonei20 /9,1,2,10,2,3,11,3,4,12,4,1,
57 & 13,5,6,14,6,7,15,7,8,16,8,5,
58 & 17,1,5,18,2,6,19,3,7,20,4,8/
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,
94 if(nfield.eq.0)
return 111 if(ipkon(i).lt.0) cycle
114 if((lakon(i)(1:1).ne.
'E').or.(lakon(i)(7:7).ne.
'C')) cycle
115 nopespring=kon(indexc)
116 ifaces=islavsurf(1,kon(indexc+nopespring+2))
118 nelems=int(ifaces/10.d0)
130 nopespringj=kon(indexcj)
131 ifacej=islavsurf(1,kon(indexcj+nopespringj+2))
132 if(ifaces.ne.ifacej)
exit 135 jfaces=ifaces-10*int(ifaces/10.d0)
138 if(lakonl(4:4).eq.
'2')
then 140 elseif(lakonl(4:4).eq.
'8')
then 142 elseif(lakonl(4:5).eq.
'10')
then 144 elseif(lakonl(4:4).eq.
'4')
then 146 elseif(lakonl(4:5).eq.
'15')
then 148 elseif(lakonl(4:4).eq.
'6')
then 150 elseif((lakon(i)(1:1).eq.
'E').and.(lakon(i)(7:7).eq.
'A'))
then 151 inum(kon(indexe+1))=inum(kon(indexe+1))+1
152 inum(kon(indexe+2))=inum(kon(indexe+2))+1
158 if((lakonl(4:5).eq.
'20').or.(lakonl(4:4).eq.
'8').or.
159 & (((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6')).and.
160 & (jfaces.gt.2)))
then 161 if(lakonl(7:8).ne.
'LC')
then 162 field(1:nfield,1:20)=0.d0
182 c_limit(1,k)=yi(k,1,j)
183 c_limit(2,k)=yi(k,1,j)
185 if(c_limit(1,k).lt.yi(k,1,j))
then 186 c_limit(1,k)=yi(k,1,j)
188 if(c_limit(2,k).gt.yi(k,1,j))
then 189 c_limit(2,k)=yi(k,1,j)
193 nopespringj=kon(indexcj)
194 igauss=kon(indexcj+nopespringj+1)
195 xi=pslavsurf(1,igauss)
196 et=pslavsurf(2,igauss)
202 dd(j+1-i,k)=yi(k,1,j)
204 elseif((n-i).eq.3)
then 205 call shape4q(xi,et,pl,xsj2,xs2,shp2,iflag)
207 aa(j+1-i,k)=shp2(4,k)
210 bb(j+1-i,k)=yi(k,1,j)
213 call shape4q(xi,et,pl,xsj2,xs2,shp2,iflag)
216 aa(k,l)=aa(k,l)+shp2(4,k)*shp2(4,l)
221 bb(k,l)=bb(k,l)+shp2(4,k)*yi(l,1,j)
229 bb(k,l)=bb(k,l)+yi(l,1,n)
232 elseif((n-i).eq.1)
then 236 bb(k,l)=bb(k,l)+yi(l,1,j)*0.5d0
240 elseif((n-i).eq.2)
then 243 call plane_eq(aa(1,1),aa(1,2),dd(1,l),
244 & aa(2,1),aa(2,2),dd(2,l),aa(3,1),
245 & aa(3,2),dd(3,l),nodepos(k,1),
246 & nodepos(k,2),bb(k,l))
261 call dgesv(idgn,idgnr,aa,idglda,idgip,bb,idgldb,
264 if((lakonl(4:4).eq.
'6').or.(lakonl(4:5).eq.
'15'))
then 267 if((c_limit(1,k).gt.bb(j,k)).and.
268 & (c_limit(2,k).lt.bb(j,k)))
then 269 field(k,ifacew1(j,jfaces))=bb(j,k)
271 if(c_limit(1,k).lt.bb(j,k))
then 272 field(k,ifacew1(j,jfaces))=c_limit(1,k)
274 if(c_limit(2,k).gt.bb(j,k))
then 275 field(k,ifacew1(j,jfaces))=c_limit(2,k)
282 if((c_limit(1,k).gt.bb(j,k)).and.
283 & (c_limit(2,k).lt.bb(j,k)))
then 284 field(k,ifaceq(j,jfaces))=bb(j,k)
286 if(c_limit(1,k).lt.bb(j,k))
then 287 field(k,ifaceq(j,jfaces))=c_limit(1,k)
289 if(c_limit(2,k).gt.bb(j,k))
then 290 field(k,ifaceq(j,jfaces))=c_limit(2,k)
296 elseif((lakonl(4:5).eq.
'10').or.(lakonl(4:4).eq.
'4').or.
297 & (((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6')).and.
298 & (jfaces.le.2)))
then 299 field(1:nfield,1:15)=0.d0
300 if(lakonl(7:8).ne.
'LC')
then 312 c_limit(1,k)=yi(k,1,j)
313 c_limit(2,k)=yi(k,1,j)
315 if(c_limit(1,k).lt.yi(k,1,j))
then 316 c_limit(1,k)=yi(k,1,j)
318 if(c_limit(2,k).gt.yi(k,1,j))
then 319 c_limit(2,k)=yi(k,1,j)
323 nopespringj=kon(indexcj)
324 igauss=kon(indexcj+nopespringj+1)
325 xi=pslavsurf(1,igauss)
326 et=pslavsurf(2,igauss)
329 call shape3tri(xi,et,pl,xsj2,xs2,shp2,iflag)
331 cc(j+1-i,k)=shp2(4,k)
334 dd(j+1-i,k)=yi(k,1,j)
337 call shape3tri(xi,et,pl,xsj2,xs2,shp2,iflag)
340 cc(k,l)=cc(k,l)+shp2(4,k)*shp2(4,l)
345 dd(k,l)=dd(k,l)+shp2(4,k)*yi(l,1,j)
353 dd(k,l)=dd(k,l)+yi(l,1,j)
356 elseif((n-i).eq.1)
then 360 dd(k,l)=dd(k,l)+yi(l,1,j)*0.5d0
369 call dgesv(idgn,idgnr,cc,idglda,idgip,dd,idgldb,
372 if((lakonl(4:4).eq.
'6').or.(lakonl(4:5).eq.
'15'))
then 375 if((c_limit(1,k).gt.dd(j,k)).and.
376 & (c_limit(2,k).lt.dd(j,k)))
then 377 field(k,ifacew1(j,jfaces))=dd(j,k)
379 if(c_limit(1,k).lt.dd(j,k))
then 380 field(k,ifacew1(j,jfaces))=c_limit(1,k)
382 if(c_limit(2,k).gt.dd(j,k))
then 383 field(k,ifacew1(j,jfaces))=c_limit(2,k)
390 if((c_limit(1,k).gt.dd(j,k)).and.
391 & (c_limit(2,k).lt.dd(j,k)))
then 392 field(k,ifacet(j,jfaces))=dd(j,k)
394 if(c_limit(1,k).lt.dd(j,k))
then 395 field(k,ifacet(j,jfaces))=c_limit(1,k)
397 if(c_limit(2,k).gt.dd(j,k))
then 398 field(k,ifacet(j,jfaces))=c_limit(2,k)
409 if(lakonl(4:5).eq.
'20')
then 410 if(lakonl(7:8).ne.
'LC')
then 413 field(k,ifaceq(j,jfaces))=
414 & (field(k,nonei20(2,ifaceq(j,jfaces)-8))+
415 & field(k,nonei20(3,ifaceq(j,jfaces)-8)))/2.d0
421 if(ielmat(j,i).gt.0)
then 431 field(k,jj+j)=(field(k,jj+nonei20(2,j-8))
432 & +field(k,jj+nonei20(3,j-8)))/2.d0
437 elseif(lakonl(4:5).eq.
'10')
then 440 field(k,ifacet(j,jfaces))=
441 & (field(k,nonei10(2,ifacet(j,jfaces)-4))+
442 & field(k,nonei10(3,ifacet(j,jfaces)-4)))/2.d0
445 elseif(lakonl(4:5).eq.
'15')
then 446 if(lakonl(7:8).ne.
'LC')
then 450 field(k,ifacew2(j,jfaces))=
451 & (field(k,nonei15(2,ifacew2(j,jfaces)-6))+
452 & field(k,nonei15(3,ifacew2(j,jfaces)-6)))
459 field(k,ifacew2(j,jfaces))=
460 & (field(k,nonei15(2,ifacew2(j,jfaces)-6))+
461 & field(k,nonei15(3,ifacew2(j,jfaces)-6)))
469 if(ielmat(j,i).gt.0)
then 479 field(k,jj+j)=(field(k,jj+nonei15(2,j-6))
480 & +field(k,jj+nonei15(3,j-6)))/2.d0
489 if(lakonl(7:8).ne.
'LC')
then 492 yn(k,kon(indexe+j))=yn(k,kon(indexe+j))+
498 yn(nfield-1,kon(indexe+j))=yn(nfield-1,kon(indexe+j))+
500 yn(nfield,kon(indexe+j))=yn(nfield,kon(indexe+j))+
502 inum(kon(indexe+j))=inum(kon(indexe+j))+1
507 yn(k,kon(indexe+nopeexp+j))=
508 & yn(k,kon(indexe+nopeexp+j))+field(k,j)
510 inum(kon(indexe+nopeexp+j))=inum(kon(indexe+nopeexp+j))+1
516 if(lakonl(1:5).eq.
'C3D8I')
then 519 yn(k,kon(indexe+nope+j))=0.0d0
534 if(inum(i).gt.0)
then 536 yn(j,i)=yn(j,i)/inum(i)
543 do i=1,nslavnode(ntie+1)
544 if(islavact(i).ne.1)
then 546 yn(j,islavnode(i))=0.d0
554 if((cflag.ne.
' ').and.(cflag.ne.
'E'))
then 555 call map3dto1d2d(yn,ipkon,inum,kon,lakon,nfield,nk,ne,cflag,co,
subroutine plane_eq(x1, y1, z1, x2, y2, z2, x3, y3, z3, x0, y0, output)
Definition: plane_eq.f:33
subroutine shape3tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape3tri.f:20
subroutine dgesv(N, NRHS, A, LDA, IPIV, B, LDB, INFO)
Definition: dgesv.f:58
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine map3dto1d2d(yn, ipkon, inum, kon, lakon, nfield, nk, ne, cflag, co, vold, force, mi)
Definition: map3dto1d2d.f:21
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