48 SUBROUTINE i18for3(OUTPUT, JLT ,A ,V ,IBCC ,ICODT ,
49 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
50 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
51 4 STFVAL ,STIFN ,STIF ,FSKYI ,ISKY ,
52 6 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
53 7 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
54 8 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
55 9 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
56 A P1 ,P2 ,P3 ,P4 ,FCONT ,
57 B IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
58 C IVIS2 ,NELTST ,ITYPTST ,DT2T ,IXS ,
59 D GAPV ,CAND_P ,INDEX ,NISKYFI ,
60 E KINET ,NEWFRONT ,ISECIN ,NSTRF ,SECFCUM ,
61 F X ,IRECT ,CE_LOC ,MFROT ,IFQ ,
62 G FROT_P ,CAND_FX ,CAND_FY ,CAND_FZ ,
63 H IFPEN ,ICONTACT ,IGROUPS ,IPARG ,
64 J VISCN ,VXI ,VYI ,VZI ,MSI ,
65 K KINI ,NIN ,NISUB ,LISUB ,ADDSUBS ,
66 L ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,CAND_N ,
67 M ILAGM ,ICURV ,FNCONT ,MS0 ,
68 N JTASK ,ISENSINT ,FSAVPARIT ,NFT ,MULTI_FVM ,
69 O H3D_DATA ,ELBUF_TAB ,IDIR )
88 use element_mod ,
only : nixs
92#include "implicit_f.inc"
101#include "com01_c.inc"
102#include "com04_c.inc"
103#include "com06_c.inc"
104#include "com08_c.inc"
105#include "scr07_c.inc"
106#include "scr14_c.inc"
107#include "scr16_c.inc"
108#include "scr18_c.inc"
109#include "units_c.inc"
110#include "parit_c.inc"
111#include "param_c.inc"
112#include "kincod_c.inc"
116 TYPE(output_),
INTENT(INOUT) :: OUTPUT
117 INTEGER,
INTENT(IN) :: IDIR
118 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
119 INTEGER NELTST,ITYPTST,JLT,IBCC,IVIS2,NIN,
120 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
121 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
122 . IRECT(4,*),IFPEN(*) ,ICONTACT(*), CAND_N(*),
123 . KINI(*),IGROUPS(NUMELS),
124 . ISET, NISKYFI,INTTH,IFORM,JTASK,NFT,IPARG(NPARG)
125 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
126 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
127 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(*), LISUBS(*),
128 . LISUBM(*),ILAGM,ICURV(3),ISENSINT(*),IXS(NIXS,NUMELS)
130 . STFVAL,CAND_P(*),FROT_P(*), X(3,*),MS0(*),
131 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
132 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),
133 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
134 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*),FNCONT(3,*),
135 . FSAVPARIT(NISUB+1,11,*)
137 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
138 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
139 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
140 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
141 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
142 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz), stif(mvsiz),
144 . secfcum(7,numnod,nsect), tmp(mvsiz),
145 . stifsav(mvsiz), viscn(*),
146 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(2*mvsiz),
148 TYPE(multi_fvm_struct),
INTENT(INOUT) :: MULTI_FVM
149 TYPE(H3D_DATABASE) :: H3D_DATA
153 INTEGER I, J, JG, K0, NBINTER, K1S, K, IE, NN, NI,
156 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
157 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
158 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
159 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
160 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
161 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
162 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),
163 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
164 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),dist(mvsiz),
165 . vnx, vny, vnz, aa, crit,s2,rdist,
166 . v2, fm2, dt1inv, visca, fac,ff,alphi,
alpha,beta,
167 . fx, fy, fz, f2, mas2, m2sk, dtmi0,ft,fn,fmax,ftn,
168 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
169 . d1,d2,d3,d4,a1,a2,a3,a4,econtdt,
170 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
171 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15, ffo,
172 . e10, h0d, s2d, sum,
173 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
174 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
175 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
176 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
177 .
area,p,vv1,vv2,v21,dmu, h00 ,a0x,a0y,a0z,rx,ry,rz,
178 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa ,tm,ts
180 . surfx,surfy,surfz,surf
182 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
183 . kt(mvsiz),c(mvsiz),cf(mvsiz),
184 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
185 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
186 . cx,cy,cfi,aux,phi1(mvsiz), phi2(mvsiz), phi3(mvsiz),
187 . phi4(mvsiz),dx, dti
188 INTEGER JSUB, KSUB, , KK, IN, NSUB, IBID, ITASK
189 my_real FSAVSUB1(15,NISUB),IMPX,IMPY,IMPZ,PP1,PP2,PP3,PP4,BID
200 IF(dt1 > zero)dt1inv = one/dt1
209 IF(ix3(i) /= ix4(i))
THEN
216 pp1 =
max(zero, gap - d1)
217 pp2 =
max(zero, gap - d2)
218 pp3 =
max(zero, gap - d3)
219 pp4 =
max(zero, gap - d4)
221 pene(i) =
max(pp1,pp2,pp3,pp4)
223 a1 = pp1/
max(em20,d1)
224 a2 = pp2/
max(em20,d2)
225 a3 = pp3/
max(em20,d3)
226 a4 = pp4/
max(em20,d4)
228 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
229 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
230 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
231 la1 = one - lb1(i) - lc1(i)
232 la2 = one - lb2(i) - lc2(i)
233 la3 = one - lb3(i) - lc3(i)
234 la4 = one - lb4(i) - lc4(i)
235 h0 = fourth * (pp1*la1 + pp2*la2 + pp3*la3 + pp4*la4)
236 h1(i) = h0 + pp1 * lb1(i) + pp4 * lc4(i)
237 h2(i) = h0 + pp2 * lb2(i) + pp1 * lc1(i)
238 h3(i) = h0 + pp3 * lb3(i) + pp2 * lc2(i)
239 h4(i) = h0 + pp4 * lb4(i) + pp3 * lc3(i)
240 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
247 pp1 =
max(zero, gap - d1)
254 h3(i) = one - lb1(i) - lc1(i)
262 s2 = one/
max(em30,sqrt(n1(i)*n1(i) + n2(i)*n2(i) + n3(i)*n3(i)))
272 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i)) - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
273 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i)) - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
274 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i)) - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
275 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
277 h0 = -fourth*(h1(i) - h2(i) + h3(i) - h4(i))
278 h0 =
min(h0,h2(i),h4(i))
279 h0 =
max(h0,-h1(i),-h3(i))
280 IF(ix3(i) == ix4(i))h0 = zero
291 IF(pene(i) > zero )
THEN
293 cand_p(index(i)) = cand_p(index(i)) + vn(i)*dt1
295 stif(i) = stfval * pene(i)/gap
298 cand_p(index(i)) = zero
307 IF(pene(i) > zero )
THEN
308 fni(i) = stif(i) * cand_p(index(i))
334 fni(i) =
min(fni(i),zero)
336 ELSEIF(idir == 1)
THEN
338 fni(i) =
max(fni(i),zero)
348 fac = stif(i) /
max(em30,stif(i))
349 ff = fac * visc * pene(i)/gap
350 stif(i) = stif(i) + two * ff * dt1inv
352 econtdt = econtdt + ff * vn(i) * dt1
369 econtt = econtt + dt1*vn(i)*fni(i)
379 fsav8 =fsav8 +abs(impx)
380 fsav9 =fsav9 +abs(impy)
381 fsav10=fsav10+abs(impz)
382 fsav11=fsav11+fni(i)*dt12
385 fsav(1)=fsav(1)+fsav1
386 fsav(2)=fsav(2)+fsav2
387 fsav(3)=fsav(3)+fsav3
388 fsav(8)=fsav(8)+fsav8
389 fsav(9)=fsav(9)+fsav9
390 fsav(10)=fsav(10)+fsav10
391 fsav(11)=fsav(11)+fsav11
392#include "lockoff.inc"
393 IF(isensint(1)/=0)
THEN
395 fsavparit(1,1,i+nft) = fsavparit(1,1,i+nft) + sqrt((fxi(i)**2)+(fyi(i)**2)+(fzi(i)**2))
404 fsavsub1(j,jsub)=zero
414 DO WHILE(jj<addsubs(in+1))
416 DO WHILE(kk<addsubm(ie+1))
423 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
424 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
425 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
426 IF(isensint(jsub)/=0)
THEN
427 fsavparit(jsub+1,1,i+nft) = fsavparit(jsub+1,1,i+nft) + sqrt((fxi(i)**2)+(fyi(i)**2)+(fzi(i)**2))
429 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
430 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
431 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
432 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
435 ELSE IF(ksub<jsub)
THEN
450 DO WHILE(kk<addsubm(ie+1))
457 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
458 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
459 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
460 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
461 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
462 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
463 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
466 ELSE IF(ksub<jsub)
THEN
488 DO WHILE(jj<addsubs(in+1))
490 DO WHILE(kk<addsubm(ie+1))
503 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
504 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
505 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
506 fsavsub1(15,jsub)= fsavsub1(15,jsub) + sqrt(impx*impx+impy*impy+impz*impz)
509 ELSE IF(ksub<jsub)
THEN
520 jj =addsubsfi(nin)%P(nn)
522 DO WHILE(jj<addsubsfi(nin)%P(nn+1))
523 jsub=lisubsfi(nin)%P(jj)
524 DO WHILE(kk<addsubm(ie+1))
538 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
539 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
540 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
541 fsavsub1(15,jsub)= fsavsub1(15,jsub)+sqrt(impx*impx+impy*impy+impz*impz)
544 ELSE IF(ksub<jsub)
THEN
558 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
561#include "lockoff.inc"
565 econtd = econtd + econtdt
566 econt_cumu = econt_cumu + econtt
567 fsav(26) = fsav(26) + econtt
568 fsav(28) = fsav(28) + econtdt
569#include "lockoff.inc"
572 IF(idtmin(10) == 1.OR.idtmin(10) == 2.OR.idtmin(10) == 5.OR.idtmin(10) == 6)
THEN
577 IF(mas2>zero.AND.stif(i)>zero .AND. irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
578 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
580 mas2 = two* ms(ix1(i))
581 IF(mas2>zero.AND.h1(i)*stif(i)>zero .AND. irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
582 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h1(i)*stif(i))))
584 mas2 = two * ms(ix2(i))
585 IF(mas2>zero.AND.h2(i)*stif(i)>zero .AND. irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
586 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h2(i)*stif(i))))
588 mas2 = two* ms(ix3(i))
589 IF(mas2 > zero.AND.h3(i)*stif(i) > zero .AND. irb(kinet(ix3(i))) == 0.AND.irb2(kinet(ix3(i))) == 0)
THEN
590 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h3(i)*stif(i))))
592 mas2 = two * ms(ix4(i))
593 IF(mas2 > zero.AND.h4(i)*stif(i) > zero .AND. irb(kinet(ix4(i))) == 0.AND.irb2
THEN
594 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h4(i)*stif(i))))
596 dtmi0 =
min(dtmi0,dtmi(i))
598 IF(dtmi0<=dtmin1(10))
THEN
600 IF(dtmi(i)<=dtmin1(10))
THEN
605 ni = itafi(nin)%P(-jg)
607 IF(idtmin(10) == 1)
THEN
609 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
610 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
611 .
' IN INTERFACE ',noint
612 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
613 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
614 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4
615#include "lockoff.inc"
617 IF ( istamping == 1)
THEN
618 WRITE(istdo,
'(A)')
'The run encountered a problem in an interface Type 7.'
619 WRITE(istdo,
'(A)')
'You may need to check if there is enou gh clearance between the tools,'
620 WRITE(istdo,
'(A)')
'and that they do not penetrate each other during their travel'
621 WRITE(iout,
'(A)')
'The run encountered a problem in an interface Type 7.'
622 WRITE(iout,
'(A)')
'You may need to check if there is enough clearance between the tools,'
623 WRITE(iout,
'(A)')
'and that they do not penetrate each other during their travel'
625 ELSEIF(idtmin(10) == 2)
THEN
627 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
' **WARNING MINIMUM TIME STEP ',dtmi(i),
' IN INTERFACE ',noint
628 WRITE(iout,
'(A,I10,A,I10)')
' DELETE SECONDARY NODE ',ni,
' FROM INTERFACE ',noint
629 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
631 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
633 stifi(nin)%P(-jg) = -abs(stifi(nin)%P(-jg))
635#include "lockoff.inc"
636 IF ( istamping == 1)
THEN
637 WRITE(istdo,
'(A)')
'The run encountered a problem in an interface Type 7.'
638 WRITE(istdo,
'(A)')
'You may need to check if there is enou gh clearance between the tools,'
639 WRITE(istdo,
'(A)')
'and that they do not penetrate each other during their travel'
640 WRITE(iout,
'(A)')
'The run encountered a problem in an interface Type 7.'
641 WRITE(iout,
'(A)')
'You may need to check if there is enough clearance between the tools,'
642 WRITE(iout,
'(A)')
'and that they do not penetrate each other during their travel'
645 ELSEIF(idtmin(10) == 5)
THEN
647 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
' **WARNING MINIMUM TIME STEP ',dtmi(i),
' IN INTERFACE ',noint
648 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
649 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
650 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
651#include "lockoff.inc"
653 IF ( istamping == 1)
THEN
654 WRITE(istdo,
'(A)')'
the run encountered a problem in an
interface type 7.
'
655 WRITE(ISTDO,'(a)
')'you may need to check
if there is enou gh clearance between
the tools,
'
656 WRITE(ISTDO,'(a)
')'and that they
do'
657 WRITE(IOUT, '(a)
')'the run encountered a problem in an
interface type 7.
'
658 WRITE(IOUT, '(a)
')'you may need
if'
659 WRITE(IOUT, '(a)
')'and that they
do not penetrate each other during their travel
'
661.AND.
ELSEIF(IDTMIN(10) == 6ILAGM == 2)THEN
662 IF(KINET(JG)+KINET(IX1(I))+KINET(IX2(I))+KINET(IX3(I))+KINET(IX4(I)) == 0 )THEN
663 CAND_N(INDEX(I)) = -IABS(CAND_N(INDEX(I)))
691 !case law151 with single lagrangian fluid brick and constant velocity
697 !SPMD: Identification of interf nodes.useful to send
702 ! temporary tag of nsvfi a -
703 NSVFI(NIN)%P(-NN) = -ABS(NSVFI(NIN)%P(-NN))
707 IF (MULTI_FVM%IS_USED) THEN
708 IF (IPARIT == 0) THEN
709 CALL MULTI_I18_FORCE_POFF(
710 1 DT1 ,JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
711 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
712 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
713 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
714 5 FXI ,FYI ,FZI ,A ,STIFN ,NIN ,
715 7 JTASK ,MULTI_FVM ,X ,IXS ,V ,
716 8 ELBUF_TAB,IGROUPS ,IPARG,MSI)
718 CALL MULTI_I18_FORCE_PON(
719 1 JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
720 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
721 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
722 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
723 5 FXI ,FYI ,FZI ,FSKYI,ISKY ,NISKYFI,
724 6 NIN ,NOINT ,MULTI_FVM,DT1,JTASK)
728 CALL I7ASS3( JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
729 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
730 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
731 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
732 5 FXI ,FYI ,FZI ,A ,STIFN)
734 ELSEIF(IPARIT == 0)THEN
735 CALL I7ASS0(JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
736 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
737 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
738 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
739 5 FXI ,FYI ,FZI ,A ,STIFN ,NIN ,
740 6 IBID ,BID ,BID ,BID ,BID ,BID ,
741 7 BID ,BID ,BID ,JTASK,IBID ,IBID )
743 CALL I7ASS2(JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
744 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
745 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
746 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
747 5 FXI ,FYI ,FZI ,FSKYI,ISKY ,NISKYFI,
748 6 NIN ,NOINT ,IBID ,BID ,BID ,BID ,
749 7 BID ,BID ,BID ,BID ,BID ,
753 IF(ANIM_V(4)+OUTP_V(4)+H3D_DATA%N_VECT_CONT > 0)THEN
755 !---REACTION FORCE ON THE SOLID SURFACE
756 ! /H3D/NODA/CONT (STAGGERED SCHEME)
758 FCONT(1,IX1(I)) =FCONT(1,IX1(I)) + FX1(I)
759 FCONT(2,IX1(I)) =FCONT(2,IX1(I)) + FY1(I)
760 FCONT(3,IX1(I)) =FCONT(3,IX1(I)) + FZ1(I)
761 FCONT(1,IX2(I)) =FCONT(1,IX2(I)) + FX2(I)
762 FCONT(2,IX2(I)) =FCONT(2,IX2(I)) + FY2(I)
763 FCONT(3,IX2(I)) =FCONT(3,IX2(I)) + FZ2(I)
764 FCONT(1,IX3(I)) =FCONT(1,IX3(I)) + FX3(I)
765 FCONT(2,IX3(I)) =FCONT(2,IX3(I)) + FY3(I)
766 FCONT(3,IX3(I)) =FCONT(3,IX3(I)) + FZ3(I)
767 FCONT(1,IX4(I)) =FCONT(1,IX4(I)) + FX4(I)
768 FCONT(2,IX4(I)) =FCONT(2,IX4(I)) + FY4(I)
769 FCONT(3,IX4(I)) =FCONT(3,IX4(I)) + FZ4(I)
771 !---REACTION FORCE ON THE FLUID SIDE
772 ! /H3D/ELEM/VECT/CONT WITH LAW151 (COLOCATED SCHEME)
773 IF (MULTI_FVM%IS_USED) THEN
774 IF(H3D_DATA%N_VECT_CONT > 0)THEN
777 IF(JG>0) THEN ! local cell
778 OUTPUT%DATA%FANI_CELL%F18(1,JG)=OUTPUT%DATA%FANI_CELL%F18(1,JG)-FXI(I)
779 OUTPUT%DATA%FANI_CELL%F18(2,JG)=OUTPUT%DATA%FANI_CELL%F18(2,JG)-FYI(I)
780 OUTPUT%DATA%FANI_CELL%F18(3,JG)=OUTPUT%DATA%FANI_CELL%F18(3,JG)-FZI(I)
785 !/H3D/NODA/CONT (STAGGERED SCHEME)
789 ! SPMD : reprocess required after receiving a remote node if JG < 0
790 FCONT(1,JG)=FCONT(1,JG)- FXI(I)
791 FCONT(2,JG)=FCONT(2,JG)- FYI(I)
792 FCONT(3,JG)=FCONT(3,JG)- FZI(I)
796#include "lockoff.inc"
798.AND.
IF((ANIM_V(12)+OUTP_V(12)+H3D_DATA%N_VECT_PCONT > 0
799.AND..OR..OR..AND..OR.
. ((TT>=OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)TT>=TOUTP(TT>=H3D_DATA%TH3DTT<=H3D_DATA%TH3D_STOP)
800.AND..OR.
. (MANIM>=4MANIM<=15)H3D_DATA%MH3D /= 0))
801.OR.
. H3D_DATA%N_VECT_PCONT_MAX>0)THEN
804 FNCONT(1,IX1(I)) =FNCONT(1,IX1(I)) + FXI(I)*H1(I)
805 FNCONT(2,IX1(I)) =FNCONT(2,IX1(I)) + FYI(I)*H1(I)
806 FNCONT(3,IX1(I)) =FNCONT(3,IX1(I)) + FZI(I)*H1(I)
807 FNCONT(1,IX2(I)) =FNCONT(1,IX2(I)) + FXI(I)*H2(I)
808 FNCONT(2,IX2(I)) =FNCONT(2,IX2(I)) + FYI(I)*H2(I)
809 FNCONT(3,IX2(I)) =FNCONT(3,IX2(I)) + FZI(I)*H2(I)
810 FNCONT(1,IX3(I)) =FNCONT(1,IX3(I)) + FXI(I)*H3(I)
811 FNCONT(2,IX3(I)) =FNCONT(2,IX3(I)) + FYI(I)*H3(I)
812 FNCONT(3,IX3(I)) =FNCONT(3,IX3(I)) + FZI(I)*H3(I)
813 FNCONT(1,IX4(I)) =FNCONT(1,IX4(I)) + FXI(I)*H4(I)
814 FNCONT(2,IX4(I)) =FNCONT(2,IX4(I)) + FYI(I)*H4(I)
815 FNCONT(3,IX4(I)) =FNCONT(3,IX4(I)) + FZI(I)*H4(I)
817#include "lockoff.inc"
822 IF(NSTRF(1)+NSTRF(2) /= 0)THEN
827 IF(NSTRF(K1S) == NOINT)THEN
831 ! Be careful with sign conventions during force accumulation
832 ! Ensure consistency with CFORC3 implementation
833 IF(SECFCUM(4,IX1(K),I) == ONE)THEN
834 SECFCUM(1,IX1(K),I)=SECFCUM(1,IX1(K),I)-FX1(K)
835 SECFCUM(2,IX1(K),I)=SECFCUM(2,IX1(K),I)-FY1(K)
836 SECFCUM(3,IX1(K),I)=SECFCUM(3,IX1(K),I)-FZ1(K)
838 IF(SECFCUM(4,IX2(K),I) == ONE)THEN
839 SECFCUM(1,IX2(K),I)=SECFCUM(1,IX2(K),I)-FX2(K)
840 SECFCUM(2,IX2(K),I)=SECFCUM(2,IX2(K),I)-FY2(K)
841 SECFCUM(3,IX2(K),I)=SECFCUM(3,IX2(K),I)-FZ2(K)
843 IF(SECFCUM(4,IX3(K),I) == ONE)THEN
844 SECFCUM(1,IX3(K),I)=SECFCUM(1,IX3(K),I)-FX3(K)
845 SECFCUM(2,IX3(K),I)=SECFCUM(2,IX3(K),I)-FY3(K)
846 SECFCUM(3,IX3(K),I)=SECFCUM(3,IX3(K),I)-FZ3(K)
848 IF(SECFCUM(4,IX4(K),I) == ONE)THEN
849 SECFCUM(1,IX4(K),I)=SECFCUM(1,IX4(K),I)-FX4(K)
850 SECFCUM(2,IX4(K),I)=SECFCUM(2,IX4(K),I)-FY4(K)
851 SECFCUM(3,IX4(K),I)=SECFCUM(3,IX4(K),I)-FZ4(K)
855 ! SPMD : reprocess required after receiving a remote node if JG < 0
856 IF(SECFCUM(4,JG,I) == 1.)THEN
857 SECFCUM(1,JG,I)=SECFCUM(1,JG,I)+FXI(K)
858 SECFCUM(2,JG,I)=SECFCUM(2,JG,I)+FYI(K)
859 SECFCUM(3,JG,I)=SECFCUM(3,JG,I)+FZI(K)
863#include "lockoff.inc"
870 ENDIF!(NSTRF(1)+NSTRF(2) /= 0)
subroutine i18for3(output, jlt, a, v, ibcc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cn_loc, stfval, stifn, stif, fskyi, isky, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, fcont, ix1, ix2, ix3, ix4, nsvg, ivis2, neltst, ityptst, dt2t, ixs, gapv, cand_p, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, ifpen, icontact, igroups, iparg, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, fncont, ms0, jtask, isensint, fsavparit, nft, multi_fvm, h3d_data, elbuf_tab, idir)