29 character*8 lakon(*),lakonl
31 integer ipkon(*),inum(*),kon(*),ne,indexe,nfield,nk,i,j,k,l,
32 & node3(8,3),node6(3,6),node8(3,8),node2d,node3d,indexe2d,ne1d2d,
33 & node3m(8,3),iflag,nactdof(nfield,*),jmax
35 real*8 yn(nfield,*),ratioe(3)
39 data node3 /1,4,8,5,12,20,16,17,9,11,15,13,
40 & 0,0,0,0,2,3,7,6,10,19,14,18/
41 data node3m /1,5,8,4,17,16,20,12,
43 & 3,7,6,2,19,14,18,10/
44 data node6 /1,13,4,2,14,5,3,15,6,7,0,10,8,0,11,9,0,12/
45 data node8 /1,17,5,2,18,6,3,19,7,4,20,8,9,0,13,10,0,14,
47 data ratioe /0.16666666666667d0,0.66666666666666d0,
57 if(ipkon(i).lt.0) cycle
59 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
60 & (lakonl(1:1).ne.
'C')) cycle
70 if((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6'))
then 71 if(lakonl(4:5).eq.
'15')
then 79 node2d=kon(indexe2d+j)
82 if(nactdof(k,node2d).le.0) yn(k,node2d)=0.d0
85 elseif(lakonl(7:7).eq.
'B')
then 86 if(lakonl(4:5).eq.
'8I')
then 89 elseif(lakonl(4:5).eq.
'8R')
then 92 elseif(lakonl(4:5).eq.
'20')
then 97 node2d=kon(indexe2d+j)
100 if(nactdof(k,node2d).le.0) yn(k,node2d)=0.d0
104 if(lakonl(4:5).eq.
'8I')
then 107 elseif((lakonl(4:5).eq.
'8R').or.(lakonl(4:5).eq.
'8 '))
then 110 elseif(lakonl(4:5).eq.
'20')
then 115 node2d=kon(indexe2d+j)
118 if(nactdof(k,node2d).le.0) yn(k,node2d)=0.d0
125 do j=1,indexe2d-indexe
126 inum(kon(indexe+j))=0
133 if(ne1d2d.eq.0)
return 139 if(ipkon(i).lt.0) cycle
141 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
142 & (lakonl(1:1).ne.
'C')) cycle
147 if((lakonl(4:4).eq.
'6').or.(lakonl(4:4).eq.
'8'))
then 153 if((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6'))
then 154 if(lakonl(4:5).eq.
'15')
then 162 node2d=kon(indexe2d+j)
163 inum(node2d)=inum(node2d)-1
167 if((j.le.3).and.(quadratic))
then 172 node3d=kon(indexe+node6(l,j))
174 if(nactdof(k,node2d).le.0) yn(k,node2d)=
175 & yn(k,node2d)+yn(k,node3d)*ratioe(l)
183 node3d=kon(indexe+node6(l,j))
185 if(nactdof(k,node2d).le.0) yn(k,node2d)=
186 & yn(k,node2d)+yn(k,node3d)/2.d0
191 elseif(lakonl(7:7).eq.
'B')
then 192 if(lakonl(4:5).eq.
'8I')
then 195 elseif(lakonl(4:5).eq.
'8R')
then 198 elseif(lakonl(4:5).eq.
'20')
then 206 node2d=kon(indexe2d+j)
211 inum(node2d)=inum(node2d)-1
213 node3d=kon(indexe+node3(l,j))
215 node3d=kon(indexe+node3(l,2*j-1))
218 if(nactdof(k,node2d).le.0) yn(k,node2d)=
219 & yn(k,node2d)+yn(k,node3d)
224 if(lakonl(4:5).eq.
'8I')
then 227 elseif((lakonl(4:5).eq.
'8R').or.(lakonl(4:5).eq.
'8 '))
then 230 elseif(lakonl(4:5).eq.
'20')
then 235 node2d=kon(indexe2d+j)
236 inum(node2d)=inum(node2d)-1
240 if((j.le.4).and.(quadratic))
then 245 node3d=kon(indexe+node8(l,j))
247 if(nactdof(k,node2d).le.0) yn(k,node2d)=
248 & yn(k,node2d)+yn(k,node3d)*ratioe(l)
256 node3d=kon(indexe+node8(l,j))
258 if(nactdof(k,node2d).le.0) yn(k,node2d)=
259 & yn(k,node2d)+yn(k,node3d)/2.d0
272 if(inum(i).lt.0)
then 275 if(nactdof(j,i).le.0) yn(j,i)=yn(j,i)/inum(i)