61
62
63
64 USE elbufdef_mod
65
66#include "implicit_f.inc"
67
68
69
70#include "mvsiz_p.inc"
71#include "param_c.inc"
72#include "parit_c.inc"
73#include "scr05_c.inc"
74#include "scr17_c.inc"
75#include "com08_c.inc"
76#include "impl1_c.inc"
77
78
79
80 LOGICAL PLAT(*)
81 INTEGER, INTENT(IN) :: NUMNOD,NUMELC
82 INTEGER IXC(NIXC,*),JFT,JLT,IREP,NPT,NLAY,ISMSTR,IDRIL,IXFEM,NEL
84 . pm(npropm,*), x(3,*), v(3,*), vr(3,*),rlxyz(mvsiz,2,4),
85 . v13(mvsiz,3),v24(mvsiz,3),vhi(mvsiz,3),mx23(nel),my13(nel),my23(nel),my34(nel),
86 . ll(nel),l13(nel),l24(nel),x13(nel),x24(nel),y13(nel),y24(nel),mx13(nel),
87 . vq(mvsiz,3,3),
area(nel),z1(nel),mx34(nel),vqn(mvsiz,3,4),area_i(nel),
88 . corel(mvsiz,2,4),di(mvsiz,6),db(mvsiz,3,4),dir_a(nel,*),dir_b(nel,*),offg(nel),
89 . rlxyzv(mvsiz,2,4),corelv(mvsiz,2,4),facn(mvsiz,2),px2(*),
90 . py1(nel), py2(nel),r11(mvsiz),r12(mvsiz),r13(mvsiz),
91 . r21(mvsiz),r22(mvsiz),r23(mvsiz),r31(mvsiz),r32(mvsiz),
92 . r33(mvsiz),rlz(mvsiz,4),diz(mvsiz,3),thk(*),
93 . vx1(mvsiz),vx2(mvsiz),vx3(mvsiz),vx4(mvsiz),
94 . vy1(mvsiz),vy2(mvsiz),vy3(mvsiz),vy4(mvsiz),
95 . vz1(mvsiz),vz2(mvsiz),vz3(mvsiz),vz4(mvsiz),
96 . vrx1(mvsiz),vrx2(mvsiz),vrx3(mvsiz),vrx4(mvsiz),
97 . vry1(mvsiz),vry2(mvsiz),vry3(mvsiz),vry4(mvsiz),
98 . vrz1(mvsiz),vrz2(mvsiz),vrz3(mvsiz),vrz4(mvsiz),
99 . x1g(mvsiz),x2g(mvsiz),x3g(mvsiz),x4g(mvsiz),
100 . y1g(mvsiz),y2g(mvsiz),y3g(mvsiz),y4g(mvsiz),
101 . z1g(mvsiz),z2g(mvsiz),z3g(mvsiz),z4g(mvsiz),
102 . ux1(mvsiz),ux2(mvsiz),ux3(mvsiz),ux4(mvsiz),
103 . uy1(mvsiz),uy2(mvsiz),uy3(mvsiz),uy4(mvsiz),
104 . xl2(mvsiz),xl3(mvsiz),xl4(mvsiz),
105 . yl2(mvsiz),yl3(mvsiz),yl4(mvsiz),
106 . z2(mvsiz),vl1(mvsiz,3),vl2(mvsiz,3),vl3(mvsiz,3),vl4(mvsiz,3)
107 TYPE (ELBUF_STRUCT_) :: ELBUF_STR
108 double precision
109 . smstr(*)
110
111
112
113 INTEGER IXCTMP2,IXCTMP3,IXCTMP4,IXCTMP5
114 INTEGER NNOD,I,J,K,L,II(6)
115 parameter(nnod = 4)
117 . lxyz0(3),deta,deta1(mvsiz),rx(mvsiz), ry(mvsiz), rz(mvsiz),
118 . sx(mvsiz),sy(mvsiz),ssz(mvsiz),
119 . vcore(3,nnod),rrxyz(3,nnod),vg13(3),vg24(3),vghi(3),
120 . tol,x13_2(mvsiz),y13_2(mvsiz),x24_2(mvsiz),y24_2(mvsiz),
121 . a_4,sz,sz1,sz2,sl,c1,c2,s1,
122 . vlxyz(3,nnod),ar(3),ad(nnod),btb(6),xx,yy,zz,xy,xz,yz,
123 . abc,xxyz2,yyxz2,zzxy2,d(6),diz1(6),
124 . alr(3),ald(nnod),dbad(3),btb_c,
125 . hs(mvsiz),faci,fac1,fac2,lm(mvsiz),facdt,
126 . dt05,dt025,exz,eyz,ddrx,ddry,v13x,v24x,vhix,ddrz1,ddrz2
128
129
130 IF(iresp == 1)THEN
131 tol=em7
132 ELSE
133 tol=em8
134 END IF
135
136 DO i=1,6
137 ii(i) = nel*(i-1)
138 ENDDO
139
140 IF(ixfem==0)THEN
141 DO i=jft,jlt
142 ixctmp2=ixc(2,i)
143 ixctmp3=ixc(3,i)
144 ixctmp4=ixc(4,i)
145 ixctmp5=ixc(5,i)
146
147 rx(i)=x(1,ixctmp3)+x(1,ixctmp4)-x(1,ixctmp2)-x(1,ixctmp5)
148 sx(i)=x(1,ixctmp4)+x(1,ixctmp5)-x(1,ixctmp2)-x(1,ixctmp3)
149 ry(i)=x(2,ixctmp3)+x(2,ixctmp4)-x(2,ixctmp2)-x(2,ixctmp5)
150 sy(i)=x(2,ixctmp4)+x(2,ixctmp5)-x(2,ixctmp2)-x(2,ixctmp3)
151 rz(i)=x(3,ixctmp3)+x(3,ixctmp4)-x(3,ixctmp2)-x(3,ixctmp5)
152 ssz(i)=x(3,ixctmp4)+x(3,ixctmp5)-x(3,ixctmp2)-x(3,ixctmp3)
153 ENDDO
154 ELSE IF(ixfem==1)THEN
155 DO i=jft,jlt
156 rx(i)=x2g(i)+x3g(i)-x1g(i)-x4g(i)
157 sx(i)=x3g(i)+x4g(i)-x1g(i)-x2g(i)
158 ry(i)=y2g(i)+y3g(i)-y1g(i)-y4g(i)
159 sy(i)=y3g(i)+y4g(i)-y1g(i)-y2g(i)
160 rz(i)=z2g(i)+z3g(i)-z1g(i)-z4g(i)
161 ssz(i)=z3g(i)+z4g(i)-z1g(i)-z2g(i)
162 ENDDO
163 END IF
164
165
166
167 k = 0
169 . rx, ry, rz,
170 . sx, sy, ssz,
171 . r11,r12,r13,r21,r22,r23,r31,r32,r33,deta1,offg )
172 DO i=jft,jlt
173 area(i)=fourth*deta1(i)
174 off_loc = zero
175 IF(abs(offg(i))/=zero) off_loc = one
176 area_i(i)=off_loc/
area(i)
177 area_i(i) =
max(area_i(i),em20)
178 vq(i,1,1)=r11(i)
179 vq(i,2,1)=r21(i)
180 vq(i,3,1)=r31(i)
181 vq(i,1,2)=r12(i)
182 vq(i,2,2)=r22(i)
183 vq(i,3,2)=r32(i)
184 vq(i,1,3)=r13(i)
185 vq(i,2,3)=r23(i)
186 vq(i,3,3)=r33(i)
187 ENDDO
188
189
190
191 IF(ixfem==0)THEN
192 DO i=jft,jlt
193 ixctmp2=ixc(2,i)
194 ixctmp3=ixc(3,i)
195 ixctmp4=ixc(4,i)
196 ixctmp5=ixc(5,i)
197
198 lxyz0(1)=fourth*(x(1,ixctmp4)+x(1,ixctmp5) + x(1,ixctmp2)+x(1,ixctmp3))
199 lxyz0(2)=fourth*(x(2,ixctmp4)+x(2,ixctmp5) + x(2,ixctmp2)+x(2,ixctmp3))
200 lxyz0(3)=fourth*(x(3,ixctmp4)+x(3,ixctmp5) + x(3,ixctmp2)+x(3,ixctmp3))
201
202 j=ixctmp2
203 k=ixctmp3
204 xx=x(1,k)-x(1,j)
205 yy=x(2,k)-x(2,j)
206 zz=x(3,k)-x(3,j)
207 xl2(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
208 yl2(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
209 xx=x(1,j)-lxyz0(1)
210 yy=x(2,j)-lxyz0(2)
211 zz=x(3,j)-lxyz0(3)
212 z1(i)=r13(i)*xx+r23(i)*yy+r33(i)*zz
213 k=ixctmp4
214 xx=x(1,k)-x(1,j)
215 yy=x(2,k)-x(2,j)
216 zz=x(3,k)-x(3,j)
217 xl3(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
218 yl3(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
219 k=ixctmp5
220 xx=x(1,k)-x(1,j)
221 yy=x(2,k)-x(2,j)
222 zz=x(3,k)-x(3,j)
223 xl4(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
224 yl4(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
225 z2(i) = z1(i)*z1(i)
226 ENDDO
227 ELSE IF(ixfem==1)THEN
228 DO i=jft,jlt
229 lxyz0(1)=fourth*(x3g(i)+x4g(i)+x1g(i)+x2g(i))
230 lxyz0(2)=fourth*(y3g(i)+y4g(i)+y1g(i)+y2g(i))
231 lxyz0(3)=fourth*(z3g(i)+z4g(i)+z1g(i)+z2g(i))
232 xx=x2g(i)-x1g(i)
233 yy=y2g(i)-y1g(i)
234 zz=z2g(i)-z1g(i)
235 xl2(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
236 yl2(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
237 xx=x1g(i)-lxyz0(1)
238 yy=y1g(i)-lxyz0(2)
239 zz=z1g(i)-lxyz0(3)
240 z1(i)=r13(i)*xx+r23(i)*yy+r33(i)*zz
241 xx=x3g(i)-x1g(i)
242 yy=y3g(i)-y1g(i)
243 zz=z3g(i)-z1g(i)
244 xl3(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
245 yl3(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
246 xx=x4g(i)-x1g(i)
247 yy=y4g(i)-y1g(i)
248 zz=z4g(i)-z1g(i)
249 xl4(i)=r11(i)*xx+r21(i)*yy+r31(i)*zz
250 yl4(i)=r12(i)*xx+r22(i)*yy+r32(i)*zz
251 z2(i) = z1(i)*z1(i)
252 ENDDO
253 END IF
254
255
256
257 IF(ismstr == 11)THEN
258#include "vectorize.inc"
259 DO i=jft,jlt
260 IF(abs(offg(i)) == one)offg(i)=sign(two,offg(i))
261 ux1(i) = zero
262 uy1(i) = zero
263 ux2(i) = zero
264 uy2(i) = zero
265 ux3(i) = zero
266 uy3(i) = zero
267 ux4(i) = zero
268 uy4(i) = zero
269 IF(abs(offg(i)) == two)THEN
270 ux2(i) = xl2(i)-smstr(ii(1)+i)
271 uy2(i) = yl2(i)-smstr(ii(2)+i)
272 ux3(i) = xl3(i)-smstr(ii(3)+i)
273 uy3(i) = yl3(i)-smstr(ii(4)+i)
274 ux4(i) = xl4(i)-smstr(ii(5)+i)
275 uy4(i) = yl4(i)-smstr(ii(6)+i)
276 xl2(i) = smstr(ii(1)+i)
277 yl2(i) = smstr(ii(2)+i)
278 xl3(i) = smstr(ii(3)+i)
279 yl3(i) = smstr(ii(4)+i)
280 xl4(i) = smstr(ii(5)+i)
281 yl4(i) = smstr(ii(6)+i)
282 z1(i) = zero
283 area(i) = half*((xl2(i)-xl4(i))*yl3(i)-xl3(i)*(yl2(i)-yl4(i)))
284 area_i(i) = one/
max(em20,
area(i))
285 ELSE
286 smstr(ii(1)+i) = xl2(i)
287 smstr(ii
288 smstr(ii(3)+i) = xl3(i)
289 smstr(ii(4)+i) = yl3(i)
290 smstr(ii(5)+i) = xl4(i)
291 smstr(ii(6)+i) = yl4(i)
292 ENDIF
293 ENDDO
294 ELSEIF(ismstr == 1.OR.ismstr == 2)THEN
295#include "vectorize.inc"
296 DO i=jft,jlt
297 IF(abs(offg(i)) == two)THEN
298 xl2(i) = smstr(ii(1)+i)
299 yl2(i) = smstr(ii(2)+i)
300 xl3(i) = smstr(ii(3)+i)
301 yl3(i) = smstr(ii(4)+i)
302 xl4(i) = smstr(ii(5)+i)
303 yl4(i) = smstr(ii(6)+i)
304 z1(i) = zero
305 area(i) = half*((xl2(i)-xl4(i))*yl3(i)-xl3(i)*(yl2(i)-yl4(i)))
306 area_i(i) = one/
max(em20,
area(i))
307 ELSE
308 smstr(ii(1)+i)=xl2(i)
309 smstr(ii(2)+i)=yl2(i)
310 smstr(ii(3)+i)=xl3(i)
311 smstr(ii(4)+i)=yl3(i)
312 smstr(ii(5)+i)=xl4(i)
313 smstr(ii(6)+i)=yl4(i)
314 ENDIF
315 ENDDO
316 ENDIF
317 IF(ismstr == 1)THEN
318 DO i=jft,jlt
319 IF(offg(i) == one)offg(i)=two
320 ENDDO
321 ENDIF
322
323
324
325 CALL cortdir3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
326 . nlay ,irep ,rx ,ry ,rz ,
327 . sx ,sy ,ssz ,r11 ,r21 ,
328 . r31 ,r12 ,r22 ,r32 ,nel )
329
330 IF (ivector == 1)THEN
331 ELSE
332
333 DO i=jft,jlt
334 lxyz0(1)=fourth*(xl2(i)+xl3(i)+xl4(i))
335 lxyz0(2)=fourth*(yl2(i)+yl3(i)+yl4(i))
336 corel(i,1,1)=-lxyz0(1)
337 corel(i,1,2)=xl2(i)-lxyz0(1)
338 corel(i,1,3)=xl3(i)-lxyz0(1)
339 corel(i,1,4)=xl4(i)-lxyz0(1)
340 corel(i,2,1)=-lxyz0(2)
341 corel(i,2,2)=yl2(i)-lxyz0(2)
342 corel(i,2,3)=yl3(i)-lxyz0(2)
343 corel(i,2,4)=yl4(i)-lxyz0(2)
344 x13(i)=(corel(i,1,1)-corel(i,1,3))*half
345 x24(i)=(corel(i,1,2)-corel(i,1,4))*half
346 y13(i)=(corel(i,2,1)-corel(i,2,3))*half
347 y24(i)=(corel(i,2,2)-corel(i,2,4))*half
348
349 mx13(i)=(corel(i,1,1)+corel(i,1,3))*half
350 mx23(i)=(corel(i,1,2)+corel(i,1,3))*half
351 mx34(i)=(corel(i,1,3)+corel(i,1,4))*half
352 my13(i)=(corel(i,2,1)+corel(i,2,3))*half
353 my23(i)=(corel(i,2,2)+corel(i,2,3))*half
354 my34(i)=(corel(i,2,3)+corel(i,2,4))*half
355
356 py1(i) = -x24(i)
357 px2(i) = -y13(i)
358 py2(i) = x13(i)
359
360 x13_2(i) =x13(i)*x13(i)
361 y13_2(i) =y13(i)*y13(i)
362 x24_2(i) =x24(i)*x24(i)
363 y24_2(i) =y24(i)*y24(i)
364 l13(i)=x13_2(i)+y13_2(i)
365
366 l24(i)=x24_2(i)+y24_2(i)
367
368 c1 =corel(i,1,2)*corel(i,2,4)-corel(i,2,2)*corel(i,1,4)
369 c2 =corel(i,1,1)*corel(i,2,3)-corel(i,2,1)*corel(i,1,3)
370 hs(i) =
max(abs(c1),abs(c2))*area_i(i)
371
372 ENDDO
373 ENDIF
374
375
376
377 facdt = five_over_4
378
379 IF (idt1sh>0) facdt =four_over_3
380 DO i=jft,jlt
381 rx(i)=xl2(i)+xl3(i)-xl4(i)
382 ry(i)=yl2(i)+yl3(i)-yl4(i)
383 sx(i)=-xl2(i)+xl3(i)+xl4(i)
384 sy(i)=-yl2(i)+yl3(i)+yl4(i)
385 c1=sqrt(rx(i)*rx(i)+ry(i)*ry(i))
386 c2=sqrt(sx(i)*sx(i)+sy(i)*sy(i))
387 s1=fourth*(
max(c1,c2)/
min(c1,c2)-one)
388 fac1=
min(half,s1)+one
389 fac2=four*
area(i)/(c1*c2)
390 fac2=3.413*
max(zero,fac2-0.7071)
391 fac2=0.78+0.22*fac2*fac2*fac2
392 faci=two*fac1*fac2
393
394 ll(i)=
max(l13(i),l24(i))
395 lm(i)=half*(l13(i)+l24(i))
396 facn(i,1)=sqrt(l24(i)/ll(i))
397 facn(i,2)=sqrt(l13(i)/ll(i))
398 s1 = sqrt(faci*(facdt+hs(i))*ll(i))
401 ENDDO
402
403 IF (impl_s>0) THEN
404 DO i=jft,jlt
405 s1=em01*thk(i)*thk(i)
407 ENDDO
408 END IF
409 IF (ivector == 1)THEN
410 ELSE
411 IF(ixfem==0)THEN
412 DO i=jft,jlt
413 k=ixc(2,i)
414 rlxyz(i,1,1) =vq(i,1,1)*vr(1,k)+vq(i,2,1)*vr(2,k)+vq(i,3,1)*vr(3,k)
415 rlxyz(i,2,1) =vq(i,1,2)*vr(1,k)+vq(i,2,2)*vr(2,k)+vq(i,3,2)*vr(3,k)
416 k=ixc(3,i)
417 rlxyz(i,1,2) =vq(i,1,1)*vr(1,k)+vq(i,2,1)*vr(2,k)+vq(i,3,1)*vr(3,k)
418 rlxyz(i,2,2) =vq(i,1,2)*vr(1,k)+vq(i,2,2)*vr(2,k)+vq(i,3,2)*vr(3,k)
419 k=ixc(4,i)
420 rlxyz(i,1,3) =vq(i,1,1)*vr(1,k)+vq(i,2,1)*vr(2,k)+vq(i,3,1)*vr(3,k)
421 rlxyz(i,2,3) =vq(i,1,2)*vr(1,k)+vq(i,2,2)*vr(2,k)+vq(i,3,2)*vr(3,k)
422 k=ixc(5,i)
423 rlxyz(i,1,4) =vq(i,1,1)*vr(1,k)+vq(i,2,1)*vr(2,k)+vq(i,3,1)*vr(3,k)
424 rlxyz(i,2,4) =vq(i,1,2)*vr(1,k)+vq(i,2,2)*vr(2,k)+vq(i,3,2)*vr(3,k)
425 ENDDO
426 ELSE IF(ixfem==1)THEN
427 DO i=jft,jlt
428
429 rlxyz(i,1,1) =vq(i,1,1)*vrx1(i)+vq(i,2,1)*vry1(i)+vq(i,3,1)*vrz1(i)
430 rlxyz(i,2,1) =vq(i,1,2)*vrx1(i)+vq(i,2,2)*vry1(i)+vq(i,3,2)*vrz1(i)
431
432 rlxyz(i,1,2) =vq(i,1,1)*vrx2(i)+vq(i,2,1)*vry2(i)+vq(i,3,1)*vrz2(i)
433 rlxyz(i,2,2) =vq(i,1,2)*vrx2(i)+vq(i,2,2)*vry2(i)+vq(i,3,2)*vrz2(i)
434
435 rlxyz(i,1,3) =vq(i,1,1)*vrx3(i)+vq(i,2,1)*vry3(i)+vq(i,3,1)*vrz3(i)
436 rlxyz(i,2,3) =vq(i,1,2)*vrx3(i)+vq(i,2,2)*vry3(i)+vq(i,3,2)*vrz3(i)
437
438 rlxyz(i,1,4) =vq(i,1,1)*vrx4(i)+vq(i,2,1)*vry4(i)+vq(i,3,1)*vrz4(i)
439 rlxyz(i,2,4) =vq(i,1,2)*vrx4(i)+vq(i,2,2)*vry4(i)+vq(i,3,2)*vrz4(i)
440 ENDDO
441 ENDIF
442 ENDIF
443
444 IF(ixfem==0)THEN
445 DO i=jft,jlt
446
447 ixctmp2=ixc(2,i)
448 ixctmp3=ixc(3,i)
449 ixctmp4=ixc(4,i)
450 ixctmp5=ixc(5,i)
451
452 vl1(i,1)=v(1,ixctmp2)
453 vl1(i,2)=v(2,ixctmp2)
454 vl1(i,3)=v(3,ixctmp2)
455 vl2(i,1)=v(1,ixctmp3)
456 vl2(i,2)=v(2,ixctmp3)
457 vl2(i,3)=v(3,ixctmp3)
458 vl3(i,1)=v(1,ixctmp4)
459 vl3(i,2)=v(2,ixctmp4)
460 vl3(i,3)=v(3,ixctmp4)
461 vl4(i,1)=v(1,ixctmp5)
462 vl4(i,2)=v(2,ixctmp5)
463 vl4(i,3)=v(3,ixctmp5)
464 ENDDO
465 DO i=jft,jlt
466 vg13(1)=vl1(i,1)-vl3(i,1)
467 vg24(1)=vl2(i,1)-vl4(i,1)
468 vghi(1)=vl1(i,1)-vl2(i,1)+vl3(i,1)-vl4(i,1)
469
470 vg13(2)=vl1(i,2)-vl3(i,2)
471 vg24(2)=vl2(i,2)-vl4(i,2)
472 vghi(2)=vl1(i,2)-vl2(i,2)+vl3(i,2)-vl4(i,2)
473
474 vg13(3)=vl1(i,3)-vl3(i,3)
475 vg24(3)=vl2(i,3)-vl4(i,3)
476 vghi(3)=vl1(i,3)-vl2(i,3)+vl3(i,3)-vl4(i,3)
477
478 v13(i,1)=(vq(i,1,1)*vg13(1)+vq(i,2,1)*vg13(2)+vq(i,3,1)*vg13(3))
479 v24(i,1)=(vq(i,1,1)*vg24(1)+vq(i,2,1)*vg24(2)+vq(i,3,1)*vg24(3))
480 vhi(i,1)=(vq(i,1,1)*vghi(1)+vq(i,2,1)*vghi(2)+vq(i,3,1)*vghi(3))
481 v13(i,2)=(vq(i,1,2)*vg13(1)+vq(i,2,2)*vg13
482 v24(i,2)=(vq(i,1,2)*vg24(1)+vq(i,2,2)*vg24(2)+vq(i,3,2)*vg24(3))
483 vhi(i,2)=(vq(i,1,2)*vghi(1)+vq(i,2,2)*vghi(2)+vq(i,3,2)*vghi(3))
484 v13(i,3)=(vq(i,1,3)*vg13(1)+vq(i,2,3)*vg13(2)+vq(i,3,3)*vg13(3))
485 v24(i,3)=(vq(i,1,3)*vg24(1)+vq(i,2,3)*vg24(2)+vq(i,3,3)*vg24(3))
486 vhi(i,3)=(vq(i,1,3)*vghi(1)+vq(i,2,3)*vghi(2)+vq(i,3,3)*vghi(3))
487 ENDDO
488 ELSE IF(ixfem==1)THEN
489 DO i=jft,jlt
490 vg13(1)=vx1(i)-vx3(i)
491 vg24(1)=vx2(i)-vx4(i)
492 vghi(1)=vx1(i)-vx2(i)+vx3(i)-vx4(i)
493
494 vg13(2)=vy1(i)-vy3(i)
495 vg24(2)=vy2(i)-vy4(i)
496 vghi(2)=vy1(i)-vy2(i)+vy3(i)-vy4(i)
497
498 vg13(3)=vz1(i)-vz3(i)
499 vg24(3)=vz2(i)-vz4(i)
500 vghi(3)=vz1(i)-vz2(i)+vz3(i)-vz4(i)
501
502 v13(i,1)=(vq(i,1,1)*vg13(1)+vq(i,2,1)*vg13(2)+vq(i,3,1)*vg13(3))
503 v24(i,1)=(vq(i,1,1)*vg24(1)+vq(i,2,1)*vg24(2)+vq(i,3,1)*vg24(3))
504 vhi(i,1)=(vq(i,1,1)*vghi(1)+vq(i,2,1)*vghi(2)+vq(i,3,1)*vghi(3))
505 v13(i,2)=(vq(i,1,2)*vg13(1)+vq(i,2,2)*vg13(2)+vq(i,3,2)*vg13(3))
506 v24(i,2)=(vq(i,1,2)*vg24(1)+vq(i,2,2)*vg24(2)+vq(i,3,2)*vg24(3))
507 vhi(i,2)=(vq(i,1,2)*vghi(1)+vq(i,2,2)*vghi(2)+vq(i,3,2)*vghi(3))
508 v13(i,3)=(vq(i,1,3)*vg13(1)+vq(i,2,3)*vg13(2)+vq(i,3,3)*vg13(3))
509 v24(i,3)=(vq(i,1,3)*vg24(1)+vq(i,2,3)*vg24(2)+vq(i,3,3)*vg24(3))
510 vhi(i,3)=(vq(i,1,3)*vghi(1)+vq(i,2,3)*vghi(2)+vq(i,3,3)*vghi(3))
511 ENDDO
512 END IF
513
514 IF (idril>0) THEN
515 IF(ixfem==0)THEN
516 DO i=jft,jlt
517 k=ixc(2,i)
518 rlz(i,1) =(vq(i,1,3)*vr(1,k)+vq(i,2,3)*vr(2,k)+vq(i,3,3)*vr(3,k))*area_i(i)
519 k=ixc(3,i)
520 rlz(i,2) =(vq(i,1,3)*vr(1,k)+vq(i,2,3)*vr(2,k)+vq(i,3,3)*vr(3,k))*area_i(i)
521 k=ixc(4,i)
522 rlz(i,3) =(vq(i,1,3)*vr(1,k)+vq(i,2,3)*vr(2,k)+vq(i,3,3)*vr(3,k))*area_i(i)
523 k=ixc(5,i)
524 rlz(i,4) =(vq(i,1,3)*vr(1,k)+vq(i,2,3)*vr(2,k)+vq(i,3,3)*vr(3,k))*area_i(i)
525 ENDDO
526 ELSE IF(ixfem==1)THEN
527 DO i=jft,jlt
528 rlz(i,1) =(vq(i,1,3)*vrx1(i)+vq(i,2,3)*vry1(i)+vq(i,3,3)*vrz1(i))*area_i(i)
529 rlz(i,2) =(vq(i,1,3)*vrx2(i)+vq(i,2,3)*vry2(i)+vq(i,3,3)*vrz2(i))*area_i(i)
530 rlz(i,3) =(vq(i,1,3)*vrx3(i)+vq(i,2,3)*vry3(i)+vq(i,3,3)*vrz3(i))*area_i(i)
531 rlz(i,4) =(vq(i,1,3)*vrx4(i)+vq(i,2,3)*vry4(i)+vq(i,3,3)*vrz4(i))*area_i(i)
532 ENDDO
533 ENDIF
534 END IF
535
536
537
538 IF (impl_s == 0.OR.imp_lr>0) THEN
539 dt05 = half*dt1
540 dt025 =fourth*dt1
541 DO i=jft,jlt
542 exz = y24(i)*v13(i,3)-y13(i)*v24(i,3)
543 eyz = -x24(i)*v13(i,3)+x13(i)*v24(i,3)
544 ddry=dt05*exz*area_i(i)
545 ddrx=dt05*eyz*area_i(i)
546 v13x = v13(i,1)
547 v24x = v24(i,1)
548 vhix = vhi(i,1)
549 IF (abs(x13(i)-x24(i)) < em10) THEN
550 ddrz1 = zero
551 ELSE
552 ddrz1 = dt025*(v13(i,2)-v24(i,2))/(x13(i)-x24(i))
553 ENDIF
554 v13(i,1) = v13(i,1)-ddry*v13(i,3)-ddrz1*v13(i,2)
555 v24(i,1) = v24(i,1)-ddry*v24(i,3)-ddrz1*v24(i,2)
556 vhi(i,1) = vhi(i,1)-ddry*vhi(i,3)-ddrz1*vhi(i,2)
557 IF (abs(y13(i)+y24(i)) < em10) THEN
558 ddrz2 = zero
559 ELSE
560 ddrz2 = dt025*(v13x+v24x)/(y13(i)+y24(i))
561 ENDIF
562 v13(i,2) = v13(i,2)-ddrx*v13(i,3)-ddrz2*v13x
563 v24(i,2) = v24(i,2)-ddrx*v24(i,3)-ddrz2*v24x
564 vhi(i,2) = vhi(i,2)-ddrx*vhi(i,3)-ddrz2*vhix
565 ENDDO
566 ENDIF
567
568
569
570 IF (ivector == 1)THEN
571 ELSE
572 IF(ixfem==0)THEN
573 CALL czcorp5(numnod ,jlt ,numelc ,vr ,npt ,tol ,
574 2 ixc ,plat ,
area ,area_i ,v13 ,
575 3 v24 ,vhi ,rlxyz ,vqn ,vq ,
576 4 x13 ,x24 ,y13 ,y24 ,mx13 ,
577 6 my13 ,
578 7 z1 ,di ,db ,corel ,rlz ,
579 8 lm ,
580 9 l13 ,l24 ,idril ,diz )
581
582 ELSE IF(ixfem==1)THEN
583 CALL czcorp5x(jft ,jlt ,vr ,npt ,tol ,
584 2 ixc ,plat ,
area ,area_i ,v13 ,
585 3 v24 ,vhi ,rlxyz ,vqn ,vq ,
586 4 x13 ,x24 ,y13 ,y24 ,mx13 ,
587 6 mx23 ,mx34 ,my13 ,my23 ,my34 ,
588 7 z1 ,di ,db ,corel ,rlz ,
589 8 lm ,x13_2 ,y13_2 ,x24_2 ,y24_2 ,
590 9 l13 ,l24 ,vrx1 ,vrx2 ,vrx3 ,
591 a vrx4 ,vry1 ,vry2 ,vry3 ,vry4 ,
592 b vrz1 ,vrz2 ,vrz3 ,vrz4 )
593 END IF
594 END IF
595
596 DO i=jft,jlt
597 v13(i,1)=v13(i,1)*area_i(i)
598 v24(i,1)=v24(i,1)*area_i(i)
599 vhi(i,1)=vhi(i,1)*fourth
600
601 v13(i,2)=v13(i,2)*area_i(i)
602 v24(i,2)=v24(i,2)*area_i(i)
603 vhi(i,2)=vhi(i,2)*fourth
604
605 v13(i,3)=v13(i,3)*area_i(i)
606 v24(i,3)=v24(i,3)*area_i(i)
607 vhi(i,3)=vhi(i,3)*fourth
608 ENDDO
609
610 RETURN
subroutine clskew3(jft, jlt, irep, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, det)
subroutine cortdir3(elbuf_str, dir_a, dir_b, jft, jlt, nlay, irep, rx, ry, rz, sx, sy, sz, e1x, e1y, e1z, e2x, e2y, e2z, nel)
subroutine czcorp5x(jft, jlt, vr, npt, tol, ixc, plat, area, area_i, v13, v24, vhi, rlxyz, vqn, vq, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, di, db, corel, rlz, ll, x13_2, y13_2, x24_2, y24_2, l13, l24, vrx1, vrx2, vrx3, vrx4, vry1, vry2, vry3, vry4, vrz1, vrz2, vrz3, vrz4)
subroutine czcorp5(numnod, nel, numelc, vr, npt, tol, ixc, plat, area, area_i, v13, v24, vhi, rlxyz, vqn, vq, x13, x24, y13, y24, mx13, my13, z1, di, db, corel, rlz, ll, l13, l24, idril, diz)
subroutine area(d1, x, x2, y, y2, eint, stif0)