31 use element_mod , only : nixt
32
33
34
35#include "implicit_f.inc"
36
37
38
39#include "mvsiz_p.inc"
40
41
42
43#include "param_c.inc"
44
45
46
47 INTEGER FXBELM(*), IPARG(NPARG,*), IXT(NIXT,*), NELT
49 . fxbsig(*), x(3,*), pm(npropm,*), fxbmod(*),
50 . geo(npropg,*)
51
52
53
54 INTEGER IG, OFFSET, LAST, NFT, NFS, I, NG, IEL,
55 . MAT, PROP, N1, N2
57 .
area, e, x1, y1, z1, x2, y2, z2, l0, d11, d12, d13,
58 . d21, d22, d23, xc1, yc1, zc1, xc2, yc2, zc2, lc
59
60
61 DO ig=1,nelt,mvsiz
62 offset=ig-1
63 last=
min(mvsiz,nelt-offset)
64 nft=offset*7
65 nfs=offset*2
66 DO i=1,last
67 ng=fxbelm(nft+7*(i-1)+1)
68 iel=iparg(3,ng)+fxbelm(nft+7*(i-1)+2)
69 mat=ixt(1,iel)
70 prop=ixt(4,iel)
72 e=pm(20,mat)
73 x1=x(1,ixt(2,iel))
74 y1=x(2,ixt(2,iel))
75 z1=x(3,ixt(2,iel))
76 x2=x(1,ixt(3,iel))
77 y2=x(2,ixt(3,iel))
78 z2=x(3,ixt(3,iel))
79 l0=sqrt((x2-x1)**2+(y2-y1)**2+(z2-z1)**2)
80 n1=fxbelm(nft+7*(i-1)+3)
81 n2=fxbelm(nft+7*(i-1)+4)
82 d11=fxbmod(6*(n1-1)+1)
83 d12=fxbmod(6*(n1-1)+2)
84 d13=fxbmod(6*(n1-1)+3)
85 d21=fxbmod(6*(n2-1)+1)
86 d22=fxbmod(6*(n2-1)+2)
87 d23=fxbmod(6*(n2-1)+3)
88 xc1=x1+d11
89 yc1=y1+d12
90 zc1=z1+d13
91 xc2=x2+d21
92 yc2=y2+d22
93 zc2=z2+d23
94 lc=sqrt((xc2-xc1)**2+(yc2-yc1)**2+(zc2-zc1)**2)
95
96 fxbsig(nfs+2*(i-1)+1)=e*
area*(lc-l0)
97 fxbsig(nfs+2*(i-1)+2)=half*e*
area*(lc-l0)**2
98 ENDDO
99 ENDDO
100
101 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)