38 . MS_PENA ,IN ,STIFN ,STIFR ,WEIGHT ,
39 . NSV ,IRTL ,CRST ,SKEW ,DX ,
40 . DR ,FINI ,FSAV ,FNCONT ,NSN ,
41 . STFN ,STFR ,VISC ,PENFLAG ,IROTB ,
42 . NOINT ,NODNX_SMS,DMINT2 ,SAV_FOR_PENA,IRECT,
43 . DT2T ,NELTST ,ITYPTST ,INDXP ,SAV_INER_POFF,
44 . H3D_DATA,MSEGTYP2,FNCONTP ,FTCONTP)
53#include "implicit_f.inc"
62 INTEGER NSN,PENFLAG,IROTB, NOINT,NELTST,ITYPTST
69 . x(3,*),vr(3,*),v(3,*),a(3,*),ar(3,*),dr(3,*),skew(9,*),
70 . dx(3,*),fini(6,*),ms_pena(*),in(*),stifn(*),stifr(*),stfn(*),stfr(*),
71 . crst(2,*),fsav(*),fncont(3,*),
72 . dmint2(4,*),sav_for_pena(8,*),fncontp(3,*) ,ftcontp(3,*)
75 TYPE (H3D_DATABASE) :: H3D_DATA
89 INTEGER NIR,I,J,II,JJ,L,W,NN,KK,K,LLT,
90 . IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
94 . S,T,SP,SM,TP,TM,ECONTT,ECONVT,E1X,E1Y,E1Z,E2X,E2Y,E2Z,E3X,E3Y,E3Z,
95 . FNORM,FLX,FLY,FLZ,FS(3),XSM,YSM,ZSM,XM,YM,ZM,
96 . x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,x0,y0,z0,xs,ys,zs,stifm(mvsiz),
97 . vx1,vx2,vx3,vx4,vy1,vy2,vy3,vy4,vz1,vz2,vz3,vz4,dlx,dly,dlz,
98 . vx0,vy0,vz0,vsx,vsy,vsz,vmx,vmy,vmz,vx,vy,vz,dtinv,stf,
99 . fxv,fyv,fzv,drx,dry,drz,stbrk,dti,mharm,dkm,det,b1,b2,b3,c1,c2,c3,
100 . a1,a2,a3,mttx,mtty,mttz,derx,dery,derz,dxt
102 . h(4,mvsiz),fn(3),ft(3),fx(4),fy(4),fz(4),fmx(4),fmy(4),fmz(4),
103 . rx(4),ry(4),rz(4),rm(3),rs(3),v0(3),vs(3),vm(3),
104 . stif(mvsiz), vis(mvsiz), va(3),vb
106 . vrx0,vrx1,vrx2,vrx3,vrx4,vry0,vry1,vry2,vry3,vry4,vrz0,vrz1,vrz2,vrz3,vrz4,
107 . vrsx,vrsy,vrsz,vrx,vry,vrz,mlx,mly,mlz,mx(4),my(4),mz(4),mrx,mry,mrz,ftx,fty,ftz,
108 . mgx,mgy,mgz,msx,msy,msz,mvx,mvy,mvz,str,visr(mvsiz),dki,inharm,vrmx,vrmy,vrmz,
109 . len2,fac_triang,irot, vrm(3),vrs(3),hl(4)
122 llt=
min(nsn-kk+1,mvsiz)
143 IF ((msegtyp2(l)==1))
THEN
145 IF(sav_iner_poff(i) > em20)
THEN
150 IF (ix3(k) == ix4(k))
THEN
162 tp = fourth*(one + t)
163 tm = fourth*(one - t)
204 IF (irot > zero)
THEN
222 CALL i2rep(x1 ,x2 ,x3 ,x4 ,
227 . e3x ,e3y ,e3z ,nir )
232 xm = x1*h(1,k) + x2*h(2,k) + x3*h(3,k) + x4*h(4,k)
233 ym = y1*h(1,k) + y2*h(2,k) + y3*h(3,k) + y4*h(4,k)
234 zm = z1*h(1,k) + z2*h(2,k) + z3*h(3,k) + z4*h(4,k)
235 x0 = (x1 + x2 + x3 + x4)/nir
236 y0 = (y1 + y2 + y3 + y4)/nir
237 z0 = (z1 + z2 + z3 + z4)/nir
249 vx0 = (vx1 + vx2 + vx3 + vx4)/nir
250 vy0 = (vy1 + vy2 + vy3 + vy4)/nir
251 vz0 = (vz1 + vz2 + vz3 + vz4)/nir
252 vmx = vx1*h(1,k) + vx2*h(2,k) + vx3*h(3,k) + vx4*h(4,k) - vx0
253 vmy = vy1*h(1,k) + vy2*h(2,k) + vy3*h(3,k) + vy4*h(4,k) - vy0
254 vmz = vz1*h(1,k) + vz2*h(2,k) + vz3*h(3,k) + vz4*h(4,k) - vz0
259 x0 = (x1 + x2 + x3)/nir
260 y0 = (y1 + y2 + y3)/nir
261 z0 = (z1 + z2 + z3)/nir
263 xm = x1*h(1,k) + x2*h(2,k) + x3*h(3,k)
264 ym = y1*h(1,k) + y2*h(2,k) + y3*h(3,k)
265 zm = z1*h(1,k) + z2*h(2,k) + z3*h(3,k)
277 vx0 = (vx1 + vx2 + vx3)/nir
278 vy0 = (vy1 + vy2 + vy3)/nir
279 vz0 = (vz1 + vz2 + vz3)/nir
280 vmx = vx1*h(1,k) + vx2*h(2,k) + vx3*h(3,k) - vx0
281 vmy = vy1*h(1,k) + vy2*h(2,k) + vy3*h(3,k) - vy0
282 vmz = vz1*h(1,k) + vz2*h(2,k) + vz3*h(3,k) - vz0
302 rs(1) = xs*e1x + ys*e1y + zs*e1z
303 rs(2) = xs*e2x + ys*e2y + zs*e2z
304 rs(3) = xs*e3x + ys*e3y + zs*e3z
305 rm(1) = xm*e1x + ym*e1y + zm*e1z
306 rm(2) = xm*e2x + ym*e2y + zm*e2z
307 rm(3) = xm*e3x + ym*e3y + zm*e3z
309 rx(1) = e1x*x1 + e1y*y1 + e1z*z1
310 ry(1) = e2x*x1 + e2y*y1 + e2z*z1
311 rz(1) = e3x*x1 + e3y*y1 + e3z*z1
312 rx(2) = e1x*x2 + e1y*y2 + e1z*z2
313 ry(2) = e2x*x2 + e2y*y2 + e2z*z2
314 rz(2) = e3x*x2 + e3y*y2 + e3z*z2
315 rx(3) = e1x*x3 + e1y*y3 + e1z*z3
316 ry(3) = e2x*x3 + e2y*y3 + e2z*z3
317 rz(3) = e3x*x3 + e3y*y3 + e3z*z3
318 rx(4) = e1x*x4 + e1y*y4 + e1z*z4
319 ry(4) = e2x*x4 + e2y*y4 + e2z*z4
320 rz(4) = e3x*x4 + e3y*y4 + e3z*z4
328 vs(1) = vsx*e1x + vsy*e1y + vsz*e1z
329 vs(2) = vsx*e2x + vsy*e2y + vsz*e2z
330 vs(3) = vsx*e3x + vsy*e3y + vsz*e3z
331 IF (irot > zero)
THEN
332 vrs(1) = vrsx*e1x + vrsy*e1y + vrsz*e1z
334 vrs(3) = vrsx*e3x + vrsy*e3y + vrsz*e3z
335 vrmx = vrx1*h(1,k) + vrx2*h(2,k) + vrx3*h(3,k)
336 vrmy = vry1*h(1,k) + vry2*h(2,k) + vry3*h(3,k) + vry4*h(4,k)
337 vrmz = vrz1*h(1,k) + vrz2*h(2,k) + vrz3*h(3,k) + vrz4*h(4,k)
338 vrm(1) = vrmx*e1x + vrmy*e1y + vrmz*e1z
339 vrm(2) = vrmx*e2x + vrmy*e2y + vrmz*e2z
340 vrm(3) = vrmx*e3x + vrmy*e3y + vrmz*e3z
343 vm(1) = vmx*e1x + vmy*e1y + vmz*e1z
344 vm(2) = vmx*e2x + vmy*e2y + vmz*e2z
345 vm(3) = vmx*e3x + vmy*e3y + vmz*e3z
347 va(1) = vx1*e1x + vy1*e1y + vz1*e1z
348 va(2) = vx1*e2x + vy1*e2y + vz1*e2z
349 va(3) = vx1*e3x + vy1*e3y + vz1*e3z
351 vb(1) = vx2*e1x + vy2*e1y + vz2*e1z
352 vb(2) = vx2*e2x + vy2*e2y + vz2*e2z
353 vb(3) = vx2*e3x + vy2*e3y + vz2*e3z
355 vc(1) = vx3*e1x + vy3*e1y + vz3*e1z
356 vc(2) = vx3*e2x + vy3
357 vc(3) = vx3*e3x + vy3*e3y + vz3*e3z
359 vd(1) = vx4*e1x + vy4*e1y + vz4*e1z
360 vd(2) = vx4*e2x + vy4*e2y + vz4*e2z
361 vd(3) = vx4*e3x + vy4*e3y + vz4*e3z
385 . skew(1,ii) ,tt ,dt1 ,stbrk,
386 . rs ,rm ,vx ,vy ,vz ,
387 . rx ,ry ,rz ,va ,vb ,
388 . vc ,vd ,vrm ,vrs ,det ,
389 . b1 ,b2 ,b3 ,c1 ,c2 ,
392 vrx = vrs(1) - vrm(1)
393 vry = vrs(2) - vrm(2)
394 vrz = vrs(3) - vrm(3)
404 dx(1,ii) = dx(1,ii) + dlx
405 dx(2,ii) = dx(2,ii) + dly
406 dx(3,ii) = dx(3,ii) + dlz
407 dr(1,ii) = dr(1,ii) + drx
408 dr(2,ii) = dr(2,ii) + dry
409 dr(3,ii) = dr(3,ii) + drz
415 flx = dx(1,ii) * stfn(ii)
416 fly = dx(2,ii) * stfn(ii)
417 flz = dx(3,ii) * stfn(ii)
419 IF(ms_pena(i)==zero.OR.ms_pena(ix1(k))==zero.OR.
420 . ms_pena(ix2(k))==zero.OR.
421 . ms_pena(ix3(k))==zero.OR.
422 . ms_pena(ix4(k))==zero)
THEN
425 mharm = one/ms_pena(i) +
426 . one/ms_pena(ix1(k)) + one/ms_pena(ix2(k
429 mharm = one/ms_pena(i) +
430 . one/ms_pena(ix1(k)) + one/ms_pena(ix2
433 dkm = two*stfn(ii)*mharm
440 dxt = dx(1,ii)**2 + dx(2,ii)**2 + dx(3,ii)**2
441 econtt = econtt + half*stfn(ii)*dxt*w
443 econvt = econvt + (fxv*vx + fyv*vy + fzv*vz)*dt1*w
455 ftx = e1x*flx + e2x*fly + e3x*flz
456 fty = e1y*flx + e2y*fly + e3y*flz
457 ftz = e1z*flx + e2z*fly + e3z*flz
459 stf = stfn(ii)*(visc + sqrt(visc**2 + (one+stbrk)))**2
466 IF (irot > zero)
THEN
470 IF(sav_iner_poff(i)==zero.OR.sav_iner_poff(ix1(k))==zero.OR.
471 . sav_iner_poff(ix2(k))==zero.OR.
472 . sav_iner_poff(ix3(k))==zero.OR.
473 . sav_iner_poff(ix4(k))==zero)
THEN
476 inharm = one/sav_iner_poff(i) +
477 . one/sav_iner_poff(ix1(k)) + one/sav_iner_poff(ix2(k)) +
478 . one/sav_iner_poff(ix3(k)) + one/sav_iner_poff(ix4(k))
481 inharm = one/sav_iner_poff(i) +
482 . one/sav_iner_poff(ix1(k)) + one/sav_iner_poff(ix2(k)) + one/sav_iner_poff(ix3(k))
486 dki = two*stfr(ii)*inharm
487 visr(k) = visc*sqrt(dki)
489 mlx = dr(1,ii) * stfr(ii)
490 mly = dr(2,ii) * stfr(ii)
491 mlz = dr(3,ii) * stfr(ii)
497 dxt = dr(1,ii)**2 + dr(2,ii)**2 + dr(3,ii)**2
498 econtt = econtt + half*stfr(ii)*dxt*w
500 econvt = econvt + (mvx*vrx
508 mgx = e1x*mlx + e2x*mly + e3x*mlz
509 mgy = e1y*mlx + e2y*mly + e3y*mlz
510 mgz = e1z*mlx + e2z*mly + e3z*mlz
512 mrx = half*(ysm*ftz - zsm*fty)
513 mry = half*(zsm*ftx - xsm*ftz)
514 mrz = half*(xsm*fty - ysm*ftx)
517 mx(j) = h(j,k)*(mgx+mrx)
518 my(j) = h(j,k)*(mgy+mry)
519 mz(j) = h(j,k)*(mgz+mrz)
522 len2 = xsm**2+ysm**2+zsm**2
523 str = (stfr(ii)+stfn(ii)*len2)*(visc + sqrt(visc**2 + one))**2
535 CALL i2loceq( nir ,rs ,rx ,ry ,rz ,
536 . fmx ,fmy ,fmz ,h(1,k) ,stifm(k))
541 fx(j) = e1x*fmx(j) + e2x*fmy(j) + e3x*fmz(j)
542 fy(j) = e1y*fmx(j) + e2y*fmy(j) + e3y*fmz(j)
543 fz(j) = e1z*fmx(j) + e2z*fmy(j) + e3z*fmz(j)
550 fs(1) = fs(1) + fx(j)
551 fs(2) = fs(2) + fy(j)
552 fs(3) = fs(3) + fz(j)
559 sav_for_pena(1,i) = sav_for_pena(1,i) - fs(1)
560 sav_for_pena(2,i) = sav_for_pena(2,i) - fs(2)
561 sav_for_pena(3,i) = sav_for_pena(3,i) - fs(3)
562 sav_for_pena(4,i) = sav_for_pena(4,i) + stf
565 stif(k) = (one+stbrk)*stfn(ii)
567 IF (iroddl == 1)
THEN
569 sav_for_pena(5,i) = sav_for_pena(5,i) - mgx + mrx
570 sav_for_pena(6,i) = sav_for_pena(6,i) - mgy + mry
571 sav_for_pena(7,i) = sav_for_pena(7,i) - mgz + mrz
572 sav_for_pena(8,i) = sav_for_pena(8,i) + str
580 a(1,ix1(k)) = a(1,ix1(k)) + fx(1)
581 a(2,ix1(k)) = a(2,ix1(k)) + fy(1)
582 a(3,ix1(k)) = a(3,ix1(k)) + fz(1)
583 stifn(ix1(k)) = stifn(ix1(k))+abs(stf*h(1,k))+stifm(k)*stf
585 a(1,ix2(k)) = a(1,ix2(k)) + fx(2)
586 a(2,ix2(k)) = a(2,ix2(k)) + fy(2)
587 a(3,ix2(k)) = a(3,ix2(k)) + fz(2)
588 stifn(ix2(k)) = stifn(ix2(k))+abs(stf*h(2,k))+stifm(k)*stf
590 a(1,ix3(k)) = a(1,ix3(k)) + fx(3)
591 a(2,ix3(k)) = a(2,ix3(k)) + fy(3)
592 a(3,ix3(k)) = a(3,ix3(k)) + fz(3)
593 stifn(ix3(k)) = stifn(ix3(k))+abs(stf*h(3,k))+stifm(k)*stf
595 a(1,ix4(k)) = a(1,ix4(k)) + fx(4)
596 a(2,ix4(k)) = a(2,ix4(k)) + fy(4)
597 a(3,ix4(k)) = a(3,ix4(k)) + fz(4)
598 stifn(ix4(k)) = stifn(ix4(k))+abs(stf*h(4,k))+stifm(k)*stf*fac_triang
601 IF (iroddl == 1)
THEN
603 ar(1,ix1(k)) = ar(1,ix1(k)) + mx(1)
604 ar(2,ix1(k)) = ar(2,ix1(k)) + my(1)
605 ar(3,ix1(k)) = ar(3,ix1(k)) + mz(1)
606 stifr(ix1(k)) = stifr(ix1(k))+abs(str*h(1,k))
608 ar(1,ix2(k)) = ar(1,ix2(k)) + mx(2)
609 ar(2,ix2(k)) = ar(2,ix2(k)) + my(2)
610 ar(3,ix2(k)) = ar(3,ix2(k)) + mz(2)
611 stifr(ix2(k)) = stifr(ix2(k))+abs(str*h(2,k))
613 ar(1,ix3(k)) = ar(1,ix3(k)) + mx(3)
614 ar(2,ix3(k)) = ar(2,ix3(k)) + my(3)
615 ar(3,ix3(k)) = ar(3,ix3(k)) + mz(3)
616 stifr(ix3(k)) = stifr(ix3(k))+abs(str*h(3,k))
618 ar(1,ix4(k)) = ar(1,ix4(k)) + mx(4)
619 ar(2,ix4(k)) = ar(2,ix4(k)) + my(4)
620 ar(3,ix4(k)) = ar(3,ix4(k)) + mz(4)
621 stifr(ix4(k)) = stifr(ix4(k))+abs(str*h(4,k))
631 IF (irot > zero)
THEN
641 . irect(1,l),nir ,fsav ,fncont ,fncontp,
642 . ftcontp ,weight ,h3d_data,i ,hl)
644 IF ((h3d_data%N_VECT_CONT2M > 0).AND.(irot > 0))
THEN
645 mcont2(1,i) = (-mgx + mrx)*w
646 mcont2(2,i) = (-mgy + mry)*w
647 mcont2(3,i) = (-mgz + mrz)*w
648 mcont2(1,ix1(k)) = mcont2(1,ix1(k)) + mx(1)*h(1,k)*w
649 mcont2(2,ix1(k)) = mcont2(2,ix1(k)) + my(1)*h(1,k)*w
650 mcont2(3,ix1(k)) = mcont2(3,ix1(k)) + mz(1)*h(1,k)*w
651 mcont2(1,ix2(k)) = mcont2(1,ix2(k)) + mx(2)*h(2,k)*w
652 mcont2(2,ix2(k)) = mcont2(2,ix2(k)) + my(2)*h(2,k)*w
653 mcont2(3,ix2(k)) = mcont2(3,ix2(k)) + mz(2)*h(2,k)*w
654 mcont2(1,ix3(k)) = mcont2(1,ix3(k)) + mx(3)*h(3,k)*w
655 mcont2(2,ix3(k)) = mcont2(2,ix3(k)) + my(3)*h(3,k)*w
656 mcont2(3,ix3(k)) = mcont2(3,ix3(k)) + mz(3)*h(3,k)*w
657 mcont2(1,ix4(k)) = mcont2(1,ix4(k)) + mx(4)*h(4,k)*w
658 mcont2(2,ix4(k)) = mcont2(2,ix4(k)) + my(4)*h(4,k)*w
659 mcont2(3,ix4(k)) = mcont2(3,ix4(k)) + mz(4)*h(4,k)*w
675 IF(idtmins==2.OR.idtmins_int/=0)
THEN
677 CALL i2sms27(llt ,ix1 ,ix2 ,ix3 ,ix4 ,
678 2 nsvg ,h ,stif ,noint,dmint2(1,kk),
679 3 nodnx_sms ,vis ,stifm ,dti)
689 econt = econt + econtt
690 econtd = econtd + econvt
691 fsav(26) = fsav(26) + econtt
692 fsav(28) = fsav(28) + econvt
693#include "lockoff.inc"