46 SUBROUTINE i24for3(JLT ,A ,V ,IBCC ,ICODT ,
47 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
48 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
49 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
50 5 N1 ,N2 ,N3 ,H1 ,H2 ,
51 6 H3 ,H4 ,FCONT ,PENE ,
52 7 IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
53 8 IVIS2 ,NELTST ,ITYPTST ,DT2T ,SUBTRIA ,
54 9 GAPV ,INACTI ,INDEX ,NISKYFI ,
55 A KINET ,NEWFRONT ,ISECIN ,NSTRF ,SECFCUM ,
56 B X ,IRECT ,CE_LOC ,MFROT ,IFQ ,
57 C FROT_P ,SECND_FR ,ALPHA0 ,
58 D IBAG ,ICONTACT ,IRTLM ,
59 E VISCN ,VXI ,VYI ,VZI ,MSI ,
60 F KINI ,NIN ,NISUB ,LISUB ,ADDSUBS ,
61 G ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,CAND_N ,
62 H ILAGM ,ICURV ,FNCONT ,FTCONT ,NSN ,
63 I X1 ,X2 ,X3 ,X4 ,Y1 ,
64 J Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
65 K Z3 ,Z4 ,XI ,YI ,ZI ,
66 L IADM ,RCURVI ,RCONTACT ,ACONTACT ,PCONTACT ,
67 M ANGLMI ,PADM ,INTTH ,PHI , FTHE ,
68 N FTHESKYI ,TEMP ,TEMPI ,RSTIF ,IFORM ,
69 O MSKYI_SMS ,ISKYI_SMS ,NSMS ,CAND_N_N ,PENE_OLD ,
70 P STIF_OLD ,MBINFLG ,ILEV ,IGSTI ,KMIN ,
71 P INTPLY ,IPLY ,INOD_PXFEM,NM1 ,NM2 ,
72 R NM3 ,NREBOU ,IRTSE ,NSNE ,IS2SE ,
73 S IS2PT ,MSEGTYP ,JTASK ,ISENSINT ,
74 U FSAVPARIT ,NFT ,H3D_DATA,FRICC ,VISCFFRIC ,
75 V FRIC_COEFS ,T2MAIN_SMS,INTNITSCHE,FORNEQSI,IORTHFRIC ,
76 W FRIC_COEFS2 ,FRICC2 ,VISCFFRIC2,NFORTH ,NFISOT ,
77 X INDEXORTH , INDEXISOT,DIR1 ,DIR2 ,T2FAC_SMS ,
78 Y F_PFIT ,TAGNCONT ,KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,
79 Z TYPSUB ,INFLG_SUBS,INFLG_SUBM ,NINLOADP ,DGAPLOADINT,
80 1 S_LOADPINTER,DIST ,IXX ,INTEREFRIC,INTCAREA,
81 2 PARAMETERS ,PENREF ,KMAX ,S_ADDSUBM, S_LISUBM,S_TYPSUB,
82 3 NISUBMAX,I_STOK,NRTM ,NRTSE ,NSNR)
92 USE i24intarea_fic_mod ,
ONLY : i24intarea_fic
96#include "implicit_f.inc"
101#include "mvsiz_p.inc"
105#include "com01_c.inc"
106#include "com04_c.inc"
107#include "com06_c.inc"
108#include "com08_c.inc"
109#include "scr05_c.inc"
110#include "scr07_c.inc"
111#include "scr11_c.inc"
112#include "scr14_c.inc"
113#include "scr16_c.inc"
114#include "scr18_c.inc"
116#include "parit_c.inc"
117#include "param_c.inc"
118#include "impl1_c.inc"
127 INTEGER NELTST,ITYPTST,JLT,IBCC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
128 . intnitsche,iorthfric,nforth ,nfisot,
129 . nsn,icodt(*), itab(*), isky(*), kinet(*),irtlm(2,nsn),
130 . mfrot, ifq, noint,newfront,isecin, nstrf(*),
131 . irect(4,*),icontact(*), cand_n(*),
132 . kini(*),subtria(mvsiz),mbinflg(*),ilev,
133 . iset, niskyfi,iadm,intth,iform,cand_n_n(*),intply,
134 . msegtyp(*),tagncont(nloadp_hyd_inter,numnod),
135 . typsub(s_typsub),jtask
136 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
137 . (MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
138 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(S_ADDSUBM), LISUBS(*),
139 . LISUBM(*),ILAGM,ICURV(3), NREBOU,
140 . ISKYI_SMS(*), NSMS(*),IGSTI,IPLY(4,*),INOD_PXFEM(*),
141 . IRTSE(5,*),NSNE ,IS2SE(2,*),IS2PT(*), ISENSINT(NISUBMAX+1),NFT,T2MAIN_SMS(6,*),
142 . INDEXORTH(MVSIZ) ,INDEXISOT(MVSIZ),INFLG_SUBS(*), INFLG_SUBM(*)
143 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
144 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
145 . LOADP_HYD_INTER(NLOADP_HYD)
146 INTEGER ,
INTENT(IN) :: IXX(MVSIZ,13)
147 INTEGER ,
INTENT(IN) :: INTEREFRIC, INTCAREA
148 INTEGER ,
INTENT(IN) :: NRTM, NRTSE, NSNR
150 . STIGLO,FROT_P(*), X(3,*),
151 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
152 . SECND_FR(6,*),ALPHA0,
153 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
154 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*), FNCONT(3,*),FTCONT(3,*),
157 . LA(MVSIZ), LB(MVSIZ), LC(MVSIZ),STIF(MVSIZ),
158 . gapv(mvsiz), pene(mvsiz),
159 . secfcum(7,numnod,nsect),
161 . stifsav(mvsiz), viscn(*),
162 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
163 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
164 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
165 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
166 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
167 . xi(mvsiz),yi(mvsiz),zi(mvsiz),
168 . n1(mvsiz), n2(mvsiz), n3(mvsiz),
169 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
170 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
171 . phi(mvsiz), fthe(*),ftheskyi(lskyi),temp(*), tempi(mvsiz),
172 . fsavparit(nisub+1,11,*),
173 . fricc(mvsiz),viscffric(mvsiz),fric_coefs(mvsiz,10),forneqsi(mvsiz,3),
174 . fric_coefs2(mvsiz,10),fricc2(mvsiz),viscffric2(mvsiz),
175 . dir1(mvsiz,3),dir2(mvsiz,3),t2fac_sms(*)
179 . rcurvi(*), rcontact(*), acontact(*),
180 . pcontact(*),padm, anglmi(*),rstif,
181 . pene_old(5,nsn),stif_old(2,nsn),f_pfit
182 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
183 my_real ,
INTENT(INOUT) :: dist(mvsiz)
184 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: penref
185 my_real,
INTENT(IN) :: kmax
188 TYPE (PARAMETERS_) ,
INTENT(IN):: PARAMETERS
192 INTEGER I, J1, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI,
193 . NA1,NA2,N,IMS2,ITAG,NN1,NN2,NN3,
194 . NN4,ii,IFIT,PP,PPL,ITYPSUB,ISS1,ISS2,IMS1,IX,IGRN
196 . FXR(MVSIZ), FYR(MVSIZ), FZR(MVSIZ)
198 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
199 . FXT(MVSIZ),FYT(MVSIZ),FZT(MVSIZ),
200 . FX1(MVSIZ), FX2(MVSIZ), FX3(MVSIZ), FX4(MVSIZ),
201 . FY1(MVSIZ), FY2(MVSIZ), FY3(MVSIZ), FY4(MVSIZ),
202 . FZ1(MVSIZ), FZ2(MVSIZ), FZ3(MVSIZ), FZ4(MVSIZ),
203 . VIS2(MVSIZ), DTMI(MVSIZ), XMU(MVSIZ),STIF0(MVSIZ),
204 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
205 . XP(MVSIZ), YP(MVSIZ), ZP(MVSIZ),EFRIC_L(MVSIZ),
206 . VNX, VNY, VNZ, AA, CRIT,S2,
207 . V2, FM2, DT1INV, VISCA, FAC,FF,ALPHI,ALPHA,BETA,
208 . FX, FY, FZ, F2, MAS2, M2SK, DTMI0,DTI,FT,FN,FMAX,FTN,
209 . FACM1, ECONTT, ECONVT, H0, ECONTDT,
210 . D1,D2,D3,D4,A1,A2,A3,A4,
211 . FSAV1, FSAV2, FSAV3, FSAV4, FSAV5, FSAV6, FSAV7, FSAV8,
212 . FSAV9, FSAV10, FSAV11, FSAV12, FSAV13, FSAV14, FSAV15,
213 . FSAV22, FSAV23, FSAV24, FFO,FSAV29,
214 . e10, h0d, s2d, sum,
215 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
216 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
218 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
219 .
area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
220 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa,bbb,stfr,visr ,tm,ts,
221 . vn1(3),vn2(3),vn3(3),vn4(4),
222 . csa ,sna ,alphaf ,ftt1 ,ftt2 ,
223 . an(nforth) ,bn(nforth) ,nep1 ,nep2 ,nep ,c11 ,c22 ,ans ,ep ,
224 . signc,dgapload,gapp,efric_ls,efric_lm
228 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
229 . kt(mvsiz),c(mvsiz),cf(mvsiz),dpene(mvsiz),
230 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz)
231 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3
232 . cx,cy,cfi,aux, fx6(6,mvsiz), fy6(6,mvsiz), fz6(6,mvsiz),
233 . phi1(mvsiz), phi2(mvsiz), phi3(mvsiz), phi4(mvsiz),
234 . dtmini,stif0_imp(mvsiz),penn,tiny,pendr,
235 . fnnit1,fnnit2,fnnit3,fnnitsche,t3,fnitxt(mvsiz),fnityt(mvsiz),fnitzt(mvsiz),
236 . xmu2(mvsiz),facn,fnon,stifkt(mvsiz),fackt,arean_fic
237 INTEGER JSUB,KSUB,JJ,KK,IN,NSUB,ibug,ip,NCFIT
238 INTEGER ISEGTYP(MVSIZ),IXSS(4),NOD1,NOD2,NS
240 . FSAVSUB1(25,NISUB),IMPX,IMPY,IMPZ,VNM(MVSIZ),SFAC,STMIN,
241 . FXS(4),FYS(4),FZS(4),HH,FINC,FA,FB,DDP,PREC1
243 DOUBLE PRECISION RP1,RP2,STIF_N
244 INTEGER TAGIP(MVSIZ),ISPDO
272 efric_l(1:jlt) = zero
277 ELSEIF(icurv(1)==2)
THEN
278 ELSEIF(icurv(1) == 3)
THEN
281 IF (inacti==-1.AND.impl_s==0.AND.ncfit>0)
THEN
288 IF (igsti==-1) fmax = kmax
295 IF(pene(i) == zero)
THEN
322 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
323 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
324 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
325 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
326 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
327 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
328 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
329 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i)*vz(i)
334 IF(pene(i) == zero)
THEN
362 nn1 =inod_pxfem(ix1(i))
363 nn2 =inod_pxfem(ix2(i))
364 nn3 =inod_pxfem(ix3(i))
365 nn4 =inod_pxfem(ix4(i))
383 IF(iplyxfem /= 2)
THEN
388 IF(nn1 > 0 .AND. jj > 0)
THEN
389 vn1(1) = vn1(1) +
ply(jj)%V(1,nn1)
390 vn1(2) = vn1(2) +
ply(jj)%V(2,nn1)
391 vn1(3) = vn1(3) +
ply(jj)%V(3,nn1)
394 IF(nn2 > 0 .AND. jj > 0)
THEN
395 vn2(1) = vn2(1) +
ply(jj)%V(1,nn2)
396 vn2(2) = vn2(2) +
ply(jj)%V(2,nn2)
397 vn2(3) = vn2(3) +
ply(jj)%V(3,nn2)
400 IF(nn3 > 0 .AND. jj > 0)
THEN
401 vn3(1) = vn3(1) +
ply(jj)%V(1,nn3)
402 vn3(2) = vn3(2) +
ply(jj)%V(2,nn3)
403 vn3(3) = vn3(3) +
ply(jj)%V(3,nn3)
406 IF(nn4 > 0 .AND. jj > 0)
THEN
408 vn4(2) = vn4(2) +
ply(jj)%V(2,nn4)
413 vx(i) = vxi(i) - h1(i)*vn1(1) - h2(i)*vn2(1)
414 . - h3(i)*vn3(1) - h4(i)*vn4(1)
415 vy(i) = vyi(i) - h1(i)*vn1(2) - h2(i)*vn2(2)
416 . - h3(i)*vn3(2) - h4(i)*vn4(2)
417 vz(i) = vzi(i) - h1(i)*vn1(3) - h2(i)*vn2(3)
418 . - h3(i)*vn3(3) - h4(i)*vn4(3)
419 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
420 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i)*vz(i)
429 IF (ifit >0.OR.(inacti==-1.AND.impl_s==0))
THEN
431 IF(pene(i) == zero)cycle
433 IF(stiglo<=zero) stif(i) = half*stif(i)
435 IF(penref(i) > zero)
THEN
436 pendr = (pene(i)/penref(i))**2
437 fackt =
min(fmax,(one+three*fnon*pendr))
438 facn =
min(fmax,(one+fnon*pendr))
439 stifkt(i)= stifkt(i)*fackt
440 stif(i)= stif(i)*facn
442 fni(i)= -stif(i) * pene(i)
444 ELSEIF (igsti==-1.AND.impl_s==0)
THEN
447 IF(pene(i) == zero)cycle
450 IF(penref(i) > zero)
THEN
451 pendr = (pene(i)/penref(i))**2
452 facn =
min(fmax,(one+fnon*pendr
453 stif(i)=
min(kmax,stif(i)*facn)
454 fackt = three*(stif(i)/stif0(i)-one)
455 stifkt(i)=
max(stif(i),stifkt(i)*fackt)
457 fni(i)= -stif(i) * pene(i)
462 IF (nrebou == -1)
THEN
468 IF(pene(i) == zero)cycle
472 IF (stif_old(1,n)==zero.OR.nrebou==-1)
THEN
473 stif_old(1,n) = sfac*stif0(i)
474 ELSEIF (nrebou <-1)
THEN
475 stmin = em04*stif0(i)
476 stif_old(1,n) =
max(stmin,em01*stif_old(1,n))
478 stif_old(1,n) =
max(kmin,stif_old
479 stif(i) = stif_old(1,n)
482 IF (
stif_oldfi(nin)%P(1,jg)==zero.OR.nrebou==-1)
THEN
484 ELSEIF (nrebou <-1)
THEN
485 stmin = em04*stif0(i)
496 IF(pene(i) == zero)cycle
500 stif0_imp(i) = stif_old(1,n)
506 IF(pene(i) == zero)cycle
511 IF(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero)
THEN
512 IF(pene(i) > pene_old(2,n) )
THEN
513 facm1 = pene(i)/
max(em20,pene_old(2,n))
514 IF (stif0_imp(i)/stif0(i) <em02)
THEN
520 facm1=
min(penn,facm1)
521 stif(i) = facm1*stif0_imp(i)
523 stif(i) =
min(stif(i),stif0(i))
527 pene_old(1,n) = pene(i)
528 stif_old(1,n) = stif(i)
530 ELSEIF(inconv ==1 )
THEN
533 pene_old(1,n) =
max(pene_old(1,n),pene(i))
534 stif_old(1,n) =
min(stif_old
535#include "lockoff.inc"
543 IF (stif0_imp(i)/stif0(i) <em02)
THEN
549 facm1=
min(penn,facm1)
550 stif(i) = facm1*stif0_imp(i)
551 stif(i) =
min(stif(i),stif0(i))
557 ELSEIF(inconv ==1 )
THEN
563#include "lockoff.inc"
569 IF(pene(i) == zero)cycle
573 stif_old(2,n) = stif(i)
580 IF(pene(i) == zero)cycle
582 stif(i) = half*stif(i)
584 ELSEIF(stif(i)/=zero)
THEN
588 fni(i)= -stif(i) * pene(i)
594 IF(pene(i) == zero)cycle
595 dpene(i) =
max(zero,-vnm(i)*dt1)
599 IF(tt /= zero.AND.(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero))
THEN
600 ddp = pene(i)-pene_old(2,n)-dpene(i)
601 IF(pene(i) > pene_old(2,n) .AND.ddp>zero)
THEN
602 rp1 = pene_old(2,n)/pene(i)
603 rp2 = dpene(i)/pene(i)
604 stif(i) = stif_old(2,n)*rp1+ stif(i)*rp2
605 ELSEIF(.NOT.(pene_old(2,n)== zero.AND.stif_old(2,n)==zero))
THEN
607 stif(i) = stif_old(2,n)
610 pene_old(1,n) = pene(i)
611 stif_old(1,n) = stif(i)
613 ELSEIF(inconv ==1 )
THEN
616 pene_old(1,n) =
max(pene_old(1,n),pene(i))
617 stif_old(1,n) =
max(stif_old(1,n),stif(i))
618#include "lockoff.inc"
622 IF(tt /= zero.AND.(
pene_oldfi(nin)%P(2,jg)/= zero.OR.
624 ddp = pene(i)-
pene_oldfi(nin)%P(2,jg)-dpene(i)
625 IF(pene(i) >
pene_oldfi(nin)%P(2,jg) .AND.ddp>zero)
THEN
627 rp2 = dpene(i)/pene(i)
628 stif(i) =
stif_oldfi(nin)%P(2,jg)*rp1+ stif(i)*rp2
629 ELSEIF(.NOT.(
pene_oldfi(nin)%P(2,jg)== zero.AND.
637 ELSEIF(inconv ==1 )
THEN
643#include "lockoff.inc"
649 IF(pene(i) == zero)cycle
651 stif(i) = half*stif(i)
652 ELSEIF(stif(i)/=zero)
THEN
655 fni(i)= -stif(i) * pene(i)
664 IF(pene(i) == zero)cycle
665 econtt = econtt+half*stif(i)*pene(i)**2
668 IF(intnitsche > 0 )
THEN
670 IF(pene(i) == zero)cycle
671 fnnit1 = forneqsi(i,1)*n1(i)
672 fnnit2 = forneqsi(i,2)*n2(i)
673 fnnit3 = forneqsi(i,3)*n3(i)
674 fnnitsche = fnnit1 + fnnit2 + fnnit3
676 fni(i) =
min(zero,fni(i) - half*fnnitsche)
690 vis2(i) = two * stif(i) * msi(i)
694 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
696 IF(pene(i) == zero)cycle
697 fac = stif(i) /
max(em30,stif(i))
699 ff = fac * visc * vis
700 stif(i) = stif0(i) + ff * dt1inv
701 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
709 IF(pene(i) == zero)cycle
710 fac = stif(i) /
max(em30,stif(i))
712 c(i)= fac * visc * vis
714 stif(i) = stif0(i) + c(i) * dt1inv
718 cf(i) = fac*sqrt(viscffric(i))*vis
719 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
722 ELSEIF(ivis2==1.OR.ivis2==2)
THEN
732 IF(pene(i) == zero)cycle
733 mas2 = ms(ix1(i))*h1(i)
737 vis2(i) = facv* stif(i) * msi(i) * mas2 /
738 .
max(em30,msi(i)+mas2)
742 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
744 IF(pene(i) == zero)cycle
745 fac = stif(i) /
max(em30,stif(i))
747 ff = fac * visc * vis
748 stif(i) = stif0(i) + ff * dt1inv
749 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
757 IF(pene(i) == zero)cycle
758 fac = stif(i) /
max(em30,stif(i))
760 c(i)= fac * visc * vis
762 stif(i) = stif(i) + c(i) * dt1inv
766 cf(i) = fac*sqrt(viscffric(i))*vis
767 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
775 IF(pene(i) == zero)cycle
776 vis2(i) = two * stif(i) * msi(i)
777 fac = stif(i) /
max(em30,stif(i))
779 ff = fac * visc * vis
781 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
791 IF(pene(i) == zero)cycle
792 fac = stif(i) /
max(em30,stif(i))
793 vis2(i) = two* stif(i) * msi(i)
795 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
804 IF(pene(i) == zero)cycle
805 mas2 = ms(ix1(i))*h1(i)
809 vis2(i) = two* stif(i) * msi(i)
810 vis = 2. * visc * dt1inv * msi(i) * mas2 /
811 .
max(em30,msi(i)+mas2)
812 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
814 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
815 fni(i) =
min(fni(i),ff)
821 IF(viscffric(i)/=zero)
THEN
827 vis2(i) = two * stif(i) * msi(i)
830 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
831 IF(pene(i) == zero)cycle
832 fac = stif(i) /
max(em30,stif(i))
834 ff = fac * visc * vis
835 stif(i) = stif0(i) + ff * dt1inv
836 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
842 IF(pene(i) == zero)cycle
843 fac = stif(i) /
max(em30,stif(i))
845 c(i)= fac * visc * vis
847 stif(i) = stif0(i) + c(i) * dt1inv
851 cf(i) = fac*sqrt(viscffric(i))*vis
852 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
854 ELSEIF(ivis2==1.OR.ivis2==2)
THEN
863 IF(pene(i) == zero)cycle
864 mas2 = ms(ix1(i))*h1(i)
868 vis2(i) = facv* stif(i) * msi(i) * mas2 /
869 .
max(em30,msi(i)+mas2)
872 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
873 IF(pene(i) == zero)cycle
874 fac = stif(i) /
max(em30,stif(i))
876 ff = fac * visc * vis
877 stif(i) = stif0(i) + ff * dt1inv
878 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
884 IF(pene(i) == zero)cycle
885 fac = stif(i) /
max(em30,stif(i))
887 c(i)= fac * visc * vis
889 stif(i) = stif(i) + c(i) * dt1inv
893 cf(i) = fac*sqrt(viscffric(i))*vis
894 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
900 IF(pene(i) == zero)cycle
901 vis2(i) = two* stif(i) * msi(i)
902 fac = stif(i) /
max(em30,stif(i))
904 ff = fac * visc * vis
905 stif(i) = stif0(i) + two * ff * dt1inv
906 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
914 IF(pene(i) == zero)cycle
915 vis2(i) = two * stif(i) * msi(i)
916 fac = stif(i) /
max(em30,stif(i))
918 ff = fac * visc * vis
919 stif(i) = stif0(i) + two* ff * dt1inv
920 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
928 IF(pene(i) == zero)cycle
929 fac = stif(i) /
max(em30,stif(i))
930 vis2(i) = two* stif(i) * msi(i)
932 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
939 IF(pene(i) == zero)cycle
940 mas2 = ms(ix1(i))*h1(i)
944 vis2(i) = two* stif(i) * msi(i)
945 vis = 2. * visc * dt1inv * msi(i) * mas2 /
946 .
max(em30,msi(i)+mas2)
947 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
949 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
950 fni(i) =
min(fni(i),ff)
974 IF(pene(i) == zero)cycle
976 ims2 = bitget(mbinflg(ie),1)
983 fsav8 =fsav8 +abs(impx)
984 fsav9 =fsav9 +abs(impy)
985 fsav10=fsav10+abs(impz)
990 fsav11=fsav11-fni(i)*dt12
995 fsav11=fsav11+fni(i)*dt12
1000 IF(pene(i) == zero)cycle
1010 fsav8 =fsav8 +abs(impx)
1011 fsav9 =fsav9 +abs(impy)
1012 fsav10=fsav10+abs(impz)
1013 fsav11=fsav11+fni(i)*dt12
1016#include "lockon.inc"
1017 fsav(1)=fsav(1)+fsav1
1018 fsav(2)=fsav(2)+fsav2
1019 fsav(3)=fsav(3)+fsav3
1020 fsav(8)=fsav(8)+fsav8
1021 fsav(9)=fsav(9)+fsav9
1022 fsav(10)=fsav(10)+fsav10
1023 fsav(11)=fsav(11)+fsav11
1024#include "lockoff.inc"
1026 IF(isensint(1)/=0)
THEN
1028 IF(pene(i) == zero)cycle
1029 fsavparit(1,1,i+nft) = fxi(i)
1030 fsavparit(1,2,i+nft) = fyi(i)
1031 fsavparit(1,3,i+nft) = fzi(i)
1035 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
1036 . ((tt>=tanim.AND.tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
1037 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
1038 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
1040#include "lockon.inc"
1042 IF(pene(i) == zero)cycle
1043 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)*h1(i)
1044 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)*h1(i)
1045 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)*h1(i)
1046 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)*h2(i)
1047 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)*h2(i)
1048 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)*h2(i)
1049 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)*h3(i)
1050 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)*h3(i)
1051 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)*h3(i)
1052 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)*h4(i)
1053 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)*h4(i)
1054 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)*h4(i)
1058 IF (jg >numnod)
THEN
1061 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fncont ,
1064 fncont(1,jg)=fncont(1,jg)- fxi(i)
1065 fncont(2,jg)=fncont(2,jg)- fyi(i)
1066 fncont(3,jg)=fncont(3,jg)- fzi(i)
1072 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,
fnconti(nin)%P(1,1) ,
1081#include "lockoff.inc"
1091 fsavsub1(j,jsub)=zero
1095 IF(pene(i) == zero)cycle
1099 IF (msegtyp(ce_loc(i)) < 0)
THEN
1100 ie= - msegtyp(ce_loc(i))
1104 IF(ie > nrtm) ie=ie-nrtm
1107 DO WHILE(jj<addsubs(in+1))
1110 itypsub = typsub(jsub)
1112 IF(itypsub == 1 )
THEN
1113 iss1 = bitget(inflg_subs(jj),0)
1114 iss2 = bitget(inflg_subs(jj),1)
1115 igrn = bitget(inflg_subs(jj),2)
1117 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1118 ims1 = bitget(inflg_subm(kk),0)
1119 ims2 = bitget(inflg_subm(kk),1)
1121 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1122 . (ims1 == 1 .AND. iss2 == 1).OR.
1123 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1133 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1134 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1135 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1136 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1138 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1139 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1140 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1141 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1144 IF(isensint(jsub+1)/=0)
THEN
1146 fsavparit(jsub+1,1,i) = -fxi(i)
1147 fsavparit(jsub+1,2,i) = -fyi(i)
1148 fsavparit(jsub+1,3,i) = -fzi(i)
1150 fsavparit(jsub+1,1,i) = fxi(i)
1151 fsavparit(jsub+1,2,i) = fyi(i)
1152 fsavparit(jsub+1,3,i) = fzi(i)
1156 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1157 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1158 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1160 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1162 IF(parameters%INTCAREA > 0)
THEN
1163 IF(nn <=numnod)
THEN
1164 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1167 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1168 + nrtse , numnod ,parameters%INTAREAN, arean_fic)
1169 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1180 ELSEIF(itypsub == 2 )
THEN
1186 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1187 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1188 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1190 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1191 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1192 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1194 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1196 IF(isensint(jsub+1)/=0)
THEN
1197 fsavparit(jsub+1,1,i+nft) = fxi(i)
1198 fsavparit(jsub+1,2,i+nft) = fyi(i)
1199 fsavparit(jsub+1,3,i+nft) = fzi(i)
1202 IF(parameters%INTCAREA > 0)
THEN
1203 IF(nn <=numnod)
THEN
1204 fsavsub1(25,jsub) = fsavsub1(25,jsub)
1207 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1208 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1209 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1215 ELSEIF(itypsub == 3)
THEN
1219 iss2 = bitget(inflg_subs(jj),0)
1220 iss1 = bitget(inflg_subs(jj),1)
1223 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1224 ims2 = bitget(inflg_subm(kk),0)
1225 ims1 = bitget(inflg_subm(kk),1)
1228 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1229 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1240 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1241 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1242 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1243 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1245 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1246 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1247 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1248 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1251 IF(isensint(jsub+1)/=0)
THEN
1253 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1254 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1255 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1257 fsavparit(jsub+1,1,i+nft) = fxi(i)
1258 fsavparit(jsub+1,2,i+nft) = fyi(i)
1259 fsavparit(jsub+1,3,i+nft) = fzi(i)
1263 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1264 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1265 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1267 IF(parameters%INTCAREA > 0)
THEN
1268 IF(nn <=numnod)
THEN
1269 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1272 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1273 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1274 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1289 IF (msegtyp(ce_loc(i)) < 0)
THEN
1290 ie= - msegtyp(ce_loc(i))
1294 IF(ie > nrtm) ie=ie-nrtm
1298 CALL i24_save_sub(numnod,mvsiz,nisub,s_addsubm,s_lisubm,s_typsub,nisubmax,i_stok,
1299 * ie,itypsub,nin,i,nn,nft,
1300 * addsubm,lisubm,typsub,
1301 * parameters%INTAREAN,parameters%INTCAREA,isensint,
1302 * fxi,fyi,fzi,fni,dt12,
1303 * fsavsub1,fsavparit ,nrtse,
1304 * irtse,nsne,is2se ,is2pt,nsnr)
1311 IF(pene(i) == zero)cycle
1315 IF (msegtyp(ce_loc(i)) < 0)
THEN
1316 ie= - msegtyp(ce_loc(i))
1324 itypsub = typsub(jsub)
1326 IF(itypsub == 1 )
THEN
1332 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1333 ims1 = bitget(inflg_subm(kk),0)
1334 ims2 = bitget(inflg_subm(kk),1)
1336 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1337 . (ims1 == 1 .AND. iss2 == 1).OR.
1338 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1348 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1349 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1350 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1351 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1353 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1354 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1355 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1356 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1359 IF(isensint(jsub+1)/=0)
THEN
1361 fsavparit(jsub+1,1,i) = -fxi(i)
1362 fsavparit(jsub+1,2,i) = -fyi(i)
1363 fsavparit(jsub+1,3,i) = -fzi(i)
1365 fsavparit(jsub+1,1,i) = fxi(i)
1366 fsavparit(jsub+1,2,i) = fyi(i)
1367 fsavparit(jsub+1,3,i) = fzi(i)
1371 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1372 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1373 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1375 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1377 IF(parameters%INTCAREA > 0)
THEN
1380 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1381 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1383 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1393 ELSEIF(itypsub == 2 )
THEN
1399 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1400 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1401 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1403 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1404 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1405 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1407 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1409 IF(isensint(jsub+1)/=0)
THEN
1410 fsavparit(jsub+1,1,i+nft) = fxi(i)
1411 fsavparit(jsub+1,2,i+nft) = fyi(i)
1412 fsavparit(jsub+1,3,i+nft) = fzi(i)
1415 IF(parameters%INTCAREA > 0)
THEN
1418 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1419 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1421 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1427 ELSEIF(itypsub == 3 )
THEN
1432 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1433 ims2 = bitget(inflg_subm(kk),0)
1434 ims1 = bitget(inflg_subm(kk),1)
1436 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1437 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1448 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1449 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1451 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1453 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1454 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1455 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1456 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1459 IF(isensint(jsub+1)/=0)
THEN
1461 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1462 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1463 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1465 fsavparit(jsub+1,1,i+nft) = fxi(i)
1466 fsavparit(jsub+1,2,i+nft) = fyi(i)
1467 fsavparit(jsub+1,3,i+nft) = fzi(i)
1471 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1472 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1473 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz
1475 IF(parameters%INTCAREA > 0)
THEN
1478 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1479 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1481 fsavsub1(25,jsub) = fsavsub1(25,jsub
1506 IF(iorthfric == 0)
THEN
1512 IF(pene(i) == 0)
THEN
1518 ELSEIF (mfrot==1)
THEN
1521 IF(pene(i) == 0)
THEN
1526 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1527 v2 = (vx(i) - n1(i)*aa)**2
1528 . + (vy(i) - n2(i)*aa)**2
1529 . + (vz(i) - n3(i)*aa)**2
1530 vv = sqrt(
max(em30,v2))
1531 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1532 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1534 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1535 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1536 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1537 ax = ay1*az2 - az1*ay2
1538 ay = az1*ax2 - ax1*az2
1539 az = ax1*ay2 - ay1*ax2
1540 area = half*sqrt(ax*ax+ay*ay+az*az)
1542 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1543 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1544 xmu(i) =
max(xmu(i),em30)
1546 ELSEIF(mfrot==2)
THEN
1549 IF(pene(i) == 0)
THEN
1554 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1555 v2 = (vx(i) - n1(i)*aa)**2
1556 . + (vy(i) - n2(i)*aa)**2
1557 . + (vz(i) - n3(i)*aa)**2
1558 vv = sqrt(
max(em30,v2))
1559 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1560 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1561 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1562 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1563 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1564 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1565 ax = ay1*az2 - az1*ay2
1566 ay = az1*ax2 - ax1*az2
1567 az = ax1*ay2 - ay1*ax2
1568 area = half*sqrt(ax*ax+ay*ay+az*az)
1571 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1572 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1573 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1574 xmu(i) =
max(xmu(i),em30)
1576 ELSEIF (mfrot==3)
THEN
1579 IF(pene(i) == 0)
THEN
1583 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1584 v2 = (vx(i) - n1(i)*aa)**2
1585 . + (vy(i) - n2(i)*aa)**2
1586 . + (vz(i) - n3(i)*aa)**2
1587 vv = sqrt(
max(em30,v2))
1588 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1589 dmu = fric_coefs(i,3)-fric_coefs
1590 vv1 = vv / fric_coefs(i,5)
1591 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1592 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1593 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1594 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1595 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1597 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1598 vv2 = (vv - fric_coefs(i,6))**2
1599 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1601 xmu(i) =
max(xmu(i),em30)
1603 ELSEIF(mfrot==4)
THEN
1606 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1607 v2 = (vx(i) - n1(i)*aa)**2
1608 . + (vy(i) - n2(i)*aa)**2
1609 . + (vz(i) - n3(i)*aa)**2
1610 vv = sqrt(
max(em30,v2))
1611 xmu(i) = fric_coefs(i,1)
1612 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1613 xmu(i) =
max(xmu(i),em30)
1622#include "vectorize.inc"
1628#include "vectorize.inc"
1633 IF(xmu(i)<=em30)
THEN
1641 IF(xmu2(i)<=em30)
THEN
1650 ELSEIF (mfrot==1)
THEN
1652#include "vectorize.inc"
1655 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1656 v2 = (vx(i) - n1(i)*aa)**2
1657 . + (vy(i) - n2(i)*aa)**2
1658 . + (vz(i) - n3(i)*aa)**2
1659 vv = sqrt(
max(em30,v2))
1661 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1662 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1663 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1664 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1665 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1666 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1667 ax = ay1*az2 - az1*ay2
1668 ay = az1*ax2 - ax1*az2
1669 az = ax1*ay2 - ay1*ax2
1670 area = half*sqrt(ax*ax+ay*ay+az*az)
1672 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1673 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1674 xmu(i) =
max(xmu(i),em30)
1677#include "vectorize.inc"
1682 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1683 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1684 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1685 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1686 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1687 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1688 ax = ay1*az2 - az1*ay2
1689 ay = az1*ax2 - ax1*az2
1690 az = ax1*ay2 - ay1*ax2
1691 area = half*sqrt(ax*ax+ay*ay+az*az)
1694 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1696 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1697 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*vv*vv
1699 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1701 xmu2(i) = fricc2(i) + (fric_coefs2(i,1) + fric_coefs2(i,4)*p ) * p
1702 . +(fric_coefs2(i,2) + fric_coefs2(i,3)*p) * vv + fric_coefs2(i,5)*vv*vv
1704 xmu(i) =
max(xmu(i),em30)
1705 xmu2(i) =
max(xmu2(i),em30)
1709#include "vectorize.inc"
1712 IF(xmu(i)<=em30)
THEN
1720 IF(xmu2(i)<=em30)
THEN
1731 ELSEIF(mfrot==2)
THEN
1733#include "vectorize.inc"
1737 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1738 v2 = (vx(i) - n1(i)*aa)**2
1739 . + (vy(i) - n2(i)*aa)**2
1740 . + (vz(i) - n3(i)*aa)**2
1741 vv = sqrt(
max(em30,v2))
1742 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1743 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1744 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1745 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1746 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1747 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1748 ax = ay1*az2 - az1*ay2
1749 ay = az1*ax2 - ax1*az2
1750 az = ax1*ay2 - ay1*ax2
1751 area = half*sqrt(ax*ax+ay*ay+az*az)
1754 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1755 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1756 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1757 xmu(i) =
max(xmu(i),em30)
1760#include "vectorize.inc"
1765 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1766 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1767 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1768 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1769 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1770 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1771 ax = ay1*az2 - az1*ay2
1772 ay = az1*ax2 - ax1*az2
1773 az = ax1*ay2 - ay1*ax2
1774 area = half*sqrt(ax*ax+ay*ay+az*az)
1777 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1780 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1781 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1782 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1784 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1787 . + fric_coefs2(i,1)*exp(fric_coefs2(i,2)*vv)*p*p
1788 . + fric_coefs2(i,3)*exp(fric_coefs2(i,4)*vv)*p
1789 . + fric_coefs2(i,5)*exp(fric_coefs2(i,6)*vv)
1791 xmu(i) =
max(xmu(i),em30)
1792 xmu2(i) =
max(xmu2(i),em30)
1796#include "vectorize.inc"
1799 IF(xmu(i)<=em30)
THEN
1807 IF(xmu2(i)<=em30)
THEN
1817 ELSEIF (mfrot==3)
THEN
1819#include "vectorize.inc"
1822 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1823 v2 = (vx(i) - n1(i)*aa)**2
1824 . + (vy(i) - n2(i)*aa)**2
1825 . + (vz(i) - n3(i)*aa)**2
1826 vv = sqrt(
max(em30,v2))
1827 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1828 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1829 vv1 = vv / fric_coefs(i,5)
1830 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1831 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1832 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1833 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1834 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1836 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1837 vv2 = (vv - fric_coefs(i,6))**2
1838 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1840 xmu(i) =
max(xmu(i),em30)
1843#include "vectorize.inc"
1847 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1849 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1850 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1851 vv1 = vv / fric_coefs(i,5)
1852 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1853 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1854 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1855 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1856 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1858 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1859 vv2 = (vv - fric_coefs(i,6))**2
1860 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1863 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1865 IF(vv>=0.AND.vv<=fric_coefs2(i,5))
THEN
1866 dmu = fric_coefs2(i,3)-fric_coefs2(i,1)
1867 vv1 = vv / fric_coefs2(i,5)
1868 xmu2(i) = fric_coefs2(i,1)+ dmu*vv1*(two-vv1)
1869 ELSEIF(vv>fric_coefs2(i,5).AND.vv<fric_coefs2(i,6))
THEN
1870 dmu = fric_coefs2(i,4)-fric_coefs2(i,3)
1871 vv1 = (vv - fric_coefs2(i,5))/(fric_coefs2(i,6)-fric_coefs2(i,5))
1872 xmu2(i) = fric_coefs2(i,3)+ dmu * (three-two*vv1)*vv1**2
1874 dmu = fric_coefs2(i,2)-fric_coefs2(i,4)
1875 vv2 = (vv - fric_coefs2(i,6))**2
1876 xmu2(i) = fric_coefs2(i,2) - dmu / (one + dmu*vv2)
1878 xmu(i) =
max(xmu(i),em30)
1879 xmu2(i) =
max(xmu2(i),em30)
1882#include "vectorize.inc"
1885 IF(xmu(i)<=em30)
THEN
1893 IF(xmu2(i)<=em30)
THEN
1904 ELSEIF(mfrot==4)
THEN
1906#include "vectorize.inc"
1909 IF(pene(i) == 0)
THEN
1914 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1915 v2 = (vx(i) - n1(i)*aa)**2
1916 . + (vy(i) - n2(i)*aa)**2
1917 . + (vz(i) - n3(i)*aa)**2
1918 vv = sqrt(
max(em30,v2))
1919 xmu(i) = fric_coefs(i,1)
1920 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1921 xmu(i) =
max(xmu(i),em30)
1924#include "vectorize.inc"
1927 IF(pene(i) == 0)
THEN
1933 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
1936 . + (fric_coefs(i,1)-fricc(i))*exp(-fric_coefs(i,2)*vv)
1938 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
1940 xmu2(i) = fric_coefs2(i,1)
1941 . + (fricc2(i)-fric_coefs2(i,1
1942 xmu(i) =
max(xmu(i),em30)
1943 xmu2(i) =
max(xmu2(i),em30)
1946#include "vectorize.inc"
1949 IF(xmu(i)<=em30)
THEN
1957 IF(xmu2(i)<=em30)
THEN
1985 alpha =
max(one,alpha0*dt12)
1990 IF(intnitsche > 0 )
THEN
1993 IF(pene(i) == zero)cycle
1994 ftn = forneqsi(i,1)*n1(i) + forneqsi(i,2)*n2(i) + forneqsi(i,3)*n3(i)
1995 fnitxt(i) = half*(forneqsi(i,1) - ftn*n1(i))
1996 fnityt(i) = half*(forneqsi(i,2) - ftn*n2(i))
1997 fnitzt(i) = half*(forneqsi(i,3) - ftn*n3(i))
2007 IF(iorthfric ==0 )
THEN
2012 IF(pene(i) == zero)cycle
2013 fx = stif0(i)*vx(i)*dt12
2014 fy = stif0(i)*vy(i)*dt12
2015 fz = stif0(i)*vz(i)*dt12
2020 fx = secnd_fr(4,n) + alpha*fx
2021 fy = secnd_fr(5,n) + alpha*fy
2022 fz = secnd_fr(6,n) + alpha*fz
2023 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2030 ft = fx*fx + fy*fy + fz*fz
2032 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2033 beta =
min(one,xmu(i)*sqrt(fn/ft))
2038#include "lockon.inc"
2039 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2040 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt(i)
2041 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)- fnitzt(i)
2043 IF ((fxt(i)- fnitxt(i))==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i)- fnitxt(i))
2044 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2045 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2047#include "lockoff.inc"
2054 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2061 ft = fx*fx + fy*fy + fz*fz
2063 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2064 beta =
min(one,xmu(i)*sqrt(fn/ft))
2068#include "lockon.inc"
2069 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2070 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2071 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2072 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2073 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2074 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2076 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2077 *
secnd_frfi(nin)%P(1,jg) = abs(fxt(i)- fnitxt(i))
2078 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2079 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2080 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2081 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2082#include "lockoff.inc"
2085 fxi(i)=fxi(i) + fxt(i)
2086 fyi(i)=fyi(i) + fyt(i)
2087 fzi(i)=fzi(i) + fzt(i)
2088 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2089 econvt = econvt + efric_l(i)
2094 IF(pene(i) == zero)cycle
2095 fx = stif0(i)*vx(i)*dt12
2096 fy = stif0(i)*vy(i)*dt12
2097 fz = stif0(i)*vz(i)*dt12
2102 fx = secnd_fr(4,n) + alpha*fx
2103 fy = secnd_fr(5,n) + alpha*fy
2104 fz = secnd_fr(6,n) + alpha*fz
2105 ftn = fx*n1(i) + fy*n2(i) + fz*n3
2112 ft = fx*fx + fy*fy + fz*fz
2114 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2115 beta =
min(one,xmu(i)*sqrt(fn/ft))
2119 fxi(i)=fxi(i) + fxt(i)
2120 fyi(i)=fyi(i) + fyt(i)
2121 fzi(i)=fzi(i) + fzt(i)
2127 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2134 ft = fx*fx + fy*fy + fz*fz
2136 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2137 beta =
min(one,xmu(i)*sqrt(fn/ft))
2141 fxi(i)=fxi(i) + fxt(i)
2142 fyi(i)=fyi(i) + fyt(i)
2143 fzi(i)=fzi(i) + fzt(i)
2153#include "vectorize.inc"
2156 IF(pene(i) == zero)cycle
2157 fx = stif0(i)*vx(i)*dt12
2158 fy = stif0(i)*vy(i)*dt12
2159 fz = stif0(i)*vz(i)*dt12
2164 fx = secnd_fr(4,n) + alpha*fx
2165 fy = secnd_fr(5,n) + alpha*fy
2166 fz = secnd_fr(6,n) + alpha*fz
2167 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2174 ft = fx*fx + fy*fy + fz*fz
2176 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2177 beta =
min(one,xmu(i)*sqrt(fn/ft))
2181#include "lockon.inc"
2182 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2183 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt(i)
2184 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)- fnitzt(i)
2186 IF ((fxt(i)- fnitxt(i))==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i)- fnitxt(i))
2187 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2188 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2189#include "lockoff.inc"
2196 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2203 ft = fx*fx + fy*fy + fz*fz
2205 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2206 beta =
min(one,xmu(i)*sqrt(fn/ft))
2210#include "lockon.inc"
2211 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2212 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2213 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2214 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2215 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2216 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2218 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2220 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2221 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2222 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2223 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2224#include "lockoff.inc"
2227 fxi(i)=fxi(i) + fxt(i)
2228 fyi(i)=fyi(i) + fyt(i)
2229 fzi(i)=fzi(i) + fzt(i)
2230 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2231 econvt = econvt + efric_l(i)
2234#include "vectorize.inc"
2237 IF(pene(i) == zero)cycle
2238 fx = stif0(i)*vx(i)*dt12
2239 fy = stif0(i)*vy(i)*dt12
2240 fz = stif0(i)*vz(i)*dt12
2245 fx = secnd_fr(4,n) + alpha*fx
2246 fy = secnd_fr(5,n) + alpha*fy
2247 fz = secnd_fr(6,n) + alpha*fz
2248 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2257 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2258 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2259 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2261 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2269 ELSEIF(beta > 1)
THEN
2279 nep =nep1*nep1+nep2*nep2
2281 ep=nep1*ftt1+nep2*ftt2
2283 ans=(ep-sqrt(ep))/
max(em20,nep)
2284 nep1 =nep1/
max(em20,nep)
2285 nep2 =nep2/
max(em20,nep)
2289 alphaf = atan(c22/c11)
2290 signc = ftt1/
max(em20,abs(ftt1))
2291 csa = signc*abs(cos(alphaf))
2292 signc = ftt2/
max(em20,abs(ftt2))
2293 sna = signc*abs(sin(alphaf))
2295 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2299 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2300 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2301 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2305#include "lockon.inc"
2306 IF (abs(fxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)
2307 IF (abs(fyt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)
2308 IF (abs(fzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)
2310 IF (fxt(i)==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i))
2311 IF (fyt(i)==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i))
2312 IF (fzt(i)==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i))
2313#include "lockoff.inc"
2320 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2327 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2328 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2329 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2331 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2339 ELSEIF(beta > 1)
THEN
2349 nep =nep1*nep1+nep2*nep2
2352 ep=nep1*ftt1+nep2*ftt2
2354 ans=(ep-sqrt(ep))/
max(em20,nep)
2355 nep1 =nep1/
max(em20,nep)
2356 nep2 =nep2/
max(em20,nep)
2362 alphaf = atan(c22/c11)
2364 signc = ftt1/
max(em20,abs(ftt1))
2365 csa = signc*abs(cos(alphaf))
2366 signc = ftt2/
max(em20,abs(ftt2))
2367 sna = signc*abs(sin(alphaf))
2369 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2373 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2374 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2375 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2378#include "lockon.inc"
2379 IF ( abs(fxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2381 IF ( abs(fyt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2383 IF ( abs(fzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2392#include "lockoff.inc"
2395 fxi(i)=fxi(i) + fxt(i)
2396 fyi(i)=fyi(i) + fyt(i)
2397 fzi(i)=fzi(i) + fzt(i)
2398 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2399 econvt = econvt + efric_l(i)
2405#include "vectorize.inc"
2408 IF(pene(i) == zero)cycle
2409 fx = stif0(i)*vx(i)*dt12
2410 fy = stif0(i)*vy(i)*dt12
2411 fz = stif0(i)*vz(i)*dt12
2416 fx = secnd_fr(4,n) + alpha*fx
2417 fy = secnd_fr(5,n) + alpha*fy
2418 fz = secnd_fr(6,n) + alpha*fz
2419 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2426 ft = fx*fx + fy*fy + fz*fz
2428 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2429 beta =
min(one,xmu(i)*sqrt(fn/ft))
2433 fxi(i)=fxi(i) + fxt(i)
2434 fyi(i)=fyi(i) + fyt(i)
2435 fzi(i)=fzi(i) + fzt(i)
2441 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2448 ft = fx*fx + fy*fy + fz*fz
2450 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2451 beta =
min(one,xmu(i)*sqrt(fn/ft))
2455 fxi(i)=fxi(i) + fxt(i)
2456 fyi(i)=fyi(i) + fyt(i)
2457 fzi(i)=fzi(i) + fzt(i)
2462#include "vectorize.inc"
2465 IF(pene(i) == zero)cycle
2466 fx = stif0(i)*vx(i)*dt12
2467 fy = stif0(i)*vy(i)*dt12
2468 fz = stif0(i)*vz(i)*dt12
2473 fx = secnd_fr(4,n) + alpha*fx
2474 fy = secnd_fr(5,n) + alpha*fy
2475 fz = secnd_fr(6,n) + alpha*fz
2476 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2484 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2485 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2486 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2488 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2496 ELSEIF(beta > 1)
THEN
2506 nep =nep1*nep1+nep2*nep2
2509 ep=nep1*ftt1+nep2*ftt2
2511 ans=(ep-sqrt(ep))/
max(em20,nep)
2512 nep1 =nep1/
max(em20,nep)
2513 nep2 =nep2/
max(em20,nep)
2519 alphaf = atan(c22/c11)
2521 signc = ftt1/
max(em20,abs(ftt1))
2522 csa = signc*abs(cos(alphaf))
2523 signc = ftt2/
max(em20,abs(ftt2))
2524 sna = signc*abs(sin(alphaf))
2526 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2530 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2531 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2532 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2535 fxi(i)=fxi(i) + fxt(i)
2536 fyi(i)=fyi(i) + fyt(i)
2537 fzi(i)=fzi(i) + fzt(i)
2543 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2551 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2552 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2553 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2555 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2563 ELSEIF(beta > 1)
THEN
2573 nep =nep1*nep1+nep2*nep2
2576 ep=nep1*ftt1+nep2*ftt2
2578 ans=(ep-sqrt(ep))/
max(em20,nep)
2579 nep1 =nep1/
max(em20,nep)
2580 nep2 =nep2/
max(em20,nep)
2586 alphaf = atan(c22/c11)
2588 signc = ftt1/
max(em20,abs(ftt1))
2589 csa = signc*abs(cos(alphaf))
2590 signc = ftt2/
max(em20,abs(ftt2))
2591 sna = signc*abs(sin(alphaf))
2593 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2597 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2598 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2599 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2603 fxi(i)=fxi(i) + fxt(i)
2604 fyi(i)=fyi(i) + fyt(i)
2605 fzi(i)=fzi(i) + fzt(i)
2619 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
2620 . ((tt>=tanim.AND.tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
2621 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
2622 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
2624#include "lockon.inc"
2626 IF(pene(i) == zero)cycle
2627 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fxt(i)*h1(i)
2628 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fyt(i)*h1(i)
2629 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fzt(i)*h1(i)
2630 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fxt(i)*h2(i)
2631 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fyt(i)*h2(i)
2632 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fzt(i)*h2(i)
2633 ftcont(1,ix3(i)) =ftcont(1,ix3(i)) + fxt(i)*h3(i)
2634 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fyt(i)*h3(i)
2635 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fzt(i)*h3(i)
2636 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fxt(i)*h4(i)
2637 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fyt(i)*h4(i)
2638 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fzt(i)*h4(i)
2642 IF (jg >numnod)
THEN
2645 + ig ,fxt(i) ,fyt(i) ,fzt(i) ,ftcont ,
2648 ftcont(1,jg)=ftcont(1,jg)- fxt(i)
2649 ftcont(2,jg)=ftcont(2,jg)- fyt(i)
2650 ftcont(3,jg)=ftcont(3,jg)- fzt(i)
2656 + jg ,fxt(i) ,fyt(i) ,fzt(i) ,
ftconti(nin)%P(1,1) ,
2665#include "lockoff.inc"
2675 IF(pene(i) == zero)cycle
2685 fsav12=fsav12+abs(impx)
2686 fsav13=fsav13+abs(impy)
2687 fsav14=fsav14+abs(impz)
2688 fsav15=fsav15+sqrt(impx*impx+impy*impy+impz*impz)
2689 xp(i)=xi(i)+pene(i)*n1(i)
2690 yp(i)=yi(i)+pene(i)*n2(i)
2691 zp(i)=zi(i)+pene(i)*n3(i)
2692 fsav22=fsav22+yp(i)*impz-zp(i)*impy
2693 fsav23=fsav23+zp(i)*impx-xp(i)*impz
2694 fsav24=fsav24+xp(i)*impy-yp(i)*impx
2697 IF(intcarea > 0)
THEN
2699 IF(pene(i) == zero)cycle
2702 IF(jg <= numnod)
THEN
2703 fsav29=fsav29+parameters%INTAREAN(jg)
2706 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
2707 + nrtse , numnod , parameters%INTAREAN, arean_fic)
2708 fsav29=fsav29 + arean_fic
2715 fsav29=fsav29 + arean_fic
2722#include
"lockon.inc"
2723 fsav(4) = fsav(4) + fsav4
2724 fsav(5) = fsav(5) + fsav5
2725 fsav(6) = fsav(6) + fsav6
2726 fsav(12) = fsav(12) + fsav12
2727 fsav(13) = fsav(13) + fsav13
2728 fsav(14) = fsav(14) + fsav14
2729 fsav(15) = fsav(15) + fsav15
2730 fsav(22) = fsav(22) + fsav22
2731 fsav(23) = fsav(23) + fsav23
2732 fsav(24) = fsav(24) + fsav24
2733 fsav(26) = fsav(26) + econtt
2734 fsav(27) = fsav(27) + econvt
2735 fsav(28) = fsav(28) + econtdt
2736 fsav(29) = fsav(29) + fsav29
2737#include "lockoff.inc"
2739 IF(isensint(1)/=0)
THEN
2741 fsavparit(1,4,i+nft) = fxi(i)
2742 fsavparit(1,5,i+nft) = fyi(i)
2743 fsavparit(1,6,i+nft) = fzi(i)
2751 IF(pene(i) == zero)cycle
2755 IF (msegtyp(ce_loc(i)) < 0)
THEN
2756 ie= - msegtyp(ce_loc(i))
2762 DO WHILE(jj<addsubs(in+1))
2764 itypsub = typsub(jsub)
2766 IF(itypsub == 1 )
THEN
2767 iss1 = bitget(inflg_subs(jj),0)
2768 iss2 = bitget(inflg_subs(jj),1)
2769 igrn = bitget(inflg_subs(jj),2)
2771 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2772 ims1 = bitget(inflg_subm(kk),0)
2773 ims2 = bitget(inflg_subm(kk),1)
2776 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
2777 . (ims1 == 1 .AND. iss2 == 1).OR.
2778 . (ims2 == 1 .AND. iss1 == 1)))
THEN
2787 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2788 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2789 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2794 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2795 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2796 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2798 IF(isensint(jsub+1)/=0)
THEN
2799 fsavparit(jsub+1,4,i+nft) = fxt(i)
2800 fsavparit(jsub+1,5,i+nft) = fyt(i)
2801 fsavparit(jsub+1,6,i+nft) = fzt(i)
2804 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2805 . +sqrt(impx*impx+impy*impy+impz*impz)
2806 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2807 . +yp(i)*impz-zp(i)*impy
2808 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2809 . +zp(i)*impx-xp(i)*impz
2810 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2811 . +xp(i)*impy-yp(i)*impx
2820 ELSEIF(itypsub == 2 )
THEN
2826 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2827 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2828 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2833 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2834 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2835 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2837 IF(isensint(jsub+1)/=0)
THEN
2838 fsavparit(jsub+1,4,i+nft) = fxt(i)
2839 fsavparit(jsub+1,5,i+nft) = fyt(i)
2840 fsavparit(jsub+1,6,i+nft) = fzt(i)
2843 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2844 . +sqrt(impx*impx+impy*impy+impz*impz)
2845 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2846 . +yp(i)*impz-zp(i)*impy
2847 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2848 . +zp(i)*impx-xp(i)*impz
2849 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2850 . +xp(i)*impy-yp(i)*impx
2855 ELSEIF(itypsub == 3 )
THEN
2858 iss2 = bitget(inflg_subs(jj),0)
2859 iss1 = bitget(inflg_subs(jj),1)
2861 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2862 ims2 = bitget(inflg_subm(kk),0)
2863 ims1 = bitget(inflg_subm(kk),1)
2866 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
2867 . (ims2 == 1 .AND. iss1 == 1)))
THEN
2878 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
2879 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
2880 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
2882 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2883 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2884 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2890 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2891 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2892 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2894 IF(isensint(jsub+1)/=0)
THEN
2896 fsavparit(jsub+1,4,i+nft) = -fxt(i)
2897 fsavparit(jsub+1,5,i+nft) = -fyt(i)
2898 fsavparit(jsub+1,6,i+nft) = -fzt(i)
2900 fsavparit(jsub+1,4,i+nft) = fxt(i)
2901 fsavparit(jsub+1,5,i+nft) = fyt(i)
2902 fsavparit(jsub+1,6,i+nft) = fzt(i)
2906 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2907 . +sqrt(impx*impx+impy*impy+impz*impz)
2908 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2909 . +yp(i)*impz-zp(i)*impy
2910 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2911 . +zp(i)*impx-xp(i)*impz
2912 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2913 . +xp(i)*impy-yp(i)*impx
2927 IF (msegtyp(ce_loc(i)) < 0)
THEN
2928 ie= - msegtyp(ce_loc(i))
2932 IF(ie > nrtm) ie=ie-nrtm
2935 DO WHILE(kk<addsubm(ie+1))
2939 itypsub = typsub(ksub)
2940 IF(itypsub == 2 )
THEN
2945 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
2946 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
2947 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
2952 fsavsub1(12,ksub)=fsavsub1(12,ksub)+abs(impx)
2953 fsavsub1(13,ksub)=fsavsub1(13,ksub)+abs(impy)
2954 fsavsub1(14,ksub)=fsavsub1(14,ksub)+abs(impz)
2956 IF(isensint(ksub+1)/=0)
THEN
2957 fsavparit(ksub+1,4,i+nft) = -fxt(i)
2958 fsavparit(ksub+1,5,i+nft) = -fyt(i)
2959 fsavparit(ksub+1,6,i+nft) = -fzt(i)
2962 fsavsub1(15,ksub)= fsavsub1(15,ksub)
2963 . +sqrt(impx*impx+impy*impy+impz*impz)
2964 fsavsub1(22,ksub)=fsavsub1(22,ksub)
2965 . +yp(i)*impz-zp(i)*impy
2966 fsavsub1(23,ksub)=fsavsub1(23,ksub)
2967 . +zp(i)*impx-xp(i)*impz
2968 fsavsub1(24,ksub)=fsavsub1(24,ksub)
2969 . +xp(i)*impy-yp(i)*impx
2981 IF(pene(i) == zero)cycle
2985 IF (msegtyp(ce_loc(i)) < 0)
THEN
2986 ie= - msegtyp(ce_loc(i))
2994 itypsub = typsub(jsub)
2996 IF(itypsub == 1 )
THEN
3001 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3002 ims1 = bitget(inflg_subm(kk),0)
3003 ims2 = bitget(inflg_subm(kk),1)
3005 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
3006 . (ims1 == 1 .AND. iss2 == 1).OR.
3007 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3016 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3017 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3018 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3023 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3024 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3025 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3027 IF(isensint(jsub+1)/=0)
THEN
3028 fsavparit(jsub+1,4,i+nft) = fxt(i)
3029 fsavparit(jsub+1,5,i+nft) = fyt(i)
3030 fsavparit(jsub+1,6,i+nft) = fzt(i)
3033 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3034 . +sqrt(impx*impx+impy*impy+impz*impz)
3035 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3036 . +yp(i)*impz-zp(i)*impy
3037 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3038 . +zp(i)*impx-xp(i)*impz
3039 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3040 . +xp(i)*impy-yp(i)*impx
3050 ELSEIF(itypsub == 2 )
THEN
3056 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3057 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3058 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3063 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3065 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3066 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3068 IF(isensint(jsub+1)/=0)
THEN
3069 fsavparit(jsub+1,4,i+nft) = fxt(i)
3070 fsavparit(jsub+1,5,i+nft) = fyt(i)
3071 fsavparit(jsub+1,6,i+nft) = fzt(i)
3074 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3075 . +sqrt(impx*impx+impy*impy+impz*impz)
3076 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3077 . +yp(i)*impz-zp(i)*impy
3078 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3079 . +zp(i)*impx-xp(i)*impz
3080 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3081 . +xp(i)*impy-yp(i)*impx
3085 ELSEIF(itypsub == 3 )
THEN
3090 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3091 ims2 = bitget(inflg_subm(kk),0)
3092 ims1 = bitget(inflg_subm(kk),1)
3094 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3095 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3106 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
3107 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
3108 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
3109 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
3111 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
3112 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
3113 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
3114 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
3117 IF(isensint(jsub+1)/=0)
THEN
3119 fsavparit(jsub+1,4,i+nft) = -fxt(i)
3120 fsavparit(jsub+1,5,i+nft) = -fyt(i)
3121 fsavparit(jsub+1,6,i+nft) = -fzt(i)
3123 fsavparit(jsub+1,4,i+nft) = fxt(i)
3124 fsavparit(jsub+1,5,i+nft) = fyt(i)
3125 fsavparit(jsub+1,6,i+nft) = fzt(i)
3129 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
3130 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
3131 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
3144#include "lockon.inc"
3148 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
3150 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
3151 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
3152 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
3153 IF(parameters%INTCAREA > 0) fsavsub(29,nsub)=fsavsub(29,nsub)+fsavsub1(25,jsub)
3155#include "lockoff.inc"
3158#include "lockon.inc"
3160 econtv = econtv + econvt
3161 econt = econt + econtt
3162 econtd = econtd + econtdt
3164#include "lockoff.inc"
3167 IF(interefric >0)
THEN
3169#include "lockon.inc"
3171 IF(pene(i) == zero)cycle
3172 efric_lm = half*efric_l(i)
3173 efric(interefric,ix1(i)) = efric(interefric,ix1(i)) + h1(i)*efric_lm
3174 efric(interefric,ix2(i)) = efric(interefric,ix2(i)) + h2(i)*efric_lm
3175 efric(interefric,ix3(i)) = efric(interefric,ix3(i)) + h3(i)*efric_lm
3176 efric(interefric,ix4(i)) = efric(interefric,ix4(i)) + h4(i)*efric_lm
3178 efric_ls = half*efric_l(i)
3180 efric(interefric,jg) = efric(interefric,jg) + efric_ls
3186#include "lockoff.inc"
3190 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3192#include "lockon.inc"
3194 IF(pene(i) == zero)cycle
3195 efric_lm = half*efric_l(i)
3196 efricg(ix1(i)) = efricg(ix1(i)) + h1(i)*efric_lm
3197 efricg(ix2(i)) = efricg(ix2(i)) + h2(i)*efric_lm
3198 efricg(ix3(i)) = efricg(ix3(i)) + h3(i)*efric_lm
3199 efricg(ix4(i)) = efricg(ix4(i)) + h4(i)*efric_lm
3201 efric_ls = half*efric_l(i)
3203 efricg(jg) = efricg(jg) + efric_ls
3209#include "lockoff.inc"
3215 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3217 IF(pene(i) == zero)cycle
3220 IF(msi(i)==zero)
THEN
3226 cy = eight*msi(i)*kt(i)
3227 aux = sqrt(cx+cy)+two*c(i)
3228 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3229 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3241 IF(ms(j1)==zero)
THEN
3246 k1(i)=kt(i)*abs(h1(i))
3247 c1(i)=c(i)*abs(h1(i))
3248 cx =four*c1(i)*c1(i)
3249 cy =eight*ms(j1)*k1(i)
3250 aux = sqrt(cx+cy)+two*c1(i)
3251 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3252 cfi = cf(i)*abs(h1(i))
3253 aux = two*cfi*cfi/
max(ms(j1),em20)
3262 IF(ms(j1)==zero)
THEN
3267 k2(i)=kt(i)*abs(h2(i))
3268 c2(i)=c(i)*abs(h2(i))
3269 cx =four*c2(i)*c2(i)
3270 cy =eight*ms(j1)*k2(i)
3271 aux = sqrt(cx+cy)+two*c2(i)
3272 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3273 cfi = cf(i)*abs(h2(i))
3274 aux = two*cfi*cfi/
max(ms(j1),em20)
3283 IF(ms(j1)==zero)
THEN
3288 k3(i)=kt(i)*abs(h3(i))
3289 c3(i)=c(i)*abs(h3(i))
3290 cx =four*c3(i)*c3(i)
3291 cy =eight*ms(j1)*k3(i)
3292 aux = sqrt(cx+cy)+two*c3(i)
3293 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3294 cfi = cf(i)*abs(h3(i))
3295 aux = two*cfi*cfi/
max(ms(j1),em20)
3304 IF(ms(j1)==zero)
THEN
3309 k4(i)=kt(i)*abs(h4(i))
3310 c4(i)=c(i)*abs(h4(i))
3311 cx =four*c4(i)*c4(i)
3312 cy =eight*ms(j1)*k4(i)
3313 aux = sqrt(cx+cy)+two*c4(i)
3314 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3315 cfi = cf(i)*abs(h4(i))
3316 aux = two*cfi*cfi/
max(ms(j1),em20)
3327 IF(viscffric(i)/=zero
3328 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3329 IF(pene(i) == zero)cycle
3332 IF(msi(i)==zero)
THEN
3338 cy = eight*msi(i)*kt(i)
3339 aux = sqrt(cx+cy)+two*c(i)
3340 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3341 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3353 IF(ms(j1)==zero)
THEN
3358 k1(i)=kt(i)*abs(h1(i))
3359 c1(i)=c(i)*abs(h1(i))
3360 cx =four*c1(i)*c1(i)
3361 cy =eight*ms(j1)*k1(i)
3362 aux = sqrt(cx+cy)+two*c1(i)
3363 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3364 cfi = cf(i)*abs(h1(i))
3365 aux = two*cfi*cfi/
max(ms(j1),em20)
3374 IF(ms(j1)==zero)
THEN
3379 k2(i)=kt(i)*abs(h2(i))
3380 c2(i)=c(i)*abs(h2(i))
3381 cx =four*c2(i)*c2(i)
3382 cy =eight*ms(j1)*k2(i)
3383 aux = sqrt(cx+cy)+two*c2(i)
3384 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3385 cfi = cf(i)*abs(h2(i))
3386 aux = two*cfi*cfi/
max(ms(j1),em20)
3395 IF(ms(j1)==zero)
THEN
3400 k3(i)=kt(i)*abs(h3(i))
3401 c3(i)=c(i)*abs(h3(i))
3402 cx =four*c3(i)*c3(i)
3403 cy =eight*ms(j1)*k3(i)
3404 aux = sqrt(cx+cy)+two*c3(i)
3405 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3406 cfi = cf(i)*abs(h3(i))
3407 aux = two*cfi*cfi/
max(ms(j1),em20)
3416 IF(ms(j1)==zero)
THEN
3421 k4(i)=kt(i)*abs(h4(i))
3422 c4(i)=c(i)*abs(h4(i))
3423 cx =four*c4(i)*c4(i)
3424 cy =eight*ms(j1)*k4(i)
3425 aux = sqrt(cx+cy)+two*c4(i)
3426 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3427 cfi = cf(i)*abs(h4(i))
3428 aux = two*cfi*cfi/
max(ms(j1),em20)
3436 IF(pene(i) == zero)cycle
3440 k1(i) =stif(i)*abs(h1(i))
3443 k2(i) =stif(i)*abs(h2(i))
3446 k3(i) =stif(i)*abs(h3(i))
3449 k4(i) =stif(i)*abs(h4(i))
3461 IF(pene(i) == zero)cycle
3486 IF(idtmins==2.OR.idtmins_int/=0)
THEN
3488 CALL i24sms2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3489 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3490 3 nin ,noint ,mskyi_sms, iskyi_sms,nsms ,
3491 4 kt ,c ,cf ,dtmini,dti ,
3492 5 irtse ,nsne ,is2se,is2pt ,t2main_sms ,
3501 IF(idtmins_int/=0)
THEN
3506 IF(ninloadp > 0)
THEN
3507 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
3509 ppl = loadp_hyd_inter(pp)
3510 dgapload = dgaploadint(k)
3512 gapp= gapv(i) + dgapload
3513 IF((pene(i)/=zero).OR.(dist(i) <= gapp.AND.dist(i) >= zero))
THEN
3515 IF(pene(i)==zero)
THEN
3521 tagncont(ppl,ixx(i,1)) = 1
3522 tagncont(ppl,ixx(i,2)) = 1
3523 tagncont(ppl,ixx(i,3)) = 1
3524 tagncont(ppl,ixx(i,4)) = 1
3528 IF (jg <= numnod)
THEN
3529 tagncont(ppl,jg) = 1
3533 IF (is2se(1,ig) > 0)
THEN
3535 ELSEIF(is2se(2,ig) > 0)
THEN
3539 tagncont(ppl,irtse(j,ie)) = 1
3554#include "mic_lockon.inc"
3559 hh = h1(i)+h2(i)+h3(i)+h4(i)
3560 IF(hh /= zero.OR.tagip(i)==1)
THEN
3577#include "mic_lockoff.inc"
3581 IF (impl_s ==0.AND.(inacti==-1.OR.igsti==-1)) stif(1:jlt)=
max(stif(1:jlt),stifkt(1:jlt))
3584 ELSEIF(iparit==0)
THEN
3585 CALL i24ass0(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3586 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3587 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3588 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
3589 5 fxi ,fyi ,fzi ,a ,stifn ,nin ,
3590 6 intth ,phi ,fthe ,phi1 , phi2 ,phi3 ,
3591 7 phi4 ,intply ,iply ,inod_pxfem ,
3592 8 irtse ,nsne ,is2se ,is2pt,jtask )
3595 CALL i24ass2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3596 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3597 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3598 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
3599 5 fxi ,fyi ,fzi ,fskyi,isky ,niskyfi,
3600 6 nin ,noint ,intth,phi ,ftheskyi ,phi1,
3601 7 phi2 ,phi3 , phi4 ,itab ,intply,iply ,
3602 8 inod_pxfem,irtse,nsne,is2se,is2pt,tagip )
3605 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
3607#include "lockon.inc"
3609 IF(pene(i) == zero)cycle
3610 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
3611 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
3612 fcont(3,ix1(i)) =fcont(3,ix1(i)) + fz1(i)
3613 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
3614 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
3615 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
3616 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
3617 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
3618 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
3619 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i)
3620 fcont(2,ix4(i)) =fcont(2,ix4(i)) + fy4(i)
3621 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
3625 IF (jg >numnod)
THEN
3628 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fcont ,
3631 fcont(1,jg)=fcont(1,jg)- fxi(i)
3632 fcont(2,jg)=fcont(2,jg)- fyi(i)
3633 fcont(3,jg)=fcont(3,jg)- fzi(i)
3644#include "lockoff.inc"
3648 IF(isecin>0.AND.inconv==1)
THEN
3650 IF(nstrf(1)+nstrf(2)/=0)
THEN
3652 nbinter=nstrf(k0+14)
3655 IF(nstrf(k1s)==noint)
THEN
3657#include "lockon.inc"
3659 IF(pene(k) == zero)cycle
3662 IF(secfcum(4,ix1(k),i)==1.)
THEN
3663 secfcum(1,ix1(k),i)=secfcum(1,ix1(k),i)-fx1(k)
3664 secfcum(2,ix1(k),i)=secfcum(2,ix1(k),i)-fy1(k)
3665 secfcum(3,ix1(k),i)=secfcum(3,ix1(k),i)-fz1(k)
3667 IF(secfcum(4,ix2(k),i)==1.)
THEN
3668 secfcum(1,ix2(k),i)=secfcum(1,ix2(k),i)-fx2(k)
3669 secfcum(2,ix2(k),i)=secfcum(2,ix2(k),i)-fy2(k)
3670 secfcum(3,ix2(k),i)=secfcum(3,ix2(k),i)-fz2(k)
3672 IF(secfcum(4,ix3(k),i)==1.)
THEN
3673 secfcum(1,ix3(k),i)=secfcum(1,ix3(k),i)-fx3(k)
3674 secfcum(2,ix3(k),i)=secfcum(2,ix3(k),i)-fy3(k)
3675 secfcum(3,ix3(k),i)=secfcum(3,ix3(k),i)-fz3(k)
3677 IF(secfcum(4,ix4(k),i)==1.)
THEN
3678 secfcum(1,ix4(k),i)=secfcum(1,ix4(k),i)-fx4(k)
3679 secfcum(2,ix4(k),i)=secfcum(2,ix4(k),i)-fy4(k)
3680 secfcum(3,ix4(k),i)=secfcum(3,ix4(k),i)-fz4(k)
3685 IF (jg >numnod)
THEN
3687 IF(secfcum(4,jg,i)==1.)
THEN
3689 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3693 IF(secfcum(4,jg,i)==1.)
THEN
3694 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3695 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
3696 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
3703 IF(secfcum(4,jg,i)==1.)
THEN
3705 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3709 IF(secfcum(4,jg,i)==1.)
THEN
3710 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3711 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
3712 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
3717#include "lockoff.inc"
3728 IF(ibag/=0.OR.iadm/=0)
THEN
3730 IF(pene(i) == zero)cycle
3753 IF(pene(i) == zero)cycle
3755 ibcs = ibcc - 8 * ibcm
3759 IF(ig>0.AND.ig<=numnod)
THEN
3761 CALL ibcoff(ibcs,icodt(ig))
3766 CALL ibcoff(ibcm,icodt(ig))
3768 CALL ibcoff(ibcm,icodt(ig))
3770 CALL ibcoff(ibcm,icodt(ig))
3772 CALL ibcoff(ibcm,icodt(ig))