29 logical force,quadratic
32 character*8 lakon(*),lakonl
34 integer ipkon(*),inum(*),kon(*),ne,indexe,nfield,nk,i,j,k,l,m,
35 & node3(8,3),node6(3,6),node8(3,8),node2d,node3d,indexe2d,ne1d2d,
36 & node3m(8,3),node(8),m1,m2,nodea,nodeb,nodec,iflag,mi(*),jmax,
39 real*8 yn(nfield,*),cg(3),p(3),pcg(3),t(3),xl(3,8),shp(7,8),
40 & xsj(3),e1(3),e2(3),e3(3),s(6),dd,xi,et,co(3,*),xs(3,7),
41 & vold(0:mi(2),*),ratioe(3)
45 data node3 /1,4,8,5,12,20,16,17,9,11,15,13,
46 & 0,0,0,0,2,3,7,6,10,19,14,18/
47 data node3m /1,5,8,4,17,16,20,12,
49 & 3,7,6,2,19,14,18,10/
50 data node6 /1,13,4,2,14,5,3,15,6,7,0,10,8,0,11,9,0,12/
51 data node8 /1,17,5,2,18,6,3,19,7,4,20,8,9,0,13,10,0,14,
53 data ratioe /0.16666666666667d0,0.66666666666666d0,
63 if(ipkon(i).lt.0) cycle
65 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
66 & (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)
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)
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)
128 do j=1,indexe2d-indexe
129 inum(kon(indexe+j))=0
136 if(ne1d2d.eq.0)
return 142 if(ipkon(i).lt.0) cycle
144 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
145 & (lakonl(1:1).ne.
'C')) cycle
150 if((lakonl(4:4).eq.
'6').or.(lakonl(4:4).eq.
'8'))
then 156 if((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6'))
then 157 if(lakonl(4:5).eq.
'15')
then 165 node2d=kon(indexe2d+j)
166 inum(node2d)=inum(node2d)-1
171 if((j.le.3).and.(quadratic))
then 176 node3d=kon(indexe+node6(l,j))
178 yn(k,node2d)=yn(k,node2d)+
179 & yn(k,node3d)*ratioe(l)
187 node3d=kon(indexe+node6(l,j))
189 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)/2.d0
202 if((j.le.3).and.(quadratic))
then 207 node3d=kon(indexe+node6(l,j))
208 if(inum(node3d).ne.0) cycle
211 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
220 node3d=kon(indexe+node6(l,j))
221 if(inum(node3d).ne.0) cycle
224 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
230 elseif(lakonl(7:7).eq.
'B')
then 231 if(lakonl(4:5).eq.
'8I')
then 236 elseif(lakonl(4:5).eq.
'8R')
then 241 elseif(lakonl(4:5).eq.
'20')
then 247 if(cflag.ne.
'M')
then 252 node2d=kon(indexe2d+j)
258 inum(node2d)=inum(node2d)-1
260 node3d=kon(indexe+node3(l,j))
262 node3d=kon(indexe+node3(l,2*j-1))
265 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
277 if((j.ne.2).and.(quadratic))
then 282 node3d=kon(indexe+node3(l,j))
283 if(inum(node3d).ne.0) cycle
286 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
296 node3d=kon(indexe+node3(l,j))
298 node3d=kon(indexe+node3(l,2*j-1))
300 if(inum(node3d).ne.0) cycle
303 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
314 node2d=kon(indexe2d+j)
315 inum(node2d)=inum(node2d)-1
321 node(l)=kon(indexe+node3m(l,j))
323 node(l)=kon(indexe+node3m(l,2*j-1))
326 xl(m,l)=co(m,node(l))+vold(m,node(l))
333 cg(m)=(xl(m,1)+xl(m,2)+xl(m,3)+xl(m,4))/4.d0
335 e1(m)=(xl(m,1)+xl(m,4)-xl(m,2)-xl(m,3))
337 e1(m)=(xl(m,2)+xl(m,3)-xl(m,1)-xl(m,4))
339 e2(m)=(xl(m,3)+xl(m,4)-xl(m,1)-xl(m,2))
344 dd=dsqrt(e1(1)*e1(1)+e1(2)*e1(2)+e1(3)*e1(3))
351 dd=e1(1)*e2(1)+e1(2)*e2(2)+e1(3)*e2(3)
358 dd=dsqrt(e2(1)*e2(1)+e2(2)*e2(2)+e2(3)*e2(3))
366 e3(1)=e2(2)*e1(3)-e1(2)*e2(3)
367 e3(2)=e2(3)*e1(1)-e1(3)*e2(1)
368 e3(3)=e2(1)*e1(2)-e1(1)*e2(2)
370 e3(1)=e1(2)*e2(3)-e2(2)*e1(3)
371 e3(2)=e1(3)*e2(1)-e2(3)*e1(1)
372 e3(3)=e1(1)*e2(2)-e2(1)*e1(2)
381 call shape8q(xi,et,xl,xsj,xs,shp,iflag)
383 call shape4q(xi,et,xl,xsj,xs,shp,iflag)
391 s(m1)=s(m1)+shp(4,m2)*yn(m1,node(m2))
400 p(m1)=p(m1)+shp(4,m2)*xl(m1,m2)
407 t(1)=s(1)*xsj(1)+s(4)*xsj(2)+s(5)*xsj(3)
408 t(2)=s(4)*xsj(1)+s(2)*xsj(2)+s(6)*xsj(3)
409 t(3)=s(5)*xsj(1)+s(6)*xsj(2)+s(3)*xsj(3)
413 yn(1,node2d)=yn(1,node2d)+
414 & (e1(1)*t(1)+e1(2)*t(2)+e1(3)*t(3))
415 yn(2,node2d)=yn(2,node2d)+
416 & (e2(1)*t(1)+e2(2)*t(2)+e2(3)*t(3))
417 yn(3,node2d)=yn(3,node2d)+
418 & (e3(1)*t(1)+e3(2)*t(2)+e3(3)*t(3))
424 yn(4,node2d)=yn(4,node2d)+
425 & (e3(1)*pcg(2)*t(3)+e3(2)*pcg(3)*t(1)+
426 & e3(3)*pcg(1)*t(2)-e3(3)*pcg(2)*t(1)-
427 & e3(1)*pcg(3)*t(2)-e3(2)*pcg(1)*t(3))
431 yn(5,node2d)=yn(5,node2d)+
432 & (e2(1)*pcg(2)*t(3)+e2(2)*pcg(3)*t(1)+
433 & e2(3)*pcg(1)*t(2)-e2(3)*pcg(2)*t(1)-
434 & e2(1)*pcg(3)*t(2)-e2(2)*pcg(1)*t(3))
438 yn(6,node2d)=yn(6,node2d)+
439 & (e1(1)*pcg(2)*t(3)+e1(2)*pcg(3)*t(1)+
440 & e1(3)*pcg(1)*t(2)-e1(3)*pcg(2)*t(1)-
441 & e1(1)*pcg(3)*t(2)-e1(2)*pcg(1)*t(3))
452 if(lakonl(4:5).eq.
'8I')
then 455 elseif((lakonl(4:5).eq.
'8R').or.(lakonl(4:5).eq.
'8 '))
then 458 elseif(lakonl(4:5).eq.
'20')
then 463 node2d=kon(indexe2d+j)
464 inum(node2d)=inum(node2d)-1
469 if((j.le.4).and.(quadratic))
then 474 node3d=kon(indexe+node8(l,j))
476 yn(k,node2d)=yn(k,node2d)+
477 & yn(k,node3d)*ratioe(l)
485 node3d=kon(indexe+node8(l,j))
487 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)/2.d0
500 if((j.le.4).and.(quadratic))
then 505 node3d=kon(indexe+node8(l,j))
506 if(inum(node3d).ne.0) cycle
509 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
518 node3d=kon(indexe+node8(l,j))
519 if(inum(node3d).ne.0) cycle
522 yn(k,node2d)=yn(k,node2d)+yn(k,node3d)
538 if(ipkon(i).lt.0) cycle
540 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
541 & (lakonl(1:1).ne.
'C')) cycle
544 if((lakonl(4:5).eq.
'15').or.(lakonl(4:4).eq.
'6'))
then 545 if(lakonl(4:5).eq.
'15')
then 553 node2d=kon(indexe2d+j)
554 if(inum(node2d).lt.0)
then 555 inum(node2d)=-inum(node2d)
557 yn(k,node2d)=yn(k,node2d)/inum(node2d)
561 elseif(lakonl(7:7).eq.
'B')
then 562 if(lakonl(4:5).eq.
'8I')
then 565 elseif(lakonl(4:5).eq.
'8R')
then 568 elseif(lakonl(4:5).eq.
'20')
then 573 node2d=kon(indexe2d+j)
574 if(inum(node2d).lt.0)
then 575 inum(node2d)=-inum(node2d)
577 yn(k,node2d)=yn(k,node2d)/inum(node2d)
582 if(lakonl(4:5).eq.
'8I')
then 585 elseif((lakonl(4:5).eq.
'8R').or.(lakonl(4:5).eq.
'8 '))
then 588 elseif(lakonl(4:5).eq.
'20')
then 593 node2d=kon(indexe2d+j)
594 if(inum(node2d).lt.0)
then 595 inum(node2d)=-inum(node2d)
597 yn(k,node2d)=yn(k,node2d)/inum(node2d)
608 do j=1,indexe2d-indexe
609 inum(kon(indexe+j))=0
618 if(ipkon(i).lt.0) cycle
620 if((lakonl(7:7).eq.
' ').or.(lakonl(7:7).eq.
'I').or.
621 & (lakonl(1:1).ne.
'C')) cycle
626 if((lakonl(4:4).eq.
'6').or.(lakonl(4:4).eq.
'8')) cycle
628 if(lakonl(7:7).eq.
'B')
then 630 if(cflag.eq.
'M')
then 635 nodea=kon(indexe2d+1)
636 nodeb=kon(indexe2d+2)
637 nodec=kon(indexe2d+3)
640 yn(j,nodeb)=yn(j,nodeb)+(yn(j,nodea)+yn(j,nodec))/2.d0
subroutine shape8q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape8q.f:20
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20