35 1 OFFG ,AREA ,AREA_I,VQN ,VQ ,
36 2 X13 ,X24 ,Y13 ,Y24 ,MX13 ,
37 3 MX23 ,MX34 ,MY13 ,MY23 ,MY34 ,
39 5 ELBUF_STR,SMSTR,NLAY,IREP ,NPT ,
40 6 ISMSTR,DIR_A ,DIR_B ,
41 7 PID ,MAT ,NGL ,NPLAT,IPLAT ,
42 8 CORELV,OFF ,THK ,NEL)
47 use element_mod ,
only : nixc
49#include "implicit_f.inc"
62 INTEGER IXC(NIXC,*),JFT,JLT,IREP,NPT
63INTEGER NPLAT,NLAY,IPLAT(*)
65 . (NPROPM,*),GEO(NPROPG,*), X(3,*),
66 . MX23(*),MY13(*),MY23(*),MY34(*),
67 . X13(*),X24(*),Y13(*),Y24(*),MX13(*),
68 . VQ(MVSIZ,3,3),AREA(*),Z1(*),MX34(*),VQN(MVSIZ,3,4),AREA_I(*)
71 . dir_a(nel,*),dir_b(nel,*),offg(*),off(*),
72 . corelv(mvsiz,2,4),thk(*)
75 TYPE(elbuf_struct_) :: ELBUF_STR
79 INTEGER NNOD,I,J,K,L,M,II(6),SPLAT,JPLAT(MVSIZ),MAT_1
82 . lxyz0(3),deta1(mvsiz),rx(mvsiz), ry(mvsiz), rz(mvsiz),
83 . sx(mvsiz),sy(mvsiz),r11(mvsiz),r12(mvsiz),r13(mvsiz),
84 . r21(mvsiz),r22(mvsiz),r23(mvsiz),r31(mvsiz),r32(mvsiz),
85 . r33(mvsiz),xl2(mvsiz),xl3(mvsiz),xl4(mvsiz),yl2(mvsiz),
86 . yl3(mvsiz),yl4(mvsiz),ssz(mvsiz),
87 . l13(mvsiz),l24(mvsiz),ll(mvsiz),
88 . tol,x13_2(mvsiz),y13_2(mvsiz),x24_2(mvsiz),y24_2(mvsiz),
89 . z2(mvsiz),a_4,sz,sz1,sz2,sl,s1,
93 . xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4,zz1,zz2,zz3,zz4
110 rx(i)=x(1,ixc(3,i))+x(1,ixc(4,i))-x(1,ixc(2,i))-x(1,ixc(5,i))
111 sx(i)=x(1,ixc(4,i))+x(1,ixc(5,i))-x(1,ixc(2,i))-x(1,ixc(3,i))
112 ry(i)=x(2,ixc(3,i))+x(2,ixc(4,i))-x(2,ixc(2,i))-x(2,ixc(5,i))
113 sy(i)=x(2,ixc(4,i))+x(2,ixc(5,i))-x(2,ixc(2,i))-x(2,ixc(3,i))
114 rz(i)=x(3,ixc(3,i))+x(3,ixc(4,i))-x(3,ixc(2,i))-x(3,ixc(5,i))
115 ssz(i)=x(3,ixc(4,i))+x(3,ixc(5,i))-x(3,ixc(2,i))-x(3,ixc(3,i))
121 . r11,r12,r13,r21,r22,r23,r31,r32,r33,deta1,offg )
123 area(i)=fourth*deta1(i)
124 area_i(i)=one/area(i)
143 lxyz0(1)=fourth*(x(1,l)+x(1,m)+x(1,j)+x(1,k))
144 lxyz0(2)=fourth*(x(2,l)+x(2,m)+x(2,j)+x(2,k))
145 lxyz0(3)=fourth*(x(3,l)+x(3,m)+x(3,j)+x(3,k))
151 xl2(i)=r11(i)*xx1+r21(i)*yy1+r31(i)*zz1
152 yl2(i)=r12(i)*xx1+r22(i)*yy1+r32(i)*zz1
157 z1(i)=r13(i)*xx2+r23(i)*yy2+r33(i)*zz2
162 xl3(i)=r11(i)*xx3+r21(i)*yy3+r31(i)*zz3
163 yl3(i)=r12(i)*xx3+r22(i)*yy3+r32(i)*zz3
168 xl4(i)=r11(i)*xx4+r21(i)*yy4+r31(i)*zz4
169 yl4(i)=r12(i)*xx4+r22(i)*yy4+r32(i)*zz4
174 IF(ismstr==1.OR.ismstr==2)
THEN
176 IF(abs(offg(i))==two)
THEN
177 xl2(i)=smstr(ii(1)+i)
178 yl2(i)=smstr(ii(2)+i)
179 xl3(i)=smstr(ii(3)+i)
180 yl3(i)=smstr(ii(4)+i)
181 xl4(i)=smstr(ii(5)+i)
182 yl4(i)=smstr(ii(6)+i)
185 . ((xl2(i)-xl4(i))*yl3(i)-xl3(i)*(yl2(i)-yl4(i)))
186 area_i(i)=one/
max(em20,area(i))
188 smstr(ii(1)+i)=xl2(i)
189 smstr(ii(2)+i)=yl2(i)
190 smstr(ii(3)+i)=xl3(i)
191 smstr(ii(4)+i)=yl3(i)
192 smstr(ii(5)+i)=xl4(i)
193 smstr(ii(6)+i)=yl4(i)
199 IF(offg(i)==one)offg(i)=two
206 CALL cortdir3(elbuf_str,dir_a,dir_b ,jft ,jlt ,
207 . nlay ,irep ,rx ,ry ,rz ,
208 . sx ,sy ,ssz ,r11 ,r21 ,
209 . r31 ,r12 ,r22 ,r32 ,nel )
213 lxyz0(1)=fourth*(xl2(i)+xl3(i)+xl4(i))
214 lxyz0(2)=fourth*(yl2(i)+yl3(i)+yl4(i))
215 corelv(i,1,1)=-lxyz0(1)
216 corelv(i,1,2)=xl2(i)-lxyz0(1)
217 corelv(i,1,3)=xl3(i)-lxyz0(1)
218 corelv(i,1,4)=xl4(i)-lxyz0(1)
219 corelv(i,2,1)=-lxyz0(2)
220 corelv(i,2,2)=yl2(i)-lxyz0(2)
221 corelv(i,2,3)=yl3(i)-lxyz0(2)
222 corelv(i,2,4)=yl4(i)-lxyz0(2)
223 x13(i)=(corelv(i,1,1)-corelv(i,1,3))*half
224 x24(i)=(corelv(i,1,2)-corelv(i,1,4))*half
225 y13(i)=(corelv(i,2,1)-corelv(i,2,3))*half
226 y24(i)=(corelv(i,2,2)-corelv(i,2,4))*half
228 mx13(i)=(corelv(i,1,1)+corelv(i,1,3))*half
229 mx23(i)=(corelv(i,1,2)+corelv(i,1,3))*half
230 mx34(i)=(corelv(i,1,3)+corelv(i,1,4))*half
231 my13(i)=(corelv(i,2,1)+corelv(i,2,3))*half
232 my23(i)=(corelv(i,2,2)+corelv(i,2,3))*half
233 my34(i)=(corelv(i,2,3)+corelv(i,2,4))*half
235 x13_2(i) =x13(i)*x13(i)
236 y13_2(i) =y13(i)*y13(i)
237 x24_2(i) =x24(i)*x24(i)
238 y24_2(i) =y24(i)*y24(i)
239 l13(i)=x13_2(i)+y13_2(i)
240 l24(i)=x24_2(i)+y24_2(i)
241 ll(i)=half*(l13(i)+l24(i))
242 s1=em01*thk(i)*thk(i)
245 IF (imp_chk > 0)
THEN
248 j1=(mx23(i)*my13(i)-mx13(i)*my23(i))*s1
249 j2=-(mx13(i)*my34(i)-mx34(i)*my13(i))*s1
255 IF(offg(i)/=zero)
THEN
256 IF(xx1<=zero.OR.xx2<=zero.OR.
257 . xx3<=zero.OR.xx4<=zero)
THEN
259 WRITE(iout ,2001) ngl(i)
260#include "lockoff.inc"
270 IF (z2(i)<ll(i)*tol.OR.npt==1)
THEN
279 sz1=mx13(i)*y24(i)-my13(i)*x24(i)
282 sl=one/sqrt(sz+sz2*sz2)
283 vqn(i,1,1)=-z1(i)*y24(i)
284 vqn(i,2,1)= z1(i)*x24(i)
286 vqn(i,1,3)=-vqn(i,1,1)
287 vqn(i,2,3)=-vqn(i,2,1)
288 vqn(i,1,1)= vqn(i,1,1)*sl
289 vqn(i,2,1)= vqn(i,2,1)*sl
292 sl=one/sqrt(sz+sz2*sz2)
293 vqn(i,1,3)= vqn(i,1,3)*sl
294 vqn(i,2,3)= vqn(i,2,3)*sl
297 sz1=mx13(i)*y13(i)-my13(i)*x13(i)
300 sl=one/sqrt(sz+sz2*sz2)
301 vqn(i,1,2)=-z1(i)*y13(i)
302 vqn(i,2,2)= z1(i)*x13(i)
304 vqn(i,1,4)=-vqn(i,1,2)
305 vqn(i,2,4)=-vqn(i,2,2)
306 vqn(i,1,2)= vqn(i,1,2)*sl
307 vqn(i,2,2)= vqn(i,2,2)*sl
310 sl=one/sqrt(sz+sz2*sz2)
311 vqn(i,1,4)= vqn(i,1,4)*sl
312 vqn(i,2,4)= vqn(i,2,4)*sl
320 IF (z1(i)==zero)
THEN
329 iplat(i)=jplat(i-nplat)
337 2001
FORMAT(/
' ZERO OR NEGATIVE SHELL SUB-AREA : ELEMENT NB:',i8/)