55
56
57
59
60
61
62#include "implicit_f.inc"
63#include "comlock.inc"
64
65
66
67#include "mvsiz_p.inc"
68
69
70
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "com06_c.inc"
74#include "com08_c.inc"
75#include "scr05_c.inc"
76#include "scr07_c.inc"
77#include "scr11_c.inc"
78#include "scr18_c.inc"
79#include "units_c.inc"
80#include "impl1_c.inc"
81#include "sms_c.inc"
82#include "param_c.inc"
83
84
85
86 INTEGER NELTST,ITYPTST,JLT,IBC,IVIS2,INACTI,NRTS,NIN,INTTH
87 INTEGER ITAB(*),
88 . NOINT,NEWFRONT,NISUB,NFT
89 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
90 . CS_LOC(MVSIZ), CM_LOC(MVSIZ),
91 . NSMS(MVSIZ),IFORM,INDEX(*),IFPEN(*), ISENSINT(*),
92 . ADDSUBS(*),ADDSUBM(*),LISUBS(*),LISUBM(*),LISUB(*),
93 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
94 . TYPSUB(*),(*), INFLG_SUBM(*)
95 INTEGER , INTENT(IN) :: NINLOADP,S_LOADPINTER
96 INTEGER , INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
97 . LOADP_HYD_INTER(NLOADP_HYD)
99 . ms(*), fsav(*),
100 . stfs(*),gapv(*),
101 . penis(2,*), penim(2,*),
102 . gap, fric,visc,viscf,vis,dt2t,dtmini,drad
104 . hs1(mvsiz), hs2(mvsiz), hm1(mvsiz), hm2(mvsiz),
105 . nx(mvsiz), ny(mvsiz), nz(mvsiz), stif(mvsiz),
106 . ms1(mvsiz),ms2(mvsiz),mm1(mvsiz),mm2(mvsiz),
107 . vxs1(mvsiz),vys1(mvsiz),vzs1(mvsiz),vxs2(mvsiz),vys2(mvsiz),
108 . vzs2(mvsiz),vxm1(mvsiz),vym1(mvsiz),vzm1(mvsiz),vxm2(mvsiz),
109 . vym2(mvsiz),vzm2(mvsiz),cand_fx(*),cand_fy(*),
110 . cand_fz(*),fni(*),
111 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
112 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
113 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
114 . k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
115 . c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),penrad(mvsiz),
116 . fsavparit(nisub+1,11,*),fsavsub(nthvki,*),fricc(mvsiz),
117 . viscffric(mvsiz)
118 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
119 INTEGER BITGET
121
122
123
124 INTEGER I, J1, J , K0,NBINTER,K1S,K, NI
125 INTEGER NISKYL,NISKYL1,IDTM,IM,IS,JSUB,KSUB,JJ,KK,NSUB,PP,PPL,
126 . ,ISS1,ISS2,IMS1,IMS2
128 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),
129 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz),
130
131 . pene(mvsiz),masmin(mvsiz),
132 . vis2(mvsiz), dtmi(mvsiz),
133 . vnx, vny, vnz, aa, vmax,s2,dist,rdist,
134 . v2, fm2, dt1inv, visca, fac, ff,
135 . fx, fy, fz, f2, mas2, dti,
136 . facm1, econtt, econvt, a2,masm,econtdt,
137 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6,
138 . fsav8, fsav9, fsav10, fsav11, fsav12,
139 . fsav13, fsav14, fsav15, dti2, pplus,dtmi0
140 my_real prec,beta,dgapload,gapp
142 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),
143 . kt(mvsiz),c(mvsiz),cf(mvsiz),
144 . cx,cy,cfi,aux,dtm,ft,fn,ftn,fxt(mvsiz),fyt(mvsiz),
145 . fzt(mvsiz)
146
147 IF (iresp == 1) THEN
148 prec = fiveem4
149 ELSE
150 prec = em10
151 ENDIF
152 IF(dt1>zero)THEN
153 dt1inv = one/dt1
154 ELSE
155 dt1inv =zero
156 ENDIF
157 econtt = zero
158 econvt = zero
159 econtdt = zero
160
161 IF(intth/=0.OR.ninloadp/=0 )THEN
162 DO i=1,jlt
163
164 dist = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
165 penrad(i)=dist-gapv(i)
166 ENDDO
167 ENDIF
168
169 DO i=1,jlt
170 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
171 pene(i) =
max(zero,gapv(i) - s2)
172 s2 = one/
max(em30,s2)
173 nx(i) = nx(i)*s2
174 ny(i) = ny(i)*s2
175 nz(i) = nz(i)*s2
176 ENDDO
177
178 IF(inacti==5)THEN
179#include "lockon.inc"
180 DO i=1,jlt
181 IF(cs_loc(i)<=nrts) THEN
182 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),half*pene(i))
183 ELSE
184 ni = cs_loc(i)-nrts
186 END IF
187 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),half*pene(i))
188 ENDDO
189#include "lockoff.inc"
190 DO i=1,jlt
191 IF(cs_loc(i)<=nrts) THEN
192 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
193 pene(i) =
max(pene(i),zero)
194 IF(pene(i)==zero)stif(i)=zero
195 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
196 ELSE
197 ni = cs_loc(i)-nrts
198 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
199 pene(i) =
max(pene(i),zero)
200 IF(pene(i)==zero)stif(i)=zero
201 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
202 END IF
203 END DO
204 ELSE IF(inacti==6)THEN
205#include "lockon.inc"
206 DO i=1,jlt
207 pplus=half*(pene(i)+fiveem2*(gapv(i)-pene(i)))
208 IF(cs_loc(i)<=nrts) THEN
209 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),pplus)
210 ELSE
211 ni = cs_loc(i)-nrts
213 END IF
214 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),pplus)
215 ENDDO
216#include "lockoff.inc"
217 DO i=1,jlt
218 IF(cs_loc(i)<=nrts) THEN
219 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
220 pene(i) =
max(pene(i),zero)
221 IF(pene(i)==zero)stif(i)=zero
222 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
223 ELSE
224 ni = cs_loc(i)-nrts
225 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
226 pene(i) =
max(pene(i),zero)
227 IF(pene(i)==zero)stif(i)=zero
228 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
229 END IF
230 END DO
231 ELSE
232 DO i=1,jlt
233 IF( pene(i)==zero ) stif(i) = zero
234 ENDDO
235 ENDIF
236
237 vmax = zero
238 DO i=1,jlt
239 gapv(i) = zep9*gapv(i)
240 vx(i) = hs1(i)*vxs1(i) + hs2(i)*vxs2(i)
241 . - hm1(i)*vxm1(i) - hm2(i)*vxm2(i)
242 vy(i) = hs1(i)*vys1(i) + hs2(i)*vys2(i)
243 . - hm1(i)*vym1(i) - hm2(i)*vym2(i)
244 vz(i) = hs1(i)*vzs1(i) + hs2(i)*vzs2(i)
245 . - hm1(i)*vzm1(i) - hm2(i)*vzm2(i)
246 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
247 ENDDO
248
249 DO i=1,jlt
250 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
251 facm1 = one/fac
252 IF(( (gapv(i)-pene(i))/gapv(i) )<prec .AND.
253 . stif(i)>zero ) THEN
254 stif(i) = zero
255 IF (impl_s==0) THEN
256 newfront = -1
257#include "lockon.inc"
258 IF(cs_loc(i)<=nrts)THEN
259 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
260 WRITE(istdo,*)'WARNING INTERFACE NB',noint
261 WRITE(istdo,*)'LINE ',itab(n1(i)),
262 . itab(n2(i)),'DE-ACTIVATED FROM','INTERFACE'
263 WRITE(iout,*)'WARNING INTERFACE NB',noint
264 WRITE(iout,*)'GAP=',gapv(i),'PENE=',pene(i)
265 WRITE(iout,*)'LINE ',itab(n1(i)),
266 . itab(n2(i)),'DE-ACTIVATED FROM','INTERFACE'
267 ELSE
268 ni = cs_loc(i)-nrts
270 WRITE(istdo,*)'WARNING INTERFACE NB',noint
271 WRITE(istdo,*)
'LINE ',
itafi(nin)%P(n1(i)),
272 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
273 WRITE(iout,*)'WARNING INTERFACE NB',noint
274 WRITE(iout,*)'GAP=',gapv(i),'PENE=',pene(i)
275 WRITE(iout,*)
'LINE ',
itafi(nin)%P(n1(i)),
276 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
277 END IF
278#include "lockoff.inc"
279 ENDIF
280 pene(i)= zero
281 ENDIF
282 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
283 . log(facm1) )
284 stif(i) = half*stif(i) * fac
285 fni(i)= -stif(i) * pene(i)
286 ENDDO
287
288 dti = ep20
289
290 DO i=1,jlt
291 dist=gapv(i)-pene(i)
292 rdist = half*dist /
max(em30,-vn(i))
294 ENDDO
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309 IF (dtmini>zero) THEN
310 dtm=dtmini
311 idtm=2
312 ELSE
313 dtm=dtmin1(10)
314 idtm=idtmin(10)
315 END IF
316
317 IF(dti<=dtm)THEN
318 DO i=1,jlt
319 dist=gapv(i)-pene(i)
320 dti2 = half*dist /
max(em30,-vn(i))
321 IF(dti2<=dtm)THEN
322#include "lockon.inc"
323 IF(cs_loc(i)<=nrts)THEN
324 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
325 . ' **WARNING MINIMUM TIME STEP ',dti2,
326 . 'IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
327 WRITE(iout,*)'SECONDARY NODES NB',itab(n1(i)),
328 . itab(n2(i))
329 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
330 . itab(m2(i))
331 ELSE
332 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
333 . ' **WARNING MINIMUM TIME STEP ',dti2,
334 . 'IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
335 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
336 .
itafi(nin)%P(n2(i))
337 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
338 . itab(m2(i))
339 END IF
340#include "lockoff.inc"
341 IF(idtm==1)THEN
342 tstop = tt
343 ELSEIF(idtm==2)THEN
344#include "lockon.inc"
345 WRITE(iout,*)'REMOVE SECONDARY LINE FROM INTERFACE'
346 IF(cs_loc(i)<=nrts)THEN
347 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
348 ELSE
349 ni = cs_loc(i)-nrts
351 END IF
352#include "lockoff.inc"
353 newfront = -1
354 stif(i) = zero
355 dti = dtm
356 ELSEIF(idtm==5)THEN
357 mstop = 2
358 ENDIF
359 ENDIF
360 ENDDO
361 ENDIF
362
363 IF(dti<dt2t)THEN
364 dt2t = dti
365 neltst = noint
366 ityptst = 10
367 ENDIF
368
369
370
371 IF(visc/=zero)THEN
372 DO i=1,jlt
373 mas2 = ms1(i)*hs1(i)
374 . + ms2(i)*hs2(i)
375 masm = mm1(i)*hm1(i)
376 . + mm2(i)*hm2(i)
377 masmin(i) =
min(mas2,masm)
378 vis2(i) = two * stif(i) *
min(mas2,masm)
379 ENDDO
380 ELSE
381 DO i=1,jlt
382 IF(viscffric(i)/=zero) THEN
383 mas2 = ms1(i)*hs1(i)
384 . + ms2(i)*hs2(i)
385 masm = mm1(i)*hm1(i)
386 . + mm2(i)*hm2(i)
387 masmin(i) =
min(mas2,masm)
388 vis2(i) = two * stif(i) *
min(mas2,masm)
389 ENDIF
390 ENDDO
391 ENDIF
392
393
394 IF(visc/=zero)THEN
395 IF(ivis2==0.OR.ivis2==1)THEN
396
397
398
399 DO i=1,jlt
400 IF(vn(i)<zero)
401 . vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
402 ENDDO
403
404 visca = zep4
405 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))THEN
406 DO i=1,jlt
407 fac = stif(i) /
max(em30,stif(i))
408 vis = sqrt(vis2(i))
409 ff = fac * (
410 . visc * vis +
411 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
412 .
max((gapv(i) - pene(i)),em10) )
413 stif(i) = stif(i) * gapv(i)/
max((gapv(i)-pene(i)),em10)
414 stif(i) = stif(i) + ff * dt1inv
415 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
416 ff =
min(ff * vn(i),-fni(i))
417
418 fni(i) = fni(i) + ff
419
420 ENDDO
421
422 ELSE
423 DO i=1,jlt
424 fac = stif(i) /
max(em30,stif(i))
425 vis = sqrt(vis2(i))
426 c(i)= fac * (
427 . visc * vis +
428 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
429 .
max((gapv(i) - pene(i)),em10) )
430 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
431 kt(i) = stif(i)
432 stif(i) = stif(i) + c(i) * dt1inv
433 ff =
min(c(i) * vn(i),-fni(i))
434
435 fni(i) = fni(i) + ff
436 cf(i) = fac*sqrt(viscffric(i))*vis
437 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
438
439 ENDDO
440 ENDIF
441
442 ELSEIF(ivis2==2)THEN
443
444
445
446 DO i=1,jlt
447 vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
448 ENDDO
449
450 visca = half
451 DO i=1,jlt
452 fac = stif(i) /
max(em30,stif(i))
453 vis = sqrt(vis2(i))
454 ff = fac * (
455 . visc * vis +
456 . visca**2 * two * masmin(i) * abs(vn(i)) /
457 .
max((gapv(i) - pene(i)),em10) )
458 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
459 stif(i) = stif(i) + two * ff * dt1inv
460 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
461 ff =
min(ff * vn(i),-fni(i))
462 fni(i) = fni(i) + ff
463 ENDDO
464 ELSEIF(ivis2==3)THEN
465
466
467
468 DO i=1,jlt
469 fac = stif(i) /
max(em30,stif(i))
470 vis = sqrt(vis2(i))
471 ff = fac * ( visc * vis ) /
472 .
max((gapv(i) - pene(i)),em10)
473 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
474 stif(i) = stif(i) + two * ff * dt1inv
475 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
476 ff =
min(ff * vn(i),-fni(i))
477 fni(i) = fni(i) + ff
478 ENDDO
479 ELSEIF(ivis2==4)THEN
480
481
482
483 DO i=1,jlt
484 vis = sqrt(vis2(i))
485 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
486 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
487 ENDDO
488 ELSEIF(ivis2==5)THEN
489
490
491
492
493
494 DO i=1,jlt
495 mas2 = ms1(i)*hs1(i)
496 . + ms2(i)*hs2(i)
497 masm = mm1(i)*hm1(i)
498 . + mm2(i)*hm2(i)
499 vis = 2. * visc * dt1inv * masm * mas2 /
500 .
max(em30,masm+mas2)
501 stif(i) = stif(i) * gapv(i) /
max((gapv(i) -pene(i)),em10)
502 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
503 ff = vis * vn(i)
504 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
505 fni(i) =
min(fni(i),ff)
506 ENDDO
507 ELSE
508 ENDIF
509 ELSE
510 DO i=1,jlt
511 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
512 ENDDO
513 ENDIF
514
515
516
517 fsav1 = zero
518 fsav2 = zero
519 fsav3 = zero
520 fsav8 = zero
521 fsav9 = zero
522 fsav10= zero
523 fsav11= zero
524 DO i=1,jlt
525 fxi(i)=nx(i)*fni(i)
526 fyi(i)=ny(i)*fni(i)
527 fzi(i)=nz(i)*fni(i)
528 fsav1=fsav1+fxi(i)*dt12
529 fsav2=fsav2+fyi(i)*dt12
530 fsav3=fsav3+fzi(i)*dt12
531 fsav8=fsav8+abs(fxi(i)*dt12)
532 fsav9=fsav9+abs(fyi(i)*dt12)
533 fsav10=fsav10+abs(fzi(i)*dt12)
534 fsav11=fsav11+abs(fni(i))*dt12
535 ENDDO
536 IF (inconv==1) THEN
537#include "lockon.inc"
538 fsav(1)=fsav(1)+fsav1
539 fsav(2)=fsav(2)+fsav2
540 fsav(3)=fsav(3)+fsav3
541 fsav(8)=fsav(8)+fsav8
542 fsav(9)=fsav(9)+fsav9
543 fsav(10)=fsav(10)+fsav10
544 fsav(11)=fsav(11)+fsav11
545#include "lockoff.inc"
546 ENDIF
547
548 IF(isensint(1)/=0) THEN
549 DO i=1,jlt
550 fsavparit(1,1,i+nft) = fxi(i)
551 fsavparit(1,2,i+nft) = fyi(i)
552 fsavparit(1,3,i+nft) = fzi(i)
553 ENDDO
554 ENDIF
555
556
557
558 IF (nisub > 0) THEN
559
560 DO i=1,jlt
561 im=cm_loc(i)
562 kk =addsubm(im)
563 IF (cs_loc(i)<=nrts) THEN
564
565 is=cs_loc(i)
566 jj =addsubs(is)
567 DO WHILE(jj<addsubs(is+1))
568 jsub=lisubs(jj)
569 itypsub = typsub(jsub)
570
571 IF(itypsub == 1 ) THEN
572
573 ksub=lisubm(kk)
574
575 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
576
577 IF(ksub==jsub)THEN
578
579 fsav1=fxi(i)*dt12
580 fsav2=fyi(i)*dt12
581 fsav3=fzi(i)*dt12
582 fsav8=abs(fxi(i)*dt12)
583 fsav9=abs(fyi(i)*dt12)
584 fsav10=abs(fzi(i)*dt12)
585 fsav11=abs(fni(i))*dt12
586
587 nsub=lisub(jsub)
588 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
589 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
590 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
591 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
592 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
593 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
594 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
595
596 IF(isensint(jsub+1)/=0) THEN
597 fsavparit(jsub+1,1,i+nft) = fxi(i)
598 fsavparit(jsub+1,2,i+nft) = fyi(i)
599 fsavparit(jsub+1,3,i+nft) = fzi(i)
600 ENDIF
601
602 END IF
603
604 kk=kk+1
605 ksub=lisubm(kk)
606 ENDDO
607 jj=jj+1
608
609 ELSEIF(itypsub == 2 ) THEN
610
611 fsav1=fxi(i)*dt12
612 fsav2=fyi(i)*dt12
613 fsav3=fzi(i)*dt12
614 fsav8=abs(fxi(i)*dt12)
615 fsav9=abs(fyi(i)*dt12)
616 fsav10=abs(fzi(i)*dt12)
617 fsav11=abs(fni(i))*dt12
618
619 nsub=lisub(jsub)
620 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
621 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
622 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
623 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
624 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
625 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
626 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
627
628 IF(isensint(jsub+1)/=0) THEN
629 fsavparit(jsub+1,1,i+nft) = fxi(i)
630 fsavparit(jsub+1,2,i+nft) = fyi(i)
631 fsavparit(jsub+1,3,i+nft) = fzi(i)
632 ENDIF
633
634
635 jj=jj+1
636 ELSEIF(itypsub == 3 ) THEN
637
638 iss2 =
bitget(inflg_subs(jj),0)
639 iss1 =
bitget(inflg_subs(jj),1)
640 ksub=lisubm(kk)
641 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
642 ims2 =
bitget(inflg_subm(kk),0)
643 ims1 =
bitget(inflg_subm(kk),1)
644 IF(ksub==jsub)THEN
645 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
646 . (ims2 == 1 .AND. iss1 == 1))) THEN
647 kk=kk+1
648 ksub=lisubm(kk)
649 cycle
650 END IF
651
652 fsav1=fxi(i)*dt12
653 fsav2=fyi(i)*dt12
654 fsav3=fzi(i)*dt12
655 fsav8=abs(fxi(i)*dt12)
656 fsav9=abs(fyi(i)*dt12)
657 fsav10=abs(fzi(i)*dt12)
658 fsav11=abs(fni(i))*dt12
659
660 nsub=lisub(jsub)
661 IF(ims2 > 0)THEN
662 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
663 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
664 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
665
666 ELSE
667 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
668 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
669 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
670 ENDIF
671 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
672 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
673 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
674 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
675
676 IF(isensint(jsub+1)/=0) THEN
677 IF(ims2 > 0)THEN
678 fsavparit(jsub+1,1,i+nft) = -fxi(i)
679 fsavparit(jsub+1,2,i+nft) = -fyi(i)
680 fsavparit(jsub+1,3,i+nft) = -fzi(i)
681 ELSE
682 fsavparit(jsub+1,1,i+nft) = fxi(i)
683 fsavparit(jsub+1,2,i+nft) = fyi(i)
684 fsavparit(jsub+1,3,i+nft) = fzi(i)
685 ENDIF
686 ENDIF
687
688 END IF
689
690 kk=kk+1
691 ksub=lisubm(kk)
692 ENDDO
693 jj=jj+1
694
695 ENDIF
696
697 ENDDO
698
699 DO WHILE(kk<addsubm(im+1))
700 ksub=lisubm(kk)
701
702 itypsub = typsub(ksub)
703 IF(itypsub == 2 ) THEN
704
705 fsav1=fxi(i)*dt12
706 fsav2=fyi(i)*dt12
707 fsav3=fzi(i)*dt12
708 fsav8=abs(fxi(i)*dt12)
709 fsav9=abs(fyi(i)*dt12)
710 fsav10=abs(fzi(i)*dt12)
711 fsav11=abs(fni(i))*dt12
712
713 nsub=lisub(ksub)
714 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
715 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
716 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
717 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
718 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
719 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
720 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
721
722 IF(isensint(jsub+1)/=0) THEN
723 fsavparit(jsub+1,1,i+nft) = -fxi(i)
724 fsavparit(jsub+1,2,i+nft) = -fyi(i)
725 fsavparit(jsub+1,3,i+nft) = -fzi(i)
726 ENDIF
727
728
729 ENDIF
730 kk=kk+1
731 ENDDO
732
733
734
735 ELSE
736
737 is=cs_loc(i)-nrts
741 itypsub = typsub(jsub)
742
743 IF(itypsub == 1 ) THEN
744
745 ksub=lisubm(kk)
746 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
747
748 IF(ksub==jsub)THEN
749
750 fsav1=fxi(i)*dt12
751 fsav2=fyi(i)*dt12
752 fsav3=fzi(i)*dt12
753 fsav8=abs(fxi(i)*dt12)
754 fsav9=abs(fyi(i)*dt12)
755 fsav10=abs(fzi(i)*dt12)
756 fsav11=abs(fni(i))*dt12
757
758 nsub=lisub(jsub)
759 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
760 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
761 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
762 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
763 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
764 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
765 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
766
767 IF(isensint(jsub+1)/=0) THEN
768 fsavparit(jsub+1,1,i+nft) = fxi(i)
769 fsavparit(jsub+1,2,i+nft) = fyi(i)
770 fsavparit(jsub+1,3,i+nft) = fzi(i)
771 ENDIF
772
773 END IF
774
775 kk=kk+1
776 ksub=lisubm(kk)
777 ENDDO
778 jj=jj+1
779
780 ELSEIF(itypsub == 2 ) THEN
781
782 fsav1=fxi(i)*dt12
783 fsav2=fyi(i)*dt12
784 fsav3=fzi(i)*dt12
785 fsav8=abs(fxi(i)*dt12)
786 fsav9=abs(fyi(i)*dt12)
787 fsav10=abs(fzi(i)*dt12)
788 fsav11=abs(fni(i))*dt12
789
790 nsub=lisub(jsub)
791 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
792 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
793 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
794 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
795 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
796 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
797 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
798
799 IF(isensint(jsub+1)/=0) THEN
800 fsavparit(jsub+1,1,i+nft) = fxi(i)
801 fsavparit(jsub+1,2,i+nft) = fyi(i)
802 fsavparit(jsub+1,3,i+nft) = fzi(i)
803 ENDIF
804
805
806 jj=jj+1
807
808 ELSEIF(itypsub == 3 ) THEN
809
812 ksub=lisubm(kk)
813 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
814 ims2 =
bitget(inflg_subm(kk),0)
815 ims1 =
bitget(inflg_subm(kk),1)
816 IF(ksub==jsub)THEN
817 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
818 . (ims2 == 1 .AND. iss1 == 1))) THEN
819 kk=kk+1
820 ksub=lisubm(kk)
821 cycle
822 END IF
823
824 fsav1=fxi(i)*dt12
825 fsav2=fyi(i)*dt12
826 fsav3=fzi(i)*dt12
827 fsav8=abs(fxi(i)*dt12)
828 fsav9=abs(fyi(i)*dt12)
829 fsav10=abs(fzi(i)*dt12)
830 fsav11=abs(fni(i))*dt12
831
832 nsub=lisub(jsub)
833 IF(ims2 > 0)THEN
834 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
835 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
836 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
837
838 ELSE
839 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
840 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
841 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
842 ENDIF
843 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
844 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
845 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
846 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
847
848 IF(isensint(jsub+1)/=0) THEN
849 IF(ims2 > 0)THEN
850 fsavparit(jsub+1,1,i+nft) = -fxi(i)
851 fsavparit(jsub+1,2,i+nft) = -fyi(i)
852 fsavparit(jsub+1,3,i+nft) = -fzi(i)
853 ELSE
854 fsavparit(jsub+1,1,i+nft) = fxi(i)
855 fsavparit(jsub+1,2,i+nft) = fyi(i)
856 fsavparit(jsub+1,3,i+nft) = fzi(i)
857 ENDIF
858 ENDIF
859
860 END IF
861
862 kk=kk+1
863 ksub=lisubm(kk)
864 ENDDO
865 jj=jj+1
866
867 ENDIF
868
869 ENDDO
870 ENDIF
871
872 ENDDO
873
874 ENDIF
875
876
877 IF(ninloadp > 0) THEN
878 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
879 pp = loadpinter(k)
880 ppl = loadp_hyd_inter(pp)
881 dgapload = dgaploadint(k)
882 DO i=1,jlt
883 dist = penrad(i) + gapv(i)
884 gapp= gapv(i) + dgapload
885 IF(pene(i) > zero .OR.dist <= gapp) THEN
886 tagncont(ppl,m1(i)) = 1
887 tagncont(ppl,m2(i)) = 1
888 IF(cs_loc(i)<=nrts) THEN
889
890 tagncont(ppl,n1(i)) = 1
891 tagncont(ppl,n2(i)) = 1
892 ENDIF
893 ENDIF
894 ENDDO
895 ENDDO
896 ENDIF
897
898
899
900
901 IF(iform==1)THEN
902 fsav4 = zero
903 fsav5 = zero
904 fsav6 = zero
905 fsav12 = zero
906 fsav13 = zero
907 fsav14 = zero
908 fsav15 = zero
909 DO i=1,jlt
910 IF(fricc(i)*viscffric(i)/=0.)THEN
911 vnx = nx(i)*vn(i)
912 vny = ny(i)*vn(i)
913 vnz = nz(i)*vn(i)
914 vx(i) = vx(i) - vnx
915 vy(i) = vy(i) - vny
916 vz(i) = vz(i) - vnz
917 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
918 vis2(i) = viscffric(i) * vis2(i)
919 fm2 = (fricc(i)*fni(i))**2
920 f2 = vis2(i) * v2
921 a2 =
min(f2,fm2) /
max(em30,f2)
922 aa = sqrt(a2 * vis2(i))
923 fxt(i) = aa * vx(i)
924 fyt(i) = aa * vy(i)
925 fzt(i) = aa * vz(i)
926 fsav4 = fsav4 + fxt(i)*dt12
927 fsav5 = fsav5 + fyt(i)*dt12
928 fsav6 = fsav6 + fzt(i)*dt12
929 fxi(i)=fxi(i) + fxt(i)
930 fyi(i)=fyi(i) + fyt(i)
931 fzi(i)=fzi(i) + fzt(i)
932 fsav12 = fsav12 + abs(fxi(i)*dt12)
933 fsav13 = fsav13 + abs(fyi(i)*dt12)
934 fsav14 = fsav14 + abs(fzi(i)*dt12)
935 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
936 econvt = econvt + aa * v2 * dt1
937 ENDIF
938 ENDDO
939 IF (inconv==1) THEN
940#include "lockon.inc"
941 fsav(4) = fsav(4) + fsav4
942 fsav(5) = fsav(5) + fsav5
943 fsav(6) = fsav(6) + fsav6
944 fsav(12) = fsav(12) + fsav12
945 fsav(13) = fsav(13) + fsav13
946 fsav(14) = fsav(14) + fsav14
947 fsav(15) = fsav(15) + fsav15
948#include "lockoff.inc"
949 ENDIF
950 ELSEIF(iform==2)THEN
951
952
953
954 fsav4 = zero
955 fsav5 = zero
956 fsav6 = zero
957 fsav12 = zero
958 fsav13 = zero
959 fsav14 = zero
960 fsav15 = zero
961 DO i=1,jlt
962 fx = stif(i)*vx(i)*dt12
963 fy = stif(i)*vy(i)*dt12
964 fz = stif(i)*vz(i)*dt12
965 fx = cand_fx(index(i)) + fx
966 fy = cand_fy(index(i)) + fy
967 fz = cand_fz(index(i)) + fz
968 ftn = fx*nx(i) + fy*ny(i) + fz*nz(i)
969 fx = fx - ftn*nx(i)
970 fy = fy - ftn*ny(i)
971 fz = fz - ftn*nz(i)
972 ft = fx*fx + fy*fy + fz*fz
974 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
975 beta =
min(one,fricc(i)*sqrt(fn/ft))
976 fxt(i) = fx * beta
977 fyt(i) = fy * beta
978 fzt(i) = fz * beta
979 fsav4 = fsav4 + fxt(i)*dt12
980 fsav5 = fsav5 + fyt(i)*dt12
981 fsav6 = fsav6 + fzt(i)*dt12
982 cand_fx(index(i)) = fxt(i)
983 cand_fy(index(i)) = fyt(i)
984 cand_fz(index(i)) = fzt(i)
985 ifpen(index(i)) = 1
986 fxi(i)=fxi(i) + fxt(i)
987 fyi(i)=fyi(i) + fyt(i)
988 fzi(i)=fzi(i) + fzt(i)
989 fsav12 = fsav12 + abs(fxi(i)*dt12)
990 fsav13 = fsav13 + abs(fyi(i)*dt12)
991 fsav14 = fsav14 + abs(fzi(i)*dt12)
992 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
993 econvt = econvt
994 . + dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
995 ENDDO
996 IF (inconv==1) THEN
997#include "lockon.inc"
998 fsav(4) = fsav(4) + fsav4
999 fsav(5) = fsav(5) + fsav5
1000 fsav(6) = fsav(6) + fsav6
1001 fsav(12) = fsav(12) + fsav12
1002 fsav(13) = fsav(13) + fsav13
1003 fsav(14) = fsav(14) + fsav14
1004 fsav(15) = fsav(15) + fsav15
1005#include "lockoff.inc"
1006 ENDIF
1007
1008 ENDIF
1009
1010 IF(isensint(1)/=0) THEN
1011 DO i=1,jlt
1012 fsavparit(1,4,i+nft) = fxt(i)
1013 fsavparit(1,5,i+nft) = fyt(i)
1014 fsavparit(1,6,i+nft) = fzt(i)
1015 ENDDO
1016 ENDIF
1017
1018
1019
1020
1021 IF (nisub > 0) THEN
1022
1023 DO i=1,jlt
1024 im=cm_loc(i)
1025 kk =addsubm(im)
1026 IF (cs_loc(i)<=nrts) THEN
1027
1028 is=cs_loc(i)
1029 jj =addsubs(is)
1030
1031 DO WHILE(jj<addsubs(is+1))
1032 jsub=lisubs(jj)
1033 itypsub = typsub(jsub)
1034 IF(itypsub == 1 ) THEN
1035
1036 ksub=lisubm(kk)
1037 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1038 IF(ksub==jsub)THEN
1039
1040 fsav4=fxt(i)*dt12
1041 fsav5=fyt(i)*dt12
1042 fsav6=fzt(i)*dt12
1043 fsav12 = abs(fxi(i)*dt12)
1044 fsav13 = abs(fyi(i)*dt12)
1045
1046 fsav15 = sqrt(fxi(i
1047
1048 nsub=lisub(jsub)
1049 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1050 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1051 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1052 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1053 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1054 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1055 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1056
1057 IF(isensint(jsub+1)/=0) THEN
1058 fsavparit(jsub+1,4,i+nft) = fxt(i)
1059 fsavparit(jsub+1,5,i+nft) = fyt(i)
1060 fsavparit(jsub+1,6,i+nft) = fzt(i)
1061 ENDIF
1062 END IF
1063
1064 kk=kk+1
1065 ksub=lisubm(kk)
1066 ENDDO
1067 jj=jj+1
1068
1069 ELSEIF(itypsub == 2 ) THEN
1070
1071 fsav4=fxt(i)*dt12
1072 fsav5=fyt(i)*dt12
1073 fsav6=fzt(i)*dt12
1074 fsav12 = abs(fxi(i)*dt12)
1075 fsav13 = abs(fyi(i)*dt12)
1076 fsav14 = abs(fzi(i)*dt12)
1077 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1078
1079 nsub=lisub(jsub)
1080 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1081 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1082 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1083 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1084 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1085 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1086 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1087
1088 IF(isensint(jsub+1)/=0) THEN
1089 fsavparit(jsub+1,4,i+nft) = fxt(i)
1090 fsavparit(jsub+1,5,i+nft) = fyt(i)
1091 fsavparit(jsub+1,6,i+nft) = fzt
1092 ENDIF
1093
1094 jj = jj + 1
1095 ELSEIF(itypsub == 3) THEN
1096
1097 iss2 =
bitget(inflg_subs(jj),0)
1098 iss1 =
bitget(inflg_subs(jj),1)
1099 ksub=lisubm(kk)
1100 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im
1101 ims2 =
bitget(inflg_subm(kk),0)
1102 ims1 =
bitget(inflg_subm(kk),1)
1103 IF(ksub==jsub)THEN
1104 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1105 . (ims2 == 1 .AND. iss1 == 1))) THEN
1106 kk=kk+1
1107 ksub=lisubm(kk)
1108 cycle
1109 END IF
1110
1111 fsav4=fxt(i
1112 fsav5=fyt(i)*dt12
1113 fsav6=fzt(i)*dt12
1114 fsav12 = abs(fxi(i)*dt12)
1115 fsav13 = abs(fyi(i)*dt12)
1116 fsav14 = abs(fzi(i)*dt12)
1117 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1118
1119 nsub=lisub(jsub)
1120 IF(ims2 > 0 ) THEN
1121 fsavsub(4,nsub)=fsavsub(4,nsub)-fsav4
1122 fsavsub(5,nsub)=fsavsub(5,nsub)-fsav5
1123 fsavsub(6,nsub)=fsavsub(6,nsub)-fsav6
1124 ELSE
1125 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1126 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1127 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1128 ENDIF
1129 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1130 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1131 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1132 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1133
1134 IF(isensint(jsub+1)/=0) THEN
1135 IF(ims2 > 0 ) THEN
1136 fsavparit(jsub+1,4,i+nft) = fxt(i)
1137 fsavparit(jsub+1,5,i+nft) = fyt(i)
1138 fsavparit(jsub+1,6,i+nft) = fzt(i)
1139 ELSE
1140 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1141 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1142 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1143 ENDIF
1144 ENDIF
1145 END IF
1146
1147 kk=kk+1
1148 ksub=lisubm(kk)
1149 ENDDO
1150 jj=jj+1
1151
1152 ENDIF
1153 ENDDO
1154
1155 DO WHILE(kk<addsubm(im+1))
1156 ksub=lisubm(kk)
1157
1158 itypsub = typsub(ksub)
1159 IF(itypsub == 2 ) THEN
1160
1161 fsav4=-fxt(i)*dt12
1162 fsav5=-fyt(i)*dt12
1163 fsav6=-fzt(i)*dt12
1164 fsav12 = abs(fxi(i)*dt12)
1165 fsav13 = abs(fyi(i)*dt12)
1166 fsav14 = abs(fzi(i)*dt12)
1167 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1168
1169 nsub=lisub(jsub)
1170 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1171 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1172 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1173 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1174 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1175 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1176 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1177
1178 IF(isensint(jsub+1)/=0) THEN
1179 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1180 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1181 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1182 ENDIF
1183
1184 jj = jj + 1
1185
1186 ENDIF
1187 kk=kk+1
1188 ENDDO
1189 ELSE
1190
1191 is=cs_loc(i)-nrts
1195 itypsub = typsub(jsub)
1196
1197 IF(itypsub == 1 ) THEN
1198
1199 ksub=lisubm(kk)
1200 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1201 IF(ksub==jsub)THEN
1202
1203 fsav4=fxt(i)*dt12
1204 fsav5=fyt(i)*dt12
1205 fsav6=fzt(i)*dt12
1206 fsav12 = abs(fxi(i)*dt12)
1207 fsav13 = abs(fyi(i)*dt12)
1208 fsav14 = abs(fzi(i)*dt12)
1209 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1210
1211 nsub=lisub(jsub)
1212 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1213 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1214 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1215 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1216 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1217 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1218 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1219
1220 IF(isensint(jsub+1)/=0) THEN
1221 fsavparit(jsub+1,4,i+nft) = fxt(i)
1222 fsavparit(jsub+1,5,i+nft) = fyt(i)
1223 fsavparit(jsub+1,6,i+nft) = fzt(i)
1224 ENDIF
1225 END IF
1226
1227 kk=kk+1
1228 ksub=lisubm(kk)
1229 ENDDO
1230 jj=jj+1
1231
1232 ELSEIF(itypsub == 2 ) THEN
1233
1234 fsav4=fxt(i)*dt12
1235 fsav5=fyt(i)*dt12
1236 fsav6=fzt(i)*dt12
1237 fsav12 = abs(fxi(i)*dt12)
1238 fsav13 = abs(fyi(i)*dt12)
1239 fsav14 = abs(fzi(i)*dt12)
1240 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1241
1242 nsub=lisub(jsub)
1243 fsavsub(4,nsub)
1244 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1245 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1246 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1247 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1248 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1249 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1250
1251 IF(isensint(jsub+1)/=0) THEN
1252 fsavparit(jsub+1,4,i+nft) = fxt(i)
1253 fsavparit(jsub+1,5,i+nft) = fyt(i)
1254 fsavparit(jsub+1,6,i+nft) = fzt(i)
1255 ENDIF
1256
1257 jj = jj + 1
1258
1259 ELSEIF(itypsub == 3 ) THEN
1260
1263 ksub=lisubm(kk)
1264 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1265 ims2 =
bitget(inflg_subm(kk),0)
1266 ims1 =
bitget(inflg_subm(kk),1)
1267 IF(ksub==jsub)THEN
1268 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1269 . (ims2 == 1 .AND. iss1 == 1))) THEN
1270 kk=kk+1
1271 ksub=lisubm(kk)
1272 cycle
1273 END IF
1274
1275 fsav4=fxt(i)*dt12
1276 fsav5=fyt(i)*dt12
1277 fsav6=fzt(i)*dt12
1278 fsav12 = abs(fxi(i)*dt12)
1279 fsav13 = abs(fyi(i)*dt12)
1280 fsav14 = abs(fzi(i)*dt12)
1281 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1282
1283 nsub=lisub(jsub)
1284 IF(ims2 > 0) THEN
1285 fsavsub(4,nsub)=fsavsub(4,nsub)-fsav4
1286 fsavsub(5,nsub)=fsavsub(5,nsub)-fsav5
1287 fsavsub(6,nsub)=fsavsub(6,nsub)-fsav6
1288 ELSE
1289 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1290 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1291 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1292 ENDIF
1293 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1294 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1295 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1296 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1297
1298 IF(isensint(jsub+1)/=0) THEN
1299 IF(ims2 > 0) THEN
1300 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1301 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1302 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1303 ELSE
1304 fsavparit(jsub+1,4,i+nft) = fxt(i)
1305 fsavparit(jsub+1,5,i+nft) = fyt(i)
1306 fsavparit(jsub+1,6,i+nft) = fzt(i)
1307 ENDIF
1308 ENDIF
1309 END IF
1310
1311 kk=kk+1
1312 ksub=lisubm(kk)
1313 ENDDO
1314 jj=jj+1
1315
1316 ENDIF
1317 ENDDO
1318 ENDIF
1319
1320 ENDDO
1321
1322 ENDIF
1323
1324 IF (inconv==1) THEN
1325#include "lockon.inc"
1326 econtv = econtv + econvt
1327 econt = econt + econtt
1328 econtd = econtd + econtdt
1329 fsav(26) = fsav(26) + econtt
1330 fsav(27) = fsav(27) + econvt
1331 fsav(28) = fsav(28) + econtdt
1332#include "lockoff.inc"
1333 ENDIF
1334
1335 DO i=1,jlt
1336 fx1(i)=-fxi(i)*hs1(i)
1337 fy1(i)=-fyi(i)*hs1(i)
1338 fz1(i)=-fzi(i)*hs1(i)
1339
1340 fx2(i)=-fxi(i)*hs2(i)
1341 fy2(i)=-fyi(i)*hs2(i)
1342 fz2(i)=-fzi(i)*hs2(i)
1343
1344 fx3(i)=fxi(i)*hm1(i)
1345 fy3(i)=fyi(i)*hm1(i)
1346 fz3(i)=fzi(i)*hm1(i)
1347
1348 fx4(i)=fxi(i)*hm2(i)
1349 fy4(i)=fyi(i)*hm2(i)
1350 fz4(i)=fzi(i)*hm2(i)
1351
1352 ENDDO
1353
1354 IF (nspmd>1) THEN
1355
1356#include "mic_lockon.inc"
1357 DO i = 1,jlt
1358 IF(cs_loc(i)>nrts)THEN
1359 ni = cs_loc(i)-nrts
1360
1362 ENDIF
1363 ENDDO
1364
1365#include "mic_lockoff.inc"
1366 ENDIF
1367
1368 DO i=1,jlt
1369 stif(i) = two*stif(i)
1370 ENDDO
1371
1372
1373 IF(kdtint==1.OR.idtmins==2.OR.idtmins_int/=0)THEN
1374 IF( (visc/=zero)
1375 . .AND.(ivis2==0.OR.ivis2==1))THEN
1376 DO i=1,jlt
1377 cx= c(i)*c(i)
1378
1379 IF(ms1(i)==zero)THEN
1380 k1(i) =zero
1381 c1(i) =zero
1382 ELSE
1383 k1(i)=kt(i)*abs(hs1(i))
1384 c1(i)=c(i)*abs(hs1(i))
1385 cx =four*c1(i)*c1(i)
1386 cy =eight*ms1(i)*k1(i)
1387 aux = sqrt(cx+cy)+two*c1(i)
1388 st1(i)= k1(i)*aux*aux/
max(cy,em30)
1389 cfi = cf(i)*abs(hs1(i))
1390 aux = two*cfi*cfi/
max(ms1(i),em20)
1391 IF(aux>st1(i))THEN
1392 k1(i) =zero
1393 c1(i) =cfi
1394 ENDIF
1395 ENDIF
1396
1397 IF(ms2(i)==zero)THEN
1398 k2(i) =zero
1399 c2(i) =zero
1400 ELSE
1401 k2(i)=kt(i)*abs(hs2(i))
1402 c2(i)=c(i)*abs(hs2(i))
1403 cx =four*c2(i)*c2(i)
1404 cy =eight*ms2(i)*k2(i)
1405 aux = sqrt(cx+cy)+two*c2(i)
1406 st2(i)= k2(i)*aux*aux/
max(cy,em30)
1407 cfi = cf(i)*abs(hs2(i))
1408 aux = two*cfi*cfi/
max(ms2(i),em20)
1409 IF(aux>st2(i))THEN
1410 k2(i) =zero
1411 c2(i) =cfi
1412 ENDIF
1413 ENDIF
1414
1415 IF(mm1(i)==zero)THEN
1416 k3(i) =zero
1417 c3(i) =zero
1418 ELSE
1419 k3(i)=kt(i)*abs(hm1(i))
1420 c3(i)=c(i)*abs(hm1(i))
1421 cx =four*c3(i)*c3(i)
1422 cy =eight*mm1(i)*k3(i)
1423 aux = sqrt(cx+cy)+two*c3(i)
1424 st3(i)= k3(i)*aux*aux/
max(cy,em30)
1425 cfi = cf(i)*abs(hm1(i))
1426 aux = two*cfi*cfi/
max(mm1(i),em20)
1427 IF(aux>st3(i))THEN
1428 k3(i) =zero
1429 c3(i) =cfi
1430 ENDIF
1431 ENDIF
1432
1433 IF(mm2(i)==zero)THEN
1434 k4(i) =zero
1435 c4(i) =zero
1436 ELSE
1437 k4(i)=kt(i)*abs(hm2(i))
1438 c4(i)=c(i)*abs(hm2(i))
1439 cx =four*c4(i)*c4(i)
1440 cy =eight*mm2(i)*k4(i)
1441 aux = sqrt(cx+cy)+two*c4(i)
1442 st4(i)= k4(i)*aux*aux/
max(cy,em30)
1443 cfi = cf(i)*abs(hm2(i))
1444 aux = two*cfi*cfi/
max(mm2(i),em20)
1445 IF(aux>st4(i))THEN
1446 k4(i) =zero
1447 c4(i) =cfi
1448 ENDIF
1449 ENDIF
1450 ENDDO
1451 ELSE
1452 DO i=1,jlt
1453 k1(i) =stif(i)*abs(hs1(i))
1454 c1(i) =zero
1455 k2(i) =stif(i)*abs(hs2(i))
1456 c2(i) =zero
1457 k3(i) =stif(i)*abs(hm1(i))
1458 c3(i) =zero
1459 k4(i) =stif(i)*abs(hm2(i))
1460 c4(i) =zero
1461 ENDDO
1462 ENDIF
1463 ENDIF
1464
1465
1466 IF(idtm==1.OR.idtm==2)THEN
1467 dtmi0 = ep20
1468 DO i=1,jlt
1469 dtmi(i) = ep20
1470 mas2 = two * masmin(i)
1471 IF(mas2>zero.AND.stif(i)>zero)THEN
1472 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
1473 ENDIF
1474 dtmi0 =
min(dtmi0,dtmi(i))
1475 ENDDO
1476 IF(dtmi0<=dtm)THEN
1477 DO i=1,jlt
1478 IF(dtmi(i)<=dtm)THEN
1479 IF(idtm==1)THEN
1480#include "lockon.inc"
1481 IF(cs_loc(i)<=nrts) THEN
1482 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
1483 . ' **WARNING MINIMUM TIME STEP ',dtmi(i),
1484 . ' IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
1485 WRITE(iout,*)'SECONDARY NODES NB',itab(n1(i)),
1486 . itab(n2(i))
1487 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
1488 . itab(m2(i))
1489 ELSE
1490 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
1491 . ' **WARNING MINIMUM TIME STEP ',dtmi(i),
1492 . ' IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
1493 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
1494 .
itafi(nin)%P(n2(i))
1495 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
1496 . itab(m2(i))
1497 END IF
1498#include "lockoff.inc"
1499 tstop = tt
1500 ELSEIF(idtm==2)THEN
1501#include "lockon.inc"
1502 IF(cs_loc(i)<=nrts) THEN
1503 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
1504 . ' **WARNING MINIMUM TIME STEP ',dtmi(i),
1505 . ' IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
1506 WRITE(iout,*)'SECONDARY NODES NB',itab(n1(i)),
1507 . itab(n2(i))
1508 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
1509 . itab(m2(i))
1510 WRITE(iout,*)'DELETE SECONDARY LINE FROM INTERFACE'
1511 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
1512 ELSE
1513 ni = cs_loc(i)-nrts
1514 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
1515 . ' **WARNING MINIMUM TIME STEP ',dtmi(i),
1516 . ' IN INTERFACE NB',noint,'(DTMIN=',dtm,')'
1517 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
1518 .
itafi(nin)%P(n2(i))
1519 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
1520 . itab(m2(i))
1521 WRITE(iout,*)'delete secondary line from interface'
1522 STIFI(NIN)%P(NI) = -ABS(STIFI(NIN)%P(NI))
1523 END IF
1524#include "lockoff.inc"
1525 NEWFRONT = -1
1526 ELSEIF(IDTM==5)THEN
1527#include "lockon.inc"
1528 IF(CS_LOC(I)<=NRTS) THEN
1529 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)')
1530 . ' **warning minimum time step ',DTMI(I),
1531 . ' in INTERFACE nb',NOINT,'(dtmin=',DTM,')'
1532 WRITE(IOUT,*)'secondary nodes nb',ITAB(N1(I)),
1533 . ITAB(N2(I))
1534 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1535 . ITAB(M2(I))
1536 ELSE
1537 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)')
1538 . ' **warning minimum time step ',DTMI(I),
1539 . ' in INTERFACE nb',noint,'(DTMIN=',dtm,')'
1540 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
1541 .
itafi(nin)%P(n2(i))
1542 WRITE(iout,*)'MAIN NODES NB',itab(m1(i)),
1543 . itab(m2(i))
1544 END IF
1545#include "lockoff.inc"
1546 mstop = 2
1547 ENDIF
1548 ENDIF
1549 ENDDO
1550 ENDIF
1551 ENDIF
1552
1553 RETURN
integer function bitget(i, n)
type(int_pointer), dimension(:), allocatable inflg_subsfi
type(real_pointer), dimension(:), allocatable stifi
type(real_pointer2), dimension(:), allocatable penfi
type(int_pointer), dimension(:), allocatable lisubsfi
type(int_pointer), dimension(:), allocatable nsvfi
type(int_pointer), dimension(:), allocatable addsubsfi
type(int_pointer), dimension(:), allocatable itafi
int main(int argc, char *argv[])