39 . MS ,IN ,STIFN ,STIFR ,WEIGHT ,
40 . NSV ,IRTL ,CRST ,SKEW ,DX ,
41 . DR ,FINI ,FSAV ,FNCONT ,NSN ,
42 . I0 ,I2SIZE ,IADI2 ,FSKYI2 ,STFN ,
43 . STFR ,VISC ,PENFLAG ,IROTB ,NOINT ,
44 . NODNX_SMS,DMINT2 ,DT2T ,NELTST ,ITYPTST ,
45 . IRECT ,INDXP ,IADX ,
56#include "implicit_f.inc"
65 INTEGER NSN, I0,I2SIZE,PENFLAG,IROTB, NOINT,NELTST,ITYPTST
66 INTEGER IRECT(4,*),NSV(*),IRTL(*),WEIGHT(*),IADI2(4,*),
67 . NODNX_SMS(*),IADX(*),INDXP(*),MSEGTYP2(*)
72 . X(3,*),VR(3,*),V(3,*),A(3,*),AR(3,*),MS(*),CRST(2,*),
73 . SKEW(9,*),DX(3,*),DR(3,*),FINI(6,*),FSAV(*),FNCONT(3,*),
74 . (*),STIFR(*),STFN(*),STFR(*),FSKYI2(I2SIZE,*),
75 . dmint2(4,*),in(*),fncontp(3,*) ,ftcontp(3,*)
76 TYPE (H3D_DATABASE) :: H3D_DATA
90 INTEGER NIR,I,J,II,JJ,L,W,NN,KK,K,LLT,
91 . IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
95 . S,T,SP,SM,TP,TM,ECONTT,ECONVT,E1X,E1Y,E1Z,E2X,E2Y,E2Z,E3X,E3Y,E3Z,
96 . FNORM,FLX,FLY,FLZ,FS(3),XSM,YSM,ZSM,XM,YM,ZM,
97 . X1,X2,X3,X4,Y1,Y2,Y3,Y4,Z1,Z2,Z3,Z4,X0,Y0,Z0,XS,YS,ZS,STIFM(MVSIZ),
98 . VX1,VX2,VX3,VX4,VY1,VY2,VY3,VY4,VZ1,VZ2,VZ3,VZ4,DLX,DLY,DLZ,
99 . VX0,VY0,VZ0,VSX,VSY,VSZ,VMX,VMY,VMZ,VX,VY,VZ,DTINV,STF,
100 . fxv,fyv,fzv,drx,dry,drz,stbrk,dti,mharm,dkm,det,b1,b2,b3,c1,c2,c3,
101 . a1,a2,a3,mttx,mtty,mttz,derx,dery,derz,dxt,hl(4)
103 . h(4,mvsiz),fn(3),ft(3),fx(4),fy(4),fz(4),fmx(4),fmy(4),fmz(4),
104 . rx(4),ry(4),rz(4),rm(3),rs(3),v0(3),vs(3),vm(3),
105 . stif(mvsiz), vis(mvsiz), va(3),vb(3),vc(3),vd(3)
108 . vrx0,vrx1,vrx2,vrx3,vrx4,vry0,vry1,vry2,vry3,vry4,vrz0,vrz1,vrz2,vrz3,vrz4,
109 . vrsx,vrsy,vrsz,vrx,vry,vrz,mlx,mly,mlz,mx(4),my(4),mz(4),mrx,mry,mrz,ftx,fty,ftz,
110 . mgx,mgy,mgz,msx,msy,msz,mvx,mvy,mvz,str,visr(mvsiz),dki,inharm,vrmx,vrmy,vrmz,
126 llt=
min(nsn-kk+1,mvsiz)
147 IF ((msegtyp2(l)==1).AND.(in(i)>em20))
THEN
153 IF (ix3(k) == ix4(k))
THEN
165 tp = fourth*(one + t)
166 tm = fourth*(one - t)
207 IF (irot > zero)
THEN
225 CALL i2rep(x1 ,x2 ,x3 ,x4 ,
230 . e3x ,e3y ,e3z ,nir )
235 xm = x1*h(1,k) + x2*h(2,k) + x3*h(3,k) + x4*h(4,k)
236 ym = y1*h(1,k) + y2*h(2,k) + y3*h(3,k) + y4*h(4,k)
237 zm = z1*h(1,k) + z2*h(2,k) + z3*h(3,k) + z4*h(4,k)
238 x0 = (x1 + x2 + x3 + x4)/nir
239 y0 = (y1 + y2 + y3 + y4)/nir
240 z0 = (z1 + z2 + z3 + z4)/nir
252 vx0 = (vx1 + vx2 + vx3 + vx4)/nir
253 vy0 = (vy1 + vy2 + vy3 + vy4)/nir
254 vz0 = (vz1 + vz2 + vz3 + vz4)/nir
255 vmx = vx1*h(1,k) + vx2*h(2,k) + vx3*h(3,k) + vx4*h(4,k) - vx0
256 vmy = vy1*h(1,k) + vy2*h(2,k) + vy3*h(3,k) + vy4*h(4,k) - vy0
257 vmz = vz1*h(1,k) + vz2*h(2,k) + vz3*h(3,k) + vz4*h(4,k) - vz0
262 x0 = (x1 + x2 + x3)/nir
263 y0 = (y1 + y2 + y3)/nir
264 z0 = (z1 + z2 + z3)/nir
266 xm = x1*h(1,k) + x2*h(2,k) + x3*h(3,k)
267 ym = y1*h(1,k) + y2*h(2,k) + y3*h(3,k)
268 zm = z1*h(1,k) + z2*h(2,k) + z3*h(3,k)
280 vx0 = (vx1 + vx2 + vx3)/nir
281 vy0 = (vy1 + vy2 + vy3)/nir
282 vz0 = (vz1 + vz2 + vz3)/nir
283 vmx = vx1*h(1,k) + vx2*h(2,k) + vx3*h(3,k) - vx0
284 vmy = vy1*h(1,k) + vy2*h(2,k) + vy3*h(3,k) - vy0
285 vmz = vz1*h(1,k) + vz2*h(2,k) + vz3*h(3,k) - vz0
305 rs(1) = xs*e1x + ys*e1y + zs*e1z
306 rs(2) = xs*e2x + ys*e2y + zs*e2z
307 rs(3) = xs*e3x + ys*e3y + zs*e3z
308 rm(1) = xm*e1x + ym*e1y + zm*e1z
310 rm(3) = xm*e3x + ym*e3y + zm*e3z
312 rx(1) = e1x*x1 + e1y*y1 + e1z*z1
313 ry(1) = e2x*x1 + e2y*y1 + e2z*z1
314 rz(1) = e3x*x1 + e3y*y1 + e3z*z1
315 rx(2) = e1x*x2 + e1y*y2 + e1z*z2
316 ry(2) = e2x*x2 + e2y*y2 + e2z*z2
317 rz(2) = e3x*x2 + e3y*y2 + e3z*z2
318 rx(3) = e1x*x3 + e1y*y3 + e1z*z3
319 ry(3) = e2x*x3 + e2y*y3
320 rz(3) = e3x*x3 + e3y*y3 + e3z*z3
321 rx(4) = e1x*x4 + e1y*y4 + e1z*z4
322 ry(4) = e2x*x4 + e2y*y4 + e2z*z4
323 rz(4) = e3x*x4 + e3y*y4 + e3z*z4
331 vs(1) = vsx*e1x + vsy*e1y + vsz*e1z
332 vs(2) = vsx*e2x + vsy*e2y + vsz*e2z
333 vs(3) = vsx*e3x + vsy*e3y + vsz*e3z
334 IF (irot > zero)
THEN
335 vrs(1) = vrsx*e1x + vrsy*e1y + vrsz*e1z
336 vrs(2) = vrsx*e2x + vrsy*e2y + vrsz*e2z
337 vrs(3) = vrsx*e3x + vrsy*e3y + vrsz*e3z
338 vrmx = vrx1*h(1,k) + vrx2*h(2,k) + vrx3*h(3,k) + vrx4*h(4,k)
339 vrmy = vry1*h(1,k) + vry2*h(2,k) + vry3*h(3,k) + vry4*h(4,k)
340 vrmz = vrz1*h(1,k) + vrz2*h(2,k) + vrz3*h(3,k) + vrz4*h(4,k)
341 vrm(1) = vrmx*e1x + vrmy*e1y + vrmz*e1z
342 vrm(2) = vrmx*e2x + vrmy*e2y + vrmz*e2z
343 vrm(3) = vrmx*e3x + vrmy*e3y + vrmz*e3z
346 vm(1) = vmx*e1x + vmy*e1y + vmz*e1z
347 vm(2) = vmx*e2x + vmy*e2y + vmz*e2z
348 vm(3) = vmx*e3x + vmy*e3y + vmz*e3z
350 va(1) = vx1*e1x + vy1*e1y + vz1*e1z
351 va(2) = vx1*e2x + vy1*e2y + vz1*e2z
352 va(3) = vx1*e3x + vy1*e3y + vz1*e3z
354 vb(1) = vx2*e1x + vy2*e1y + vz2*e1z
355 vb(2) = vx2*e2x + vy2*e2y + vz2*e2z
356 vb(3) = vx2*e3x + vy2*e3y + vz2*e3z
358 vc(1) = vx3*e1x + vy3*e1y + vz3*e1z
359 vc(2) = vx3*e2x + vy3*e2y + vz3*e2z
360 vc(3) = vx3*e3x + vy3*e3y + vz3*e3z
362 vd(1) = vx4*e1x + vy4*e1y + vz4*e1z
363 vd(2) = vx4*e2x + vy4*e2y + vz4*e2z
364 vd(3) = vx4*e3x + vy4*e3y + vz4*e3z
388 . skew(1,ii) ,tt ,dt1 ,stbrk,
389 . rs ,rm ,vx ,vy ,vz ,
390 . rx ,ry ,rz ,va ,vb ,
392 . b1 ,b2 ,b3 ,c1 ,c2 ,
395 vrx = vrs(1) - vrm(1)
396 vry = vrs(2) - vrm(2)
397 vrz = vrs(3) - vrm(3)
407 dx(1,ii) = dx(1,ii) + dlx
409 dx(3,ii) = dx(3,ii) + dlz
410 dr(1,ii) = dr(1,ii) + drx
411 dr(2,ii) = dr(2,ii) + dry
412 dr(3,ii) = dr(3,ii) + drz
418 flx = dx(1,ii) * stfn(ii)
419 fly = dx(2,ii) * stfn(ii)
420 flz = dx(3,ii) * stfn(ii)
422 IF(ms(i)==zero.OR.ms(ix1(k))==zero.OR.
423 . ms(ix2(k))==zero.OR.
424 . ms(ix3(k))==zero.OR.
429 . one/ms(ix1(k)) + one/ms(ix2
433 . one/ms(ix1(k)) + one/ms(ix2(k)) + one/ms(ix3(k))
436 dkm = two*stfn(ii)*mharm
437 vis(k) = visc*sqrt(dkm)
443 dxt = dx(1,ii)**2 + dx(2,ii)**2 + dx(3,ii)**2
444 econtt = econtt + half*stfn(ii)*dxt*w
446 econvt = econvt + (fxv*vx + fyv*vy + fzv*vz)*dt1*w
458 ftx = e1x*flx + e2x*fly + e3x*flz
459 fty = e1y*flx + e2y*fly + e3y*flz
460 ftz = e1z*flx + e2z*fly + e3z*flz
462 stf = stfn(ii)*(visc + sqrt(visc**2 + (one+stbrk)))**2
469 IF (irot > zero)
THEN
473 IF(in(i)==zero.OR.in(ix1(k))==zero.OR.
474 . in(ix2(k))==zero.OR.
475 . in(ix3(k))==zero.OR.
476 . in(ix4(k))==zero)
THEN
480 . one/in(ix1(k)) + one/in(ix2(k)) + one/in(ix3
484 . one/in(ix1(k)) + one/in(ix2(k)) + one/in(ix3(k))
488 dki = two*stfr(ii)*inharm
489 visr(k) = visc*sqrt(dki)
491 mlx = dr(1,ii) * stfr(ii)
492 mly = dr(2,ii) * stfr(ii)
493 mlz = dr(3,ii) * stfr(ii)
499 dxt = dr(1,ii)**2 + dr(2,ii)**2 + dr(3,ii)**2
500 econtt = econtt + half*stfr(ii)*dxt
502 econvt = econvt + (mvx*vrx
510 mgx = e1x*mlx + e2x*mly + e3x*mlz
511 mgy = e1y*mlx + e2y*mly + e3y*mlz
512 mgz = e1z*mlx + e2z*mly + e3z*mlz
514 mrx = half*(ysm*ftz - zsm*fty)
515 mry = half*(zsm*ftx - xsm*ftz)
516 mrz = half*(xsm*fty - ysm*ftx)
519 mx(j) = h(j,k)*(mgx+mrx)
520 my(j) = h(j,k)*(mgy+mry)
521 mz(j) = h(j,k)*(mgz+mrz)
524 len2 = xsm**2+ysm**2+zsm**2
525 str = (stfr(ii)+stfn(ii)*len2)*(visc + sqrt(visc**2 + one))**2
537 CALL i2loceq( nir ,rs ,rx ,ry ,rz ,
538 . fmx ,fmy ,fmz ,h(1,k) ,stifm(k))
543 fx(j) = e1x*fmx(j) + e2x*fmy(j) + e3x*fmz(j)
544 fy(j) = e1y*fmx(j) + e2y*fmy
552 fs(1) = fs(1) + fx(j)
553 fs(2) = fs(2) + fy(j)
554 fs(3) = fs(3) + fz(j)
561 a(1,i) = a(1,i) - fs(1)
562 a(2,i) = a(2,i) - fs(2)
563 a(3,i) = a(3,i) - fs(3)
564 stifn(i) = stifn(i) + stf
567 stif(k) = (one+stbrk)*stfn(ii)
569 IF (iroddl == 1)
THEN
570 IF (irot > zero)
THEN
571 ar(1,i) = ar(1,i) - mgx + mrx
572 ar(2,i) = ar(2,i) - mgy + mry
573 ar(3,i) = ar(3,i) - mgz + mrz
574 stifr(i) = stifr(i) + str
583 i0 = i0base + iadx(ii)
587 fskyi2(1,nn) = fx(jj)
588 fskyi2(2,nn) = fy(jj)
589 fskyi2(3,nn) = fz(jj)
591 fskyi2(5,nn) = abs(stf*h(jj,k))+stifm(k)*stf
592 IF (iroddl == 1)
THEN
593 fskyi2(6,nn) = mx(jj)
594 fskyi2(7,nn) = my(jj)
595 fskyi2(8,nn) = mz(jj)
597 fskyi2(10,nn)= abs(str*h(jj,k))
602 fskyi2(1,nn) = fx(jj)
603 fskyi2(2,nn) = fy(jj)
604 fskyi2(3,nn) = fz(jj)
606 fskyi2(5,nn) = abs(stf*h(jj,k))+stifm(k)*stf
607 IF (iroddl == 1)
THEN
608 fskyi2(6,nn) = mx(jj)
609 fskyi2(7,nn) = my(jj)
610 fskyi2(8,nn) = mz(jj)
612 fskyi2(10,nn)= abs(str*h(jj,k))
617 fskyi2(1,nn) = fx(jj)
618 fskyi2(2,nn) = fy(jj)
619 fskyi2(3,nn) = fz(jj)
622 IF (iroddl == 1)
THEN
623 fskyi2(6,nn) = mx(jj)
624 fskyi2(7,nn) = my(jj)
625 fskyi2(8,nn) = mz(jj)
627 fskyi2(10,nn)= abs(str*h(jj,k))
632 fskyi2(1,nn) = fx(jj)
633 fskyi2(2,nn) = fy(jj)
634 fskyi2(3,nn) = fz(jj)
636 fskyi2(5,nn) = abs(stf*h(jj,k))+stifm(k)*stf*fac_triang
637 IF (iroddl == 1)
THEN
638 fskyi2(6,nn) = mx(jj)
639 fskyi2(7,nn) = my(jj)
640 fskyi2(8,nn) = mz(jj)
642 fskyi2(10,nn)= abs(str*h(jj,k))
650 IF (irot > zero)
THEN
660 . irect(1,l),nir ,fsav ,fncont ,fncontp,
661 . ftcontp ,weight ,h3d_data,i ,hl)
663 IF ((h3d_data%N_VECT_CONT2M > 0).AND.(irot > 0))
THEN
664 mcont2(1,i) = (-mgx + mrx)*w
665 mcont2(2,i) = (-mgy + mry)*w
666 mcont2(3,i) = (-mgz + mrz)*w
667 mcont2(1,ix1(k)) = mcont2(1,ix1(k)) + mx(1)*h(1,k)*w
669 mcont2(3,ix1(k)) = mcont2(3,ix1(k)) + mz(1)*h(1,k)*w
670 mcont2(1,ix2(k)) = mcont2(1,ix2(k)) + mx(2)*h(2,k)*w
671 mcont2(2,ix2(k)) = mcont2(2,ix2(k)) + my(2)*h(2,k)*w
672 mcont2(3,ix2(k)) = mcont2(3,ix2(k)) + mz(2)*h(2,k)*w
673 mcont2(1,ix3(k)) = mcont2(1,ix3(k)) + mx(3)*h(3,k)*w
674 mcont2(2,ix3(k)) = mcont2(2,ix3(k)) + my(3)*h(3,k)*w
675 mcont2(3,ix3(k)) = mcont2(3,ix3(k)) + mz(3)*h(3,k)*w
676 mcont2(1,ix4(k)) = mcont2(1,ix4(k)) + mx(4)*h(4,k)*w
677 mcont2(2,ix4(k)) = mcont2(2,ix4(k)) + my(4)*h(4,k)*w
678 mcont2(3,ix4(k)) = mcont2(3,ix4(k)) + mz(4)*h(4,k)*w
691 IF (weight(-i) == 1)
THEN
692 i0 = i0base + iadx(ii)
700 IF (iroddl == 1)
THEN
714 IF (iroddl == 1)
THEN
728 IF (iroddl == 1)
THEN
742 IF (iroddl == 1)
THEN
753 IF(idtmins==2.OR.idtmins_int/=0)
THEN
755 CALL i2sms27(llt ,ix1 ,ix2 ,ix3 ,ix4 ,
756 2 nsvg ,h ,stif ,noint ,
757 3 dmint2(1,kk),nodnx_sms ,vis ,
768 econt = econt + econtt
769 econtd = econtd + econvt
770 fsav(26) = fsav(26) + econtt
771 fsav(28) = fsav(28) + econvt
772#include "lockoff.inc"