34 1 OFFG ,AREA ,AREA_I,VQN ,VQ ,
35 2 X13 ,X24 ,Y13 ,Y24 ,MX13 ,
36 3 MX23 ,MX34 ,MY13 ,MY23 ,MY34 ,
38 5 ELBUF_STR,SMSTR,NLAY,IREP ,NPT ,
39 6 ISMSTR,DIR_A ,DIR_B ,
40 7 PID ,MAT ,NGL ,NPLAT,IPLAT ,
41 8 CORELV,OFF ,THK ,NEL)
47#include "implicit_f.inc"
60 INTEGER IXC(NIXC,*),JFT,JLT,IREP,NPT,ISMSTR,PID(*),MAT(*),NGL(*),NEL
61 INTEGER NPLAT,NLAY,IPLAT(*)
63 . PM(NPROPM,*),GEO(NPROPG,*), X(3,*),
64 . MX23(*),MY13(*),MY23(*),MY34(*),
65 . X13(*),X24(*),Y13(*),Y24(*),MX13(*),
66 . VQ(MVSIZ,3,3),AREA(*),Z1(*),MX34(*),VQN(MVSIZ,3,4),AREA_I(*)
69 . dir_a(nel,*),dir_b(nel,*),offg(*),off(*),
70 . corelv(mvsiz,2,4),thk(*)
73 TYPE(elbuf_struct_) :: ELBUF_STR
77 INTEGER NNOD,I,J,K,L,M,II(6),SPLAT,JPLAT(MVSIZ),MAT_1
80 . lxyz0(3),deta,deta1(mvsiz),rx(mvsiz), ry(mvsiz), rz(mvsiz),
81 . sx(mvsiz),sy(mvsiz),r11(mvsiz),r12(mvsiz),r13(mvsiz),
82 . r21(mvsiz),r22(mvsiz),r23(mvsiz),r31(mvsiz),r32(mvsiz),
83 . r33(mvsiz),xl2(mvsiz),xl3(mvsiz),xl4(mvsiz),yl2(mvsiz),
84 . yl3(mvsiz),yl4(mvsiz),ssz(mvsiz),
85 . vcore(3,nnod),l13(mvsiz),l24(mvsiz),ll(mvsiz),
86 . tol,x13_2(mvsiz),y13_2(mvsiz),x24_2(mvsiz),y24_2(mvsiz),
87 . z2(mvsiz),a_4,sz,sz1,sz2,sl,c1,c2,s1,
88 . ar(3),ad(nnod),btb(3),xx,yy,zz,xy,d(6),
89 . alr(3),ald(nnod),dbad(3),btb_c,j0,j1,j2
91 . xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4,zz1,zz2,zz3,zz4
108 rx(i)=x(1,ixc(3,i))+x(1,ixc(4,i))-x(1,ixc(2,i))-x(1,ixc(5,i))
109 sx(i)=x(1,ixc(4,i))+x(1,ixc(5,i))-x(1,ixc(2,i))-x(1,ixc(3,i))
110 ry(i)=x(2,ixc(3,i))+x(2,ixc(4,i))-x(2,ixc(2,i))-x(2,ixc(5,i))
111 sy(i)=x(2,ixc(4,i))+x(2,ixc(5,i))-x(2,ixc(2,i))-x(2,ixc(3,i))
112 rz(i)=x(3,ixc(3,i))+x(3,ixc(4,i))-x(3,ixc(2,i))-x(3,ixc(5,i))
113 ssz(i)=x(3,ixc(4,i))+x(3,ixc(5,i))-x(3,ixc(2,i))-x(3,ixc(3,i))
119 . r11,r12,r13,r21,r22,r23,r31,r32,r33,deta1,offg )
121 area(i)=fourth*deta1(i)
122 area_i(i)=one/area(i)
141 lxyz0(1)=fourth*(x(1,l)+x(1,m)+x(1,j)+x(1,k))
142 lxyz0(2)=fourth*(x(2,l)+x(2,m)+x(2,j)+x(2,k))
143 lxyz0(3)=fourth*(x(3,l)+x(3,m)+x(3,j)+x(3,k))
149 xl2(i)=r11(i)*xx1+r21(i)*yy1+r31(i)*zz1
150 yl2(i)=r12(i)*xx1+r22(i)*yy1+r32(i)*zz1
155 z1(i)=r13(i)*xx2+r23(i)*yy2+r33(i)*zz2
160 xl3(i)=r11(i)*xx3+r21(i)*yy3+r31(i)*zz3
161 yl3(i)=r12(i)*xx3+r22(i)*yy3+r32(i)*zz3
166 xl4(i)=r11(i)*xx4+r21(i)*yy4+r31(i)*zz4
167 yl4(i)=r12(i)*xx4+r22(i)*yy4+r32(i)*zz4
172 IF(ismstr==1.OR.ismstr==2)
THEN
174 IF(abs(offg(i))==two)
THEN
175 xl2(i)=smstr(ii(1)+i)
176 yl2(i)=smstr(ii(2)+i)
177 xl3(i)=smstr(ii(3)+i)
178 yl3(i)=smstr(ii(4)+i)
180 yl4(i)=smstr(ii(6)+i)
183 . ((xl2(i)-xl4(i))*yl3(i)-xl3(i)*(yl2(i)-yl4(i)))
184 area_i(i)=one/
max(em20,area(i))
186 smstr(ii(1)+i)=xl2(i)
187 smstr(ii(2)+i)=yl2(i)
188 smstr(ii(3)+i)=xl3(i)
189 smstr(ii(4)+i)=yl3(i)
190 smstr(ii(5)+i)=xl4(i)
191 smstr(ii(6)+i)=yl4(i)
197 IF(offg(i)==one)offg(i)=two
204 CALL cortdir3(elbuf_str,dir_a,dir_b ,jft ,jlt ,
205 . nlay ,irep ,rx ,ry ,rz ,
206 . sx ,sy ,ssz ,r11 ,r21 ,
207 . r31 ,r12 ,r22 ,r32 ,nel )
211 lxyz0(1)=fourth*(xl2(i)+xl3(i)+xl4(i))
212 lxyz0(2)=fourth*(yl2(i)+yl3(i)+yl4(i))
213 corelv(i,1,1)=-lxyz0(1)
214 corelv(i,1,2)=xl2(i)-lxyz0(1)
215 corelv(i,1,3)=xl3(i)-lxyz0(1)
216 corelv(i,1,4)=xl4(i)-lxyz0(1)
217 corelv(i,2,1)=-lxyz0(2)
218 corelv(i,2,2)=yl2(i)-lxyz0(2)
219 corelv(i,2,3)=yl3(i)-lxyz0(2)
220 corelv(i,2,4)=yl4(i)-lxyz0(2)
221 x13(i)=(corelv(i,1,1)-corelv(i,1,3))*half
222 x24(i)=(corelv(i,1,2)-corelv(i,1,4))*half
223 y13(i)=(corelv(i,2,1)-corelv(i,2,3))*half
224 y24(i)=(corelv(i,2,2)-corelv(i,2,4))*half
226 mx13(i)=(corelv(i,1,1)+corelv(i,1,3))*half
227 mx23(i)=(corelv(i,1,2)+corelv(i,1,3))*half
228 mx34(i)=(corelv(i,1,3)+corelv(i,1,4))*half
229 my13(i)=(corelv(i,2,1)+corelv(i,2,3))*half
230 my23(i)=(corelv(i,2,2)+corelv(i,2,3))*half
231 my34(i)=(corelv(i,2,3)+corelv(i,2,4))*half
233 x13_2(i) =x13(i)*x13(i)
234 y13_2(i) =y13(i)*y13(i)
235 x24_2(i) =x24(i)*x24(i)
236 y24_2(i) =y24(i)*y24(i)
237 l13(i)=x13_2(i)+y13_2(i)
238 l24(i)=x24_2(i)+y24_2(i)
239 ll(i)=half*(l13(i)+l24(i))
240 s1=em01*thk(i)*thk(i)
243 IF (imp_chk > 0)
THEN
246 j1=(mx23(i)*my13(i)-mx13(i)*my23(i))*s1
247 j2=-(mx13(i)*my34(i)-mx34(i)*my13(i))*s1
253 IF(offg(i)/=zero)
THEN
254 IF(xx1<=zero.OR.xx2<=zero.OR.
255 . xx3<=zero.OR.xx4<=zero)
THEN
257 WRITE(iout ,2001) ngl(i)
258#include "lockoff.inc"
268 IF (z2(i)<ll(i)*tol.OR.npt==1)
THEN
277 sz1=mx13(i)*y24(i)-my13(i)*x24(i)
280 sl=one/sqrt(sz+sz2*sz2)
281 vqn(i,1,1)=-z1(i)*y24(i)
282 vqn(i,2,1)= z1(i)*x24(i)
284 vqn(i,1,3)=-vqn(i,1,1)
285 vqn(i,2,3)=-vqn(i,2,1)
286 vqn(i,1,1)= vqn(i,1,1)*sl
287 vqn(i,2,1)= vqn(i,2,1)*sl
290 sl=one/sqrt(sz+sz2*sz2)
291 vqn(i,1,3)= vqn(i,1,3)*sl
292 vqn(i,2,3)= vqn(i,2,3)*sl
295 sz1=mx13(i)*y13(i)-my13(i)*x13(i)
298 sl=one/sqrt(sz+sz2*sz2)
299 vqn(i,1,2)=-z1(i)*y13(i)
300 vqn(i,2,2)= z1(i)*x13(i)
302 vqn(i,1,4)=-vqn(i,1,2)
303 vqn(i,2,4)=-vqn(i,2,2)
304 vqn(i,1,2)= vqn(i,1,2)*sl
305 vqn(i,2,2)= vqn(i,2,2)*sl
308 sl=one/sqrt(sz+sz2*sz2)
309 vqn(i,1,4)= vqn(i,1,4)*sl
310 vqn(i,2,4)= vqn(i,2,4)*sl
318 IF (z1(i)==zero)
THEN
327 iplat(i)=jplat(i-nplat)
335 2001
FORMAT(/
' ZERO OR NEGATIVE SHELL SUB-AREA : ELEMENT NB:',i8/)