31 SUBROUTINE dmasanic(ELBUF_TAB,X ,D ,GEO ,IPARG,
32 . IXQ ,IXC ,IXTG ,MAS ,PM ,
33 . EL2FA,NBF ,IGEO,STACK)
42#include "implicit_f.inc"
55 . mas(*) ,pm(npropm,*),geo(npropg,*),x
57 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*)
59TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
60 TYPE (STACK_PLY) :: STACK
66 . off, p, vonm2, vonm, s1, s2, s12, s3,
VALUE,thk0,a0,al0,
67 . rho0,xx1,xx2,xx3,yy1,yy2,yy3,zz1,zz2,zz3
68 INTEGER I, NG, NEL, NFT, IAD, ITY, LFT, NPT, ISS, ISC,
69 . IADD, N, J, LLT, MLW,
70 . istrain,nn, k1, k2,jturb,mt,jale, imid
72 . nn1,nn2,nn3,nn4,nn5,nn6,nn7,nn8,nn9,nn10,
73 . offset,nel_old,ity_old,nft_fa,n_fa
74 INTEGER ISUBSTACK,NTHK,IADR,IIGEO,IGTYP
76 TYPE(g_bufel_) ,
POINTER :: GBUF
93 gbuf => elbuf_tab(ng)%GBUF
96 npt =iabs(iparg(6,ng))
98 IF (ity/=ity_old)
THEN
103 nel_old = nel_old + nel
110 nft_fa = nel_old - nel
118 ialel=(iparg(7,ng)+iparg(11,ng))
125 VALUE=pm(89,mt)*gbuf%VOL(i)
127 off =
min(gbuf%OFF(i),one)
128 VALUE=gbuf%RHO(i)*gbuf%VOL(i)*off
130 mas(el2fa(nn3+n_fa)) =
VALUE
137 isubstack=iparg(71,ng)
139 IF(igtyp /= 17 . and. igtyp /= 51 .AND. igtyp /= 52)
THEN
143 rho0 = pm(1,ixc(1,n))
144 thk0 = geo(1,ixc(6,n))
149 xx1 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
150 yy1 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
151 zz1 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
152 xx2 = x(1,n4)-d(1,n4)-x(1,n2)+d(1,n2)
153 yy2 = x(2,n4)-d(2,n4)-x(2,n2)+d(2,n2)
154 zz2 = x(3,n4)-d(3,n4)-x(3,n2)+d(3,n2)
155 xx3 = yy1*zz2 - zz1*yy2
156 yy3 = zz1*xx2 - xx1*zz2
157 zz3 = xx1*yy2 - yy1*xx2
158 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
159 mas(el2fa(nn4+n_fa)) = rho0*thk0*a0
168 rho0 = pm(1,ixc(1,n))
169 thk0 = stack%GEO(1,isubstack)
174 xx1 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
175 yy1 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
176 zz1 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
177 xx2 = x(1,n4)-d(1,n4)-x(1,n2)+d(1,n2)
178 yy2 = x(2,n4)-d(2,n4)-x(2,n2)+d(2,n2)
179 zz2 = x(3,n4)-d(3,n4)-x(3,n2)+d(3,n2)
180 xx3 = yy1*zz2 - zz1*yy2
181 yy3 = zz1*xx2 - xx1*zz2
182 zz3 = xx1*yy2 - yy1*xx2
183 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
184 mas(el2fa(nn4+n_fa)) = rho0*thk0*a0
192 isubstack=iparg(71,ng)
194 IF(igtyp /= 17 . and. igtyp /= 51 .AND. igtyp /= 52)
THEN
198 rho0 = pm(1,ixtg(1,n))
199 thk0 = geo(1,ixtg(5,n))
203 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
204 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
205 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
206 xx2 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
207 yy2 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
208 zz2 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
209 xx3 = yy1*zz2 - zz1*yy2
210 yy3 = zz1*xx2 - xx1*zz2
211 zz3 = xx1*yy2 - yy1*xx2
212 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
213 mas(el2fa(nn5+n_fa)) = rho0*thk0*a0
223 rho0 = pm(1,ixtg(1,n))
224 thk0 = stack%GEO(1,isubstack)
229 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
230 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
231 xx2 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
232 yy2 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
233 zz2 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
234 xx3 = yy1*zz2 - zz1*yy2
235 yy3 = zz1*xx2 - xx1*zz2
236 zz3 = xx1*yy2 - yy1*xx2
237 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
238 mas(el2fa(nn5+n_fa)) = rho0*thk0*a0