31 SUBROUTINE i3fri3(OUTPUT,LFT ,LLT ,NFT ,
32 2 X ,E ,IRECT ,MSR ,NSV ,
33 3 IRTL ,NTY ,CST ,IRTLO ,FRIC0 ,
34 4 FRIC ,IMAST ,FSAV ,FSKYI ,ISKY ,
35 5 FCONT ,H3D_DATA,N1 ,N2 ,N3 ,
36 6 IX1 ,IX2 ,IX3 ,IX4 ,H1 ,
37 7 H2 ,H3 ,H4 ,SSC ,TTC ,
38 8 XFACE ,STIF ,XP ,YP ,ZP ,
47 USE output_mod,
ONLY: output_
51#include "implicit_f.inc"
70 TYPE(output_),
INTENT(inout) :: OUTPUT
71 INTEGER NTY, IMAST,LFT, LLT, NFT
74 INTEGER IRECT(4,*), MSR(*), NSV(*), IRTL(*), IRTLO(*), ISKY(*)
76 . X(3,*), E(*), CST(2,*), FRIC0(3,*), FSAV(*),
77 . FSKYI(LSKYI,NFSKYI),(3,*)
79 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: n1,n2,n3
80 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN):: IX1,IX2,IX3,IX4
81 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: H1,H2,H3,H4
82 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: ssc,ttc,xface,stif
83 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: xp,yp,zp,fni
87 INTEGER I, IL, LOLD, JJ, NN, ,
88 . j2, j1, ig, i3, i2, i1
91 . h(4), xx1(4), xx2(4), xx3(4),ss0, tt0, xc,
92 . yc, zc, xc0, yc0, zc0, sp, sm
93 . stf, fti, fn, tn1, tn2, tn3, tn, dtm, econvt
94 my_real,
DIMENSION(MVSIZ) :: fxi,fyi,fzi
95 my_real,
DIMENSION(MVSIZ) :: fx1,fx2,fx3,fx4
96 my_real,
DIMENSION(MVSIZ) :: fy1,fy2,fy3,fy4
97 my_real,
DIMENSION(MVSIZ) :: fz1,fz2,fz3,fz4
107 IF(xface(i)==zero)
THEN
122 irtlo(il)=irtl(il)*xface(i)
139 nn=msr(irect(jj,lold))
156 xc0=xc0+h(jj)*xx1(jj)
157 yc0=yc0+h(jj)*xx2(jj)
158 zc0=zc0+h(jj)*xx3(jj)
163 econvt = econvt + half*(fxi(i)*ansx+fyi(i)*ansy+fzi(i)*ansz)
165 fmax= -
min(fric*fni(i),zero)
168 fxi(i)=fxi(i) + ansx*stf
169 fyi(i)=fyi(i) + ansy*stf
170 fzi(i)=fzi(i) + ansz*stf
171 fti=sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))
173 fn=fxi(i)*n1(i)+fyi(i)*n2(i)+fzi(i)*n3(i)
177 tn=sqrt(tn1*tn1+tn2*tn2+tn3*tn3)
184 tn=sqrt(n1(i)*n1(i)+n2(i)*n2(i))
204 irtlo(il)=irtl(il)*xface(i)
215 econvt = econvt + half*(fxi(i)*ansx+fyi(i)*ansy+fzi(i)*ansz)
223 econtv = econtv + econvt
225 fsav(27) = fsav(27) + econvt
231 fsav(4)=fsav(4)+fxi(i)*dtm
232 fsav(5)=fsav(5)+fyi(i)*dtm
233 fsav(6)=fsav(6)+fzi(i)*dtm
304 nisky = nisky + 5 * llt
305#include "lockoff.inc"
310 fskyi(niskyl,1)=fx1(i)
311 fskyi(niskyl,2)=fy1(i)
312 fskyi(niskyl,3)=fz1(i)
314 isky(niskyl) = ix1(i)
316 fskyi(niskyl,1)=fx2(i)
317 fskyi(niskyl,2)=fy2(i)
318 fskyi(niskyl,3)=fz2(i)
320 isky(niskyl) = ix2(i)
322 fskyi(niskyl,1)=fx3(i)
323 fskyi(niskyl,2)=fy3(i)
324 fskyi(niskyl,3)=fz3(i)
326 isky(niskyl) = ix3(i)
328 fskyi(niskyl,1)=fx4(i)
329 fskyi(niskyl,2)=fy4(i)
330 fskyi(niskyl,3)=fz4(i)
332 isky(niskyl) = ix4(i)
334 fskyi(niskyl,1)=-fxi(i)
335 fskyi(niskyl,2)=-fyi(i)
336 fskyi(niskyl,3)=-fzi(i)
339 isky(niskyl) = nsv(il)
344 fskyi(niskyl,1)=fx1(i)
345 fskyi(niskyl,2)=fy1(i)
346 fskyi(niskyl,3)=fz1(i)
349 isky(niskyl) = ix1(i)
351 fskyi(niskyl,1)=fx2(i)
352 fskyi(niskyl,2)=fy2(i)
353 fskyi(niskyl,3)=fz2(i)
356 isky(niskyl) = ix2(i)
358 fskyi(niskyl,1)=fx3(i)
359 fskyi(niskyl,2)=fy3(i)
360 fskyi(niskyl,3)=fz3(i)
363 isky(niskyl) = ix3(i)
365 fskyi(niskyl,1)=fx4(i)
366 fskyi(niskyl,2)=fy4(i)
367 fskyi(niskyl,3)=fz4(i)
370 isky(niskyl) = ix4(i)
372 fskyi(niskyl,1)=-fxi(i)
373 fskyi(niskyl,2)=-fyi(i)
374 fskyi(niskyl,3)=-fzi(i)
378 isky(niskyl) = nsv(il)
383 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0.AND.
384 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt
385 . (manim>=4.AND.manim<=15).OR. h3d_data%MH3D /= 0))
THEN
388 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
389 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
390 fcont(3,ix1(i)) =fcont(3,ix1(i)) + fz1(i)
391 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
392 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
393 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
394 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
395 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
396 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
397 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i)
398 fcont(2,ix4(i)) =fcont(2,ix4(i)) + fy4(i)
399 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
400 fcont(1,nsv(i+nft))=fcont(1,nsv(i+nft))- fxi(i)
401 fcont(2,nsv(i+nft))=fcont(2,nsv(i+nft))- fyi(i)
402 fcont(3,nsv(i+nft))=fcont(3,nsv(i+nft))- fzi(i)
404#include "lockoff.inc"
418 SUBROUTINE i5fri3(OUTPUT,LFT ,LLT ,NFT ,IPARI ,
419 2 X ,E ,IRECT ,MSR ,NSV ,
420 3 IRTL ,NTY ,CST ,IRTLO ,FRIC0 ,
421 4 FRIC ,IMAST ,FSAV ,FSKYI ,ISKY ,
422 5 FCONT ,V ,CF ,FROT_P,FREQ ,
423 6 FTSAV ,FTCONT,H3D_DATA,N1 ,N2 ,
424 7 N3 ,IX1 ,IX2 ,IX3 ,IX4 ,
425 8 XP ,YP ,ZP ,SSC ,TTC ,
426 9 XFACE ,STIF ,H1 ,H2 ,H3 ,
432 USE output_mod,
ONLY: output_
436#include "implicit_f.inc"
437#include "comlock.inc"
441#include "mvsiz_p.inc"
445#include "scr03_c.inc"
446#include "scr07_c.inc"
447#include "scr14_c.inc"
448#include "scr16_c.inc"
449#include "com06_c.inc"
450#include "com08_c.inc"
451#include "parit_c.inc"
452#include "scr18_c.inc"
453#include "impl1_c.inc"
457 TYPE(output_),
INTENT(inout) :: OUTPUT
458 INTEGER IPARI(*), NTY, IMAST, LFT, LLT, NFT
460 INTEGER IRECT(4,*), MSR(*), NSV(*), IRTL(*), IRTLO(*), ISKY(*)
461 my_real X(3,*), E(*), CST(2,*), FRIC0(3,*), FSAV(*),
462 . FSKYI(LSKYI,NFSKYI),
463 . V(3,*), FCONT(3,*),CF(*), FREQ, FROT_P(*),FTSAV(*),
465 TYPE(H3D_DATABASE) :: H3D_DATA
466 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX1,IX2,IX3,IX4
467 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: N1,N2,N3
468 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: XP,YP,ZP
469 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: SSC,TTC,XFACE,STIF
470 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: H1,H2,H3,H4,AREA,FNI
474 INTEGER I, IL, LOLD, JJ, NN, J3,J2, J1, IG, I3, I2, I1, K, IFQ, MFROT, NISKYL
476 . h(4), xx1(4), xx2(4), xx3(4),
477 . fxi(mvsiz), fyi(mvsiz),
478 . fzi(mvsiz), fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz), fy1(mvsiz), fy2(mvsiz),
479 . fy3(mvsiz), fy4(mvsiz), fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
480 . ss0, tt0, xc, econvt,
alpha, alphi,
481 . yc, zc, xc0, yc0, zc0, sp, sm, tp, tm, ansx, ansy, ansz, fmax,
482 . stf, fti, fn, tn1, tn2, tn3, tn, dtm, xmu, vx,vy,vz,vv,v2,p,
484 INTEGER IRTLO_I(MVSIZ)
485 my_real fric0_i(3,mvsiz)
494 fric0_i(1,i)=fric0(1,il)
495 fric0_i(2,i)=fric0(2,il)
496 fric0_i(3,i)=fric0(3,il)
505 IF(xface(i)==zero)
THEN
520 irtlo(il)=irtl(il)*xface(i)
537 nn=msr(irect(jj,lold))
547 tp=fourth*(one + tt0)
548 tm=fourth*(one - tt0)
554 xc0=xc0+h(jj)*xx1(jj)
555 yc0=yc0+h(jj)*xx2(jj)
556 zc0=zc0+h(jj)*xx3(jj)
561 econvt = econvt + half*(fxi(i)*ansx+fyi(i)*ansy+fzi(i)*ansz)
563 fxi(i)=fxi(i) + ansx*stf
564 fyi(i)=fyi(i) + ansy*stf
565 fzi(i)=fzi(i) + ansz*stf
567 IF (codvers>=44)
THEN
570 IF (ifq==3) freq =
max(one,freq*dt12)
579 fxi(i)=
alpha*fxi(i) + alphi*ftsav(k+1)
580 fyi(i)=
alpha*fyi(i) + alphi*ftsav(k+2)
581 fzi(i)=
alpha*fzi(i) + alphi*ftsav(k+3)
590 fti=sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))
592 fn =fxi(i)*n1(i)+fyi(i)*n2(i)+fzi(i)*n3(i)
596 tn =sqrt(tn1*tn1+tn2*tn2+tn3*tn3)
603 tn=sqrt(n1(i)*n1(i)+n2(i)*n2(i))
622 vx = v(1,ig) - h(1)*v(1,ix1(i)) - h(2)*v(1,ix2(i))
623 . - h(3)*v(1,ix3(i)) - h(4)*v(1,ix4(i))
624 vy = v(2,ig) - h(1)*v(2,ix1(i)) - h(2)*v(2,ix2(i))
625 . - h(3)*v(2,ix3(i)) - h(4)*v(2,ix4(i))
626 vz = v(3,ig) - h(1)*v(3,ix1(i)) - h(2)*v(3,ix2(i))
627 . - h(3)*v(3,ix3(i)) - h(4)*v(3,ix4(i))
629 aa = n1(i)*vx + n2(i)*vy + n3(i)*vz
633 v2 = vx*vx + vy*vy + vz*vz
634 vv = sqrt(
max(em30, v2))
637 xmu = fric + (frot_p(1) + frot_p(4)*p ) * p
638 . +(frot_p(2) + frot_p(3)*p) * vv + frot_p(5)*v2
642 . + frot_p(1)*exp(frot_p(2)*vv)*p**2
643 . + frot_p(3)*exp(frot_p(4)*vv)*p
644 . + frot_p(5)*exp(frot_p(6)*vv)
647 IF(vv>=0.AND.vv<=frot_p(5))
THEN
648 dmu = frot_p(3)-frot_p(1)
650 xmu = frot_p(1)+ dmu*vv1*(two-vv1)
651 ELSEIF(vv>frot_p(5).AND.vv<frot_p(6))
THEN
652 dmu = frot_p(4)-frot_p(3)
653 vv1 = (vv - frot_p(5))/(frot_p(6)-frot_p(5))
654 xmu = frot_p(3)+ dmu * (three-two*vv1)*vv1**2
656 dmu = frot_p(2)-frot_p(4)
657 vv2 = (vv - frot_p(6))**2
658 xmu = frot_p(2) - dmu / (one + dmu*vv2)
661 fmax = -
min(xmu*fni(i),zero)
670 irtlo(il)=irtl(il)*xface(i)
684 vx = v(1,ig) - h(1)*v(1,ix1(i)) - h(2)*v(1,ix2(i))
685 . - h(3)*v(1,ix3(i)) - h(4)*v(1,ix4(i))
686 vy = v(2,ig) - h(1)*v(2,ix1(i)) - h(2)*v(2,ix2(i))
687 . - h(3)*v(2,ix3(i)) - h(4)*v(2,ix4(i))
688 vz = v(3,ig) - h(1)*v(3,ix1(i)) - h(2)*v(3,ix2(i))
689 . - h(3)*v(3,ix3(i)) - h(4)*v(3,ix4(i))
690 vv = vx*vx + vy*vy + vz*vz
691 xmu = fric + ( cf(1) + cf(4)*p ) * p
692 . + ( cf(2) + cf(3)*p ) * sqrt(vv) + cf(5)*vv
693 fmax= -
min(xmu*fni(i),zero)
704 irtlo(il)=irtl(il)*xface(i)
716 econvt = econvt + half*(fxi(i)*ansx+fyi(i)*ansy+fzi(i)*ansz)
724 econtv = econtv + econvt
726 fsav(27) = fsav(27) + econvt
732 fsav(4)=fsav(4)+fxi(i)*dtm
733 fsav(5)=fsav(5)+fyi(i)*dtm
734 fsav(6)=fsav(6)+fzi(i)*dtm
805 nisky = nisky + 5 * llt
806#include "lockoff.inc"
811 fskyi(niskyl,1)=fx1(i)
812 fskyi(niskyl,2)=fy1(i)
813 fskyi(niskyl,3)=fz1(i)
815 isky(niskyl) = ix1(i)
817 fskyi(niskyl,1)=fx2(i)
818 fskyi(niskyl,2)=fy2(i)
819 fskyi(niskyl,3)=fz2(i)
821 isky(niskyl) = ix2(i)
823 fskyi(niskyl,1)=fx3(i)
824 fskyi(niskyl,2)=fy3(i)
825 fskyi(niskyl,3)=fz3(i)
827 isky(niskyl) = ix3(i)
829 fskyi(niskyl,1)=fx4(i)
830 fskyi(niskyl,2)=fy4(i)
831 fskyi(niskyl,3)=fz4(i)
833 isky(niskyl) = ix4(i)
835 fskyi(niskyl,1)=-fxi(i)
836 fskyi(niskyl,2)=-fyi(i)
837 fskyi(niskyl,3)=-fzi(i)
840 isky(niskyl) = nsv(il)
845 fskyi(niskyl,1)=fx1(i)
846 fskyi(niskyl,2)=fy1(i)
847 fskyi(niskyl,3)=fz1(i)
850 isky(niskyl) = ix1(i)
852 fskyi(niskyl,1)=fx2(i)
853 fskyi(niskyl,2)=fy2(i)
854 fskyi(niskyl,3)=fz2(i)
857 isky(niskyl) = ix2(i)
859 fskyi(niskyl,1)=fx3(i)
860 fskyi(niskyl,2)=fy3(i)
861 fskyi(niskyl,3)=fz3(i)
864 isky(niskyl) = ix3(i)
866 fskyi(niskyl,1)=fx4(i)
867 fskyi(niskyl,2)=fy4(i)
868 fskyi(niskyl,3)=fz4(i)
871 isky(niskyl) = ix4(i)
873 fskyi(niskyl,1)=-fxi(i)
874 fskyi(niskyl,2)=-fyi(i)
875 fskyi(niskyl,3)=-fzi(i)
879 isky(niskyl) = nsv(il)
888 fric0(1,il)=fric0_i(1,i)
889 fric0(2,il)=fric0_i(2,i)
890 fric0(3,il)=fric0_i(3,i)
895 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0 .AND.
896 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
897 . (manim>=4.AND.manim<=15).OR. h3d_data%MH3D /= 0))
THEN
900 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
901 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
902 fcont(3,ix1(i)) =fcont(3,ix1(i)) + fz1(i)
903 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
904 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
905 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
906 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
907 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
908 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
909 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i
910 fcont(2,ix4(i)) =fcont(2,ix4(i)) + fy4(i)
911 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
912 fcont(1,nsv(i+nft))=fcont(1,nsv(i+nft))- fxi(i)
913 fcont(2,nsv(i+nft))=fcont(2,nsv(i+nft))- fyi(i)
914 fcont(3,nsv(i+nft))=fcont(3,nsv(i+nft))- fzi(i)
916#include "lockoff.inc"
919 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
920 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP) .OR.
921 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
THEN
924 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fx1(i)
925 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fy1(i)
926 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fz1(i)
927 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fx2(i)
928 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fy2(i)
929 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fz2(i)
931 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fy3(i)
932 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fz3(i)
933 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fx4(i)
934 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fy4(i)
935 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fz4(i)
936 ftcont(1,nsv(i+nft))=ftcont(1,nsv(i+nft))- fxi(i)
938 ftcont(3,nsv(i+nft))=ftcont(3,nsv(i+nft))- fzi(i)
940#include "lockoff.inc"
subroutine i5fri3(output, lft, llt, nft, ipari, x, e, irect, msr, nsv, irtl, nty, cst, irtlo, fric0, fric, imast, fsav, fskyi, isky, fcont, v, cf, frot_p, freq, ftsav, ftcont, h3d_data, n1, n2, n3, ix1, ix2, ix3, ix4, xp, yp, zp, ssc, ttc, xface, stif, h1, h2, h3, h4, area, fni)