82
83
84
88 USE output_mod
90 USE i24intarea_fic_mod , ONLY : i24intarea_fic
91
92
93
94#include "implicit_f.inc"
95#include "comlock.inc"
96
97
98
99#include "mvsiz_p.inc"
100
101
102
103#include "com01_c.inc"
104#include "com04_c.inc"
105#include "com06_c.inc"
106#include "com08_c.inc"
107#include "scr05_c.inc"
108#include "scr07_c.inc"
109#include "scr11_c.inc"
110#include "scr14_c.inc"
111#include "scr16_c.inc"
112#include "scr18_c.inc"
113#include "sms_c.inc"
114#include "parit_c.inc"
115#include "param_c.inc"
116#include "impl1_c.inc"
117
118
119
120 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
121 INTEGER S_ADDSUBM
122 INTEGER S_LISUBM
123 INTEGER S_TYPSUB
124 INTEGER NISUBMAX
125 INTEGER I_STOK
126 INTEGER NELTST,ITYPTST,JLT,,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
127 . INTNITSCHE,IORTHFRIC,NFORTH ,NFISOT,
128 . NSN,ICODT(*), ITAB(*), ISKY(*), KINET(*),IRTLM(2,NSN),
129 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
130 . IRECT(4,*),ICONTACT(*), CAND_N(*),
131 . KINI(*),SUBTRIA(MVSIZ),MBINFLG(*),ILEV,
132 . NISKYFI,IADM,INTTH,IFORM,CAND_N_N(*),INTPLY,
133 . MSEGTYP(*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
134 . TYPSUB(S_TYPSUB),JTASK
135 INTEGER IX1(), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
136 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
137 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(S_ADDSUBM), LISUBS(*),
138 . LISUBM(*),ILAGM,ICURV(3), NREBOU,
139 . ISKYI_SMS(*), NSMS(*),IGSTI,IPLY(4,*),INOD_PXFEM(*),
140 . IRTSE(5,*),NSNE ,IS2SE(2,*),IS2PT(*), ISENSINT(NISUBMAX+1),NFT,T2MAIN_SMS(6,*),
141 . INDEXORTH(MVSIZ) ,INDEXISOT(MVSIZ),INFLG_SUBS(*), INFLG_SUBM(*)
142 INTEGER , INTENT(IN) :: NINLOADP,S_LOADPINTER
143 INTEGER , INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
144 . LOADP_HYD_INTER(NLOADP_HYD)
145 INTEGER , INTENT(IN) :: IXX(MVSIZ,13)
146 INTEGER , INTENT(IN) :: INTEREFRIC, INTCAREA
147 INTEGER , INTENT(IN) :: NRTM, NRTSE, NSNR
149 . stiglo,frot_p(*), x(3,*),
150 . a(3,*), ms(*), v(3,*), fsav(*),fcont(3,*),
151 . secnd_fr(6,*),alpha0,
152 . gap, fric,visc,viscf,vis,dt2t,stfn(*),stifn(*),
153 . fskyi(lskyi,nfskyi),fsavsub(nthvki,*), fncont(3,*),ftcont(3,*),
154 . mskyi_sms(*),kmin
156 . stif(mvsiz),
157 . gapv(mvsiz), pene(mvsiz),
158 . secfcum(7,numnod,nsect),
159 .
160 . viscn(*),
161 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
162 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
163 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
164 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
165 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
166 . xi(mvsiz),yi(mvsiz),zi(mvsiz),
167 . n1(mvsiz), n2(mvsiz), n3(mvsiz),
168 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
169 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
170 . phi(mvsiz), fthe(*),ftheskyi(lskyi),temp(*), tempi(mvsiz),
171 . fsavparit(nisub+1,11,*),
172 . fricc(mvsiz),viscffric(mvsiz),fric_coefs(mvsiz,10),forneqsi(mvsiz,3),
173 . fric_coefs2(mvsiz,10),fricc2(mvsiz),viscffric2(mvsiz),
174 . dir1(mvsiz,3),dir2(mvsiz,3),t2fac_sms(*)
175
176
178 . rcurvi(*), rcontact(*), acontact(*),
179 . pcontact(*),padm, anglmi(*),rstif,
180 . pene_old(5,nsn),stif_old(2,nsn),f_pfit
181 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
182 my_real ,
INTENT(INOUT) :: dist(mvsiz)
183 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: penref
185
186 TYPE(H3D_DATABASE) :: H3D_DATA
187 TYPE (PARAMETERS_) ,INTENT(IN):: PARAMETERS
188
189
190
191 INTEGER I, J1, IG, J, JG, K0, NBINTER, K1S, K, IE, NN,
192 . N,IMS2,ITAG,NN1,NN2,NN3,
193 . NN4,IFIT,PP,PPL,ITYPSUB,ISS1,ISS2,IMS1,IGRN
195 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
196 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
197 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
198 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
199 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
200 . vis2(mvsiz), xmu(mvsiz),stif0(mvsiz),
201 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),
202 . xp(mvsiz), yp(mvsiz), zp(mvsiz),efric_l(mvsiz),
203 . aa,
204 . v2, dt1inv, fac,ff,
alpha,beta,
205 . fx, fy, fz, mas2,dti,ft,fn,fmax,ftn,
206 . facm1, econtt, econvt, econtdt,
207 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav8,
208 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
209 . fsav22, fsav23, fsav24, ffo,fsav29,
210 . vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
211 .
area,p,vv1,vv2,dmu ,
212 . vn1(3),vn2(3),vn3(3),vn4(4),
213 . csa ,sna ,alphaf ,ftt1 ,ftt2 ,
214 . an(nforth) ,bn(nforth) ,nep1 ,nep2 ,nep ,c11 ,c22 ,ans ,ep ,
215 . signc,dgapload,gapp,efric_ls,efric_lm
217 . prec,facv
219 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
220 . kt(mvsiz),c(mvsiz),cf(mvsiz),dpene(mvsiz),
221 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
222 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
223 . cx,cy,cfi,aux,
224 . phi1(mvsiz), phi2(mvsiz), phi3(mvsiz), phi4(mvsiz),
225 . dtmini,stif0_imp(mvsiz),penn,tiny,pendr,
226 . fnnit1,fnnit2,fnnit3,fnnitsche,fnitxt(mvsiz),fnityt(mvsiz),fnitzt(mvsiz),
227 . xmu2(mvsiz),facn,fnon,stifkt(mvsiz),fackt,arean_fic
228 INTEGER JSUB, KSUB, JJ, KK, IN, NSUB, NCFIT
229
231 . fsavsub1(25,nisub),impx,impy,impz,vnm(mvsiz),sfac,stmin,
232 . hh,finc,ddp,prec1
233
234 DOUBLE PRECISION RP1, RP2
235 INTEGER TAGIP(MVSIZ)
236C
237 INTEGER BITGET
239
240 dtmini=zero
241 fac = zero
242 IF (iresp==1) THEN
243 prec = fiveem4
244 tiny = em15
245 prec1= em05
246 ELSE
247 prec = em10
248 tiny = em30
249 prec1= zero
250 ENDIF
251 IF(dt1>zero)THEN
252 dt1inv = one/dt1
253 ELSE
254 dt1inv =zero
255 ENDIF
256 econtt = zero
257 econvt = zero
258 econtdt = zero
259 DO i=1,jlt
260 stif0(i) = stif(i)
261 stifkt(i) = stif(i)
262 ENDDO
263 efric_l(1:jlt) = zero
264
265
266
267 IF(icurv(1)==1)THEN
268 ELSEIF(icurv(1)==2)THEN
269 ELSEIF(icurv(1) == 3)THEN
270 ENDIF
271 ncfit = icurv(2)
272 IF (inacti==-1.AND.impl_s==0.AND.ncfit>0) THEN
273 ifit = 1
274 ELSE
275 ifit = 0
276 END IF
277 fnon = ep02
278 fmax = ep03
279 IF (igsti==-1) fmax = kmax
280
281
282
283
284 IF(intply == 0) THEN
285 DO i=1,jlt
286 IF(pene(i) == zero)THEN
287 h1(i) = zero
288 h2(i) = zero
289 h3(i) = zero
290 h4(i) = zero
291 fni(i)= zero
292
293 fxi(i)=zero
294 fyi(i)=zero
295 fzi(i)=zero
296
297 fx1(i)=zero
298 fy1(i)=zero
299 fz1(i)=zero
300
301 fx2(i)=zero
302 fy2(i)=zero
303 fz2(i)=zero
304
305 fx3(i)=zero
306 fy3(i)=zero
307 fz3(i)=zero
308
309 fx4(i)=zero
310 fy4(i)=zero
311 fz4(i)=zero
312 ELSE
313 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
314 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
315 vy(i) = vyi(i) - h1(i)*v(2,ix1(i
316 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
317 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
318 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
319 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
320 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i)*vz(i)
321 ENDIF
322 ENDDO
323 ELSE
324 DO i=1,jlt
325 IF(pene(i) == zero)THEN
326 h1(i) = zero
327 h2(i) = zero
328 h3(i) = zero
329 h4(i) = zero
330 fni(i)= zero
331
332 fxi(i)=zero
333 fyi(i)=zero
334 fzi(i)=zero
335
336 fx1(i)=zero
337 fy1(i)=zero
338 fz1(i)=zero
339
340 fx2(i)=zero
341 fy2(i)=zero
342 fz2(i)=zero
343
344 fx3(i)=zero
345 fy3(i)=zero
346 fz3(i)=zero
347
348 fx4(i)=zero
349 fy4(i)=zero
350 fz4(i)=zero
351 ELSE
352 jj = iply(1,i)
353 nn1 =inod_pxfem(ix1(i))
354 nn2 =inod_pxfem(ix2(i))
355 nn3 =inod_pxfem(ix3(i))
356 nn4 =inod_pxfem(ix4(i))
357
358 vn1(1) = v(1,ix1(i))
359 vn1(2) = v(2,ix1(i))
360 vn1(3) = v(3,ix1(i))
361
362 vn2(1) = v(1,ix2(i))
363 vn2(2) = v(2,ix2(i))
364 vn2(3) = v(3,ix2(i))
365
366 vn3(1) = v(1,ix3(i))
367 vn3(2) = v(2,ix3(i))
368 vn3(3) = v(3,ix3(i))
369
370 vn4(1) = v(1,ix4(i))
371 vn4(2) = v(2,ix4(i))
372 vn4(3) = v(3,ix4(i))
373
374 IF(iplyxfem /= 2)THEN
375
376
377
378 jj = iply(1,i)
379 IF(nn1 > 0 .AND. jj > 0) THEN
380 vn1(1) = vn1(1) +
ply(jj)%V(1,nn1)
381 vn1(2) = vn1(2) +
ply(jj)%V(2,nn1)
382 vn1(3) = vn1(3) +
ply(jj)%V(3,nn1)
383 ENDIF
384 jj = iply(2,i)
385 IF(nn2 > 0 .AND. jj > 0) THEN
386 vn2(1) = vn2(1) +
ply(jj)%V(1,nn2)
387 vn2(2) = vn2(2) +
ply(jj)%V(2,nn2)
388 vn2(3) = vn2(3) +
ply(jj)%V(3,nn2)
389 ENDIF
390 jj = iply(3,i)
391 IF(nn3 > 0 .AND. jj > 0) THEN
392 vn3(1) = vn3(1) +
ply(jj)%V(1,nn3)
393 vn3(2) = vn3(2) +
ply(jj)%V(2,nn3)
394 vn3(3) = vn3(3) +
ply(jj)%V(3,nn3)
395 ENDIF
396 jj = iply(4,i)
397 IF(nn4 > 0 .AND. jj > 0) THEN
398 vn4(1) = vn4(1) +
ply(jj)%V(1,nn4)
399 vn4(2) = vn4(2) +
ply(jj)%V(2,nn4)
400 vn4(3) = vn4(3) +
ply(jj)%V(3,nn4)
401 ENDIF
402 END IF
403
404 vx(i) = vxi(i) - h1(i)*vn1(1) - h2(i)*vn2(1)
405 . - h3(i)*vn3(1) - h4(i)*vn4(1)
406 vy(i) = vyi(i) - h1(i)*vn1(2) - h2(i)*vn2(2)
407 . - h3(i)*vn3(2) - h4(i)*vn4(2)
408 vz(i) = vzi(i) - h1(i)*vn1(3) - h2(i)*vn2(3)
409 . - h3(i)*vn3(3) - h4(i)*vn4(3)
410 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
411 vnm(i) = nm1(i)*vx(i) + nm2(i)*vy(i) + nm3(i)*vz(i)
412 ENDIF
413 ENDDO
414
415 ENDIF
416
417
418
419
420 IF (ifit >0.OR.(inacti==-1.AND.impl_s==0)) THEN
421 DO i=1,jlt
422 IF(pene(i) == zero)cycle
423 stif(i) = stif0(i)
424 IF(stiglo<=zero) stif(i) = half*stif(i)
425
426 IF(penref(i) > zero) THEN
427 pendr = (pene(i)/penref(i))**2
428 fackt =
min(fmax,(one+three*fnon*pendr))
429 facn =
min(fmax,(one+fnon*pendr))
430 stifkt(i)= stifkt(i)*fackt
431 stif(i)= stif(i)*facn
432 END IF
433 fni(i)= -stif(i) * pene(i)
434 ENDDO
435 ELSEIF (igsti==-1.AND.impl_s==0) THEN
436
437 DO i=1,jlt
438 IF(pene(i) == zero)cycle
439 stif(i) = stif0(i)
440
441 IF(penref(i) > zero) THEN
442 pendr = (pene(i)/penref(i))**2
443 facn =
min(fmax,(one+fnon*pendr))
444 stif(i)=
min(kmax,stif(i)*facn)
445 fackt = three*(stif(i)/stif0(i)-one)
446 stifkt(i)=
max(stif(i),stifkt(i)*fackt)
447 END IF
448 fni(i)= -stif(i) * pene(i)
449 ENDDO
450 ELSEIF(impl_s>0.AND.igsti==6)THEN
451
452
453 IF (nrebou == -1) THEN
454 sfac = em04
455 ELSE
456 sfac = em03
457 END IF
458 DO i=1,jlt
459 IF(pene(i) == zero)cycle
460 jg = nsvg(i)
461 n = cand_n_n(i)
462 IF(jg > 0)THEN
463 IF (stif_old(1,n)==zero.OR.nrebou==-1) THEN
464 stif_old(1,n) = sfac*stif0(i)
465 ELSEIF (nrebou <-1) THEN
466 stmin = em04*stif0(i)
467 stif_old(1,n) =
max(stmin,em01*stif_old(1,n))
468 END IF
469 stif_old(1,n) =
max(kmin,stif_old(1,n))
470 stif(i) = stif_old(1,n)
471 ELSE
472 jg = -jg
473 IF (
stif_oldfi(nin)%P(1,jg)==zero.OR.nrebou==-1)
THEN
475 ELSEIF (nrebou <-1) THEN
476 stmin = em04*stif0(i)
479 END IF
482 END IF
483 END DO
484 IF(inconv >=0)THEN
485
486 DO i=1,jlt
487 IF(pene(i) == zero)cycle
488 jg = nsvg(i)
489 n = cand_n_n(i)
490 IF(jg > 0)THEN
491 stif0_imp(i) = stif_old(1,n)
492 ELSE
494 END IF
495 END DO
496 DO i=1,jlt
497 IF(pene(i) == zero)cycle
498 jg = nsvg(i)
499 n = cand_n_n(i)
500 IF(jg > 0)THEN
501
502 IF(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero)THEN
503 IF(pene(i) > pene_old(2,n) )THEN
504 facm1 = pene(i)/
max(em20,pene_old(2,n))
505 IF (stif0_imp(i)/stif0(i) <em02) THEN
506 facm1 = onep2*facm1
507 penn = three_half
508 ELSE
509 penn = onep05
510 END IF
511 facm1=
min(penn,facm1)
512 stif(i) = facm1*stif0_imp(i)
513
514 stif(i) =
min(stif(i),stif0(i))
515 ENDIF
516
517 IF(inconv ==1 )THEN
518 pene_old(1,n) = pene(i)
519 stif_old(1,n) = stif(i)
520 ENDIF
521 ELSEIF(inconv ==1 )THEN
522
523#include "lockon.inc"
524 pene_old(1,n) =
max(pene_old(1,n),pene(i))
525 stif_old(1,n) =
min(stif_old(1,n),stif(i))
526#include "lockoff.inc"
527 ENDIF
528 ELSE
529 jg = -jg
534 IF (stif0_imp(i)/stif0(i) <em02) THEN
535 facm1 = onep2*facm1
536 penn = three_half
537 ELSE
538 penn = onep05
539 END IF
540 facm1=
min(penn,facm1)
541 stif(i) = facm1*stif0_imp(i)
542 stif(i) =
min(stif(i),stif0(i))
543 ENDIF
544 IF(inconv ==1 )THEN
547 END IF
548 ELSEIF(inconv ==1 )THEN
549#include "lockon.inc"
554#include "lockoff.inc"
555 ENDIF
556 ENDIF
557 ENDDO
558
559 DO i=1,jlt
560 IF(pene(i) == zero)cycle
561 jg = nsvg(i)
562 n = cand_n_n(i)
563 IF(jg > 0)THEN
564 stif_old(2,n) = stif(i)
565 ELSE
567 END IF
568 END DO
569 END IF
570 DO i=1,jlt
571 IF(pene(i) == zero)cycle
572 IF(stiglo<=zero)THEN
573 stif(i) = half*stif(i)
574
575 ELSEIF(stif(i)/=zero)THEN
576 stif(i) = stiglo
577
578 ENDIF
579 fni(i)= -stif(i) * pene(i)
580 ENDDO
581
582
583 ELSE
584 DO i=1,jlt
585 IF(pene(i) == zero)cycle
586 dpene(i) =
max(zero,-vnm(i)*dt1)
587 jg = nsvg(i)
588 n = cand_n_n(i)
589 IF(jg > 0)THEN
590 IF(tt /= zero.AND.(pene_old(2,n)/= zero.OR.pene_old(5,n)/= zero))THEN
591 ddp = pene(i)-pene_old(2,n)-dpene(i)
592 IF(pene(i) > pene_old(2,n) .AND.ddp>zero)THEN
593 rp1 = pene_old(2,n)/pene(i)
594 rp2 = dpene(i)/pene(i)
595 stif(i) = stif_old(2,n)*rp1+ stif(i)*rp2
596 ELSEIF(.NOT.(pene_old(2,n)== zero.AND.stif_old(2,n)==zero))THEN
597
598 stif(i) = stif_old(2,n)
599 END IF
600 IF(inconv ==1 )THEN
601 pene_old(1,n) = pene(i)
602 stif_old(1,n) = stif(i)
603 ENDIF
604 ELSEIF(inconv ==1 )THEN
605
606#include "lockon.inc"
607 pene_old(1,n) =
max(pene_old(1,n),pene(i))
608 stif_old(1,n) =
max(stif_old(1,n),stif(i))
609#include "lockoff.inc"
610 ENDIF
611 ELSE
612 jg = -jg
613 IF(tt /= zero.AND.(
pene_oldfi(nin)%P(2,jg)/= zero.OR.
615 ddp = pene(i)-
pene_oldfi(nin)%P(2,jg)-dpene(i)
616 IF(pene(i) >
pene_oldfi(nin)%P(2,jg) .AND.ddp>zero)
THEN
618 rp2 = dpene(i)/pene(i)
619 stif(i) =
stif_oldfi(nin)%P(2,jg)*rp1+ stif(i)*rp2
620 ELSEIF(.NOT.(
pene_oldfi(nin)%P(2,jg)== zero.AND.
623 END IF
624 IF(inconv ==1 )THEN
627 ENDIF
628 ELSEIF(inconv ==1 )THEN
629#include "lockon.inc"
634#include "lockoff.inc"
635 ENDIF
636 ENDIF
637 ENDDO
638
639 DO i=1,jlt
640 IF(pene(i) == zero)cycle
641 IF(stiglo<=zero)THEN
642 stif(i) = half*stif(i)
643 ELSEIF(stif(i)/=zero)THEN
644 stif(i) = stiglo
645 ENDIF
646 fni(i)= -stif(i) * pene(i)
647
648 ENDDO
649
650 ENDIF
651
652
653
654 DO i=1,jlt
655 IF(pene(i) == zero)cycle
656 econtt = econtt+half*stif(i)*pene(i)**2
657 ENDDO
658
659 IF(intnitsche > 0 ) THEN
660 DO i=1,jlt
661 IF(pene(i) == zero)cycle
662 fnnit1 = forneqsi(i,1)*n1(i)
663 fnnit2 = forneqsi(i,2)*n2(i)
664 fnnit3 = forneqsi(i,3)*n3(i)
665 fnnitsche = fnnit1 + fnnit2 + fnnit3
666
668
669 ENDDO
670 ENDIF
671
672
673
674
675 IF(visc/=zero)THEN
676 IF(ivis2==0)THEN
677
678
679
680 DO i=1,jlt
681 vis2(i) = two * stif(i) * msi(i)
682 ENDDO
683
684
685 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))THEN
686 DO i=1,jlt
687 IF(pene(i) == zero)cycle
688 fac = stif(i) /
max(em30,stif(i))
689 vis = sqrt(vis2(i))
690 ff = fac * visc * vis
691 stif(i) = stif0(i) + ff * dt1inv
692 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
693 ffo = ff
694 ff = ff * vn(i)
695
696 fni(i) = fni(i) + ff
697 ENDDO
698 ELSE
699 DO i=1,jlt
700 IF(pene(i) == zero)cycle
701 fac = stif(i) /
max(em30,stif(i))
702 vis = sqrt(vis2(i))
703 c(i)= fac * visc * vis
704 kt(i)= stif0(i)
705 stif(i) = stif0(i) + c(i) * dt1inv
706 ff = c(i) * vn(i)
707
708 fni(i) = fni(i) + ff
709 cf(i) = fac*sqrt(viscffric(i))*vis
710 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
711 ENDDO
712 ENDIF
713 ELSEIF(ivis2==1.OR.ivis2==2)THEN
714
715
716
717 IF(ivis2==1)THEN
718 facv = two
719 ELSE
720 facv = four
721 END IF
722 DO i=1,jlt
723 IF(pene(i) == zero)cycle
724 mas2 = ms(ix1(i))*h1(i)
725 . + ms(ix2(i))*h2(i)
726 . + ms(ix3(i))*h3(i)
727 . + ms(ix4(i))*h4(i)
728 vis2(i) = facv* stif(i) * msi(i) * mas2 /
729 .
max(em30,msi(i)+mas2)
730 ENDDO
731
732
733 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))THEN
734 DO i=1,jlt
735 IF(pene(i) == zero)cycle
736 fac = stif(i) /
max(em30,stif(i))
737 vis = sqrt(vis2(i))
738 ff = fac * visc * vis
739 stif(i) = stif0(i) + ff * dt1inv
740 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
741 ffo = ff
742 ff = ff * vn(i)
743
744 fni(i) = fni(i) + ff
745 ENDDO
746 ELSE
747 DO i=1,jlt
748 IF(pene(i) == zero)cycle
749 fac = stif(i) /
max(em30,stif(i))
750 vis = sqrt(vis2(i))
751 c(i)= fac * visc * vis
752 kt(i)= stif0(i)
753 stif(i) = stif(i) + c(i) * dt1inv
754 ff = c(i) * vn(i)
755
756 fni(i) = fni(i) + ff
757 cf(i) = fac*sqrt(viscffric(i))*vis
758 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
759 ENDDO
760 ENDIF
761 ELSEIF(ivis2==3)THEN
762
763
764
765 DO i=1,jlt
766 IF(pene(i) == zero)cycle
767 vis2(i) = two * stif(i) * msi(i)
768 fac = stif(i) /
max(em30,stif(i))
769 vis = sqrt(vis2(i))
770 ff = fac * visc * vis
771 stif(i) = stif0(i) + two* ff * dt1inv
772 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
773 ff = ff * vn(i)
774
775 fni(i) = fni(i) + ff
776 ENDDO
777 ELSEIF(ivis2==4)THEN
778
779
780
781 DO i=1,jlt
782 IF(pene(i) == zero)cycle
783 fac = stif(i) /
max(em30,stif(i))
784 vis2(i) = two* stif(i) * msi(i)
785 vis = sqrt(vis2(i))
786 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
787 ENDDO
788 ELSEIF(ivis2==5)THEN
789
790
791
792
793
794 DO i=1,jlt
795 IF(pene(i) == zero)cycle
796 mas2 = ms(ix1(i))*h1(i)
797 . + ms(ix2(i))*h2(i)
798 . + ms(ix3(i))*h3(i)
799 . + ms(ix4(i))*h4(i)
800 vis2(i) = two* stif(i) * msi(i)
801 vis = 2. * visc * dt1inv * msi(i) * mas2 /
802 .
max(em30,msi(i)+mas2)
803 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
804 ff = vis * vn(i)
805 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
806 fni(i) =
min(fni(i),ff)
807 ENDDO
808 ELSE
809 ENDIF
810 ELSE
811 DO i=1,jlt
812 IF(viscffric(i)/=zero)THEN
813
814 IF(ivis2==0)THEN
815
816
817
818 vis2(i) = two * stif(i) * msi(i)
819
820
821 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))THEN
822 IF(pene(i) == zero)cycle
823 fac = stif(i) /
max(em30,stif(i))
824 vis = sqrt(vis2(i))
825 ff = fac * visc * vis
826 stif(i) = stif0(i) + ff * dt1inv
827 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
828 ffo = ff
829 ff = ff * vn(i)
830
831 fni(i) = fni(i) + ff
832 ELSE
833 IF(pene(i) == zero)cycle
834 fac = stif(i) /
max(em30,stif(i))
835 vis = sqrt(vis2(i))
836 c(i)= fac * visc * vis
837 kt(i)= stif0(i)
838 stif(i) = stif0(i) + c(i) * dt1inv
839 ff = c(i
840
841 fni(i) = fni(i) + ff
842 cf(i) = fac*sqrt(viscffric(i))*vis
843 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
844 ENDIF
845 ELSEIF(ivis2==1.OR.ivis2==2)THEN
846
847
848
849 IF(ivis2==1)THEN
850 facv = two
851 ELSE
852 facv = four
853 END IF
854 IF(pene(i) == zero)cycle
855 mas2 = ms(ix1(i))*h1(i)
856 . + ms(ix2(i))*h2(i)
857 . + ms(ix3(i))*h3(i)
858 . + ms(ix4(i))*h4(i)
859 vis2(i) = facv* stif(i) * msi(i) * mas2 /
860 .
max(em30,msi(i)+mas2)
861
862
863 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))THEN
864 IF(pene(i) == zero)cycle
865 fac = stif(i) /
max(em30,stif(i))
866 vis = sqrt(vis2(i))
867 ff = fac * visc * vis
868 stif(i) = stif0(i) + ff * dt1inv
869 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
870 ffo = ff
871 ff = ff * vn(i)
872
873 fni(i) = fni(i) + ff
874 ELSE
875 IF(pene(i) == zero)cycle
876 fac = stif(i) /
max(em30,stif(i))
877 vis = sqrt(vis2(i))
878 c(i)= fac * visc * vis
879 kt(i)= stif0(i)
880 stif(i) = stif(i) + c(i) * dt1inv
881 ff = c(i) * vn(i)
882
883 fni(i) = fni(i) + ff
884 cf(i) = fac*sqrt(viscffric(i))*vis
885 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
886 ENDIF
887 ELSEIF(ivis2==2)THEN
888
889
890
891 IF(pene(i) == zero)cycle
892 vis2(i) = two* stif(i) * msi(i)
893 fac = stif(i) /
max(em30,stif(i))
894 vis = sqrt(vis2(i))
895 ff = fac * visc * vis
896 stif(i) = stif0(i) + two * ff * dt1inv
897 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
898 ff = ff * vn(i)
899
900 fni(i) = fni(i) + ff
901 ELSEIF(ivis2==3)THEN
902
903
904
905 IF(pene(i) == zero)cycle
906 vis2(i) = two * stif(i) * msi(i)
907 fac = stif(i) /
max(em30,stif(i))
908 vis = sqrt(vis2(i))
909 ff = fac * visc * vis
910 stif(i) = stif0(i) + two* ff * dt1inv
911 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
912 ff = ff * vn(i)
913
914 fni(i) = fni(i) + ff
915 ELSEIF(ivis2==4)THEN
916
917
918
919 IF(pene(i) == zero)cycle
920 fac = stif(i) /
max(em30,stif(i))
921 vis2(i) = two* stif(i) * msi(i)
922 vis = sqrt(vis2(i))
923 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
924 ELSEIF(ivis2==5)THEN
925
926
927
928
929
930 IF(pene(i) == zero)cycle
931 mas2 = ms(ix1(i))*h1(i)
932 . + ms(ix2(i))*h2(i)
933 . + ms(ix3(i))*h3(i)
934 . + ms(ix4(i))*h4(i)
935 vis2(i) = two* stif(i) * msi(i)
936 vis = 2. * visc * dt1inv * msi(i) * mas2 /
937 .
max(em30,msi(i)+mas2)
938 stif(i) =
max(stif0(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
939 ff = vis * vn(i)
940 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
941 fni(i) =
min(fni(i),ff)
942 ELSE
943 ENDIF
944
945
946 ELSE
947
948 vis2(i) = zero
949 ENDIF
950 ENDDO
951 ENDIF
952
953
954
955
956 fsav1 = zero
957 fsav2 = zero
958 fsav3 = zero
959 fsav8 = zero
960 fsav9 = zero
961 fsav10= zero
962 fsav11= zero
963 IF (ilev==2) THEN
964 DO i=1,jlt
965 IF(pene(i) == zero)cycle
966 ie=ce_loc(i)
967 ims2 =
bitget(mbinflg(ie),1)
968 fxi(i)=n1(i)*fni(i)
969 fyi(i)=n2(i)*fni(i)
970 fzi(i)=n3(i)*fni(i)
971 impx=fxi(i)*dt12
972 impy=fyi(i)*dt12
973 impz=fzi(i)*dt12
974 fsav8 =fsav8 +abs(impx)
975 fsav9 =fsav9 +abs(impy)
976 fsav10=fsav10+abs(impz)
977 IF (ims2 >0 ) THEN
978 fsav1 =fsav1 -impx
979 fsav2 =fsav2 -impy
980 fsav3 =fsav3 -impz
981 fsav11=fsav11-fni(i)*dt12
982 ELSE
983 fsav1 =fsav1 +impx
984 fsav2 =fsav2 +impy
985 fsav3 =fsav3 +impz
986 fsav11=fsav11+fni(i)*dt12
987 END IF
988 ENDDO
989 ELSE
990 DO i=1,jlt
991 IF(pene(i) == zero)cycle
992 fxi(i)=n1(i)*fni(i)
993 fyi(i)=n2(i)*fni(i)
994 fzi(i)=n3(i)*fni(i)
995 impx=fxi(i)*dt12
996 impy=fyi(i)*dt12
997 impz=fzi(i)*dt12
998 fsav1 =fsav1 +impx
999 fsav2 =fsav2 +impy
1000 fsav3 =fsav3 +impz
1001 fsav8 =fsav8 +abs(impx)
1002 fsav9 =fsav9 +abs(impy)
1003 fsav10=fsav10+abs(impz)
1004 fsav11=fsav11+fni(i)*dt12
1005 ENDDO
1006 END IF
1007#include "lockon.inc"
1008 fsav(1)=fsav(1)+fsav1
1009 fsav(2)=fsav(2)+fsav2
1010 fsav(3)=fsav(3)+fsav3
1011 fsav(8)=fsav(8)+fsav8
1012 fsav(9)=fsav(9)+fsav9
1013 fsav(10)=fsav(10)+fsav10
1014 fsav(11)=fsav(11)+fsav11
1015#include "lockoff.inc"
1016
1017 IF(isensint(1)/=0) THEN
1018 DO i=1,jlt
1019 IF(pene(i) == zero)cycle
1020 fsavparit(1,1,i+nft) = fxi(i)
1021 fsavparit(1,2,i+nft) = fyi(i)
1022 fsavparit(1,3,i+nft) = fzi(i)
1023 ENDDO
1024 ENDIF
1025
1026 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
1027 . ((tt>=output%TANIM.AND.tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
1028 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
1029 . .OR.h3d_data%N_VECT_PCONT_MAX>0)THEN
1030 IF (inconv==1) THEN
1031#include "lockon.inc"
1032 DO i=1,jlt
1033 IF(pene(i) == zero)cycle
1034 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)*h1(i)
1035 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)*h1(i)
1036 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)*h1(i)
1037 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)*h2(i)
1038 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)*h2(i)
1039 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)*h2(i)
1040 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)*h3(i)
1041 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)*h3(i)
1042 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)*h3(i)
1043 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)*h4(i)
1044 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)*h4(i)
1045 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)*h4(i)
1046 jg = nsvg(i)
1047 IF(jg>0) THEN
1048
1049 IF (jg >numnod) THEN
1050 ig = jg - numnod
1052 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fncont ,
1053 + -1 )
1054 ELSE
1055 fncont(1,jg)=fncont(1,jg)- fxi(i)
1056 fncont(2,jg)=fncont(2,jg)- fyi(i)
1057 fncont(3,jg)=fncont(3,jg)- fzi(i)
1058 END IF
1059 ELSE
1060 jg = -jg
1063 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,
fnconti(nin)%P(1,1) ,
1064 + -1 ,nin )
1065 ELSE
1069 ENDIF
1070 ENDIF
1071 ENDDO
1072#include "lockoff.inc"
1073 END IF
1074 ENDIF
1075
1076
1077
1078
1079 IF(nisub/=0)THEN
1080 DO jsub=1,nisub
1081 DO j=1,25
1082 fsavsub1(j,jsub)=zero
1083 END DO
1084 ENDDO
1085 DO i=1,jlt
1086 IF(pene(i) == zero)cycle
1087 nn = nsvg(i)
1088 IF(nn>0)THEN
1089 in=cn_loc(i)
1090 IF (msegtyp(ce_loc(i)) < 0) THEN
1091 ie= - msegtyp(ce_loc(i))
1092 ELSE
1093 ie = ce_loc(i)
1094 ENDIF
1095 IF(ie > nrtm) ie=ie-nrtm
1096 jj =addsubs(in)
1097 kk =addsubm(ie)
1098 DO WHILE(jj<addsubs(in+1))
1099
1100 jsub=lisubs(jj)
1101 itypsub = typsub(jsub)
1102
1103 IF(itypsub == 1 ) THEN
1104 iss1 =
bitget(inflg_subs(jj),0)
1105 iss2 =
bitget(inflg_subs(jj),1)
1106 igrn =
bitget(inflg_subs(jj),2)
1107 ksub=lisubm(kk)
1108 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1109 ims1 =
bitget(inflg_subm(kk),0)
1110 ims2 =
bitget(inflg_subm(kk),1)
1111 IF(ksub==jsub)THEN
1112 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1113 . (ims1 == 1 .AND. iss2 == 1).OR.
1114 . (ims2 == 1 .AND. iss1 == 1))) THEN
1115 kk=kk+1
1116 ksub=lisubm(kk)
1117 cycle
1118 END IF
1119
1120 impx=fxi(i)*dt12
1121 impy=fyi(i)*dt12
1122 impz=fzi(i)*dt12
1123 IF(ims2 > 0)THEN
1124 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1125 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1126 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1127 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1128 ELSE
1129 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1130 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1131 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1132 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1133 END IF
1134
1135 IF(isensint(jsub+1)/=0) THEN
1136 IF(ims2 > 0)THEN
1137 fsavparit(jsub+1,1,i) = -fxi(i)
1138 fsavparit(jsub+1,2,i) = -fyi(i)
1139 fsavparit(jsub+1,3,i) = -fzi(i)
1140 ELSE
1141 fsavparit(jsub+1,1,i) = fxi(i)
1142 fsavparit(jsub+1,2,i) = fyi(i)
1143 fsavparit(jsub+1,3,i) = fzi(i)
1144 END IF
1145 ENDIF
1146
1147 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1148 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1149 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1150
1151 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1152
1153 IF(parameters%INTCAREA > 0) THEN
1154 IF(nn <=numnod) THEN
1155 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1156 ELSE
1157 ig = nn - numnod
1158 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1159 + nrtse , numnod ,parameters%INTAREAN, arean_fic)
1160 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1161 ENDIF
1162 ENDIF
1163
1164 END IF
1165
1166 kk=kk+1
1167 ksub=lisubm(kk)
1168 ENDDO
1169 jj=jj+1
1170
1171 ELSEIF(itypsub == 2 ) THEN
1172
1173 impx=fxi(i)*dt12
1174 impy=fyi(i)*dt12
1175 impz=fzi(i)*dt12
1176
1177 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1178 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1179 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1180
1181 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1182 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1183
1184
1185 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1186
1187 IF(isensint(jsub+1)/=0) THEN
1188 fsavparit(jsub+1,1,i+nft) = fxi(i)
1189 fsavparit(jsub+1,2,i+nft) = fyi(i)
1190 fsavparit(jsub+1,3,i+nft) = fzi(i)
1191 ENDIF
1192
1193 IF(parameters%INTCAREA > 0) THEN
1194 IF(nn <=numnod) THEN
1195 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1196 ELSE
1197 ig = nn - numnod
1198 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1199 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1200 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1201 ENDIF
1202 ENDIF
1203
1204 jj=jj+1
1205
1206 ELSEIF(itypsub == 3) THEN
1207
1208
1209
1210 iss2 =
bitget(inflg_subs(jj),0)
1211 iss1 =
bitget(inflg_subs(jj),1)
1212 ksub=lisubm(kk)
1213
1214 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1215 ims2 =
bitget(inflg_subm(kk),0)
1216 ims1 =
bitget(inflg_subm(kk),1)
1217
1218 IF(ksub==jsub)THEN
1219 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1220 . (ims2 == 1 .AND. iss1 == 1))) THEN
1221 kk=kk+1
1222 ksub=lisubm(kk)
1223 cycle
1224 END IF
1225
1226 impx=fxi(i)*dt12
1227 impy=fyi(i)*dt12
1228 impz=fzi(i)*dt12
1229
1230 IF(ims2 > 0)THEN
1231 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1232 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1233 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1234 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1235 ELSE
1236 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1237 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1238 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1239 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1240 END IF
1241
1242 IF(isensint(jsub+1)/=0) THEN
1243 IF(ims2 > 0)THEN
1244 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1245 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1246 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1247 ELSE
1248 fsavparit(jsub+1,1,i+nft) = fxi(i)
1249 fsavparit(jsub+1,2,i+nft) = fyi(i)
1250 fsavparit(jsub+1,3,i+nft) = fzi(i)
1251 END IF
1252 ENDIF
1253
1254 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1255 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1256 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1257
1258 IF(parameters%INTCAREA > 0) THEN
1259 IF(nn <=numnod) THEN
1260 fsavsub1(25,jsub) = fsavsub1(25,jsub) + parameters%INTAREAN(nn)
1261 ELSE
1262 ig = nn - numnod
1263 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
1264 + nrtse , numnod , parameters%INTAREAN, arean_fic)
1265 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1266 ENDIF
1267 ENDIF
1268 END IF
1269
1270 kk=kk+1
1271 ksub=lisubm(kk)
1272 ENDDO
1273 jj=jj+1
1274 ENDIF
1275
1276 END DO
1277 END IF
1278
1279
1280 IF (msegtyp(ce_loc(i)) < 0) THEN
1281 ie= - msegtyp(ce_loc(i))
1282 ELSE
1283 ie = ce_loc(i)
1284 ENDIF
1285 IF(ie > nrtm) ie=ie-nrtm
1286
1287
1288
1290 * ie,itypsub,nin,i,nn,nft,
1291 * addsubm,lisubm,typsub,
1292 * parameters%INTAREAN,parameters%INTCAREA,isensint,
1293 * fxi,fyi,fzi,fni,dt12,
1294 * fsavsub1,fsavparit ,nrtse,
1295 * irtse,nsne,is2se ,is2pt,nsnr)
1296
1297 END DO
1298
1299
1300 IF(nspmd>1) THEN
1301 DO i=1,jlt
1302 IF(pene(i) == zero)cycle
1303 nn = nsvg(i)
1304 IF(nn<0)THEN
1305 nn = -nn
1306 IF (msegtyp(ce_loc(i)) < 0) THEN
1307 ie= - msegtyp(ce_loc(i))
1308 ELSE
1309 ie = ce_loc(i)
1310 ENDIF
1312 kk =addsubm(ie)
1315 itypsub = typsub(jsub)
1316
1317 IF(itypsub == 1 ) THEN
1318
1322 ksub=lisubm(kk)
1323 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1324 ims1 =
bitget(inflg_subm(kk),0)
1325 ims2 =
bitget(inflg_subm(kk),1)
1326 IF(ksub==jsub)THEN
1327 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
1328 . (ims1 == 1 .AND. iss2 == 1).OR.
1329 . (ims2 == 1 .AND. iss1 == 1))) THEN
1330 kk=kk+1
1331 ksub=lisubm(kk)
1332 cycle
1333 END IF
1334 impx=fxi(i)*dt12
1335 impy=fyi(i)*dt12
1336 impz=fzi(i)*dt12
1337
1338 IF(ims2 > 0)THEN
1339 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1340 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1341 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1342 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1343 ELSE
1344 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1345 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1346 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1347 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1348 END IF
1349
1350 IF(isensint(jsub+1)/=0) THEN
1351 IF(ims2 > 0)THEN
1352 fsavparit(jsub+1,1,i) = -fxi(i)
1353 fsavparit(jsub+1,2,i) = -fyi(i)
1354 fsavparit(jsub+1,3,i) = -fzi(i)
1355 ELSE
1356 fsavparit(jsub+1,1,i) = fxi(i)
1357 fsavparit(jsub+1,2,i) = fyi(i)
1358 fsavparit(jsub+1,3,i) = fzi(i)
1359 END IF
1360 ENDIF
1361
1362 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1363 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1364 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1365
1366 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1367
1368 IF(parameters%INTCAREA > 0) THEN
1371 + nsnr , nsnr ,
intareanfi(nin)%P, arean_fic)
1372 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1373 ELSE
1374 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1375 ENDIF
1376 ENDIF
1377 END IF
1378
1379 kk=kk+1
1380 ksub=lisubm(kk)
1381 ENDDO
1382 jj=jj+1
1383
1384 ELSEIF(itypsub == 2 ) THEN
1385
1386 impx=fxi(i)*dt12
1387 impy=fyi(i)*dt12
1388 impz=fzi(i)*dt12
1389
1390 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1391 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1392 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1393
1394
1395 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1396 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1397
1398 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1399
1400 IF(isensint(jsub+1)/=0) THEN
1401 fsavparit(jsub+1,1,i+nft) = fxi(i)
1402 fsavparit(jsub+1,2,i+nft) = fyi(i)
1403 fsavparit(jsub+1,3,i+nft) = fzi(i)
1404 ENDIF
1405
1406 IF(parameters%INTCAREA > 0) THEN
1409 + nsnr , nsnr
1410 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1411 ELSE
1412 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1413 ENDIF
1414 ENDIF
1415
1416 jj=jj+1
1417
1418 ELSEIF(itypsub == 3 ) THEN
1419
1422 ksub=lisubm(kk)
1423 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie
1424 ims2 =
bitget(inflg_subm(kk),0)
1425 ims1 =
bitget(inflg_subm(kk),1)
1426 IF(ksub==jsub)THEN
1427 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1428 . (ims2 == 1 .AND. iss1 == 1))) THEN
1429 kk=kk+1
1430 ksub=lisubm(kk)
1431 cycle
1432 END IF
1433
1434 impx=fxi(i)*dt12
1435 impy=fyi(i)*dt12
1436 impz=fzi(i)*dt12
1437
1438 IF(ims2 > 0)THEN
1439 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1440 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1441 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1442 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1443 ELSE
1444 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1445 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1446 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1447 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1448 END IF
1449
1450 IF(isensint(jsub+1)/=0) THEN
1451 IF(ims2 > 0)THEN
1452 fsavparit(jsub+1,1,i+nft) = -fxi(i)
1453 fsavparit(jsub+1,2,i+nft) = -fyi(i)
1454 fsavparit(jsub+1,3,i+nft) = -fzi(i)
1455 ELSE
1456 fsavparit(jsub+1,1,i+nft) = fxi(i)
1457 fsavparit(jsub+1,2,i+nft) = fyi(i)
1458 fsavparit(jsub+1,3,i+nft) = fzi(i)
1459 END IF
1460 ENDIF
1461
1462 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1463 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs
1464 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1465
1466 IF(parameters%INTCAREA > 0) THEN
1468 CALL i24intarea_fic
1469 + nsnr
1470 fsavsub1(25,jsub) = fsavsub1(25,jsub) + arean_fic
1471 ELSE
1472 fsavsub1(25,jsub) = fsavsub1(25,jsub) +
intareanfi(nin)%P(nn)
1473 ENDIF
1474 ENDIF
1475
1476 ENDIF
1477 kk=kk+1
1478 ksub=lisubm(kk)
1479 ENDDO
1480 jj=jj+1
1481
1482 ENDIF
1483
1484 END DO
1485 END IF
1486 END DO
1487 END IF
1488 END IF
1489
1490
1491
1492
1493
1494
1495
1496
1497 IF(iorthfric == 0) THEN
1498
1499
1500 IF (mfrot==0) THEN
1501
1502 DO i=1,jlt
1503 IF(pene(i) == 0) THEN
1504 xmu(i) = zero
1505 cycle
1506 ENDIF
1507 xmu(i) = fricc(i)
1508 ENDDO
1509 ELSEIF (mfrot==1) THEN
1510
1511 DO i=1,jlt
1512 IF(pene(i) == 0) THEN
1513 xmu(i) = zero
1514 cycle
1515 ENDIF
1516 ie=ce_loc(i)
1517 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1518 v2 = (vx(i) - n1(i)*aa)**2
1519 . + (vy(i) - n2(i)*aa)**2
1520 . + (vz(i) - n3(i)*aa)**2
1521 vv = sqrt(
max(em30,v2))
1522 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1523 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie
1524 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1525 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1526 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1527 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1528 ax = ay1*az2 - az1*ay2
1529 ay = az1*ax2 - ax1*az2
1530 az = ax1*ay2 - ay1*ax2
1531 area = half*sqrt(ax*ax+ay*ay+az
1533 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1534 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1535 xmu(i) =
max(xmu(i),em30)
1536 ENDDO
1537 ELSEIF(mfrot==2)THEN
1538
1539 DO i=1,jlt
1540 IF(pene(i) == 0) THEN
1541 xmu(i) = zero
1542 cycle
1543 ENDIF
1544 ie=ce_loc(i)
1545 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1546 v2 = (vx(i) - n1(i)*aa)**2
1547 . + (vy(i) - n2(i)*aa)**2
1548 . + (vz(i) - n3(i)*aa)**2
1549 vv = sqrt(
max(em30,v2))
1550 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1551 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1552 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1553 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1554 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1555 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1556 ax = ay1*az2 - az1*ay2
1557 ay = az1*ax2 - ax1*az2
1558 az = ax1*ay2 - ay1*ax2
1559 area = half*sqrt(ax*ax+ay*ay+az*az)
1561 xmu(i) = fricc(i)
1562 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1563 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1564 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1565 xmu(i) =
max(xmu(i),em30)
1566 ENDDO
1567 ELSEIF (mfrot==3) THEN
1568
1569 DO i=1,jlt
1570 IF(pene(i) == 0) THEN
1571 xmu(i) = zero
1572 cycle
1573 ENDIF
1574 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1575 v2 = (vx(i) - n1(i)*aa)**2
1576 . + (vy(i) - n2(i)*aa)**2
1577 . + (vz(i) - n3(i)*aa)**2
1578 vv = sqrt(
max(em30,v2))
1579 IF(vv>=0.AND.vv<=fric_coefs(i,5)) THEN
1580 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1581 vv1 = vv / fric_coefs(i,5)
1582 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1583 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6)) THEN
1584 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1585 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1586 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1587 ELSE
1588 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1589 vv2 = (vv - fric_coefs(i,6))**2
1590 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1591 ENDIF
1592 xmu(i) =
max(xmu(i),em30)
1593 ENDDO
1594 ELSEIF(mfrot==4)THEN
1595
1596 DO i=1,jlt
1597 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1598 v2 = (vx(i) - n1(i)*aa)**2
1599 . + (vy(i) - n2(i)*aa)**2
1600 . + (vz(i) - n3(i)*aa)**2
1601 vv = sqrt(
max(em30,v2))
1602 xmu(i) = fric_coefs(i,1)
1603 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1604 xmu(i) =
max(xmu(i),em30)
1605 ENDDO
1606 ENDIF
1607
1608 ELSE
1609
1610
1611 IF (mfrot==0) THEN
1612
1613#include "vectorize.inc"
1614 DO k=1,nfisot
1615 i = indexisot(k)
1616 xmu(i) = fricc(i)
1617 ENDDO
1618
1619#include "vectorize.inc"
1620 DO k=1,nforth
1621 i = indexorth(k)
1622 xmu(i) = fricc(i)
1623 xmu2(i) = fricc2(i)
1624 IF(xmu(i)<=em30) THEN
1625 xmu(i) = em30
1626 dir1(i,1:3) = zero
1627 an(k) = zero
1628 ELSE
1629 an(k)=xmu(i)**2
1630 an(k)=one/an(k)
1631 ENDIF
1632 IF(xmu2(i)<=em30) THEN
1633 xmu2(i) = em30
1634 dir2(i,1:3) = zero
1635 bn(k) = zero
1636 ELSE
1637 bn(k)=xmu2(i)**2
1638 bn(k)=one/bn(k)
1639 ENDIF
1640 ENDDO
1641 ELSEIF (mfrot==1) THEN
1642
1643#include "vectorize.inc"
1644 DO k=1,nfisot
1645 i = indexisot(k)
1646 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1647 v2 = (vx(i) - n1(i)*aa)**2
1648 . + (vy(i) - n2(i)*aa)**2
1649 . + (vz(i) - n3(i)*aa)**2
1650 vv = sqrt(
max(em30,v2))
1651
1652 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1653 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1654 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1655 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1656 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1657 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1658 ax = ay1*az2 - az1*ay2
1659 ay = az1*ax2 - ax1*az2
1660 az = ax1*ay2 - ay1*ax2
1661 area = half*sqrt(ax*ax+ay*ay+az*az)
1663 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1664 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1665 xmu(i) =
max(xmu(i),em30)
1666 ENDDO
1667
1668#include "vectorize.inc"
1669 DO k=1,nforth
1670 i = indexorth(k)
1671 ie=ce_loc(i)
1672
1673 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1674 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1675 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1676 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1677 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1678 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1679 ax = ay1*az2 - az1*ay2
1680 ay = az1*ax2 - ax1*az2
1681 az = ax1*ay2 - ay1*ax2
1682 area = half*sqrt(ax*ax+ay*ay+az*az)
1684
1685 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1687 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1688 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*vv*vv
1689
1690 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1692 xmu2(i) = fricc2(i) + (fric_coefs2(i,1) + fric_coefs2(i,4)*p ) * p
1693 . +(fric_coefs2(i,2) + fric_coefs2(i,3)*p) * vv + fric_coefs2(i,5)*vv*vv
1694
1695 xmu(i) =
max(xmu(i),em30)
1696 xmu2(i) =
max(xmu2(i),em30)
1697
1698 ENDDO
1699
1700#include "vectorize.inc"
1701 DO k=1,nforth
1702 i = indexorth(k)
1703 IF(xmu(i)<=em30) THEN
1704 xmu(i) = em30
1705 dir1(i,1:3) = zero
1706 an(k) = zero
1707 ELSE
1708 an(k)=xmu(i)**2
1709 an(k)=one/an(k)
1710 ENDIF
1711 IF(xmu2(i)<=em30) THEN
1712 xmu2(i) = em30
1713 dir2(i,1:3) = zero
1714 bn(k) = zero
1715 ELSE
1716 bn(k)=xmu2(i)**2
1717 bn(k)=one/bn(k)
1718 ENDIF
1719 ENDDO
1720
1721
1722 ELSEIF(mfrot==2)THEN
1723
1724#include "vectorize.inc"
1725 DO k=1,nfisot
1726 i = indexisot(k)
1727 ie=ce_loc(i)
1728 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1729 v2 = (vx(i) - n1(i)*aa)**2
1730 . + (vy(i) - n2(i)*aa)**2
1731 . + (vz(i) - n3(i)*aa)**2
1733 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1734 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1735 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1736 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1737 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1738 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1739 ax = ay1*az2 - az1*ay2
1740 ay = az1*ax2 - ax1*az2
1741 az = ax1*ay2 - ay1*ax2
1742 area = half*sqrt(ax*ax+ay*ay+az*az)
1744 xmu(i) = fricc(i)
1745 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1746 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1747 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1748 xmu(i) =
max(xmu(i),em30)
1749 ENDDO
1750
1751#include "vectorize.inc"
1752 DO k=1,nforth
1753 i = indexorth(k)
1754 ie=ce_loc(i)
1755
1756 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1757 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1758 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1759 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1760 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1761 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1762 ax = ay1*az2 - az1*ay2
1763 ay = az1*ax2 - ax1*az2
1764 az = ax1*ay2 - ay1*ax2
1765 area = half*sqrt(ax*ax+ay*ay+az*az)
1767
1768 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1770 xmu(i) = fricc(i)
1771 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1772 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1773 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1774
1775 v2 = vx(i)*dir2(k,1) +vy(i
1777 xmu2(i) = fricc2(i)
1778 . + fric_coefs2(i,1)*exp(fric_coefs2(i,2)*vv)*p*p
1779 . + fric_coefs2(i,3)*exp(fric_coefs2(i,4)*vv)*p
1780 . + fric_coefs2(i,5)*exp(fric_coefs2(i,6)*vv)
1781
1782 xmu(i) =
max(xmu(i),em30)
1783 xmu2(i) =
max(xmu2(i),em30)
1784
1785 ENDDO
1786
1787#include "vectorize.inc"
1788 DO k=1,nforth
1789 i = indexorth(k)
1790 IF(xmu(i)<=em30) THEN
1791 xmu(i) = em30
1792 dir1(i,1:3) = zero
1793 an(k) = zero
1794 ELSE
1795 an(k)=xmu(i)**2
1796 an(k)=one/an(k)
1797 ENDIF
1798 IF(xmu2(i)<=em30) THEN
1799 xmu2(i) = em30
1800 dir2(i,1:3) = zero
1801 bn(k) = zero
1802 ELSE
1803 bn(k)=xmu2(i)**2
1804 bn(k)=one/bn(k)
1805 ENDIF
1806 ENDDO
1807
1808 ELSEIF (mfrot==3) THEN
1809
1810#include "vectorize.inc"
1811 DO k=1,nfisot
1812 i = indexisot(k)
1813 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1814 v2 = (vx(i) - n1(i)*aa)**2
1815 . + (vy(i) - n2(i)*aa)**2
1816 . + (vz(i) - n3(i)*aa)**2
1817 vv = sqrt(
max(em30,v2))
1818 IF(vv>=0.AND.vv<=fric_coefs(i,5)) THEN
1819 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1820 vv1 = vv / fric_coefs(i,5)
1821
1822 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6)) THEN
1823 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1824 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs
1825 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1826 ELSE
1827 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1828 vv2 = (vv - fric_coefs(i,6))**2
1829 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1830 ENDIF
1831 xmu(i) =
max(xmu(i),em30)
1832 ENDDO
1833
1834#include "vectorize.inc"
1835 DO k=1,nforth
1836 i
1837
1838 v2 = vx(i)*dir1(k,1) +vy(i)*dir1(k,2)+vz(i)*dir1(k,3)
1840 IF(vv>=0.AND.vv<=fric_coefs(i,5)) THEN
1841 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1842 vv1 = vv / fric_coefs(i,5)
1843 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1844 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6)) THEN
1845 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1846 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1847 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1848 ELSE
1849 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1850 vv2 = (vv - fric_coefs(i,6))**2
1851 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1852 ENDIF
1853
1854 v2 = vx(i)*dir2(k,1) +vy(i)*dir2(k,2)+vz(i)*dir2(k,3)
1856 IF(vv>=0.AND.vv<=fric_coefs2(i,5)) THEN
1857 dmu = fric_coefs2(i,3)-fric_coefs2(i,1)
1858 vv1 = vv / fric_coefs2(i,5)
1859 xmu2(i) = fric_coefs2(i,1)+ dmu*vv1*(two-vv1)
1860 ELSEIF(vv>fric_coefs2(i,5).AND.vv<fric_coefs2(i,6)) THEN
1861 dmu = fric_coefs2(i,4)-fric_coefs2(i,3)
1862 vv1 = (vv - fric_coefs2(i,5))/(fric_coefs2(i,6)-fric_coefs2(i,5))
1863 xmu2(i) = fric_coefs2(i,3)+ dmu * (three-two*vv1)*vv1**2
1864 ELSE
1865 dmu = fric_coefs2(i,2)-fric_coefs2(i,4)
1866 vv2 = (vv - fric_coefs2(i,6))**2
1867 xmu2(i) = fric_coefs2(i,2) - dmu / (one + dmu*vv2)
1868 ENDIF
1869 xmu(i) =
max(xmu(i),em30)
1870 xmu2(i) =
max(xmu2(i),em30)
1871 ENDDO
1872
1873#include "vectorize.inc"
1874 DO k=1,nforth
1875 i = indexorth(k)
1876 IF(xmu(i)<=em30) THEN
1877 xmu(i) = em30
1878 dir1(i,1:3) = zero
1879 an(k) = zero
1880 ELSE
1881 an(k)=xmu(i)**2
1882 an(k)=one/an(k)
1883 ENDIF
1884 IF(xmu2(i)<=em30) THEN
1885 xmu2(i) = em30
1886 dir2(i,1:3) = zero
1887 bn(k) = zero
1888 ELSE
1889 bn(k)=xmu2(i)**2
1890 bn(k)=one/bn(k)
1891 ENDIF
1892 ENDDO
1893
1894
1895 ELSEIF(mfrot==4)THEN
1896
1897#include "vectorize.inc"
1898 DO k=1,nfisot
1899 i = indexisot(k)
1900 IF(pene(i) == 0) THEN
1901 xmu(i) = zero
1902 xmu2(i) = zero
1903 cycle
1904 ENDIF
1905 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1906 v2 = (vx(i) - n1(i)*aa)**2
1907 . + (vy(i) - n2(i)*aa)**2
1908 . + (vz(i) - n3(i)*aa)**2
1909 vv = sqrt(
max(em30,v2))
1910 xmu(i) = fric_coefs(i,1)
1911 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1912 xmu(i) =
max(xmu(i),em30)
1913 ENDDO
1914
1915#include "vectorize.inc"
1916 DO k=1,nforth
1917 i = indexorth(k)
1918 IF(pene(i) == 0) THEN
1919 xmu(i) = zero
1920 xmu2(i) = zero
1921 cycle
1922 ENDIF
1923
1924 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
1926 xmu(i) = fricc(i)
1927 . + (fric_coefs(i,1)-fricc(i))*exp(-fric_coefs(i,2)*vv)
1928
1929 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
1931 xmu2(i) = fric_coefs2(i,1)
1932 . + (fricc2(i)-fric_coefs2(i,1))*exp(-fric_coefs2(i,2)*vv)
1933 xmu(i) =
max(xmu(i),em30)
1934 xmu2(i) =
max(xmu2(i),em30)
1935 ENDDO
1936
1937#include "vectorize.inc"
1938 DO k=1,nforth
1939 i = indexorth(k)
1940 IF(xmu(i)<=em30) THEN
1941 xmu(i) = em30
1942 dir1(i,1:3) = zero
1943 an(k) = zero
1944 ELSE
1945 an(k)=xmu(i)**2
1946 an(k)=one/an(k)
1947 ENDIF
1948 IF(xmu2(i)<=em30) THEN
1949 xmu2(i) = em30
1950 dir2(i,1:3) = zero
1951 bn(k) = zero
1952 ELSE
1953 bn(k)=xmu2(i)**2
1954 bn(k)=one/bn(k)
1955 ENDIF
1956 ENDDO
1957
1958 ENDIF
1959
1960 ENDIF
1961
1962
1963
1964 fsav4 = zero
1965 fsav5 = zero
1966 fsav6 = zero
1967 fsav12= zero
1968 fsav13= zero
1969 fsav14= zero
1970 fsav15= zero
1971 IF (ifq /= 0) THEN
1972
1973
1974
1975 IF (ifq==13) THEN
1977 ELSE
1979 ENDIF
1980
1981 IF(intnitsche > 0 ) THEN
1982
1983 DO i=1,jlt
1984 IF(pene(i) == zero)cycle
1985 ftn = forneqsi(i,1)*n1(i) + forneqsi(i,2)*n2(i) + forneqsi(i,3)*n3(i)
1986 fnitxt(i) = half*(forneqsi(i,1) - ftn*n1(i))
1987 fnityt(i) = half*(forneqsi(i,2) - ftn*n2(i))
1988 fnitzt(i) = half*(forneqsi(i,3) - ftn*n3(i))
1989 ENDDO
1990 ELSE
1991 DO i=1,jlt
1992 fnitxt(i) = zero
1993 fnityt(i) = zero
1994 fnitzt(i) = zero
1995 ENDDO
1996 ENDIF
1997
1998 IF(iorthfric ==0 ) THEN
1999
2000
2001 IF (inconv==1) THEN
2002 DO i=1,jlt
2003 IF(pene(i) == zero)cycle
2004 fx = stif0(i)*vx(i)*dt12
2005 fy = stif0(i)*vy(i)*dt12
2006 fz = stif0(i)*vz(i)*dt12
2007 jg = nsvg(i)
2008 IF(jg>0) THEN
2009 n = cand_n_n(i)
2010
2011 fx = secnd_fr(4,n) +
alpha*fx
2012 fy = secnd_fr(5,n) +
alpha*fy
2013 fz = secnd_fr(6,n) +
alpha*fz
2014 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2015 fx = fx - ftn*n1(i)
2016 fy = fy - ftn*n2(i)
2017 fz = fz - ftn*n3(i)
2018 fx = fx + fnitxt(i)
2019 fy = fy + fnityt(i)
2020 fz = fz + fnitzt(i)
2021 ft = fx*fx + fy*fy + fz*fz
2023 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2024 beta =
min(one,xmu(i)*sqrt(fn/ft))
2025 fxt(i) = fx * beta
2026 fyt(i) = fy * beta
2027 fzt(i) = fz * beta
2028
2029#include "lockon.inc"
2030 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2031 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt(i)
2032 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)- fnitzt(i)
2033
2034 IF ((fxt(i)- fnitxt(i))==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i)- fnitxt(i))
2035 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2036 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2037
2038#include "lockoff.inc"
2039 ELSE
2040 jg = -jg
2041
2045 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2046 fx = fx - ftn*n1(i)
2047 fy = fy - ftn*n2(i)
2048 fz = fz - ftn*n3(i)
2049 fx = fx + fnitxt(i)
2050 fy = fy + fnityt(i)
2051 fz = fz + fnitzt(i)
2052 ft = fx*fx + fy*fy + fz*fz
2054 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2055 beta =
min(one,xmu(i)*sqrt(fn/ft))
2056 fxt(i) = fx * beta
2057 fyt(i) = fy * beta
2058 fzt(i) = fz * beta
2059#include "lockon.inc"
2060 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2061 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2062 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2063 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2064 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2065 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2066
2067 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2068 *
secnd_frfi(nin)%P(1,jg) = abs(fxt(i)- fnitxt(i))
2069 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2070 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2071 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2072 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2073#include "lockoff.inc"
2074 ENDIF
2075
2076 fxi(i)=fxi(i) + fxt(i)
2077 fyi(i)=fyi(i) + fyt(i)
2078 fzi(i)=fzi(i) + fzt(i)
2079 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2080 econvt = econvt + efric_l(i)
2081 ENDDO
2082
2083 ELSE
2084 DO i=1,jlt
2085 IF(pene(i) == zero)cycle
2086 fx = stif0(i)*vx(i)*dt12
2087 fy = stif0(i)*vy(i)*dt12
2088 fz = stif0(i)*vz(i)*dt12
2089 jg = nsvg(i)
2090 n = cand_n_n(i)
2091 IF(jg>0) THEN
2092
2093 fx = secnd_fr(4,n) +
alpha*fx
2094 fy = secnd_fr(5,n) +
alpha*fy
2095 fz = secnd_fr(6,n) +
alpha*fz
2096 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2097 fx = fx - ftn*n1(i)
2098 fy = fy - ftn*n2(i)
2099 fz = fz - ftn*n3(i)
2100 fx = fx + fnitxt(i)
2101 fy = fy + fnityt(i)
2102 fz = fz + fnitzt(i)
2103 ft = fx*fx + fy*fy + fz*fz
2105 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2106 beta =
min(one,xmu(i)*sqrt(fn/ft))
2107 fxt(i) = fx * beta
2108 fyt(i) = fy * beta
2109 fzt(i) = fz * beta
2110 fxi(i)=fxi(i) + fxt(i)
2111 fyi(i)=fyi(i) + fyt(i)
2112 fzi(i)=fzi(i) + fzt(i)
2113 ELSE ! cas noeud remote en spmd
2114 jg = -jg
2118 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2119 fx = fx - ftn*n1(i)
2120 fy = fy - ftn*n2(i)
2121 fz = fz - ftn*n3(i)
2122 fx = fx + fnitxt(i)
2123 fy = fy + fnityt(i)
2124 fz = fz + fnitzt(i)
2125 ft = fx*fx + fy*fy + fz*fz
2127 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2128 beta =
min(one,xmu(i)*sqrt(fn/ft))
2129 fxt(i) = fx * beta
2130 fyt(i) = fy * beta
2131 fzt(i) = fz * beta
2132 fxi(i)=fxi(i) + fxt(i)
2133 fyi(i)=fyi(i) + fyt(i)
2134 fzi(i)=fzi(i) + fzt(i)
2135 ENDIF
2136
2137 ENDDO
2138 ENDIF
2139
2140 ELSE
2141
2142
2143 IF (inconv==1) THEN
2144#include "vectorize.inc"
2145 DO k=1,nfisot
2146 i = indexisot(k)
2147 IF(pene(i) == zero)cycle
2148 fx = stif0(i)*vx(i)*dt12
2149 fy = stif0(i)*vy(i)*dt12
2150 fz = stif0(i)*vz(i)*dt12
2151 jg = nsvg(i)
2152 IF(jg>0) THEN
2153 n = cand_n_n(i)
2154
2155 fx
2156 fy = secnd_fr(5,n) +
alpha*fy
2157 fz = secnd_fr(6,n) +
alpha*fz
2158 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2159 fx = fx - ftn*n1(i)
2160 fy = fy - ftn*n2(i)
2161 fz = fz - ftn*n3(i)
2162 fx = fx + fnitxt(i)
2163 fy = fy + fnityt(i)
2164 fz = fz + fnitzt(i)
2165 ft = fx*fx + fy*fy + fz*fz
2167 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2168 beta =
min(one,xmu(i)*sqrt(fn/ft))
2169 fxt(i) = fx * beta
2170 fyt(i) = fy * beta
2171 fzt(i) = fz * beta
2172#include "lockon.inc"
2173 IF (abs(fxt(i)- fnitxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n) = fxt(i)- fnitxt(i)
2174 IF (abs(fyt(i)- fnityt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)- fnityt(i)
2175 IF (abs(fzt(i)- fnitzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)- fnitzt(i)
2176
2177 IF ((fxt(i)- fnitxt(i))==-secnd_fr(1,n)) secnd_fr(
2178 IF ((fyt(i)- fnityt(i))==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i)- fnityt(i))
2179 IF ((fzt(i)- fnitzt(i))==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i)- fnitzt(i))
2180#include "lockoff.inc"
2181 ELSE
2182 jg = -jg
2183
2187 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2188 fx = fx - ftn*n1(i)
2189 fy = fy - ftn*n2(i)
2190 fz = fz - ftn*n3(i)
2191 fx = fx + fnitxt(i)
2192 fy = fy + fnityt(i)
2193 fz = fz + fnitzt(i)
2194 ft = fx*fx + fy*fy + fz*fz
2196 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2197 beta =
min(one,xmu(i)*sqrt(fn/ft))
2198 fxt(i) = fx * beta
2199 fyt(i) = fy * beta
2200 fzt(i) = fz * beta
2201#include "lockon.inc"
2202 IF ( abs(fxt(i)- fnitxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2203 *
secnd_frfi(nin)%P(1,jg) = fxt(i)- fnitxt(i)
2204 IF ( abs(fyt(i)- fnityt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2205 *
secnd_frfi(nin)%P(2,jg) = fyt(i)- fnityt(i)
2206 IF ( abs(fzt(i)- fnitzt(i)) > abs(
secnd_frfi(nin)%P(3,jg))
2207 *
secnd_frfi(nin)%P(3,jg) = fzt(i)- fnitzt(i)
2208
2209 IF ((fxt(i)- fnitxt(i))== -
secnd_frfi(nin)%P(1,jg) )
2211 IF ((fyt(i)- fnityt(i))== -
secnd_frfi(nin)%P(2,jg) )
2212 *
secnd_frfi(nin)%P(2,jg) = abs(fyt(i)- fnityt(i))
2213 IF ((fzt(i)- fnitzt(i))== -
secnd_frfi(nin)%P(3,jg) )
2214 *
secnd_frfi(nin)%P(3,jg) = abs(fzt(i)- fnitzt(i))
2215#include "lockoff.inc"
2216 ENDIF
2217
2218 fxi(i)=fxi(i) + fxt(i)
2219 fyi(i)=fyi(i) + fyt(i)
2220 fzi(i)=fzi(i) + fzt(i)
2221 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i
2222 econvt = econvt + efric_l(i)
2223 ENDDO
2224
2225#include "vectorize.inc"
2226 DO k=1,nforth
2227 i = indexorth(k)
2228 IF(pene(i) == zero)cycle
2229 fx = stif0(i)*vx(i)*dt12
2230 fy = stif0(i)*vy(i)*dt12
2231 fz = stif0(i)*vz(i)*dt12
2232 jg = nsvg(i)
2233 IF(jg>0) THEN
2234 n = cand_n_n
2235
2236 fx = secnd_fr(4,n
2237 fy = secnd_fr(5,n) +
alpha*fy
2238 fz = secnd_fr(6,n) +
alpha*fz
2239 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2240 fx = fx - ftn*n1(i)
2241 fy = fy - ftn*n2(i)
2242 fz = fz - ftn*n3(i)
2243
2244 fx = fx + fnitxt(i)
2245 fy = fy + fnityt(i)
2246 fz = fz + fnitzt(i)
2247
2248 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2249 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2250 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2252 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2253
2254 beta = fn/ft
2255
2256 IF(beta == 0 ) THEN
2257 fxt(i) = zero
2258 fyt(i) = zero
2259 fzt(i) = zero
2260 ELSEIF(beta > 1) THEN
2261 fxt(i) = fx
2262 fyt(i) = fy
2263 fzt(i) = fz
2264 ELSE
2265
2266
2267
2268 nep1 =ftt1*an(k)/fn
2269 nep2 =ftt2*bn(k)/fn
2270 nep =nep1*nep1+nep2*nep2
2271 nep =sqrt(nep)
2272 ep=nep1*ftt1+nep2*ftt2
2273
2274 ans=(ep-sqrt(ep))/
max(em20,nep)
2275 nep1 =nep1/
max(em20,nep)
2277
2278 c11 =ftt1-ans*nep1
2279 c22 =ftt2-ans*nep2
2280 alphaf = atan(c22/c11)
2281 signc = ftt1/
max(em20,abs(ftt1))
2282 csa = signc*abs(cos(alphaf))
2283 signc = ftt2/
max(em20,abs(ftt2))
2284 sna = signc*abs(sin(alphaf))
2285
2286 ft = sqrt(fn / (csa*csa*an(k
2287 ftt1 = ft * csa
2288 ftt2 = ft * sna
2289
2290 fxt(i) = ftt1 * dir1
2291 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2292 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2293
2294 ENDIF
2295
2296#include "lockon.inc"
2297 IF (abs(fxt(i))>abs(secnd_fr(1,n))) secnd_fr(1,n)
2298 IF (abs(fyt(i))>abs(secnd_fr(2,n))) secnd_fr(2,n) = fyt(i)
2299 IF (abs(fzt(i))>abs(secnd_fr(3,n))) secnd_fr(3,n) = fzt(i)
2300
2301 IF (fxt(i)==-secnd_fr(1,n)) secnd_fr(1,n) = abs(fxt(i))
2302 IF (fyt(i)==-secnd_fr(2,n)) secnd_fr(2,n) = abs(fyt(i))
2303 IF (fzt(i)==-secnd_fr(3,n)) secnd_fr(3,n) = abs(fzt(i))
2304#include "lockoff.inc"
2305 ELSE
2306 jg = -jg
2307
2311 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2312 fx = fx - ftn*n1(i)
2313 fy = fy - ftn*n2(i)
2314 fz = fz - ftn*n3(i)
2315 fx = fx + fnitxt(i)
2316 fy = fy + fnityt(i)
2317 fz = fz + fnitzt(i)
2318 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2319 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2320 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2322 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2323
2324 beta = fn/ft
2325
2326 IF(beta == 0 ) THEN
2327 fxt(i) = zero
2328 fyt(i
2329 fzt(i) = zero
2330 ELSEIF(beta > 1) THEN
2331 fxt(i) = fx
2332 fyt(i) = fy
2333 fzt(i) = fz
2334 ELSE
2335
2336
2337
2338 nep1 =ftt1*an(k)/fn
2339 nep2 =ftt2*bn(k)
2340 nep =nep1*nep1+nep2*nep2
2341 nep =sqrt(nep)
2342
2343 ep=nep1*ftt1+nep2*ftt2
2344
2345 ans=(ep-sqrt(ep))/
max(em20,nep)
2346 nep1 =nep1/
max(em20,nep)
2347 nep2 =nep2/
max(em20,nep)
2348
2349
2350 c11 =ftt1-ans*nep1
2351 c22 =ftt2-ans*nep2
2352
2353 alphaf = atan(c22/c11)
2354
2355 signc = ftt1/
max(em20,abs(ftt1))
2356 csa = signc*abs(cos(alphaf))
2357 signc = ftt2/
max(em20,abs(ftt2))
2358 sna = signc*abs(sin(alphaf))
2359
2360 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2361 ftt1 = ft * csa
2362 ftt2 = ft * sna
2363
2364 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2365 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2366 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2367
2368 ENDIF
2369#include "lockon.inc"
2370 IF ( abs(fxt(i)) > abs(
secnd_frfi(nin)%P(1,jg)) )
2372 IF ( abs(fyt(i)) > abs(
secnd_frfi(nin)%P(2,jg)) )
2374 IF ( abs(fzt(i)) > abs(
secnd_frfi(nin)%P(3,jg)) )
2376
2383#include "lockoff.inc"
2384 ENDIF
2385
2386 fxi(i)=fxi(i) + fxt(i)
2387 fyi(i)=fyi(i) + fyt(i)
2388 fzi(i)=fzi(i) + fzt(i)
2389 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2390 econvt = econvt + efric_l(i)
2391 ENDDO
2392
2393
2394
2395 ELSE
2396#include "vectorize.inc"
2397 DO k=1,nfisot
2398 i = indexisot(k)
2399 IF(pene(i) == zero)cycle
2400 fx = stif0(i)*vx(i)*dt12
2401 fy = stif0(i)*vy(i)*dt12
2402 fz = stif0(i)*vz(i)*dt12
2403 jg = nsvg(i)
2404 n = cand_n_n(i)
2405 IF(jg>0) THEN
2406
2407 fx = secnd_fr(4,n) +
alpha*fx
2408 fy = secnd_fr(5,n) +
alpha*fy
2409 fz = secnd_fr(6,n) +
alpha*fz
2410 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2411 fx = fx - ftn*n1(i)
2412 fy = fy - ftn*n2(i)
2413 fz = fz - ftn*n3(i)
2414 fx = fx + fnitxt(i)
2415 fy = fy + fnityt(i)
2416 fz = fz + fnitzt(i)
2417 ft = fx*fx + fy*fy + fz*fz
2419 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2420 beta =
min(one,xmu(i)*sqrt(fn/ft))
2421 fxt(i) = fx * beta
2422 fyt(i) = fy * beta
2423 fzt(i) = fz * beta
2424 fxi(i)=fxi(i) + fxt(i)
2425 fyi(i)=fyi(i) + fyt(i)
2426 fzi(i)=fzi(i) + fzt(i)
2427 ELSE
2428 jg = -jg
2432 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2433 fx = fx - ftn*n1(i)
2434 fy = fy - ftn*n2(i)
2435 fz = fz - ftn*n3(i)
2436 fx = fx + fnitxt(i)
2437 fy = fy + fnityt(i)
2438 fz = fz + fnitzt(i)
2439 ft = fx*fx + fy*fy + fz*fz
2441 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2442 beta =
min(one,xmu(i)*sqrt(fn/ft))
2443 fxt(i) = fx * beta
2444 fyt(i) = fy * beta
2445 fzt(i) = fz * beta
2446 fxi(i)=fxi(i) + fxt(i)
2447 fyi(i)=fyi(i) + fyt(i)
2448 fzi(i)=fzi(i) + fzt(i)
2449 ENDIF
2450
2451 ENDDO
2452
2453#include "vectorize.inc"
2454 DO k=1,nforth
2455 i = indexorth(k)
2456 IF(pene(i) == zero)cycle
2457 fx = stif0(i)*vx(i)*dt12
2458 fy = stif0(i)*vy(i)*dt12
2459 fz = stif0(i)*vz(i)*dt12
2460 jg = nsvg(i)
2461 n = cand_n_n(i)
2462 IF(jg>0) THEN
2463
2464 fx = secnd_fr(4,n) +
alpha*fx
2465 fy = secnd_fr(5,n) +
alpha*fy
2466 fz = secnd_fr(6,n) +
alpha*fz
2467 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2468 fx = fx - ftn*n1(i)
2469 fy = fy - ftn*n2(i)
2470 fz = fz - ftn*n3(i)
2471 fx = fx + fnitxt(i)
2472 fy = fy + fnityt(i)
2473 fz = fz + fnitzt(i)
2474
2475 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2476 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2477 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2479 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2480
2481 beta = fn/ft
2482
2483 IF(beta == 0 ) THEN
2484 fxt(i) = zero
2485 fyt(i) = zero
2486 fzt(i) = zero
2487 ELSEIF(beta > 1) THEN
2488 fxt(i) = fx
2489 fyt(i) = fy
2490 fzt(i) = fz
2491 ELSE
2492
2493
2494
2495 nep1 =ftt1*an(k)/fn
2496 nep2 =ftt2*bn(k)/fn
2497 nep =nep1*nep1+nep2*nep2
2498 nep =sqrt(nep)
2499
2500 ep=nep1*ftt1+nep2*ftt2
2501
2502 ans=(ep-sqrt(ep))/
max(em20,nep)
2503 nep1 =nep1/
max(em20,nep)
2504 nep2 =nep2/
max(em20,nep)
2505
2506
2507 c11 =ftt1-ans*nep1
2508 c22 =ftt2-ans*nep2
2509
2510 alphaf = atan(c22/c11)
2511
2512 signc = ftt1/
max(em20,abs(ftt1))
2513 csa = signc*abs(cos(alphaf))
2514 signc = ftt2/
max(em20,abs(ftt2))
2515 sna = signc*abs(sin(alphaf))
2516
2517 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2518 ftt1 = ft * csa
2519 ftt2 = ft * sna
2520
2521 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2522 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2523 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2524
2525 ENDIF
2526 fxi(i)=fxi(i) + fxt(i)
2527 fyi(i)=fyi(i) + fyt(i)
2528 fzi(i)=fzi(i) + fzt(i)
2529 ELSE
2530 jg = -jg
2534 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2535 fx = fx - ftn*n1(i)
2536 fy = fy - ftn*n2(i)
2537 fz = fz - ftn*n3(i)
2538 fx = fx + fnitxt(i)
2539 fy = fy + fnityt(i)
2540 fz = fz + fnitzt(i)
2541
2542 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2543 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2544 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2546 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2547
2548 beta = fn/ft
2549
2550 IF(beta == 0 ) THEN
2551 fxt(i) = zero
2552 fyt(i) = zero
2553 fzt(i) = zero
2554 ELSEIF(beta > 1) THEN
2555 fxt(i) = fx
2556 fyt(i) = fy
2557 fzt(i) = fz
2558 ELSE
2559
2560
2561
2562 nep1 =ftt1*an(k)/fn
2563 nep2 =ftt2*bn(k)/fn
2564 nep =nep1*nep1+nep2*nep2
2565 nep =sqrt(nep)
2566
2567 ep=nep1*ftt1+nep2*ftt2
2568
2569 ans=(ep-sqrt(ep))/
max(em20,nep)
2570 nep1 =nep1/
max(em20,nep)
2571 nep2 =nep2/
max(em20,nep)
2572
2573
2574 c11 =ftt1-ans*nep1
2575 c22 =ftt2-ans*nep2
2576
2577 alphaf = atan(c22/c11)
2578
2579 signc = ftt1/
max(em20,abs(ftt1))
2580 csa = signc*abs(cos(alphaf))
2581 signc = ftt2/
max(em20,abs(ftt2))
2582 sna = signc*abs(sin(alphaf))
2583
2584 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2585 ftt1 = ft * csa
2586 ftt2 = ft * sna
2587
2588 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2589 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2590 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2591
2592 ENDIF
2593
2594 fxi(i)=fxi(i) + fxt(i)
2595 fyi(i)=fyi(i) + fyt(i)
2596 fzi(i)=fzi(i) + fzt(i)
2597 ENDIF
2598
2599 ENDDO
2600
2601 ENDIF
2602
2603 ENDIF
2604
2605
2606
2607 ENDIF
2608
2609
2610 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
2611 . ((tt>=output%TANIM.AND.tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
2612 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
2613 . .OR.h3d_data%N_VECT_PCONT_MAX>0)THEN
2614 IF (inconv==1) THEN
2615#include "lockon.inc"
2616 DO i=1,jlt
2617 IF(pene(i) == zero)cycle
2618 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fxt(i)*h1(i)
2619 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fyt(i)*h1(i)
2620 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fzt(i)*h1(i)
2621 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fxt(i)*h2(i)
2622 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fyt(i)*h2(i)
2623 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fzt(i)*h2(i)
2624 ftcont(1,ix3(i)) =ftcont(1,ix3(i)) + fxt(i)*h3(i)
2625 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fyt(i)*h3(i)
2626 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fzt(i)*h3(i)
2627 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fxt(i)*h4(i)
2628 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fyt(i)*h4(i)
2629 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fzt(i)*h4(i)
2630 jg = nsvg(i)
2631 IF(jg>0) THEN
2632
2633 IF (jg >numnod) THEN
2634 ig = jg - numnod
2636 + ig ,fxt(i) ,fyt(i) ,fzt(i) ,ftcont ,
2637 + -1 )
2638 ELSE
2639 ftcont(1,jg)=ftcont(1,jg)- fxt(i)
2640 ftcont(2,jg)=ftcont(2,jg)- fyt(i)
2641 ftcont(3,jg)=ftcont(3,jg)- fzt(i)
2642 ENDIF
2643 ELSE
2644 jg=-jg
2647 + jg ,fxt(i) ,fyt(i) ,fzt(i) ,
ftconti(nin)%P(1,1) ,
2648 + -1 )
2649 ELSE
2653 ENDIF
2654 END IF
2655 ENDDO
2656#include "lockoff.inc"
2657 END IF
2658 ENDIF
2659
2660
2661 fsav22= zero
2662 fsav23= zero
2663 fsav24= zero
2664 fsav29= zero
2665 DO i=1,jlt
2666 IF(pene(i) == zero)cycle
2667 impx=fxt(i)*dt12
2668 impy=fyt(i)*dt12
2669 impz=fzt(i)*dt12
2670 fsav4 =fsav4 +impx
2671 fsav5 =fsav5 +impy
2672 fsav6 =fsav6 +impz
2673 impx=fxi(i)*dt12
2674 impy=fyi(i)*dt12
2675 impz=fzi(i)*dt12
2676 fsav12=fsav12+abs(impx)
2677 fsav13=fsav13+abs(impy)
2678 fsav14=fsav14+abs(impz)
2679 fsav15=fsav15+sqrt(impx*impx+impy*impy+impz*impz)
2680 xp(i)=xi(i)+pene(i)*n1(i)
2681 yp(i)=yi(i)+pene(i)*n2(i)
2682 zp(i)=zi(i)+pene(i)*n3(i)
2683 fsav22=fsav22+yp(i)*impz-zp(i)*impy
2684 fsav23=fsav23+zp(i)*impx-xp(i)*impz
2685 fsav24=fsav24+xp(i)*impy-yp(i)*impx
2686 ENDDO
2687
2688 IF(intcarea > 0) THEN
2689 DO i=1,jlt
2690 IF(pene(i) == zero)cycle
2691 jg = nsvg(i)
2692 IF(jg>0) THEN
2693 IF(jg <= numnod) THEN
2694 fsav29=fsav29+parameters%INTAREAN(jg)
2695 ELSE
2696 ig = jg - numnod
2697 CALL i24intarea_fic(irtse ,nsne ,is2se ,is2pt ,ig ,
2698 + nrtse , numnod , parameters%INTAREAN, arean_fic)
2699 fsav29=fsav29 + arean_fic
2700 ENDIF
2701 ELSE
2702 jg=-jg
2706 fsav29=fsav29 + arean_fic
2707 ELSE
2709 ENDIF
2710 ENDIF
2711 ENDDO
2712 ENDIF
2713#include "lockon.inc"
2714 fsav(4) = fsav(4) + fsav4
2715 fsav(5) = fsav(5) + fsav5
2716 fsav(6) = fsav(6) + fsav6
2717 fsav(12) = fsav(12) + fsav12
2718 fsav(13) = fsav(13) + fsav13
2719 fsav(14) = fsav(14) + fsav14
2720 fsav(15) = fsav(15) + fsav15
2721 fsav(22) = fsav(22) + fsav22
2722 fsav(23) = fsav(23) + fsav23
2723 fsav(24) = fsav(24) + fsav24
2724 fsav(26) = fsav(26) + econtt
2725 fsav(27) = fsav(27) + econvt
2726 fsav(28) = fsav(28) + econtdt
2727 fsav(29) = fsav(29) + fsav29
2728#include "lockoff.inc"
2729
2730 IF(isensint(1)/=0) THEN
2731 DO i=1,jlt
2732 fsavparit(1,4,i+nft) = fxi(i)
2733 fsavparit(1,5,i+nft) = fyi(i)
2734 fsavparit(1,6,i+nft) = fzi(i)
2735 ENDDO
2736 ENDIF
2737
2738
2739
2740 IF(nisub/=0)THEN
2741 DO i=1,jlt
2742 IF(pene(i) == zero)cycle
2743 nn = nsvg(i)
2744 IF(nn>0)THEN
2745 in=cn_loc(i)
2746 IF (msegtyp(ce_loc(i)) < 0) THEN
2747 ie= - msegtyp(ce_loc(i))
2748 ELSE
2749 ie = ce_loc(i)
2750 ENDIF
2751 jj =addsubs(in)
2752 kk =addsubm(ie)
2753 DO WHILE(jj<addsubs(in+1))
2754 jsub=lisubs(jj)
2755 itypsub = typsub(jsub)
2756
2757 IF(itypsub == 1 ) THEN
2758 iss1 =
bitget(inflg_subs(jj),0)
2759 iss2 =
bitget(inflg_subs(jj),1)
2760 igrn =
bitget(inflg_subs(jj),2)
2761 ksub=lisubm(kk)
2762 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2763 ims1 =
bitget(inflg_subm(kk),0)
2764 ims2 =
bitget(inflg_subm(kk),1)
2765 IF(ksub==jsub)THEN
2766
2767 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
2768 . (ims1 == 1 .AND. iss2 == 1).OR.
2769 . (ims2 == 1 .AND. iss1 == 1))) THEN
2770 kk=kk+1
2771 ksub=lisubm(kk)
2772 cycle
2773 END IF
2774 impx=fxt(i)*dt12
2775 impy=fyt(i)*dt12
2776 impz=fzt(i)*dt12
2777
2778 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2779 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2780 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2781
2782 impx=fxi(i)*dt12
2783 impy=fyi(i)*dt12
2784 impz=fzi(i)*dt12
2785 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2786 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2787 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2788
2789 IF(isensint(jsub+1)/=0) THEN
2790 fsavparit(jsub+1,4,i+nft) = fxt(i)
2791 fsavparit(jsub+1,5,i+nft) = fyt(i)
2792 fsavparit(jsub+1,6,i+nft) = fzt(i)
2793 ENDIF
2794
2795 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2796 . +sqrt(impx*impx+impy*impy+impz*impz)
2797 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2798 . +yp(i)*impz-zp(i)*impy
2799 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2800 . +zp(i)*impx-xp(i)*impz
2801 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2802 . +xp(i)*impy-yp(i)*impx
2803
2804 END IF
2805
2806 kk=kk+1
2807 ksub=lisubm(kk)
2808 ENDDO
2809 jj=jj+1
2810
2811 ELSEIF(itypsub == 2 ) THEN
2812
2813 impx=fxt(i)*dt12
2814 impy=fyt(i)*dt12
2815 impz=fzt(i)*dt12
2816
2817 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2818 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2819 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2820
2821 impx=fxi(i)*dt12
2822 impy=fyi(i)*dt12
2823 impz=fzi(i)*dt12
2824 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2825 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2826 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2827
2828 IF(isensint(jsub+1)/=0) THEN
2829 fsavparit(jsub+1,4,i+nft) = fxt(i)
2830 fsavparit(jsub+1,5,i+nft) = fyt(i)
2831 fsavparit(jsub+1,6,i+nft) = fzt(i)
2832 ENDIF
2833
2834 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2835 . +sqrt(impx*impx+impy*impy+impz*impz)
2836 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2837 . +yp(i)*impz-zp(i)*impy
2838 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2839 . +zp(i)*impx-xp(i)*impz
2840 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2841 . +xp(i)*impy-yp(i)*impx
2842
2843 jj=jj+1
2844
2845
2846 ELSEIF(itypsub == 3 ) THEN
2847
2848
2849 iss2 =
bitget(inflg_subs(jj),0)
2850 iss1 =
bitget(inflg_subs(jj),1)
2851 ksub=lisubm(kk)
2852 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2853 ims2 =
bitget(inflg_subm(kk),0)
2854 ims1 =
bitget(inflg_subm(kk),1)
2855 IF(ksub==jsub)THEN
2856
2857 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
2858 . (ims2 == 1 .AND. iss1 == 1))) THEN
2859 kk=kk+1
2860 ksub=lisubm(kk)
2861 cycle
2862 END IF
2863
2864 impx=fxt(i)*dt12
2865 impy=fyt(i)*dt12
2866 impz=fzt(i)*dt12
2867 IF(ims2 > 0) THEN
2868
2869 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
2870 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
2871 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
2872 ELSE
2873 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
2874 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
2875 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
2876 ENDIF
2877
2878 impx=fxi(i)*dt12
2879 impy=fyi(i)*dt12
2880 impz=fzi(i)*dt12
2881 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
2882 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
2883 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
2884
2885 IF(isensint(jsub+1)/=0) THEN
2886 IF(ims2 > 0) THEN
2887 fsavparit(jsub+1,4,i+nft) = -fxt(i)
2888 fsavparit(jsub+1,5,i+nft) = -fyt(i)
2889 fsavparit(jsub+1,6,i+nft) = -fzt(i)
2890 ELSE
2891 fsavparit(jsub+1,4,i+nft) = fxt(i)
2892 fsavparit(jsub+1,5,i+nft) = fyt(i)
2893 fsavparit(jsub+1,6,i+nft) = fzt(i)
2894 ENDIF
2895 ENDIF
2896
2897 fsavsub1(15,jsub)= fsavsub1(15,jsub)
2898 . +sqrt(impx*impx+impy*impy+impz*impz)
2899 fsavsub1(22,jsub)=fsavsub1(22,jsub)
2900 . +yp(i)*impz-zp(i)*impy
2901 fsavsub1(23,jsub)=fsavsub1(23,jsub)
2902 . +zp(i)*impx-xp(i)*impz
2903 fsavsub1(24,jsub)=fsavsub1(24,jsub)
2904 . +xp(i)*impy-yp(i)*impx
2905
2906 ENDIF
2907 kk=kk+1
2908 ksub=lisubm(kk)
2909 ENDDO
2910 jj=jj+1
2911
2912
2913 ENDIF
2914
2915 END DO
2916 END IF
2917
2918 IF (msegtyp(ce_loc(i)) < 0) THEN
2919 ie= - msegtyp(ce_loc(i))
2920 ELSE
2921 ie = ce_loc(i)
2922 ENDIF
2923 IF(ie > nrtm) ie=ie-nrtm
2924
2925 kk =addsubm(ie)
2926 DO WHILE(kk<addsubm(ie+1))
2927
2928 ksub=lisubm(kk)
2929
2930 itypsub = typsub(ksub)
2931 IF(itypsub == 2 ) THEN
2932 impx=-fxt(i)*dt12
2933 impy=-fyt(i)*dt12
2934 impz=-fzt(i)*dt12
2935
2936 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
2937 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
2938 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
2939
2940 impx=fxi(i)*dt12
2941 impy=fyi(i)*dt12
2942 impz=fzi(i)*dt12
2943 fsavsub1(12,ksub)=fsavsub1(12,ksub)+abs(impx)
2944 fsavsub1(13,ksub)=fsavsub1(13,ksub)+abs(impy)
2945 fsavsub1(14,ksub)=fsavsub1(14,ksub)+abs(impz)
2946
2947 IF(isensint(ksub+1)/=0) THEN
2948 fsavparit(ksub+1,4,i+nft) = -fxt(i)
2949 fsavparit(ksub+1,5,i+nft) = -fyt(i)
2950 fsavparit(ksub+1,6,i+nft) = -fzt(i)
2951 ENDIF
2952
2953 fsavsub1(15,ksub)= fsavsub1(15,ksub)
2954 . +sqrt(impx*impx+impy*impy+impz*impz)
2955 fsavsub1(22,ksub)=fsavsub1(22,ksub)
2956 . +yp(i)*impz-zp(i)*impy
2957 fsavsub1(23,ksub)=fsavsub1(23,ksub)
2958 . +zp(i)*impx-xp(i)*impz
2959 fsavsub1(24,ksub)=fsavsub1(24,ksub)
2960 . +xp(i)*impy-yp(i)*impx
2961
2962 ENDIF
2963 kk=kk+1
2964 ENDDO
2965
2966 END DO
2967
2968
2969 IF(nspmd>1) THEN
2970
2971 DO i=1,jlt
2972 IF(pene(i) == zero)cycle
2973 nn = nsvg(i)
2974 IF(nn<0)THEN
2975 nn = -nn
2976 IF (msegtyp(ce_loc(i)) < 0) THEN
2977 ie= - msegtyp(ce_loc(i))
2978 ELSE
2979 ie = ce_loc(i)
2980 ENDIF
2982 kk =addsubm(ie)
2985 itypsub = typsub(jsub)
2986
2987 IF(itypsub == 1 ) THEN
2991 ksub=lisubm(kk)
2992 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
2993 ims1 =
bitget(inflg_subm(kk),0)
2994 ims2 =
bitget(inflg_subm(kk),1)
2995 IF(ksub==jsub)THEN
2996 IF(.NOT.(((ims1 == 1 .OR. ims2 == 1) .AND. igrn == 1).OR.
2997 . (ims1 == 1 .AND. iss2 == 1).OR.
2998 . (ims2 == 1 .AND. iss1 == 1))) THEN
2999 kk=kk+1
3000 ksub=lisubm(kk)
3001 cycle
3002 END IF
3003 impx=fxt(i)*dt12
3004 impy=fyt(i)*dt12
3005 impz=fzt(i)*dt12
3006
3007 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3008 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3009 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3010
3011 impx=fxi(i)*dt12
3012 impy=fyi(i)*dt12
3013 impz=fzi(i)*dt12
3014 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3015 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3016 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3017
3018 IF(isensint(jsub+1)/=0) THEN
3019 fsavparit(jsub+1,4,i+nft) = fxt(i)
3020 fsavparit(jsub+1,5,i+nft) = fyt(i)
3021 fsavparit(jsub+1,6,i+nft) = fzt(i)
3022 ENDIF
3023
3024 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3025 . +sqrt(impx*impx+impy*impy+impz*impz)
3026 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3027 . +yp(i)*impz-zp(i)*impy
3028 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3029 . +zp(i)*impx-xp(i)*impz
3030 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3031 . +xp(i)*impy-yp(i)*impx
3032
3033
3034 END IF
3035
3036 kk=kk+1
3037 ksub=lisubm(kk)
3038 ENDDO
3039 jj=jj+1
3040
3041 ELSEIF(itypsub == 2 ) THEN
3042
3043 impx=fxt(i)*dt12
3044 impy=fyt(i)*dt12
3045 impz=fzt(i)*dt12
3046
3047 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3048 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3049 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3050
3051 impx=fxi(i)*dt12
3052 impy=fyi(i)*dt12
3053 impz=fzi(i)*dt12
3054 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3055
3056 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3057 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3058
3059 IF(isensint(jsub+1)/=0) THEN
3060 fsavparit(jsub+1,4,i+nft) = fxt(i)
3061 fsavparit(jsub+1,5,i+nft) = fyt(i)
3062 fsavparit(jsub+1,6,i+nft) = fzt(i)
3063 ENDIF
3064
3065 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3066 . +sqrt(impx*impx+impy*impy+impz*impz)
3067 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3068 . +yp(i)*impz-zp(i)*impy
3069 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3070 . +zp(i)*impx-xp(i)*impz
3071 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3072 . +xp(i)*impy-yp(i)*impx
3073
3074 jj=jj+1
3075
3076 ELSEIF(itypsub == 3 ) THEN
3077
3080 ksub=lisubm(kk)
3081 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3082 ims2 =
bitget(inflg_subm(kk),0)
3083 ims1 =
bitget(inflg_subm(kk),1)
3084 IF(ksub==jsub)THEN
3085 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3086 . (ims2 == 1 .AND. iss1 == 1))) THEN
3087 kk=kk+1
3088 ksub=lisubm(kk)
3089 cycle
3090 END IF
3091
3092 impx=fxi(i)*dt12
3093 impy=fyi(i)*dt12
3094 impz=fzi(i)*dt12
3095
3096 IF(ims2 > 0)THEN
3097 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
3098 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
3099 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
3100 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
3101 ELSE
3102 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
3103 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
3104 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
3105 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
3106 END IF
3107
3108 IF(isensint(jsub+1)/=0) THEN
3109 IF(ims2 > 0 ) THEN
3110 fsavparit(jsub+1,4,i+nft) = -fxt(i)
3111 fsavparit(jsub+1,5,i+nft) = -fyt(i)
3112 fsavparit(jsub+1,6,i+nft) = -fzt(i)
3113 ELSE
3114 fsavparit(jsub+1,4,i+nft) = fxt(i)
3115 fsavparit(jsub+1,5,i+nft) = fyt(i)
3116 fsavparit(jsub+1,6,i+nft) = fzt(i)
3117 ENDIF
3118 ENDIF
3119
3120 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
3121 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
3122 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
3123
3124 ENDIF
3125 kk=kk+1
3126 ksub=lisubm(kk)
3127 ENDDO
3128 jj=jj+1
3129
3130 ENDIF
3131 END DO
3132 END IF
3133 END DO
3134 END IF
3135#include "lockon.inc"
3136 DO jsub=1,nisub
3137 nsub=lisub(jsub)
3138 DO j=1,15
3139 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
3140 END DO
3141 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
3142 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
3143 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
3144 IF(parameters%INTCAREA > 0) fsavsub(29,nsub)=fsavsub(29,nsub)+fsavsub1(25,jsub)
3145 END DO
3146#include "lockoff.inc"
3147 END IF
3148
3149#include "lockon.inc"
3150 IF (inconv==1) THEN
3151 econtv = econtv + econvt
3152 econt = econt + econtt
3153 econtd = econtd + econtdt
3154 END IF
3155#include "lockoff.inc"
3156
3157
3158 IF(interefric >0)THEN
3159 IF (inconv==1) THEN
3160#include "lockon.inc"
3161 DO i=1,jlt
3162 IF(pene(i) == zero)cycle
3163 efric_lm = half*efric_l(i)
3164 output%DATA%EFRIC(interefric,ix1(i)) = output%DATA%EFRIC(interefric,ix1(i)) + h1(i)*efric_lm
3165 output%DATA%EFRIC(interefric,ix2(i)) = output%DATA%EFRIC(interefric,ix2(i)) + h2(i)*efric_lm
3166 output%DATA%EFRIC(interefric,ix3(i)) = output%DATA%EFRIC(interefric,ix3(i)) + h3(i)*efric_lm
3167 output%DATA%EFRIC(interefric,ix4(i)) = output%DATA%EFRIC(interefric,ix4(i)) + h4(i)*efric_lm
3168 jg = nsvg(i)
3169 efric_ls = half*efric_l(i)
3170 IF(jg>0) THEN
3171 output%DATA%EFRIC(interefric,jg) = output%DATA%EFRIC(interefric,jg) + efric_ls
3172 ELSE
3173 jg = -jg
3175 ENDIF
3176 ENDDO
3177#include "lockoff.inc"
3178 END IF
3179 ENDIF
3180
3181 IF(h3d_data%N_SCAL_CSE_FRIC >0)THEN
3182 IF (inconv==1) THEN
3183#include "lockon.inc"
3184 DO i=1,jlt
3185 IF(pene(i) == zero)cycle
3186 efric_lm = half*efric_l(i)
3187 output%DATA%EFRICG(ix1(i)) = output%DATA%EFRICG(ix1(i)) + h1(i)*efric_lm
3188 output%DATA%EFRICG(ix2(i)) = output%DATA%EFRICG(ix2(i)) + h2(i)*efric_lm
3189 output%DATA%EFRICG(ix3(i)) = output%DATA%EFRICG(ix3(i)) + h3(i)*efric_lm
3190 output%DATA%EFRICG(ix4(i)) = output%DATA%EFRICG(ix4(i)) + h4(i)*efric_lm
3191 jg = nsvg(i)
3192 efric_ls = half*efric_l(i)
3193 IF(jg>0) THEN
3194 output%DATA%EFRICG(jg) = output%DATA%EFRICG(jg) + efric_ls
3195 ELSE
3196 jg = -jg
3198 ENDIF
3199 ENDDO
3200#include "lockoff.inc"
3201 END IF
3202 ENDIF
3203
3204 IF(kdtint==1)THEN
3205 IF( (visc/=zero)
3206 . .AND.(ivis2==0.OR.ivis2==1))THEN
3207 DO i=1,jlt
3208 IF(pene(i) == zero)cycle
3209
3210
3211 IF(msi(i)==zero)THEN
3212 ks(i) =zero
3213 cs(i) =zero
3214 stv(i)=zero
3215 ELSE
3216 cx = four*c(i)*c(i)
3217 cy = eight*msi(i)*kt(i)
3218 aux = sqrt(cx+cy)+two*c(i)
3219 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3220 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3221 IF(aux>stv(i))THEN
3222 ks(i) =zero
3223 cs(i) =cf(i)
3224 stv(i)=aux
3225 ELSE
3226 ks(i)= kt(i)
3227 cs(i) =c(i)
3228 ENDIF
3229 ENDIF
3230
3231 j1=ix1(i)
3232 IF(ms(j1)==zero)THEN
3233 k1(i) =zero
3234 c1(i) =zero
3235 st1(i)=zero
3236 ELSE
3237 k1(i)=kt(i)*abs(h1(i))
3238 c1(i)=c(i)*abs(h1(i))
3239 cx =four*c1(i)*c1(i)
3240 cy =eight*ms(j1)*k1(i)
3241 aux = sqrt(cx+cy)+two*c1(i)
3242 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3243 cfi = cf(i)*abs(h1(i))
3244 aux = two*cfi*cfi/
max(ms(j1),em20)
3245 IF(aux>st1(i))THEN
3246 k1(i) =zero
3247 c1(i) =cfi
3248 st1(i)=aux
3249 ENDIF
3250 ENDIF
3251
3252 j1=ix2(i)
3253 IF(ms(j1)==zero)THEN
3254 k2(i) =zero
3255 c2(i) =zero
3256 st2(i)=zero
3257 ELSE
3258 k2(i)=kt(i)*abs(h2(i))
3259 c2(i)=c(i)*abs(h2(i))
3260 cx =four*c2(i)*c2(i)
3261 cy =eight*ms(j1)*k2(i)
3262 aux = sqrt(cx+cy)+two*c2(i)
3263 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3264 cfi = cf(i)*abs(h2(i))
3265 aux = two*cfi*cfi/
max(ms(j1),em20)
3266 IF(aux>st2(i))THEN
3267 k2(i) =zero
3268 c2(i) =cfi
3269 st2(i)=aux
3270 ENDIF
3271 ENDIF
3272
3273 j1=ix3(i)
3274 IF(ms(j1)==zero)THEN
3275 k3(i) =zero
3276 c3(i) =zero
3277 st3(i)=zero
3278 ELSE
3279 k3(i)=kt(i)*abs(h3(i))
3280 c3(i)=c(i)*abs(h3(i))
3281 cx =four*c3(i)*c3(i)
3282 cy =eight*ms(j1)*k3(i)
3283 aux = sqrt(cx+cy)+two*c3(i)
3284 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3285 cfi = cf(i)*abs(h3(i))
3286 aux = two*cfi*cfi/
max(ms(j1),em20)
3287 IF(aux>st3(i))THEN
3288 k3(i) =zero
3289 c3(i) =cfi
3290 st3(i)=aux
3291 ENDIF
3292 ENDIF
3293
3294 j1=ix4(i)
3295 IF(ms(j1)==zero)THEN
3296 k4(i) =zero
3297 c4(i) =zero
3298 st4(i)=zero
3299 ELSE
3300 k4(i)=kt(i)*abs(h4(i))
3301 c4(i)=c(i)*abs(h4(i))
3302 cx =four*c4(i)*c4(i)
3303 cy =eight*ms(j1)*k4(i)
3304 aux = sqrt(cx+cy)+two*c4(i)
3305 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3306 cfi = cf(i)*abs(h4(i))
3307 aux = two*cfi*cfi/
max(ms(j1),em20)
3308 IF(aux>st4(i))THEN
3309 k4(i) =zero
3310 c4(i) =cfi
3311 st4(i)=aux
3312 ENDIF
3313 ENDIF
3314 ENDDO
3315
3316 ELSE
3317 DO i=1,jlt
3318 IF(viscffric(i)/=zero
3319 . .AND.(ivis2==0.OR.ivis2==1))THEN
3320 IF(pene(i) == zero)cycle
3321
3322
3323 IF(msi(i)==zero)THEN
3324 ks(i) =zero
3325 cs(i) =zero
3326 stv(i)=zero
3327 ELSE
3328 cx = four*c(i)*c(i)
3329 cy = eight*msi(i)*kt(i)
3330 aux = sqrt(cx+cy)+two*c(i)
3331 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3332 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3333 IF(aux>stv(i))THEN
3334 ks(i) =zero
3335 cs(i) =cf(i)
3336 stv(i)=aux
3337 ELSE
3338 ks(i)= kt(i)
3339 cs(i) =c(i)
3340 ENDIF
3341 ENDIF
3342
3343 j1=ix1(i)
3344 IF(ms(j1)==zero)THEN
3345 k1(i) =zero
3346 c1(i) =zero
3347 st1(i)=zero
3348 ELSE
3349 k1(i)=kt(i)*abs(h1(i))
3350 c1(i)=c(i)*abs(h1(i))
3351 cx =four*c1(i)*c1(i)
3352 cy =eight*ms(j1)*k1(i)
3353 aux = sqrt(cx+cy)+two*c1(i)
3354 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3355 cfi = cf(i)*abs(h1(i))
3356 aux = two*cfi*cfi/
max(ms(j1),em20)
3357 IF(aux>st1(i))THEN
3358 k1(i) =zero
3359 c1(i) =cfi
3360 st1(i)=aux
3361 ENDIF
3362 ENDIF
3363
3364 j1=ix2(i)
3365 IF(ms(j1)==zero)THEN
3366 k2(i) =zero
3367 c2(i) =zero
3368 st2(i)=zero
3369 ELSE
3370 k2(i)=kt(i)*abs(h2(i))
3371 c2(i)=c(i)*abs(h2(i))
3372 cx =four*c2(i)*c2(i)
3373 cy =eight*ms(j1)*k2(i)
3374 aux = sqrt(cx+cy)+two*c2(i)
3375 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3376 cfi = cf(i)*abs(h2(i))
3377 aux = two*cfi*cfi/
max(ms(j1),em20)
3378 IF(aux>st2(i))THEN
3379 k2(i) =zero
3380 c2(i) =cfi
3381 st2(i)=aux
3382 ENDIF
3383 ENDIF
3384
3385 j1=ix3(i)
3386 IF(ms(j1)==zero)THEN
3387 k3(i) =zero
3388 c3(i) =zero
3389 st3(i)=zero
3390 ELSE
3391 k3(i)=kt(i)*abs(h3(i))
3392 c3(i)=c(i)*abs(h3(i))
3393 cx =four*c3(i)*c3(i)
3394 cy =eight*ms(j1)*k3(i)
3395 aux = sqrt(cx+cy)+two*c3(i)
3396 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3397 cfi = cf(i)*abs(h3(i))
3398 aux = two*cfi*cfi/
max(ms(j1),em20)
3399 IF(aux>st3(i))THEN
3400 k3(i) =zero
3401 c3(i) =cfi
3402 st3(i)=aux
3403 ENDIF
3404 ENDIF
3405
3406 j1=ix4(i)
3407 IF(ms(j1)==zero)THEN
3408 k4(i) =zero
3409 c4(i) =zero
3410 st4(i)=zero
3411 ELSE
3412 k4(i)=kt(i)*abs(h4(i))
3413 c4(i)=c(i)*abs(h4(i))
3414 cx =four*c4(i)*c4(i)
3415 cy =eight*ms(j1)*k4(i)
3416 aux = sqrt(cx+cy)+two*c4(i)
3417 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3418 cfi = cf(i)*abs(h4(i))
3419 aux = two*cfi*cfi/
max(ms(j1),em20)
3420 IF(aux>st4(i))THEN
3421 k4(i) =zero
3422 c4(i) =cfi
3423 st4(i)=aux
3424 ENDIF
3425 ENDIF
3426 ELSE
3427 IF(pene(i) == zero)cycle
3428 ks(i) =stif(i)
3429 cs(i) =zero
3430 stv(i)=ks(i)
3431 k1(i) =stif(i)*abs(h1(i))
3432 c1(i) =zero
3433 st1(i)=k1(i)
3434 k2(i) =stif(i)*abs(h2(i))
3435 c2(i) =zero
3436 st2(i)=k2(i)
3437 k3(i) =stif(i)*abs(h3(i))
3438 c3(i) =zero
3439 st3(i)=k3(i)
3440 k4(i) =stif(i)*abs(h4(i))
3441 c4(i) =zero
3442 st4(i)=k4(i)
3443 ENDIF
3444 ENDDO
3445 ENDIF
3446 ENDIF
3447
3448
3449
3450 itag = 0
3451 DO i=1,jlt
3452 IF(pene(i) == zero)cycle
3453
3454 fx1(i)=fxi(i)*h1(i)
3455 fy1(i)=fyi(i)*h1(i)
3456 fz1(i)=fzi(i)*h1(i)
3457
3458 fx2(i)=fxi(i)*h2(i)
3459 fy2(i)=fyi(i)*h2(i)
3460 fz2(i)=fzi(i)*h2(i)
3461
3462 fx3(i)=fxi(i)*h3(i)
3463 fy3(i)=fyi(i)*h3(i)
3464 fz3(i)=fzi(i)*h3(i)
3465
3466 fx4(i)=fxi(i)*h4(i)
3467 fy4(i)=fyi(i)*h4(i)
3468 fz4(i)=fzi(i)*h4(i)
3469
3470 phi1(i) = zero
3471 phi2(i) = zero
3472 phi3(i) = zero
3473 phi4(i) = zero
3474 ENDDO
3475
3476
3477 IF(idtmins==2.OR.idtmins_int/=0)THEN
3478 dti=dt2t
3479 CALL i24sms2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3480 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3481 3 nin ,noint ,mskyi_sms, iskyi_sms,nsms ,
3482 4 kt ,c ,cf ,dtmini,dti ,
3483 5 irtse ,nsne ,is2se,is2pt ,t2main_sms ,
3484 6 t2fac_sms)
3485 IF(dti<dt2t)THEN
3486 dt2t = dti
3487 neltst = noint
3488 ityptst = 10
3489 ENDIF
3490 ENDIF
3491
3492 IF(idtmins_int/=0)THEN
3493 stif(1:jlt)=zero
3494 END IF
3495
3496 tagip(1:jlt) = 0
3497 IF(ninloadp > 0) THEN
3498 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
3499 pp = loadpinter(k)
3500 ppl = loadp_hyd_inter(pp)
3501 dgapload = dgaploadint(k)
3502 DO i=1,jlt
3503 gapp= gapv(i) + dgapload
3504 IF((pene(i)/=zero).OR.(dist(i) <= gapp.AND.dist(i) >= zero)) THEN
3505 tagip(i) = 1
3506 IF(pene(i)==zero) THEN
3507 ix1(i) = ixx(i,1)
3508 ix2(i) = ixx(i,2)
3509 ix3(i) = ixx(i,3)
3510 ix4(i) = ixx(i,4)
3511 ENDIF
3512 tagncont(ppl,ixx(i,1)) = 1
3513 tagncont(ppl,ixx(i,2)) = 1
3514 tagncont(ppl,ixx(i,3)) = 1
3515 tagncont(ppl,ixx(i,4)) = 1
3516 jg = nsvg(i)
3517 IF(jg>0) THEN
3518
3519 IF (jg <= numnod) THEN
3520 tagncont(ppl,jg) = 1
3521 ELSE
3522 ig = jg - numnod
3523 IF (ig > 0) THEN
3524 IF (is2se(1,ig) > 0) THEN
3525 ie = is2se(1,ig)
3526 ELSEIF(is2se(2,ig) > 0) THEN
3527 ie = is2se(2,ig)
3528 END IF
3529 DO j =1,4
3530 tagncont(ppl,irtse(j,ie)) = 1
3531 END DO
3532 ENDIF
3533 ENDIF
3534 ENDIF
3535 ENDIF
3536 ENDDO
3537 ENDDO
3538
3539 ENDIF
3540
3541
3542
3543 IF (nspmd>1) THEN
3544
3545#include "mic_lockon.inc"
3546 DO i = 1,jlt
3547 nn = nsvg(i)
3548 IF(nn<0)THEN
3549
3550 hh = h1(i)+h2(i)+h3(i)+h4(i)
3551 IF(hh /= zero.OR.tagip(i)==1)THEN
3554 ELSE
3563 ENDIF
3564 ENDIF
3565 ENDIF
3566 ENDDO
3567
3568#include "mic_lockoff.inc"
3569 ENDIF
3570
3571
3572 IF (impl_s ==0.AND.(inacti==-1.OR.igsti==-1)) stif(1:jlt)=
max(stif(1:jlt),stifkt(1
3573 IF(iparit==3)THEN
3574 stop 789
3575 ELSEIF(iparit==0)THEN
3576 CALL i24ass0(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3577 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3578 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3579 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
3580 5 fxi ,fyi ,fzi ,a ,stifn ,nin ,
3581 6 intth ,phi ,fthe ,phi1 , phi2 ,phi3 ,
3582 7 phi4 ,intply ,iply ,inod_pxfem ,
3583 8 irtse ,nsne ,is2se ,is2pt,jtask )
3584
3585 ELSE
3586 CALL i24ass2(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
3587 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
3588 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
3589 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
3590 5 fxi ,fyi ,fzi ,fskyi,isky ,niskyfi,
3591 6 nin ,noint ,intth,phi ,ftheskyi ,phi1,
3592 7 phi2 ,phi3 , phi4 ,itab ,intply,iply ,
3593 8 inod_pxfem,irtse,nsne,is2se,is2pt,tagip )
3594 ENDIF
3595
3596 IF(anim_v(4)+outp_vTHEN
3597 IF (inconv==1) THEN
3598#include "lockon.inc"
3599 DO i=1,jlt
3600 IF(pene(i) == zero)cycle
3601 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
3602 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
3603
3604 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
3605 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
3606 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
3607 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
3608 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
3609 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
3610 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i)
3611 fcont(2,ix4(i)) =fcont(2,ix4(i)) + fy4(i)
3612 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
3613 jg = nsvg(i)
3614 IF(jg>0) THEN
3615
3616 IF (jg >numnod) THEN
3617 ig = jg - numnod
3619 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,fcont ,
3620 + -1 )
3621 ELSE
3622 fcont(1,jg)=fcont(1,jg)- fxi(i)
3623 fcont(2,jg)=fcont(2,jg)- fyi(i)
3624 fcont(3,jg)=fcont(3,jg)- fzi(i)
3625 ENDIF
3626
3627 ELSE
3628
3629
3630
3631
3632
3633 ENDIF
3634 ENDDO
3635#include "lockoff.inc"
3636 END IF
3637 ENDIF
3638
3639 IF(isecin>0.AND.inconv==1)THEN
3640 k0=nstrf(25)
3641 IF(nstrf(1)+nstrf(2)/=0)THEN
3642 DO i=1,nsect
3643 nbinter=nstrf(k0+14)
3644 k1s=k0+30
3645 DO j=1,nbinter
3646 IF(nstrf(k1s)==noint)THEN
3647 IF(isecut/=0)THEN
3648#include "lockon.inc"
3649 DO
3650 IF(pene(k) == zero)cycle
3651
3652
3653 IF(secfcum(4,ix1(k),i)==1.)THEN
3654 secfcum(1,ix1(k),i)=secfcum(1,ix1(k),i)-fx1(k)
3655 secfcum(2,ix1(k),i)=secfcum(2,ix1(k),i)-fy1(k)
3656 secfcum(3,ix1(k),i)=secfcum(3,ix1(k),i)-fz1(k)
3657 ENDIF
3658 IF(secfcum(4,ix2(k),i)==1.)THEN
3659 secfcum(1,ix2(k),i)=secfcum(1,ix2(k),i)-fx2(k)
3660 secfcum(2,ix2(k),i)=secfcum(2,ix2(k),i)-fy2(k)
3661 secfcum(3,ix2(k),i)=secfcum(3,ix2(k),i)-fz2(k)
3662 ENDIF
3663 IF(secfcum(4,ix3(k),i)==1.)THEN
3664 secfcum(1,ix3(k),i)=secfcum(1,ix3(k),i)-fx3(k)
3665 secfcum(2,ix3(k),i)=secfcum(2,ix3(k),i)-fy3(k)
3666 secfcum(3,ix3(k),i)=secfcum(3,ix3(k),i)-fz3(k)
3667 ENDIF
3668 IF(secfcum(4,ix4(k),i)==1.)THEN
3669 secfcum(1,ix4(k),i)=secfcum(1,ix4(k),i)-fx4(k)
3670 secfcum(2,ix4(k),i)=secfcum(2,ix4(k),i)-fy4(k)
3671 secfcum(3,ix4(k),i)=secfcum(3,ix4(k),i)-fz4(k)
3672 ENDIF
3673 jg = nsvg(k)
3674 IF(jg>0) THEN
3675
3676 IF (jg >numnod) THEN
3677 ig = jg - numnod
3678 IF(secfcum(4,jg,i)==1.)THEN
3680 + ig ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3681 + 1 )
3682 ENDIF
3683 ELSE
3684 IF(secfcum(4,jg,i)==1.)THEN
3685 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3686 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
3687 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
3688 ENDIF
3689 ENDIF
3690 ELSE
3691
3692 jg=-jg
3694 IF(secfcum(4,jg,i)==1.)THEN
3696 + jg ,fxi(i) ,fyi(i) ,fzi(i) ,secfcum(1,1,i),
3697 + 1 )
3698 ENDIF
3699 ELSE
3700 IF(secfcum(4,jg,i)==1.)THEN
3701 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
3702 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
3703 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
3704 ENDIF
3705 ENDIF
3706 ENDIF
3707 ENDDO
3708#include "lockoff.inc"
3709 ENDIF
3710
3711 ENDIF
3712 k1s=k1s+1
3713 ENDDO
3714 k0=nstrf(k0+24)
3715 ENDDO
3716 ENDIF
3717 ENDIF
3718
3719 IF(ibag/=0.OR.iadm/=0)THEN
3720 DO i=1,jlt
3721 IF(pene(i) == zero)cycle
3722
3723
3724 jg = nsvg(i)
3725 IF(jg>0) THEN
3726
3727 icontact(jg)=1
3728 ENDIF
3729 icontact(ix1(i))=1
3730 icontact(ix2(i))=1
3731 icontact(ix3(i))=1
3732 icontact(ix4(i))=1
3733 ENDDO
3734 ENDIF
3735
3736 IF(iadm/=0)THEN
3737 END IF
3738 IF(iadm>=2)THEN
3739 END IF
3740
3741 IF(ibcc==0) RETURN
3742
3743 DO i=1,jlt
3744 IF(pene(i) == zero)cycle
3745 ibcm = ibcc / 8
3746 ibcs = ibcc - 8 * ibcm
3747 IF(ibcs>0) THEN
3748 ig=nsvg(i)
3749
3750 IF(ig>0.AND.ig<=numnod) THEN
3751
3752 CALL ibcoff(ibcs,icodt(ig))
3753 ENDIF
3754 ENDIF
3755 IF(ibcm>0) THEN
3756 ig=ix1(i)
3757 CALL ibcoff(ibcm,icodt(ig))
3758 ig=ix2(i)
3759 CALL ibcoff(ibcm,icodt(ig))
3760 ig=ix3(i)
3761 CALL ibcoff(ibcm,icodt(ig))
3762 ig=ix4(i)
3763 CALL ibcoff(ibcm,icodt(ig))
3764 ENDIF
3765 ENDDO
3766
3767 RETURN
integer function bitget(i, n)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i24_save_sub(numnod, mvsiz, nisub, s_addsubm, s_lisubm, s_typsub, nisubmax, i_stok, ie, itypsub, nin, i, nn, nft, addsubm, lisubm, typsub, intarean, intcarea, isensint, fxi, fyi, fzi, fni, dt12, fsavsub1, fsavparit, nrtse, irtse, nsne, is2se, is2pt, nsnr)
subroutine i24sms2(jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, nin, noint, mskyi_sms, iskyi_sms, nsms, kt, c, cf, dtmini, dti, irtse, nsne, is2se, is2pt, t2main_sms, t2fac_sms)
subroutine i24ass2(jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, fskyi, isky, niskyfi, nin, noint, intth, phi, ftheskyi, phi1, phi2, phi3, phi4, itab, intply, iply, inod, irtse, nsne, is2se, is2pt, tagip)
subroutine i24ass0(jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, a, stifn, nin, intth, phi, fthe, phi1, phi2, phi3, phi4, intply, iply, inod, irtse, nsne, is2se, is2pt, jtask)
subroutine i24for1_fic(npt, irtse, nsne, is2se, is2pt, ns, fxi, fyi, fzi, for1, inega)
subroutine i24for1_ficr(npt, irtse, nsne, is2se, is2pt, ns, fxi, fyi, fzi, for1, inega, ni)
subroutine ibcoff(ibc, icodt)
type(real_pointer2), dimension(:), allocatable stif_oldfi
type(real_pointer2), dimension(:), allocatable secnd_frfi
type(int_pointer), dimension(:), allocatable inflg_subsfi
type(real_pointer2), dimension(:), allocatable fnconti
type(real_pointer), dimension(:), allocatable efricgfi
type(int_pointer), dimension(:), allocatable lisubsfi
type(int_pointer), dimension(:), allocatable nsvfi
type(real_pointer), dimension(:), allocatable intareanfi
type(real_pointer), dimension(:), allocatable efricfi
type(int_pointer), dimension(:), allocatable addsubsfi
type(real_pointer2), dimension(:), allocatable ftconti
type(real_pointer2), dimension(:), allocatable pene_oldfi