45 SUBROUTINE i24for3(OUTPUT, JLT ,A ,V ,IBCC ,ICODT ,
46 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
47 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
48 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
49 5 N1 ,N2 ,N3 ,H1 ,H2 ,
50 6 H3 ,H4 ,FCONT ,PENE ,
51 7 IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
52 8 IVIS2 ,NELTST ,ITYPTST ,DT2T ,SUBTRIA ,
53 9 GAPV ,INACTI ,INDEX ,NISKYFI ,
54 A KINET ,NEWFRONT ,ISECIN ,NSTRF ,SECFCUM ,
55 B X ,IRECT ,CE_LOC ,MFROT ,IFQ ,
56 C FROT_P ,SECND_FR ,ALPHA0 ,
57 D IBAG ,ICONTACT ,IRTLM ,
58 E VISCN ,VXI ,VYI ,VZI ,MSI ,
59 F KINI ,NIN ,NISUB ,LISUB ,ADDSUBS ,
60 G ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,CAND_N ,
61 H ILAGM ,ICURV ,FNCONT ,FTCONT ,NSN ,
62 I X1 ,X2 ,X3 ,X4 ,Y1 ,
63 J Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
64 K Z3 ,Z4 ,XI ,YI ,ZI ,
65 L IADM ,RCURVI ,RCONTACT ,ACONTACT ,PCONTACT ,
66 M ANGLMI ,PADM ,INTTH ,PHI , FTHE ,
67 N FTHESKYI ,TEMP ,TEMPI ,RSTIF ,IFORM ,
68 O MSKYI_SMS ,ISKYI_SMS ,NSMS ,CAND_N_N ,PENE_OLD ,
69 P STIF_OLD ,MBINFLG ,ILEV ,IGSTI ,KMIN ,
70 P INTPLY ,IPLY ,INOD_PXFEM,NM1 ,NM2 ,
71 R NM3 ,NREBOU ,IRTSE ,NSNE ,IS2SE ,
72 S IS2PT ,MSEGTYP ,JTASK ,ISENSINT ,
73 U FSAVPARIT ,NFT ,H3D_DATA,FRICC ,VISCFFRIC ,
74 V FRIC_COEFS ,T2MAIN_SMS,INTNITSCHE,FORNEQSI,IORTHFRIC ,
75 W FRIC_COEFS2 ,FRICC2 ,VISCFFRIC2,NFORTH ,NFISOT ,
76 X INDEXORTH , INDEXISOT,DIR1 ,DIR2 ,T2FAC_SMS ,
77 Y F_PFIT ,TAGNCONT ,KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,
78 Z TYPSUB ,INFLG_SUBS,INFLG_SUBM ,NINLOADP ,DGAPLOADINT,
79 1 S_LOADPINTER,DIST ,IXX ,INTEREFRIC,INTCAREA,
80 2 PARAMETERS ,PENREF ,KMAX ,S_ADDSUBM, S_LISUBM,S_TYPSUB,
81 3 NISUBMAX,I_STOK,NRTM ,NRTSE ,NSNR)
90 USE i24intarea_fic_mod ,
ONLY : i24intarea_fic
94#include "implicit_f.inc"
103#include "com01_c.inc"
104#include "com04_c.inc"
105#include "com06_c.inc"
106#include "com08_c.inc"
107#include "scr05_c.inc"
108#include "scr07_c.inc"
109#include "scr11_c.inc"
110#include "scr14_c.inc"
111#include "scr16_c.inc"
112#include "scr18_c.inc"
114#include "parit_c.inc"
115#include "param_c.inc"
116#include "impl1_c.inc"
120 TYPE(output_),
INTENT(INOUT) :: OUTPUT
126 INTEGER NELTST,ITYPTST,JLT,IBCC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
127 . INTNITSCHE,IORTHFRIC,NFORTH ,NFISOT,
128 . NSN,ICODT(*), ITAB(*), ISKY(*), KINET(*),IRTLM(2,NSN),
129 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
130 . IRECT(4,*),ICONTACT(*), CAND_N(*),
131 . KINI(*),SUBTRIA(MVSIZ),MBINFLG(*),ILEV,
132 . NISKYFI,IADM,INTTH,IFORM,CAND_N_N(*),INTPLY,
133 . MSEGTYP(*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
134 . TYPSUB(S_TYPSUB),JTASK
135 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
136 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
137 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(S_ADDSUBM), LISUBS(*),
138 . LISUBM(*),ILAGM,ICURV(3), NREBOU,
139 . ISKYI_SMS(*), NSMS(*),IGSTI,IPLY(4,*),INOD_PXFEM(*),
140 . IRTSE(5,*),NSNE ,IS2SE(2,*),IS2PT(*), ISENSINT(NISUBMAX+1),NFT,T2MAIN_SMS(6,*),
141 . INDEXORTH(MVSIZ) ,INDEXISOT(MVSIZ),INFLG_SUBS(*), INFLG_SUBM(*)
142 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
143 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
144 . LOADP_HYD_INTER(NLOADP_HYD)
145 INTEGER ,
INTENT(IN) :: IXX(MVSIZ,13)
146 INTEGER ,
INTENT(IN) :: INTEREFRIC, INTCAREA
147 INTEGER ,
INTENT(IN) :: NRTM, NRTSE, NSNR
149 . STIGLO,FROT_P(*), X(3,*),
150 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
151 . SECND_FR(6,*),ALPHA0,
152 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
153 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*), FNCONT(3,*),FTCONT(3,*),
157 . gapv(mvsiz), pene(mvsiz),
158 . secfcum(7,numnod,nsect),
161 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
162 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
163 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
164 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
165 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
166 . xi(mvsiz),yi(mvsiz),zi(mvsiz),
167 . n1(mvsiz), n2(mvsiz), n3(mvsiz),
168 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
169 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
170 . phi(mvsiz), fthe(*),ftheskyi(lskyi),temp(*), tempi(mvsiz),
171 . fsavparit(nisub+1,11,*),
172 . fricc(mvsiz),viscffric(mvsiz),fric_coefs(mvsiz,10),forneqsi(mvsiz,3),
173 . fric_coefs2(mvsiz,10),fricc2(mvsiz),viscffric2(mvsiz),
174 . dir1(mvsiz,3),dir2(mvsiz,3),t2fac_sms(*)
178 . rcurvi(*), rcontact(*), acontact(*),
179 . pcontact(*),padm, anglmi(*),rstif,
180 . pene_old(5,nsn),stif_old(2,nsn),f_pfit
181 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
182 my_real ,
INTENT(INOUT) :: dist(mvsiz)
183 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: penref
184 my_real,
INTENT(IN) :: kmax
187 TYPE (PARAMETERS_) ,
INTENT(IN):: PARAMETERS
191 INTEGER I, J1, IG, J, JG, K0, NBINTER, K1S, K, IE, NN,
192 . N,IMS2,ITAG,NN1,NN2,NN3,
193 . NN4,IFIT,PP,PPL,ITYPSUB,ISS1,ISS2,IMS1,IGRN
195 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
196 . FXT(MVSIZ),FYT(MVSIZ),FZT(MVSIZ),
197 . FX1(MVSIZ), FX2(MVSIZ), FX3(MVSIZ), FX4(MVSIZ),
198 . FY1(MVSIZ), FY2(MVSIZ), FY3(MVSIZ), FY4(MVSIZ),
199 . FZ1(MVSIZ), (MVSIZ), FZ3(MVSIZ), FZ4(MVSIZ),
200 . VIS2(MVSIZ), XMU(MVSIZ),STIF0(MVSIZ),
201 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
202 . XP(), YP(MVSIZ), ZP(MVSIZ),EFRIC_L(MVSIZ),
204 . V2, DT1INV, FAC,FF,ALPHA,BETA,
205 . FX, FY, FZ, MAS2,DTI,FT,FN,FMAX,FTN,
206 . FACM1, ECONTT, ECONVT, ECONTDT,
207 . FSAV1, FSAV2, FSAV3, FSAV4, FSAV5, FSAV6, FSAV8,
208 . FSAV9, FSAV10, FSAV11, FSAV12, FSAV13, FSAV14, FSAV15,
209 . FSAV22, FSAV23, FSAV24, FFO,FSAV29,
210 . VV,AX1,AX2,AY1,AY2,AZ1,AZ2,AX,AY,,
211 . AREA,P,VV1,VV2,DMU ,
212 . VN1(3),VN2(3),VN3(3),VN4(4),
213 . csa ,sna ,alphaf ,ftt1 ,ftt2 ,
214 . an(nforth) ,bn(nforth) ,nep1 ,nep2 ,nep ,c11 ,c22 ,ans ,ep ,
215 . signc,dgapload,gapp,efric_ls,efric_lm
219 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
220 . kt(mvsiz),c(mvsiz),cf(mvsiz),dpene(mvsiz),
221 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
222 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
224 . phi1(mvsiz), phi2(mvsiz), phi3(mvsiz), phi4(mvsiz),
225 . dtmini,stif0_imp(mvsiz),penn,tiny,pendr,
226 . fnnit1,fnnit2,fnnit3,fnnitsche,fnitxt(mvsiz),fnityt(mvsiz),fnitzt(mvsiz),
227 . xmu2(mvsiz),facn,fnon,stifkt(mvsiz),fackt,arean_fic
228 INTEGER JSUB, KSUB, JJ, KK, IN, NSUB, NCFIT
231 . fsavsub1(25,nisub),impx,impy,impz,vnm(mvsiz),sfac,stmin,
234 DOUBLE PRECISION RP1, RP2
263 efric_l(1:jlt) = zero
268 ELSEIF(icurv(1)==2)
THEN
269 ELSEIF(icurv(1) == 3)
THEN
272 IF (inacti==-1.AND.impl_s==0.AND.ncfit>0)
THEN
279 IF (igsti==-1) fmax = kmax
286 IF(pene(i) == zero)
THEN
313 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
314 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
316 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
317 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
318 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
319 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
320 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i)*vz(i)
325 IF(pene(i) == zero)
THEN
353 nn1 =inod_pxfem(ix1(i))
354 nn2 =inod_pxfem(ix2(i))
355 nn3 =inod_pxfem(ix3(i))
356 nn4 =inod_pxfem(ix4(i))
374 IF(iplyxfem /= 2)
THEN
379 IF(nn1 > 0 .AND. jj > 0)
THEN
380 vn1(1) = vn1(1) +
ply(jj)%V(1,nn1)
381 vn1(2) = vn1(2) +
ply(jj)%V(2,nn1)
382 vn1(3) = vn1(3) +
ply(jj)%V(3,nn1)
385 IF(nn2 > 0 .AND. jj > 0)
THEN
386 vn2(1) = vn2(1) +
ply(jj)%V(1,nn2)
387 vn2(2) = vn2(2) +
ply(jj)%V(2,nn2)
388 vn2(3) = vn2(3) +
ply(jj)%V(3,nn2)
391 IF(nn3 > 0 .AND. jj > 0)
THEN
392 vn3(1) = vn3(1) +
ply(jj)%V(1,nn3)
393 vn3(2) = vn3(2) +
ply(jj)%V(2,nn3)
394 vn3(3) = vn3(3) +
ply(jj)%V(3,nn3)
397 IF(nn4 > 0 .AND. jj > 0)
THEN
398 vn4(1) = vn4(1) +
ply(jj)%V(1,nn4)
399 vn4(2) = vn4(2) +
ply(jj)%V(2,nn4)
400 vn4(3) = vn4(3) +
ply(jj)%V(3,nn4)
404 vx(i) = vxi(i) - h1(i)*vn1(1) - h2(i)*vn2(1)
405 . - h3(i)*vn3(1) - h4(i)*vn4(1)
406 vy(i) = vyi(i) - h1(i)*vn1(2) - h2(i)*vn2(2)
407 . - h3(i)*vn3(2) - h4(i)*vn4(2)
408 vz(i) = vzi(i) - h1(i)*vn1(3) - h2(i)*vn2(3)
409 . - h3(i)*vn3(3) - h4(i)*vn4(3)
410 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
411 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i
420 IF (ifit >0.OR.(inacti==-1.AND.impl_s==0))
THEN
422 IF(pene(i) == zero)cycle
424 IF(stiglo<=zero) stif(i) = half*stif(i)
426 IF(penref(i) > zero)
THEN
427 pendr = (pene(i)/penref(i))**2
428 fackt =
min(fmax,(one+three*fnon*pendr))
429 facn =
min(fmax,(one+fnon*pendr))
430 stifkt(i)= stifkt(i)*fackt
431 stif(i)= stif(i)*facn
433 fni(i)= -stif(i) * pene(i)
435 ELSEIF (igsti==-1.AND.impl_s==0)
THEN
438 IF(pene(i) == zero)cycle
441 IF(penref(i) > zero)
THEN
442 pendr = (pene(i)/penref(i))**2
443 facn =
min(fmax,(one+fnon*pendr))
444 stif(i)=
min(kmax,stif(i)*facn)
445 fackt = three*(stif(i)/stif0(i)-one)
446 stifkt(i)=
max(stif(i),stifkt(i)*fackt)
448 fni(i)= -stif(i) * pene(i)
450 ELSEIF(impl_s>0.AND.igsti==6)
THEN
453 IF (nrebou == -1)
THEN
459 IF(pene(i) == zero)cycle
463 IF (stif_old(1,n)==zero.OR.nrebou==-1)
THEN
464 stif_old(1,n) = sfac*stif0(i)
465 ELSEIF (nrebou <-1)
THEN
466 stmin = em04*stif0(i)
467 stif_old(1,n) =
max(stmin,em01*stif_old(1,n))
469 stif_old(1,n) =
max(kmin,stif_old(1,n))
470 stif(i) = stif_old(1,n)
473 IF (
stif_oldfi(nin)%P(1,jg)==zero.OR.nrebou==-1)
THEN
475 ELSEIF (nrebou <-1)
THEN
476 stmin = em04*stif0(i)
487 IF(pene(i) == zero)cycle
491 stif0_imp(i) = stif_old(1,n)
497 IF(pene(i) == zero)cycle
502 IF(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero)
THEN
503 IF(pene(i) > pene_old(2,n) )
THEN
504 facm1 = pene(i)/
max(em20,pene_old(2,n))
505 IF (stif0_imp(i)/stif0(i) <em02)
THEN
511 facm1=
min(penn,facm1)
512 stif(i) = facm1*stif0_imp(i)
514 stif(i) =
min(stif(i),stif0(i))
518 pene_old(1,n) = pene(i)
519 stif_old(1,n) = stif(i)
521 ELSEIF(inconv ==1 )
THEN
524 pene_old(1,n) =
max(pene_old(1,n),pene(i))
525 stif_old(1,n) =
min(stif_old(1,n),stif(i))
526#include "lockoff.inc"
534 IF (stif0_imp(i)/stif0(i) <em02)
THEN
540 facm1=
min(penn,facm1)
541 stif(i) = facm1*stif0_imp(i)
542 stif(i) =
min(stif(i),stif0(i))
548 ELSEIF(inconv ==1 )
THEN
554#include "lockoff.inc"
560 IF(pene(i) == zero)cycle
564 stif_old(2,n) = stif(i)
571 IF(pene(i) == zero)cycle
573 stif(i) = half*stif(i)
575 ELSEIF(stif(i)/=zero)
THEN
579 fni(i)= -stif(i) * pene(i)
585 IF(pene(i) == zero)cycle
586 dpene(i) =
max(zero,-vnm(i)*dt1)
590 IF(tt /= zero.AND.(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero))
THEN
591 ddp = pene(i)-pene_old(2,n)-dpene(i)
592 IF(pene(i) > pene_old(2,n) .AND.ddp>zero)
THEN
593 rp1 = pene_old(2,n)/pene(i)
594 rp2 = dpene(i)/pene(i)
595 stif(i) = stif_old(2,n)*rp1+ stif(i)*rp2
596 ELSEIF(.NOT.(pene_old
THEN
598 stif(i) = stif_old(2,n)
601 pene_old(1,n) = pene(i)
602 stif_old(1,n) = stif(i)
604 ELSEIF(inconv ==1 )
THEN
607 pene_old(1,n) =
max(pene_old(1,n),pene(i))
608 stif_old(1,n) =
max(stif_old(1,n),stif(i))
609#include "lockoff.inc"
613 IF(tt /= zero.AND.(
pene_oldfi(nin)%P(2,jg)/= zero.OR.
615 ddp = pene(i)-
pene_oldfi(nin)%P(2,jg)-dpene(i)
616 IF(pene(i) >
pene_oldfi(nin)%P(2,jg) .AND.ddp>zero)
THEN
618 rp2 = dpene(i)/pene(i)
619 stif(i) =
stif_oldfi(nin)%P(2,jg)*rp1+ stif(i)*rp2
620 ELSEIF(.NOT.(
pene_oldfi(nin)%P(2,jg)== zero.AND.
628 ELSEIF(inconv ==1 )
THEN
634#include "lockoff.inc"
640 IF(pene(i) == zero)cycle
642 stif(i) = half*stif(i)
643 ELSEIF(stif(i)/=zero)
THEN
646 fni(i)= -stif(i) * pene(i)
655 IF(pene(i) == zero)cycle
656 econtt = econtt+half*stif(i)*pene(i)**2
659 IF(intnitsche > 0 )
THEN
661 IF(pene(i) == zero)cycle
662 fnnit1 = forneqsi(i,1)*n1(i)
663 fnnit2 = forneqsi(i,2)*n2(i)
664 fnnit3 = forneqsi(i,3)*n3(i)
665 fnnitsche = fnnit1 + fnnit2 + fnnit3
667 fni(i) =
min(zero,fni(i) - half*fnnitsche)
681 vis2(i) = two * stif(i) * msi(i)
685 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
687 IF(pene(i) == zero)cycle
688 fac = stif(i) /
max(em30,stif(i))
690 ff = fac * visc * vis
691 stif(i) = stif0(i) + ff * dt1inv
692 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
700 IF(pene(i) == zero)cycle
701 fac = stif(i) /
max(em30,stif(i))
703 c(i)= fac * visc * vis
705 stif(i) = stif0(i) + c(i) * dt1inv
709 cf(i) = fac*sqrt(viscffric(i))*vis
710 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
713 ELSEIF(ivis2==1.OR.ivis2==2)
THEN
723 IF(pene(i) == zero)cycle
724 mas2 = ms(ix1(i))*h1(i)
728 vis2(i) = facv* stif(i) * msi(i) * mas2 /
729 .
max(em30,msi(i)+mas2)
733 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
735 IF(pene(i) == zero)cycle
736 fac = stif(i) /
max(em30,stif(i))
738 ff = fac * visc * vis
739 stif(i) = stif0(i) + ff * dt1inv
740 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
748 IF(pene(i) == zero)cycle
749 fac = stif(i) /
max(em30,stif(i))
751 c(i)= fac * visc * vis
753 stif(i) = stif(i) + c(i) * dt1inv
757 cf(i) = fac*sqrt(viscffric(i))*vis
758 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
767 vis2(i) = two * stif(i) * msi(i)
768 fac = stif(i) /
max(em30,stif(i))
770 ff = fac * visc * vis
771 stif(i) = stif0(i) + two* ff * dt1inv
772 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
782 IF(pene(i) == zero)cycle
783 fac = stif(i) /
max(em30,stif(i))
784 vis2(i) = two* stif(i) * msi(i)
786 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
795 IF(pene(i) == zero)cycle
796 mas2 = ms(ix1(i))*h1(i)
800 vis2(i) = two* stif(i) * msi(i)
801 vis = 2. * visc * dt1inv * msi(i) * mas2 /
802 .
max(em30,msi(i)+mas2)
803 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
805 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
806 fni(i) =
min(fni(i),ff)
812 IF(viscffric(i)/=zero)
THEN
818 vis2(i) = two * stif(i) * msi(i)
821 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
822 IF(pene(i) == zero)cycle
823 fac = stif(i) /
max(em30,stif(i))
825 ff = fac * visc * vis
826 stif(i) = stif0(i) + ff * dt1inv
827 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
833 IF(pene(i) == zero)cycle
834 fac = stif(i) /
max(em30,stif(i))
836 c(i)= fac * visc * vis
838 stif(i) = stif0(i) + c(i) * dt1inv
842 cf(i) = fac*sqrt(viscffric(i))*vis
843 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
845 ELSEIF(ivis2==1.OR.ivis2==2)
THEN
854 IF(pene(i) == zero)cycle
855 mas2 = ms(ix1(i))*h1(i)
859 vis2(i) = facv* stif(i) * msi(i) * mas2 /
860 .
max(em30,msi(i)+mas2)
863 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
864 IF(pene(i) == zero)cycle
865 fac = stif(i) /
max(em30,stif(i))
867 ff = fac * visc * vis
868 stif(i) = stif0(i) + ff * dt1inv
869 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
875 IF(pene(i) == zero)cycle
876 fac = stif(i) /
max(em30,stif(i))
878 c(i)= fac * visc * vis
880 stif(i) = stif(i) + c(i) * dt1inv
884 cf(i) = fac*sqrt(viscffric(i))*vis
891 IF(pene(i) == zero)cycle
892 vis2(i) = two* stif(i) * msi(i)
893 fac = stif(i) /
max(em30,stif(i))
895 ff = fac * visc * vis
896 stif(i) = stif0(i) + two * ff * dt1inv
897 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
905 IF(pene(i) == zero)cycle
906 vis2(i) = two * stif(i) * msi(i)
907 fac = stif(i) /
max(em30,stif(i))
909 ff = fac * visc * vis
910 stif(i) = stif0(i) + two* ff * dt1inv
911 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
919 IF(pene(i) == zero)cycle
920 fac = stif(i) /
max(em30,stif(i))
921 vis2(i) = two* stif(i) * msi(i)
923 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
930 IF(pene(i) == zero)cycle
931 mas2 = ms(ix1(i))*h1(i)
935 vis2(i) = two* stif(i) * msi(i)
936 vis = 2. * visc * dt1inv * msi(i) * mas2 /
937 .
max(em30,msi(i)+mas2)
938 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
940 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
941 fni(i) =
min(fni(i),ff)
965 IF(pene(i) == zero)cycle
967 ims2 = bitget(mbinflg(ie),1)
974 fsav8 =fsav8 +abs(impx)
975 fsav9 =fsav9 +abs(impy)
976 fsav10=fsav10+abs(impz)
981 fsav11=fsav11-fni(i)*dt12
986 fsav11=fsav11+fni(i)*dt12
991 IF(pene(i) == zero)cycle
1001 fsav8 =fsav8 +abs(impx)
1002 fsav9 =fsav9 +abs(impy)
1003 fsav10=fsav10+abs(impz)
1004 fsav11=fsav11+fni(i)*dt12
1007#include "lockon.inc"
1008 fsav(1)=fsav(1)+fsav1
1009 fsav(2)=fsav(2)+fsav2
1010 fsav(3)=fsav(3)+fsav3
1011 fsav(8)=fsav(8)+fsav8
1012 fsav(9)=fsav(9)+fsav9
1013 fsav(10)=fsav(10)+fsav10
1014 fsav(11)=fsav(11)+fsav11
1015#include "lockoff.inc"
1017 IF(isensint(1)/=0)
THEN
1019 IF(pene(i) == zero)cycle
1020 fsavparit(1,1,i+nft) = fxi(i)
1021 fsavparit(1,2,i+nft) = fyi(i)
1022 fsavparit(1,3,i+nft) = fzi(i)
1026 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
1027 . ((tt>=output%TANIM.AND.tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
1028 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
1029 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
1031#include "lockon.inc"
1033 IF(pene(i) == zero)cycle
1034 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)*h1(i)
1035 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)*h1(i)
1036 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)*h1(i)
1037 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)*h2(i)
1038 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)*h2(i)
1039 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)*h2(i)
1040 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)*h3(i)
1041 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)*h3(i)
1042 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)*h3(i)
1043 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)*h4(i)
1044 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)*h4(i)
1045 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)*h4(i)
1049 IF (jg >numnod)
THEN
1052 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fncont ,
1055 fncont(1,jg)=fncont(1,jg)- fxi(i)
1056 fncont(2,jg)=fncont(2,jg)- fyi(i)
1057 fncont(3,jg)=fncont(3,jg)- fzi(i)
1063 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,
fnconti(nin)%P(1,1) ,
1072#include "lockoff.inc"
1082 fsavsub1(j,jsub)=zero
1086 IF(pene(i) == zero)cycle
1090 IF (msegtyp(ce_loc(i)) < 0)
THEN
1091 ie= - msegtyp(ce_loc(i))
1095 IF(ie > nrtm) ie=ie-nrtm
1098 DO WHILE(jj<addsubs(in+1))
1101 itypsub = typsub(jsub)
1103 IF(itypsub == 1 )
THEN
1104 iss1 = bitget(inflg_subs(jj),0)
1105 iss2 = bitget(inflg_subs(jj),1)
1106 igrn = bitget(inflg_subs(jj),2)
1108 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1109 ims1 = bitget(inflg_subm(kk),0)
1110 ims2 = bitget(inflg_subm(kk),1)
1112 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1113 . (ims1 == 1 .AND. iss2 == 1).OR.
1114 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1124 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1125 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1126 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1127 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1129 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1130 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1131 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1132 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1135 IF(isensint(jsub+1)/=0)
THEN
1137 fsavparit(jsub+1,1,i) = -fxi(i)
1138 fsavparit(jsub+1,2,i) = -fyi(i)
1139 fsavparit(jsub+1,3,i) = -fzi(i)
1141 fsavparit(jsub+1,1,i) = fxi(i)
1142 fsavparit(jsub+1,2,i) = fyi(i)
1143 fsavparit(jsub+1,3,i) = fzi(i)
1147 fsavsub1(8,jsub) =fsavsub1(8,jsub
1148 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1149 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1151 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1153 IF(parameters%INTCAREA > 0)
THEN
1154 IF(nn <=numnod)
THEN
1155 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN
1158 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1159 + nrtse , numnod ,parameters%INTAREAN, arean_fic)
1160 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1171 ELSEIF(itypsub == 2 )
THEN
1177 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1178 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1179 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1181 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1182 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1183 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1185 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1187 IF(isensint(jsub+1)/=0)
THEN
1188 fsavparit(jsub+1,1,i+nft) = fxi(i)
1189 fsavparit(jsub+1,2,i+nft) = fyi(i)
1190 fsavparit(jsub+1,3,i+nft) = fzi(i)
1193 IF(parameters%INTCAREA > 0)
THEN
1194 IF(nn <=numnod)
THEN
1195 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1198 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1199 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1200 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1206 ELSEIF(itypsub == 3)
THEN
1210 iss2 = bitget(inflg_subs
1211 iss1 = bitget(inflg_subs(jj),1)
1214 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1215 ims2 = bitget(inflg_subm(kk),0)
1216 ims1 = bitget(inflg_subm(kk),1)
1219 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1220 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1231 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1232 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1233 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1234 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1236 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1237 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1238 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1239 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1242 IF(isensint(jsub+1)/=0)
THEN
1244 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1245 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1246 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1248 fsavparit(jsub+1,1,i+nft) = fxi(i)
1249 fsavparit(jsub+1,2,i+nft) = fyi(i)
1250 fsavparit(jsub+1,3,i+nft) = fzi(i)
1254 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1255 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1256 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1258 IF(parameters%INTCAREA > 0)
THEN
1259 IF(nn <=numnod)
THEN
1260 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1263 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1264 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1265 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1280 IF (msegtyp(ce_loc(i)) < 0)
THEN
1281 ie= - msegtyp(ce_loc(i))
1285 IF(ie > nrtm) ie=ie-nrtm
1289 CALL i24_save_sub(numnod,mvsiz,nisub,s_addsubm,s_lisubm,s_typsub,nisubmax,i_stok,
1290 * ie,itypsub,nin,i,nn,nft,
1291 * addsubm,lisubm,typsub,
1292 * parameters%INTAREAN,parameters%INTCAREA,isensint
1293 * fxi,fyi,fzi,fni,dt12,
1294 * fsavsub1,fsavparit ,nrtse,
1295 * irtse,nsne,is2se ,is2pt,nsnr)
1302 IF(pene(i) == zero)cycle
1306 IF (msegtyp(ce_loc(i)) < 0)
THEN
1307 ie= - msegtyp(ce_loc(i))
1315 itypsub = typsub(jsub)
1317 IF(itypsub == 1 )
THEN
1323 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1324 ims1 = bitget(inflg_subm(kk),0)
1325 ims2 = bitget(inflg_subm(kk),1)
1327 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1328 . (ims1 == 1 .AND. iss2 == 1).OR.
1329 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1339 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1340 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1341 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1342 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1344 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1345 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1346 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1347 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1350 IF(isensint(jsub+1)/=0)
THEN
1352 fsavparit(jsub+1,1,i) = -fxi(i)
1353 fsavparit(jsub+1,2,i) = -fyi(i)
1354 fsavparit(jsub+1,3,i) = -fzi(i)
1356 fsavparit(jsub+1,1,i) = fxi(i)
1357 fsavparit(jsub+1,2,i) = fyi(i)
1358 fsavparit(jsub+1,3,i) = fzi(i)
1362 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1363 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1364 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1366 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1368 IF(parameters%INTCAREA > 0)
THEN
1371 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1372 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1374 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1384 ELSEIF(itypsub == 2 )
THEN
1390 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1392 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1394 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1395 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1396 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1398 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1400 IF(isensint(jsub+1)/=0)
THEN
1401 fsavparit(jsub+1,1,i+nft) = fxi(i)
1402 fsavparit(jsub+1,2,i+nft) = fyi(i)
1403 fsavparit(jsub+1,3,i+nft) = fzi(i)
1406 IF(parameters%INTCAREA > 0)
THEN
1409 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1410 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1412 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1418 ELSEIF(itypsub == 3 )
THEN
1423 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1424 ims2 = bitget(inflg_subm(kk),0)
1425 ims1 = bitget(inflg_subm(kk),1)
1427 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1428 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1439 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1440 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1441 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1442 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1444 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1445 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1446 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1447 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1450 IF(isensint(jsub+1)/=0)
THEN
1452 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1453 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1454 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1456 fsavparit(jsub+1,1,i+nft) = fxi(i)
1457 fsavparit(jsub+1,2,i+nft) = fyi
1458 fsavparit(jsub+1,3,i+nft) = fzi(i)
1462 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1463 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1464 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1466 IF(parameters%INTCAREA > 0)
THEN
1469 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1470 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1472 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1497 IF(iorthfric == 0)
THEN
1503 IF(pene(i) == 0)
THEN
1509 ELSEIF (mfrot==1)
THEN
1512 IF(pene(i) == 0)
THEN
1517 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1518 v2 = (vx(i) - n1(i)*aa)**2
1519 . + (vy(i) - n2(i)*aa)**2
1520 . + (vz(i) - n3(i)*aa)**2
1521 vv = sqrt(
max(em30,v2))
1522 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1523 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1524 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1525 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1526 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1527 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1528 ax = ay1*az2 - az1*ay2
1529 ay = az1*ax2 - ax1*az2
1530 az = ax1*ay2 - ay1*ax2
1531 area = half*sqrt(ax*ax+ay*ay+az*az)
1533 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1534 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1535 xmu(i) =
max(xmu(i),em30)
1537 ELSEIF(mfrot==2)
THEN
1540 IF(pene(i) == 0)
THEN
1545 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1546 v2 = (vx(i) - n1(i)*aa)**2
1547 . + (vy(i) - n2(i)*aa)**2
1548 . + (vz(i) - n3(i)*aa)**2
1549 vv = sqrt(
max(em30,v2))
1550 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1551 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1552 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1553 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1554 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1555 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1556 ax = ay1*az2 - az1*ay2
1557 ay = az1*ax2 - ax1*az2
1558 az = ax1*ay2 - ay1*ax2
1559 area = half*sqrt(ax*ax+ay*ay+az*az)
1562 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1563 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1564 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1565 xmu(i) =
max(xmu(i),em30)
1567 ELSEIF (mfrot==3)
THEN
1570 IF(pene(i) == 0)
THEN
1574 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1575 v2 = (vx(i) - n1(i)*aa)**2
1576 . + (vy(i) - n2(i)*aa)**2
1577 . + (vz(i) - n3(i)*aa)**2
1578 vv = sqrt(
max(em30,v2))
1579 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1580 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1581 vv1 = vv / fric_coefs(i,5)
1582 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1583 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1584 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1585 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1586 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1588 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1589 vv2 = (vv - fric_coefs(i,6))**2
1590 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1592 xmu(i) =
max(xmu(i),em30)
1594 ELSEIF(mfrot==4)
THEN
1597 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1598 v2 = (vx(i) - n1(i)*aa)**2
1599 . + (vy(i) - n2(i)*aa)**2
1600 . + (vz(i) - n3(i)*aa)**2
1601 vv = sqrt(
max(em30,v2))
1602 xmu(i) = fric_coefs(i,1)
1603 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1604 xmu(i) =
max(xmu(i),em30)
1613#include "vectorize.inc"
1619#include "vectorize.inc"
1624 IF(xmu(i)<=em30)
THEN
1632 IF(xmu2(i)<=em30)
THEN
1641 ELSEIF (mfrot==1)
THEN
1643#include "vectorize.inc"
1646 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1647 v2 = (vx(i) - n1(i)*aa)**2
1648 . + (vy(i) - n2(i)*aa)**2
1649 . + (vz(i) - n3(i)*aa)**2
1650 vv = sqrt(
max(em30,v2))
1652 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1653 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1654 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1655 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1656 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1657 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1658 ax = ay1*az2 - az1*ay2
1659 ay = az1*ax2 - ax1*az2
1660 az = ax1*ay2 - ay1*ax2
1661 area = half*sqrt(ax*ax+ay*ay+az*az)
1663 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1664 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1665 xmu(i) =
max(xmu(i),em30)
1668#include "vectorize.inc"
1673 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1674 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1675 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1676 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1677 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1678 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1679 ax = ay1*az2 - az1*ay2
1680 ay = az1*ax2 - ax1*az2
1681 az = ax1*ay2 - ay1*ax2
1682 area = half*sqrt(ax*ax+ay*ay+az*az)
1685 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1687 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1688 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*vv*vv
1690 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1692 xmu2(i) = fricc2(i) + (fric_coefs2(i,1) + fric_coefs2(i,4)*p ) * p
1693 . +(fric_coefs2(i,2) + fric_coefs2(i,3)*p) * vv + fric_coefs2(i,5)*vv*vv
1695 xmu(i) =
max(xmu(i),em30)
1696 xmu2(i) =
max(xmu2(i),em30)
1700#include
"vectorize.inc"
1703 IF(xmu(i)<=em30)
THEN
1711 IF(xmu2(i)<=em30)
THEN
1722 ELSEIF(mfrot==2)
THEN
1724#include "vectorize.inc"
1728 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1729 v2 = (vx(i) - n1(i)*aa)**2
1730 . + (vy(i) - n2(i)*aa)**2
1731 . + (vz(i) - n3(i)*aa)**2
1732 vv = sqrt(
max(em30,v2))
1733 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1734 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1735 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1736 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1737 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1738 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1739 ax = ay1*az2 - az1*ay2
1740 ay = az1*ax2 - ax1*az2
1741 az = ax1*ay2 - ay1*ax2
1742 area = half*sqrt(ax*ax+ay*ay+az*az)
1745 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1746 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1747 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1748 xmu(i) =
max(xmu(i),em30)
1751#include "vectorize.inc"
1756 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1758 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1759 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1760 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1761 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1762 ax = ay1*az2 - az1*ay2
1763 ay = az1*ax2 - ax1*az2
1764 az = ax1*ay2 - ay1*ax2
1765 area = half*sqrt(ax*ax+ay*ay+az*az)
1768 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1771 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1772 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1773 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1775 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1778 . + fric_coefs2(i,1)*exp(fric_coefs2(i,2)*vv)*p*p
1779 . + fric_coefs2(i,3)*exp(fric_coefs2(i,4)*vv)*p
1780 . + fric_coefs2(i,5)*exp(fric_coefs2(i,6)*vv)
1782 xmu(i) =
max(xmu(i),em30)
1783 xmu2(i) =
max(xmu2(i),em30)
1787#include "vectorize.inc"
1790 IF(xmu(i)<=em30)
THEN
1798 IF(xmu2(i)<=em30)
THEN
1808 ELSEIF (mfrot==3)
THEN
1810#include "vectorize.inc"
1813 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1814 v2 = (vx(i) - n1(i)*aa)**2
1815 . + (vy(i) - n2(i)*aa)**2
1816 . + (vz(i) - n3(i)*aa)**2
1817 vv = sqrt(
max(em30,v2))
1818 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1819 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1820 vv1 = vv / fric_coefs(i,5)
1821 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1822 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1823 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1824 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1825 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1827 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1828 vv2 = (vv - fric_coefs(i,6))**2
1829 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1831 xmu(i) =
max(xmu(i),em30)
1834#include "vectorize.inc"
1838 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1840 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1841 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1843 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1844 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1845 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1846 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1847 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1849 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1850 vv2 = (vv - fric_coefs(i,6))**2
1851 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1854 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1856 IF(vv>=0.AND.vv<=fric_coefs2(i,5))
THEN
1857 dmu = fric_coefs2(i,3)-fric_coefs2(i,1)
1858 vv1 = vv / fric_coefs2(i,5)
1859 xmu2(i) = fric_coefs2(i,1)+ dmu*vv1*(two-vv1)
1860 ELSEIF(vv>fric_coefs2(i,5).AND.vv<fric_coefs2(i,6))
THEN
1861 dmu = fric_coefs2(i,4)-fric_coefs2(i,3)
1863 xmu2(i) = fric_coefs2(i,3)+ dmu * (three-two*vv1)*vv1**2
1865 dmu = fric_coefs2(i,2)-fric_coefs2(i,4)
1866 vv2 = (vv - fric_coefs2(i,6))**2
1867 xmu2(i) = fric_coefs2(i,2) - dmu / (one + dmu*vv2)
1869 xmu(i) =
max(xmu(i),em30)
1870 xmu2(i) =
max(xmu2(i),em30)
1873#include "vectorize.inc"
1876 IF(xmu(i)<=em30)
THEN
1884 IF(xmu2(i)<=em30)
THEN
1895 ELSEIF(mfrot==4)
THEN
1897#include "vectorize.inc"
1900 IF(pene(i) == 0)
THEN
1905 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1906 v2 = (vx(i) - n1(i)*aa)**2
1907 . + (vy(i) - n2(i)*aa)**2
1908 . + (vz(i) - n3(i)*aa)**2
1909 vv = sqrt(
max(em30,v2))
1910 xmu(i) = fric_coefs(i,1)
1911 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1912 xmu(i) =
max(xmu(i),em30)
1915#include "vectorize.inc"
1918 IF(pene(i) == 0)
THEN
1924 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
1927 . + (fric_coefs(i,1)-fricc(i))*exp(-fric_coefs(i,2)*vv)
1929 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
1931 xmu2(i) = fric_coefs2(i,1)
1932 . + (fricc2(i)-fric_coefs2(i,1))*exp(-fric_coefs2(i,2)*vv)
1933 xmu(i) =
max(xmu(i),em30)
1934 xmu2(i) =
max(xmu2(i),em30)
1937#include "vectorize.inc"
1940 IF(xmu(i)<=em30)
THEN
1948 IF(xmu2(i)<=em30)
THEN
1976 alpha =
max(one,alpha0*dt12)
1981 IF(intnitsche > 0 )
THEN
1984 IF(pene(i) == zero)cycle
1985 ftn = forneqsi(i,1)*n1(i) + forneqsi(i,2)*n2(i) + forneqsi(i,3)*n3(i)
1986 fnitxt(i) = half*(forneqsi(i,1) - ftn*n1(i
1987 fnityt(i) = half*(forneqsi(i,2)
1988 fnitzt(i) = half*(forneqsi(i,3) - ftn*n3(i)
1998 IF(iorthfric ==0 )
THEN
2003 IF(pene(i) == zero)cycle
2004 fx = stif0(i)*vx(i)*dt12
2005 fy = stif0(i)*vy(i)*dt12
2006 fz = stif0(i)*vz(i)*dt12
2011 fx = secnd_fr(4,n) + alpha*fx
2012 fy = secnd_fr(5,n) + alpha*fy
2013 fz = secnd_fr(6,n) + alpha*fz
2014 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2023 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2024 beta =
min(one,xmu(i)*sqrt(fn/ft))
2029#include "lockon.inc"
2030 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2031 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt
2032 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))
2034 IF ((fxt(i)- fnitxt(i))==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i)- fnitxt
2035 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2036 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2038#include "lockoff.inc"
2045 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2052 ft = fx*fx + fy*fy + fz*fz
2054 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2055 beta =
min(one,xmu(i)*sqrt(fn/ft))
2059#include "lockon.inc"
2060 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2061 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2062 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2063 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2064 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2065 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2067 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2068 *
secnd_frfi(nin)%P(1,jg) = abs(fxt(i)- fnitxt(i))
2069 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2070 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2071 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2072 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2073#include "lockoff.inc"
2076 fxi(i)=fxi(i) + fxt(i)
2077 fyi(i)=fyi(i) + fyt(i)
2078 fzi(i)=fzi(i) + fzt(i)
2079 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2080 econvt = econvt + efric_l(i)
2085 IF(pene(i) == zero)cycle
2086 fx = stif0(i)*vx(i)*dt12
2087 fy = stif0(i)*vy(i)*dt12
2088 fz = stif0(i)*vz(i)*dt12
2093 fx = secnd_fr(4,n) + alpha*fx
2094 fy = secnd_fr(5,n) + alpha*fy
2095 fz = secnd_fr(6,n) + alpha*fz
2096 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2103 ft = fx*fx + fy*fy + fz*fz
2105 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2106 beta =
min(one,xmu(i)*sqrt(fn/ft))
2110 fxi(i)=fxi(i) + fxt(i)
2111 fyi(i)=fyi(i) + fyt(i)
2112 fzi(i)=fzi(i) + fzt(i)
2118 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2125 ft = fx*fx + fy*fy + fz*fz
2127 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2128 beta =
min(one,xmu(i)*sqrt(fn/ft))
2132 fxi(i)=fxi(i) + fxt(i)
2133 fyi(i)=fyi(i) + fyt(i)
2134 fzi(i)=fzi(i) + fzt(i)
2144#include "vectorize.inc"
2147 IF(pene(i) == zero)cycle
2148 fx = stif0(i)*vx(i)*dt12
2149 fy = stif0(i)*vy(i)*dt12
2150 fz = stif0(i)*vz(i)*dt12
2155 fx = secnd_fr(4,n) + alpha*fx
2156 fy = secnd_fr(5,n) + alpha*fy
2157 fz = secnd_fr(6,n) + alpha*fz
2158 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2165 ft = fx*fx + fy*fy + fz*fz
2167 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2168 beta =
min(one,xmu(i)*sqrt(fn/ft))
2172#include "lockon.inc"
2173 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2174 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt(i)
2175 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)- fnitzt(i)
2178 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2179 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2180#include "lockoff.inc"
2187 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2194 ft = fx*fx + fy*fy + fz*fz
2196 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2197 beta =
min(one,xmu(i)*sqrt(fn/ft))
2201#include "lockon.inc"
2202 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2203 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2204 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2205 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2206 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2207 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2209 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2210 *
secnd_frfi(nin)%P(1,jg) = abs(fxt(i)- fnitxt(i))
2211 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2212 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2213 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2214 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2215#include "lockoff.inc"
2218 fxi(i)=fxi(i) + fxt(i)
2219 fyi(i)=fyi(i) + fyt(i)
2220 fzi(i)=fzi(i) + fzt(i)
2221 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2222 econvt = econvt + efric_l(i)
2225#include "vectorize.inc"
2228 IF(pene(i) == zero)cycle
2229 fx = stif0(i)*vx(i)*dt12
2230 fy = stif0(i)*vy(i)*dt12
2231 fz = stif0(i)*vz(i)*dt12
2236 fx = secnd_fr(4,n) + alpha*fx
2237 fy = secnd_fr(5,n) + alpha*fy
2238 fz = secnd_fr(6,n) + alpha*fz
2239 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2248 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2249 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2250 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2252 fn = fxi(i)**2+fyi(i
2260 ELSEIF(beta > 1)
THEN
2270 nep =nep1*nep1+nep2*nep2
2272 ep=nep1*ftt1+nep2*ftt2
2274 ans=(ep-sqrt(ep))/
max(em20,nep)
2275 nep1 =nep1/
max(em20,nep)
2276 nep2 =nep2/
max(em20,nep)
2280 alphaf = atan(c22/c11)
2281 signc = ftt1/
max(em20,abs(ftt1))
2282 csa = signc*abs(cos(alphaf))
2283 signc = ftt2/
max(em20,abs(ftt2))
2284 sna = signc*abs(sin(alphaf))
2286 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2290 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2291 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2292 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2296#include "lockon.inc"
2297 IF (abs(fxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)
2298 IF (abs(fyt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)
2299 IF (abs(fzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)
2301 IF (fxt(i)==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i))
2302 IF (fyt(i)==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i))
2303 IF (fzt(i)==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i))
2304#include "lockoff.inc"
2311 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2318 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2319 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2320 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2322 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2330 ELSEIF(beta > 1)
THEN
2340 nep =nep1*nep1+nep2*nep2
2343 ep=nep1*ftt1+nep2*ftt2
2345 ans=(ep-sqrt(ep))/
max(em20,nep)
2346 nep1 =nep1/
max(em20,nep)
2347 nep2 =nep2/
max(em20,nep)
2353 alphaf = atan(c22/c11)
2355 signc = ftt1/
max(em20,abs(ftt1))
2356 csa = signc*abs(cos(alphaf))
2357 signc = ftt2/
max(em20,abs(ftt2))
2358 sna = signc*abs(sin(alphaf))
2360 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2364 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2365 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2366 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2369#include "lockon.inc"
2370 IF ( abs(fxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2372 IF ( abs(fyt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2374 IF ( abs(fzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2383#include "lockoff.inc"
2386 fxi(i)=fxi(i) + fxt(i)
2387 fyi(i)=fyi(i) + fyt(i)
2388 fzi(i)=fzi(i) + fzt(i)
2389 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2390 econvt = econvt + efric_l(i)
2396#include "vectorize.inc"
2399 IF(pene(i) == zero)cycle
2400 fx = stif0(i)*vx(i)*dt12
2401 fy = stif0(i)*vy(i)*dt12
2402 fz = stif0(i)*vz(i)*dt12
2407 fx = secnd_fr(4,n) + alpha*fx
2408 fy = secnd_fr(5,n) + alpha*fy
2409 fz = secnd_fr(6,n) + alpha*fz
2410 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2417 ft = fx*fx + fy*fy + fz*fz
2419 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2420 beta =
min(one,xmu(i)*sqrt(fn/ft))
2424 fxi(i)=fxi(i) + fxt(i)
2425 fyi(i)=fyi(i) + fyt(i)
2426 fzi(i)=fzi(i) + fzt(i)
2432 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2439 ft = fx*fx + fy*fy + fz*fz
2441 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2442 beta =
min(one,xmu(i)*sqrt(fn/ft))
2446 fxi(i)=fxi(i) + fxt(i)
2447 fyi(i)=fyi(i) + fyt(i)
2448 fzi(i)=fzi(i) + fzt(i)
2453#include "vectorize.inc"
2456 IF(pene(i) == zero)cycle
2457 fx = stif0(i)*vx(i)*dt12
2458 fy = stif0(i)*vy(i)*dt12
2459 fz = stif0(i)*vz(i)*dt12
2464 fx = secnd_fr(4,n) + alpha*fx
2465 fy = secnd_fr(5,n) + alpha*fy
2466 fz = secnd_fr(6,n) + alpha*fz
2467 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2475 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2476 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2477 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2479 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2487 ELSEIF(beta > 1)
THEN
2497 nep =nep1*nep1+nep2*nep2
2500 ep=nep1*ftt1+nep2*ftt2
2502 ans=(ep-sqrt(ep))/
max(em20,nep)
2503 nep1 =nep1/
max(em20,nep)
2504 nep2 =nep2/
max(em20,nep)
2510 alphaf = atan(c22/c11)
2512 signc = ftt1/
max(em20,abs(ftt1))
2513 csa = signc*abs(cos(alphaf))
2514 signc = ftt2/
max(em20,abs(ftt2))
2515 sna = signc*abs(sin(alphaf))
2517 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2521 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2522 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2523 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2526 fxi(i)=fxi(i) + fxt(i)
2527 fyi(i)=fyi(i) + fyt(i)
2528 fzi(i)=fzi(i) + fzt(i)
2534 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2542 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2543 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2544 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2546 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2554 ELSEIF(beta > 1)
THEN
2560! projection on local tangent of ellipse(outside of ellipse)
2564 nep =nep1*nep1+nep2*nep2
2567 ep=nep1*ftt1+nep2*ftt2
2569 ans=(ep-sqrt(ep))/
max(em20,nep)
2570 nep1 =nep1/
max(em20,nep)
2571 nep2 =nep2/
max(em20,nep)
2573! projection on ellipse
2577 alphaf = atan(c22/c11)
2579 signc = ftt1/
max(em20,abs(ftt1))
2580 csa = signc*abs(cos(alphaf))
2581 signc = ftt2/
max(em20,abs(ftt2))
2582 sna = signc*abs(sin(alphaf))
2584 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2588 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2589 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2590 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2594 fxi(i)=fxi(i) + fxt(i)
2595 fyi(i)=fyi(i) + fyt(i)
2596 fzi(i)=fzi(i) + fzt(i)
2611 . ((tt>=output%TANIM.AND.tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
2612 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
2613 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
2615#include "lockon.inc"
2617 IF(pene(i) == zero)cycle
2618 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fxt(i)*h1(i)
2619 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fyt(i)*h1(i)
2620 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fzt(i)*h1(i)
2621 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fxt(i)*h2(i)
2622 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fyt(i)*h2(i)
2623 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fzt(i)*h2(i)
2624 ftcont(1,ix3(i)) =ftcont(1,ix3(i)) + fxt(i)*h3(i)
2625 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fyt(i)*h3(i)
2626 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fzt(i)*h3(i)
2627 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fxt(i)*h4(i)
2628 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fyt(i)*h4(i)
2629 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fzt(i)*h4(i)
2633 IF (jg >numnod)
THEN
2636 + ig ,fxt(i) ,fyt(i) ,fzt(i) ,ftcont ,
2639 ftcont(1,jg)=ftcont(1,jg)- fxt(i)
2640 ftcont(2,jg)=ftcont(2,jg)- fyt(i)
2641 ftcont(3,jg)=ftcont(3,jg)- fzt(i)
2647 + jg ,fxt(i) ,fyt(i) ,fzt(i) ,
ftconti(nin)%P(1,1) ,
2656#include "lockoff.inc"
2666 IF(pene(i) == zero)cycle
2676 fsav12=fsav12+abs(impx)
2677 fsav13=fsav13+abs(impy)
2678 fsav14=fsav14+abs(impz)
2679 fsav15=fsav15+sqrt(impx*impx+impy*impy+impz*impz)
2680 xp(i)=xi(i)+pene(i)*n1(i)
2681 yp(i)=yi(i)+pene(i)*n2(i)
2682 zp(i)=zi(i)+pene(i)*n3(i)
2683 fsav22=fsav22+yp(i)*impz-zp(i)*impy
2684 fsav23=fsav23+zp(i)*impx-xp(i)*impz
2685 fsav24=fsav24+xp(i)*impy-yp(i)*impx
2688 IF(intcarea > 0)
THEN
2690 IF(pene(i) == zero)cycle
2693 IF(jg <= numnod)
THEN
2694 fsav29=fsav29+parameters%INTAREAN(jg)
2697 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
2698 + nrtse , numnod , parameters%INTAREAN, arean_fic)
2699 fsav29=fsav29 + arean_fic
2706 fsav29=fsav29 + arean_fic
2713#include "lockon.inc"
2714 fsav(4) = fsav(4) + fsav4
2715 fsav(5) = fsav(5) + fsav5
2716 fsav(6) = fsav(6) + fsav6
2717 fsav(12) = fsav(12) + fsav12
2718 fsav(13) = fsav(13) + fsav13
2719 fsav(14) = fsav(14) + fsav14
2720 fsav(15) = fsav(15) + fsav15
2721 fsav(22) = fsav(22) + fsav22
2722 fsav(23) = fsav(23) + fsav23
2723 fsav(24) = fsav(24) + fsav24
2724 fsav(26) = fsav(26) + econtt
2725 fsav(27) = fsav(27) + econvt
2726 fsav(28) = fsav(28) + econtdt
2727 fsav(29) = fsav(29) + fsav29
2728#include "lockoff.inc"
2730 IF(isensint(1)/=0)
THEN
2732 fsavparit(1,4,i+nft) = fxi(i)
2733 fsavparit(1,5,i+nft) = fyi(i)
2734 fsavparit(1,6,i+nft) = fzi(i)
2742 IF(pene(i) == zero)cycle
2746 IF (msegtyp(ce_loc(i)) < 0)
THEN
2747 ie= - msegtyp(ce_loc(i))
2753 DO WHILE(jj<addsubs(in+1))
2755 itypsub = typsub(jsub)
2757 IF(itypsub == 1 )
THEN
2758 iss1 = bitget(inflg_subs(jj),0)
2759 iss2 = bitget(inflg_subs(jj),1)
2760 igrn = bitget(inflg_subs(jj),2)
2762 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2763 ims1 = bitget(inflg_subm(kk),0)
2764 ims2 = bitget(inflg_subm(kk),1)
2767 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
2768 . (ims1 == 1 .AND. iss2 == 1).OR.
2769 . (ims2 == 1 .AND. iss1 == 1)))
THEN
2778 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2779 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2780 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2785 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2786 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2787 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2789 IF(isensint(jsub+1)/=0)
THEN
2790 fsavparit(jsub+1,4,i+nft) = fxt(i)
2791 fsavparit(jsub+1,5,i+nft) = fyt(i)
2792 fsavparit(jsub+1,6,i+nft) = fzt(i)
2795 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2796 . +sqrt(impx*impx+impy*impy+impz*impz)
2797 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2798 . +yp(i)*impz-zp(i)*impy
2799 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2801 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2802 . +xp(i)*impy-yp(i)*impx
2811 ELSEIF(itypsub == 2 )
THEN
2817 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2818 fsavsub1(5,jsub)=fsavsub1
2819 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2824 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2825 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2826 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2828 IF(isensint(jsub+1)/=0)
THEN
2829 fsavparit(jsub+1,4,i+nft) = fxt(i)
2830 fsavparit(jsub+1,5,i+nft) = fyt(i)
2831 fsavparit(jsub+1,6,i+nft) = fzt(i)
2834 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2835 . +sqrt(impx*impx+impy*impy+impz*impz)
2836 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2837 . +yp(i)*impz-zp(i)*impy
2838 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2840 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2841 . +xp(i)*impy-yp(i)*impx
2849 iss2 = bitget(inflg_subs(jj),0)
2850 iss1 = bitget(inflg_subs(jj),1)
2852 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2853 ims2 = bitget(inflg_subm(kk),0)
2854 ims1 = bitget(inflg_subm(kk),1)
2857 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
2858 . (ims2 == 1 .AND. iss1 == 1)))
THEN
2869 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
2870 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
2871 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
2873 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2874 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2875 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2881 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2882 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2883 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2885 IF(isensint(jsub+1)/=0)
THEN
2887 fsavparit(jsub+1,4,i+nft) = -fxt(i)
2888 fsavparit(jsub+1,5,i+nft) = -fyt(i)
2889 fsavparit(jsub+1,6,i+nft) = -fzt(i)
2891 fsavparit(jsub+1,4,i+nft) = fxt(i)
2892 fsavparit(jsub+1,5,i+nft) = fyt(i)
2893 fsavparit(jsub+1,6,i+nft) = fzt(i)
2897 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2898 . +sqrt(impx*impx+impy*impy+impz*impz)
2899 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2900 . +yp(i)*impz-zp(i)*impy
2901 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2902 . +zp(i)*impx-xp(i)*impz
2903 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2904 . +xp(i)*impy-yp(i)*impx
2918 IF (msegtyp(ce_loc(i)) < 0)
THEN
2919 ie= - msegtyp(ce_loc(i))
2923 IF(ie > nrtm) ie=ie-nrtm
2926 DO WHILE(kk<addsubm(ie+1))
2927! all sub interfaces of s
2930 itypsub = typsub(ksub)
2931 IF(itypsub == 2 )
THEN
2936 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
2937 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
2938 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
2943 fsavsub1(12,ksub)=fsavsub1(12,ksub)+abs(impx)
2944 fsavsub1(13,ksub)=fsavsub1(13,ksub)+abs(impy)
2945 fsavsub1(14,ksub)=fsavsub1(14,ksub)+abs(impz)
2947 IF(isensint(ksub+1)/=0)
THEN
2948 fsavparit(ksub+1,4,i+nft) = -fxt(i)
2949 fsavparit(ksub+1,5,i+nft) = -fyt(i)
2950 fsavparit(ksub+1,6,i
2953 fsavsub1(15,ksub)= fsavsub1(15,ksub)
2954 . +sqrt(impx*impx+impy*impy+impz*impz)
2955 fsavsub1(22,ksub)=fsavsub1(22,ksub)
2956 . +yp(i)*impz-zp(i)*impy
2957 fsavsub1(23,ksub)=fsavsub1(23,ksub)
2958 . +zp(i)*impx-xp(i)*impz
2959 fsavsub1(24,ksub)=fsavsub1(24,ksub)
2960 . +xp(i)*impy-yp(i)*impx
2972 IF(pene(i) == zero)cycle
2976 IF (msegtyp(ce_loc(i)) < 0)
THEN
2977 ie= - msegtyp(ce_loc(i))
2985 itypsub = typsub(jsub)
2987 IF(itypsub == 1 )
THEN
2992 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2993 ims1 = bitget(inflg_subm(kk),0)
2994 ims2 = bitget(inflg_subm(kk),1)
2996 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
2997 . (ims1 == 1 .AND. iss2 == 1).OR.
2998 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3007 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3008 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3009 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3014 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3015 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3016 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3018 IF(isensint(jsub+1)/=0)
THEN
3020 fsavparit(jsub+1,5,i+nft) = fyt(i)
3021 fsavparit(jsub+1,6,i+nft) = fzt(i)
3024 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3025 . +sqrt(impx*impx+impy*impy+impz*impz)
3026 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3027 . +yp(i)*impz-zp(i)*impy
3028 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3029 . +zp(i)*impx-xp(i)*impz
3030 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3031 . +xp(i)*impy-yp(i)*impx
3041 ELSEIF(itypsub == 2 )
THEN
3047 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3048 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3049 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3054 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3056 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3057 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3059 IF(isensint(jsub+1)/=0)
THEN
3060 fsavparit(jsub+1,4,i+nft) = fxt(i)
3061 fsavparit(jsub+1,5,i+nft) = fyt(i)
3062 fsavparit(jsub+1,6,i+nft) = fzt(i)
3065 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3066 . +sqrt(impx*impx+impy*impy+impz*impz)
3067 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3068 . +yp(i)*impz-zp(i)*impy
3069 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3070 . +zp(i)*impx-xp(i)*impz
3071 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3072 . +xp(i)*impy-yp(i)*impx
3076 ELSEIF(itypsub == 3 )
THEN
3081 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3082 ims2 = bitget(inflg_subm(kk),0)
3083 ims1 = bitget(inflg_subm(kk),1)
3085 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3086 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3097 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
3098 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
3099 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
3100 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni
3102 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
3103 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
3104 fsavsub1(3,jsub)=fsavsub1(3,jsub
3105 fsavsub1(11,jsub)=fsavsub1
3108 IF(isensint(jsub+1)/=0)
THEN
3110 fsavparit(jsub+1,4,i+nft) = -fxt(i)
3111 fsavparit(jsub+1,5,i+nft) = -fyt(i)
3112 fsavparit(jsub+1,6,i+nft) = -fzt(i)
3114 fsavparit(jsub+1,4,i+nft) = fxt(i)
3115 fsavparit(jsub+1,5,i+nft) = fyt(i)
3116 fsavparit(jsub+1,6,i+nft) = fzt(i)
3120 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
3122 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
3135#include
"lockon.inc"
3139 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
3141 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
3142 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
3143 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
3144 IF(parameters%INTCAREA > 0) fsavsub(29,nsub)=fsavsub(29,nsub)+fsavsub1(25,jsub)
3146#include "lockoff.inc"
3149#include "lockon.inc"
3151 econtv = econtv + econvt ! frictional energy
3152 econt = econt + econtt
3153 econtd = econtd + econtdt
3155#include "lockoff.inc"
3158 IF(interefric >0)
THEN
3160#include "lockon.inc"
3162 IF(pene(i) == zero)cycle
3163 efric_lm = half*efric_l(i)
3164 output%DATA%EFRIC(interefric,ix1(i)) = output%DATA%EFRIC(interefric,ix1(i)) + h1(i)*efric_lm
3165 output%DATA%EFRIC(interefric,ix2(i)) = output%DATA%EFRIC(interefric,ix2(i)) + h2(i)*efric_lm
3166 output%DATA%EFRIC(interefric,ix3(i)) = output%DATA%EFRIC(interefric,ix3(i)) + h3(i)*efric_lm
3167 output%DATA%EFRIC(interefric,ix4(i)) = output%DATA%EFRIC(interefric,ix4(i)) + h4(i)*efric_lm
3169 efric_ls = half*efric_l(i)
3171 output%DATA%EFRIC(interefric,jg) = output%DATA%EFRIC(interefric,jg) + efric_ls
3177#include "lockoff.inc"
3181 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3183#include "lockon.inc"
3185 IF(pene(i) == zero)cycle
3186 efric_lm = half*efric_l(i)
3187 output%DATA%EFRICG(ix1(i)) = output%DATA%EFRICG(ix1(i)) + h1(i)*efric_lm
3188 output%DATA%EFRICG(ix2(i)) = output%DATA%EFRICG(ix2(i)) + h2(i)*efric_lm
3189 output%DATA%EFRICG(ix3(i)) = output%DATA%EFRICG(ix3(i)) + h3(i)*efric_lm
3190 output%DATA%EFRICG(ix4(i)) = output%DATA%EFRICG(ix4(i)) + h4(i)*efric_lm
3192 efric_ls = half*efric_l(i)
3194 output%DATA%EFRICG(jg) = output%DATA%EFRICG(jg) + efric_ls
3200#include "lockoff.inc"
3206 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3208 IF(pene(i) == zero)cycle
3211 IF(msi(i)==zero)
THEN
3217 cy = eight*msi(i)*kt(i)
3218 aux = sqrt(cx+cy)+two*c(i)
3219 stv(i)= kt(i)*aux*aux/
max
3220 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3232 IF(ms(j1)==zero)
THEN
3237 k1(i)=kt(i)*abs(h1(i))
3238 c1(i)=c(i)*abs(h1(i))
3239 cx =four*c1(i)*c1(i)
3240 cy =eight*ms(j1)*k1(i)
3241 aux = sqrt(cx+cy)+two*c1(i)
3242 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3243 cfi = cf(i)*abs(h1(i))
3244 aux = two*cfi*cfi/
max(ms(j1),em20)
3253 IF(ms(j1)==zero)
THEN
3258 k2(i)=kt(i)*abs(h2(i))
3259 c2(i)=c(i)*abs(h2(i))
3260 cx =four*c2(i)*c2(i)
3261 cy =eight*ms(j1)*k2(i)
3262 aux = sqrt(cx+cy)+two*c2(i)
3263 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3264 cfi = cf(i)*abs(h2(i))
3265 aux = two*cfi*cfi/
max(ms(j1),em20)
3274 IF(ms(j1)==zero)
THEN
3279 k3(i)=kt(i)*abs(h3(i))
3280 c3(i)=c(i)*abs(h3(i))
3281 cx =four*c3(i)*c3(i)
3282 cy =eight*ms(j1)*k3(i)
3283 aux = sqrt(cx+cy)+two*c3(i)
3284 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3285 cfi = cf(i)*abs(h3(i))
3286 aux = two*cfi*cfi/
max(ms(j1),em20)
3295 IF(ms(j1)==zero)
THEN
3300 k4(i)=kt(i)*abs(h4(i))
3301 c4(i)=c(i)*abs(h4(i))
3302 cx =four*c4(i)*c4(i)
3303 cy =eight*ms(j1)*k4(i)
3304 aux = sqrt(cx+cy)+two*c4(i)
3305 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3306 cfi = cf(i)*abs(h4(i))
3307 aux = two*cfi*cfi/
max(ms(j1),em20)
3318 IF(viscffric(i)/=zero
3319 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3323 IF(msi(i)==zero)
THEN
3329 cy = eight*msi(i)*kt(i)
3330 aux = sqrt(cx+cy)+two*c(i)
3331 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3332 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3344 IF(ms(j1)==zero)
THEN
3349 k1(i)=kt(i)*abs(h1(i))
3350 c1(i)=c(i)*abs(h1(i))
3351 cx =four*c1(i)*c1(i)
3352 cy =eight*ms(j1)*k1(i)
3353 aux = sqrt(cx+cy)+two*c1(i)
3354 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3355 cfi = cf(i)*abs(h1(i))
3356 aux = two*cfi*cfi/
max(ms(j1),em20)
3365 IF(ms(j1)==zero)
THEN
3370 k2(i)=kt(i)*abs(h2(i))
3371 c2(i)=c(i)*abs(h2(i))
3372 cx =four*c2(i)*c2(i)
3373 cy =eight*ms(j1)*k2(i)
3374 aux = sqrt(cx+cy)+two*c2(i)
3375 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3376 cfi = cf(i)*abs(h2(i))
3377 aux = two*cfi*cfi/
max(ms(j1),em20)
3386 IF(ms(j1)==zero)
THEN
3391 k3(i)=kt(i)*abs(h3(i))
3392 c3(i)=c(i)*abs(h3(i))
3393 cx =four*c3(i)*c3(i)
3394 cy =eight*ms(j1)*k3(i)
3395 aux = sqrt(cx+cy)+two*c3(i)
3396 st3(i)= k3(i)*aux*aux/
max
3397 cfi = cf(i)*abs(h3(i))
3398 aux = two*cfi*cfi/
max(ms(j1),em20)
3407 IF(ms(j1)==zero)
THEN
3412 k4(i)=kt(i)*abs(h4(i))
3413 c4(i)=c(i)*abs(h4(i))
3414 cx =four*c4(i)*c4(i)
3415 cy =eight*ms(j1)*k4(i)
3416 aux = sqrt(cx+cy)+two*c4(i)
3418 cfi = cf(i)*abs(h4(i))
3419 aux = two*cfi*cfi/
max(ms(j1),em20)
3427 IF(pene(i) == zero)cycle
3431 k1(i) =stif(i)*abs(h1(i))
3434 k2(i) =stif(i)*abs(h2(i))
3437 k3(i) =stif(i)*abs(h3(i))
3440 k4(i) =stif(i)*abs(h4(i))
3452 IF(pene(i) == zero)cycle
3477 IF(idtmins==2.OR.idtmins_int/=0)
THEN
3479 CALL i24sms2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3480 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3481 3 nin ,noint ,mskyi_sms, iskyi_sms,nsms ,
3482 4 kt ,c ,cf ,dtmini,dti ,
3483 5 irtse ,nsne ,is2se,is2pt ,t2main_sms ,
3492 IF(idtmins_int/=0)
THEN
3497 IF(ninloadp > 0)
THEN
3498 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
3500 ppl = loadp_hyd_inter(pp)
3501 dgapload = dgaploadint(k)
3503 gapp= gapv(i) + dgapload
3504 IF((pene(i)/=zero).OR.(dist(i) <= gapp.AND.dist(i) >= zero))
THEN
3506 IF(pene(i)==zero)
THEN
3512 tagncont(ppl,ixx(i,1)) = 1
3513 tagncont(ppl,ixx(i,2)) = 1
3514 tagncont(ppl,ixx(i,3)) = 1
3515 tagncont(ppl,ixx(i,4)) = 1
3519 IF (jg <= numnod)
THEN
3520 tagncont(ppl,jg) = 1
3524 IF (is2se(1,ig) > 0)
THEN
3526 ELSEIF(is2se(2,ig) > 0)
THEN
3530 tagncont(ppl,irtse(j,ie)) = 1
3545#include "mic_lockon.inc"
3550 hh = h1(i)+h2(i)+h3(i)+h4(i)
3551 IF(hh /= zero.OR.tagip(i)==1)
THEN
3568#include "mic_lockoff.inc"
3572 IF (impl_s ==0.AND.(inacti==-1.OR.igsti==-1)) stif(1:jlt)=
max(stif(1:jlt),stifkt(1:jlt))
3575 ELSEIF(iparit==0)
THEN
3576 CALL i24ass0(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3577 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3578 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3579 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
3580 5 fxi ,fyi ,fzi ,a ,stifn ,nin ,
3581 6 intth ,phi ,fthe ,phi1 , phi2 ,phi3 ,
3582 7 phi4 ,intply ,iply ,inod_pxfem ,
3583 8 irtse ,nsne ,is2se ,is2pt,jtask )
3586 CALL i24ass2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3587 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3588 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3590 5 fxi ,fyi ,fzi ,fskyi,isky ,niskyfi,
3591 6 nin ,noint ,intth,phi ,ftheskyi ,phi1,
3592 7 phi2 ,phi3 , phi4 ,itab ,intply,iply ,
3593 8 inod_pxfem,irtse,nsne,is2se,is2pt,tagip )
3596 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
3598#include "lockon.inc"
3600 IF(pene(i) == zero)cycle
3601 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
3602 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
3603 fcont(3,ix1(i)) =fcont(3,ix1(i)) + fz1(i)
3604 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
3605 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
3606 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
3607 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
3608 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
3609 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
3610 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i)
3612 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
3616 IF (jg >numnod)
THEN
3619 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fcont ,
3622 fcont(1,jg)=fcont(1,jg)- fxi(i)
3623 fcont(2,jg)=fcont(2,jg)- fyi(i)
3624 fcont(3,jg)=fcont(3,jg)- fzi(i)
3635#include "lockoff.inc"
3639 IF(isecin>0.AND.inconv==1)
THEN
3641 IF(nstrf(1)+nstrf(2)/=0)
THEN
3643 nbinter=nstrf(k0+14)
3646 IF(nstrf(k1s)==noint)
THEN
3648#include "lockon.inc"
3650 IF(pene(k) == zero)cycle
3653 IF(secfcum(4,ix1(k),i)==1.)
THEN
3654 secfcum(1,ix1(k),i)=secfcum(1,ix1(k),i)-fx1(k)
3655 secfcum(2,ix1(k),i)=secfcum(2,ix1(k),i)-fy1(k)
3656 secfcum(3,ix1(k),i)=secfcum(3,ix1(k),i)-fz1(k)
3658 IF(secfcum(4,ix2(k),i)==1.)
THEN
3659 secfcum(1,ix2(k),i)=secfcum(1,ix2(k),i)-fx2(k)
3660 secfcum(2,ix2(k),i)=secfcum(2,ix2(k),i)-fy2(k)
3661 secfcum(3,ix2(k),i)=secfcum(3,ix2(k),i)-fz2(k)
3663 IF(secfcum(4,ix3(k),i)==1.)
THEN
3664 secfcum(1,ix3(k),i)=secfcum(1,ix3(k),i)-fx3(k)
3665 secfcum(2,ix3(k),i)=secfcum(2,ix3(k),i)-fy3(k)
3666 secfcum(3,ix3(k),i)=secfcum(3,ix3(k),i)-fz3(k)
3668 IF(secfcum(4,ix4(k),i)==1.)
THEN
3669 secfcum(1,ix4(k),i)=secfcum(1,ix4
3670 secfcum(2,ix4(k),i)=secfcum(2,ix4(k),i)-fy4(k)
3671 secfcum(3,ix4(k),i)=secfcum(3,ix4(k),i)-fz4(k)
3676 IF (jg >numnod)
THEN
3678 IF(secfcum(4,jg,i)==1.)
THEN
3680 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3684 IF(secfcum(4,jg,i)==1.)
THEN
3685 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3686 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
3687 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi
3696 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3700 IF(secfcum(4,jg,i
THEN
3701 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3702 secfcum(2,jg,i)=secfcum
3703 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
3708#include "lockoff.inc"
3719 IF(ibag/=0.OR.iadm/=0)
THEN
3721 IF(pene(i) == zero)cycle
3744 IF(pene(i) == zero)cycle
3746 ibcs = ibcc - 8 * ibcm
3750 IF(ig>0.AND.ig<=numnod)
THEN
3752 CALL ibcoff(ibcs,icodt(ig))
3757 CALL ibcoff(ibcm,icodt(ig))
3759 CALL ibcoff(ibcm,icodt(ig))
3761 CALL ibcoff(ibcm,icodt(ig))
3763 CALL ibcoff(ibcm,icodt(ig))