175
176
177
178 USE output_mod
179 USE timer_mod
185 USE elbufdef_mod
186 USE intbufdef_mod
189 USE multi_fvm_mod
193 USE sensor_mod
194 USE interfaces_mod
196 USE skew_mod
197 use glob_therm_mod
198 use python_funct_mod, only: python_
199 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
200
201
202
203#include "implicit_f.inc"
204
205
206
207#include "comlock.inc"
208#if defined(MUMPS5)
209#include "dmumps_struc.h"
210#endif
211#include "param_c.inc"
212#include "com01_c.inc"
213#include "com04_c.inc"
214#include "com08_c.inc"
215#include "impl1_c.inc"
216#include "impl2_c.inc"
217#include "scr03_c.inc"
218#include "scr06_c.inc"
219#include "scr16_c.inc"
220#include "timeri_c.inc"
221#include "units_c.inc"
222#include "task_c.inc"
223
224
225
226 TYPE (OUTPUT_) , INTENT(INOUT) :: OUTPUT
227 TYPE(TIMER_) :: TIMERS
228 TYPE(PYTHON_) :: PYTHON
229 INTEGER ,INTENT(IN) :: NSENSOR
230 INTEGER ,INTENT(IN) :: SNPC
231 INTEGER ,INTENT(IN) :: STF
232 INTEGER ITASK,ICODE(*), ISKEW(*), ISKWN(LISKN,*),ITABM1(*),
233 . IPART(*),IXS(*),IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*),
234 . IXP(NIXP,*),IXR(NIXR,*), IXTG(NIXTG,*), IXTG1(4,*),
235 . ITAB(*),NPC(*), IBCL(*), IBFV(*),IPARG(NPARG,*),IPARI(NPARI,*),
236 . NPRW(*), NPBY(NNPBY,*), LPBY(*),IADS_F(*),
237 . LRIVET(*), NSTRF(*), LJOINT(*), ICODT(*), ICODR(*), ILINK(*),
238 . LLINK(*),ISKY(*),ADSKY(*),
239 . NNLINK(10,*),LNLINK(*),IGRV(*),IKINE(*),
240 . WEIGHT(*),IFRAME(LISKN,*),IBVEL(NBVELP,*),LBVEL(*),
241 . IACTIV(*),IGEO(*),IPM(*),ICONX(*),NODFT ,NODLT,IT,
242 . WEIGHT_MD(*),DIMFB,STABSEN,TABSENSOR(*),CPTREAC,NODREAC(*)
243 INTEGER LPRW(*), FR_WALL(NSPMD+2,*),FR_ELEM(*),
244 . IAD_ELEM(2,*),NBINTC ,INTLIST(*), IPIV_K(*), NKCOND,
245 . NODGLOB(*), CDDLP(*),LGRAV(*)
246 INTEGER NDDL0,NNZK0,IT_T,MONVOL(*),FR_MV(*),
247 . DIRUL(*),SH4TREE(*), SH3TREE(*),
248 . FR_I2M(*),IAD_I2M(*),FR_RBE3M(*),IAD_RBE3M(*),
249 . ICFIELD(*),LCFIELD(*),COUNT_REMSLV(*),COUNT_REMSLVE(*)
251 . x(3,*) ,d(3,*) ,v(3,*) ,vr(3,*),damp(*),
252 . ms(*) ,in(*) ,pm(npropm,*),geo(npropg,*),
253 . bufmat(*) ,tf(*) ,forc(*) ,vel(*),fsav(nthvki,*) ,elbuf(*) ,
254 . rwbuf(nrwlp,*),rwsav(*),rby(nrby,*),
255 . rivet(*),wa(*), a(3,*) ,ar(3,*),partsav(*) ,
256 . stifn(*) ,stifr(*),fsky(*),fskyi(*),dr(3,*),
257 . eani(*),agrv(*), thke(*),fr_wave(*),parts0(*),bufgeo(*),
258 . xframe(nxframe,*),w16(*),fbvel(*),fskym(*),bufsf(*),
259 . fopt(6,*),fsavd(nthvki,*), fac_k(*), diag_sms(*),
260 . cfield(*),forneqs(*),maxdgap(ninter),fthreac(6,*)
261 INTEGER NUM_IMP(*),NS_IMP(*),NE_IMP(*),IND_IMP(*),NINT7
262 INTEGER NEWFRONT(*),ISENDTO(*),IRECVFROM(*),IMSCH ,
263 . I2MSCH ,ISIZXV,ILENXV ,ISLEN7 ,IRLEN7 ,ISLEN11,IRLEN11,
264 . ISLEN17,IRLEN17,IRLEN7T,ISLEN7T,
265 . IRLEN20,ISLEN20,IRLEN20T,ISLEN20T,IRLEN20E,ISLEN20E,
266 . KINET(*),NUM_IMP1(*),IRBE3(*),LRBE3(*),IRBE2(*),LRBE2(*)
267 my_real,
INTENT(IN) :: dpl0cld(6,nconld),vel0cld(6,nconld)
268 my_real dt2prev,volmon(*) ,temp(*), waint(*),frbe3(*)
269 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB, ELBUF_IMP
270 DOUBLE PRECISION FRWL6(*), XDP(3,*)
271 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
272
273 TYPE(PRGRAPH) :: GRAPHE(*)
274
275#ifdef MUMPS5
276 TYPE(DMUMPS_STRUC) MUMPS_PAR
277#else
278
279 INTEGER MUMPS_PAR
280#endif
281 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*), INTBUF_TAB_C
282 TYPE (STACK_PLY) :: STACK
283 TYPE(H3D_DATABASE) :: H3D_DATA
284 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
285
286 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
287 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
288 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
289 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
290 TYPE (GROUP_) , DIMENSION(NSURF) :: IGRSURF
291 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
292 TYPE (IMPBUF_STRUCT_) ,TARGET :: IMPBUF_TAB
293 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
294 TYPE (DRAPEG_) :: DRAPEG
295 TYPE (INTERFACES_) ,INTENT(IN) :: INTERFACES
296 TYPE (TH_SURF_) , INTENT(INOUT) :: TH_SURF
297 TYPE(SKEW_),INTENT(INOUT) :: SKEWS
298 type (glob_therm_) , INTENT(INOUT) :: GLOB_THERM
299 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT, WFEXT_MD
300
301
302
303
304
305
306
307
308#if defined(MUMPS5)
309
310
311
312 INTEGER NNMAX,NKMAX,N_IMPN,N_IMPM,LNSS,LNSS2,NDT,NDS,NT_RW
313 INTEGER I,J,NTMP,L1,L2,L3,NNDL,INPRINT,ISTOP,LI10,LI11,
314 . LI1,LI2,LI3,LI4,LI5,LI6,LI7,LI8,LI9,LIF,IC,ISETP,
315 . LI12,NDDL_INI0,LI13,LI14,LI15,LNSS3,LNSB2,LNSRB2
316 INTEGER, DIMENSION(:),ALLOCATABLE :: IADI0,JDII0
317
318 INTEGER, DIMENSION(:),ALLOCATABLE :: NSS,ISS,NSS2,,NSS3,ISS3
319 INTEGER, DIMENSION(:),ALLOCATABLE :: NSB2,ISB2,IAINT2
320
321 INTEGER ,IFDIS,NODFTSK ,NODLTSK,N1,N2,N3
322
323 INTEGER LBAND,NCL_MAX,IRFLAG,IPRINT0,IPRJ_S
324
325 INTEGER IBID,IFIF,F_DDL,L_DDL,NSPC_OLD,NSPC,NFXV_G
326
327 my_real rbid,efac,lbb(nddl0),dummy_fext(3,1)
328 my_real tfexc,tmp,tmp1,tmp2,r2,bfac,faci,r02,gap,bid,we_imp
329 my_real,
DIMENSION(:),
ALLOCATABLE :: diag_i0,lt_i0
330
331 INTEGER, POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
332 INTEGER, DIMENSION(:) ,POINTER :: IADK,JDIK,IADM,JDIM
333 INTEGER, DIMENSION(:) ,POINTER :: IDDL,NDOF,INLOC,LSIZE,I_IMP,IKC,
334 . IRBYAC,NSC,IINT2,NKUD,IMONV,
335 . IKINW,W_DDL,IKUDN,NDOFI,IDDLI,IKUD
336 my_real,
DIMENSION(:) ,
POINTER :: diag_k,lt_k,diag_m,lt_m,lb,
337 . lb0,bkud,d_imp,elbuf_c,bufmat_c,
338 . dr_imp,x_c,dd,ddr,x_a,r_imp
339 my_real,
DIMENSION(:) ,
POINTER :: fext,dg,dgr,dg0,dgr0,bufin_c,ac,acr
340
341 character*1 anew_stif
342
343
344 anew_stif = ' '
345 dummy_fext = zero
346 rbid = zero
347
348
349
350
351
352 nddl => impbuf_tab%NDDL
353 nnzk => impbuf_tab%NNZK
354 nrbyac => impbuf_tab%NRBYAC
355 nint2 => impbuf_tab%NINT2
356 nmc => impbuf_tab%NMC
357 nmc2 => impbuf_tab%NMC2
358 nmonv => impbuf_tab%NMONV
359 iadk => impbuf_tab%IADK
360 jdik => impbuf_tab%JDIK
361 iadm => impbuf_tab%IADM
362 jdim => impbuf_tab%JDIM
363 iddl => impbuf_tab%IDDL
364 ndof => impbuf_tab%NDOF
365 inloc => impbuf_tab%INLOC
366 lsize => impbuf_tab%LSIZE
367 i_imp => impbuf_tab%I_IMP
368 irbyac => impbuf_tab%IRBYAC
369 nsc => impbuf_tab%NSC
370 iint2 => impbuf_tab%IINT2
371 nkud => impbuf_tab%NKUD
372 imonv => impbuf_tab%IMONV
373 ikinw => impbuf_tab%IKINW
374 ikc => impbuf_tab%IKC
375 w_ddl => impbuf_tab%W_DDL
376 ikud => impbuf_tab%IKUD
377 ndofi=> impbuf_tab%NDOFI
378 iddli=> impbuf_tab%IDDLI
379
380 diag_k =>impbuf_tab%DIAG_K
381 lt_k =>impbuf_tab%LT_K
382 diag_m =>impbuf_tab%DIAG_M
383 lt_m =>impbuf_tab%LT_M
384 lb =>impbuf_tab%LB
385 lb0 =>impbuf_tab%LB0
386 bkud =>impbuf_tab%BKUD
387 d_imp =>impbuf_tab%D_IMP
388 dr_imp =>impbuf_tab%DR_IMP
389 elbuf_c =>impbuf_tab%ELBUF_C
390 bufmat_c=>impbuf_tab%BUFMAT_C
391 x_c =>impbuf_tab%X_C
392 x_a =>impbuf_tab%X_A
393 dd =>impbuf_tab%DD
394 ddr =>impbuf_tab%DDR
395 fext =>impbuf_tab%FEXT
396 dg =>impbuf_tab%DG
397 dgr =>impbuf_tab%DGR
398 dg0 =>impbuf_tab%DG0
399 dgr0 =>impbuf_tab%DGR0
400 ac=>impbuf_tab%AC
401 acr=>impbuf_tab%ACR
402 r_imp => impbuf_tab%R_IMP
403 ALLOCATE(iaint2(nint2))
404
405
406 ndt=nexp
407 IF (i_imp(4)>0) THEN
409 1 x ,v ,vr ,a ,ar )
410
411 i_imp(4)=i_imp(4)-1
412 IF (imconv==1) imconv=2
413 RETURN
414 ENDIF
415
416
417
418 iprint0=0
419 IF (ispmd==0) THEN
420 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) iprint0=1
421 IF (iline/=1) inprint=nprint
422 ELSE
423 inprint=0
424 ENDIF
425
426 IF (irref>0.AND.imconv==1.AND.iline/=1) THEN
427 irflag=irref
428 ELSE
429 irflag=0
430 ENDIF
431
432 isetp=isetk
434 nddli_g=0
435 IF (nint7==0) THEN
436 DO i=1,numnod
437 ndofi(i)=0
438 ENDDO
439 ENDIF
440 istop=0
441 IF (imconv==2) imconv=1
442 nndl = 3*numnod
443
447
448 we_imp = wfext
449 IF (imconv==1) THEN
450 iter_nl=0
451 ELSE
452 iter_nl=it+1
453 END IF
454 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) THEN
455 r_imp(19)=tt-dt2
456
458 END IF
459
460
462 nfxv_g = nfxvel
464
465 IF (ilintf>0) THEN
466 ALLOCATE(xi_c(nndl))
467 IF (ncycle==1) THEN
469 . 1 ,elbuf,elbuf_c,bufmat ,bufmat_c,
470 . fsav ,volmon ,partsav ,intbuf_tab ,
471 . intbuf_tab_c,ipari ,islen7 ,irlen7 ,
472 . islen11,irlen11,islen17 ,irlen17,irlen7t ,
473 . islen7t,irlen20,islen20 ,irlen20t,islen20t,
474 . irlen20e,islen20e,newfront,elbuf_tab,elbuf_imp,
475 . iparg )
477 CALL imp_setb(a ,ar ,iddl ,ndof ,lb0 )
479 i_imp(2)=lprint
480 lprint = 0
482 ELSE
484 . 2 ,elbuf,elbuf_c,bufmat ,bufmat_c,
485 . fsav ,volmon ,partsav ,intbuf_tab ,
486 . intbuf_tab_c,ipari ,islen7 ,irlen7 ,
487 . islen11,irlen11,islen17 ,irlen17,irlen7t ,
488 . islen7t,irlen20,islen20 ,irlen20t,islen20t,
489 . irlen20e,islen20e,newfront,elbuf_tab,elbuf_imp,
490 . iparg )
494 CALL imp_b2a(a ,ar ,iddl ,ndof ,lb0 )
495 IF (ncycle==ilintf) THEN
496 lprint = i_imp(2)
497 ELSE
498 lprint = 0
499 ENDIF
500
502 ENDIF
503 ENDIF
504
505 IF (imconv==1 ) THEN
506 r_imp(16)=zero
507
508
509 IF (ncycle>1.AND.iline/=1) THEN
510
511
512
513
514
516 1 ddr ,i_imp(5),i_imp(7))
517 ENDIF
519 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
520
522 IF (iroddl/=0)
CALL zeror_hp(acr,numnod)
523
524 IF (isigini==1.AND.ncycle==1) THEN
525 CALL imp_setb(a ,ar ,iddl ,ndof ,lb0 )
526 ENDIF
527
528 IF (ncycle==1.AND.idyna>0)
529 .
CALL dyna_ina(ibcl ,forc ,snpc ,npc ,tf ,a ,
530 2 v ,x ,skews ,ar ,vr ,
531 3 sensor_tab ,weight ,tfexc ,iads_f ,
532 4 fsky ,igrv ,agrv ,ms ,in ,
533 5 lgrav ,itask ,nrbyac ,irbyac ,npby ,
534 6 rby ,fr_elem ,iad_elem ,nddl0 ,nnzk0 ,
535 7 i_imp(5) ,h3d_data ,cptreac ,fthreac ,nodreac,
536 8 nsensor ,th_surf ,dpl0cld ,
537 9 vel0cld ,d ,dr ,numnod ,nsurf ,
538 a nfunct ,nconld ,ngrav ,ninvel ,stf ,numskw,
539 b wfext,python)
540
541
542
543
544
545 ncl_max=0
546 IF(nconld/=0) THEN
548
549 CALL force_imp( ibcl ,forc ,snpc ,npc ,tf ,
550 2 ac ,v ,x ,skews ,
551 3 acr ,vr ,nsensor ,sensor_tab ,tfexc ,
552 4 iads_f ,fsky ,dummy_fext ,h3d_data ,cptreac ,
553 5 fthreac ,nodreac ,th_surf ,
554 6 dpl0cld ,vel0cld ,d ,dr ,nconld ,
555 7 numnod ,nfunct ,stf ,wfext)
556
557 IF (nspmd>1) THEN
558 DO i=iad_elem(1,1),iad_elem(1,nspmd+1)-1
559 j = fr_elem(i)
560 n1 = 3*(j-1)+1
561 n2 = 3*(j-1)+2
562 n3 = 3*(j-1)+3
563 tmp = abs(ac(n1))+abs(ac(n2))+abs(ac(n3))
564 IF (iroddl/=0) tmp = tmp + abs(acr(n1))+abs(acr(n2))+abs(acr(n3))
565 IF (tmp>zero) ncl_max = ncl_max + 1
566 ENDDO
567 ENDIF
568
570 ENDIF
571
572 IF (nspmd>1) THEN
574 IF (ncl_max>0) THEN
575 lband = iad_elem(1,nspmd+1)-iad_elem(1,1)
576 IF (iroddl/=0) THEN
577 ntmp = 6
578 ELSE
579 ntmp = 3
580 ENDIF
581 CALL spmd_sumf_a(ac,acr,iad_elem,fr_elem,ntmp,lband)
582 ENDIF
583 ENDIF
584
585 IF(ngrav/=0) THEN
588 2 v ,x ,skews%SKEW ,ms,tfexc,
589 3 nsensor,sensor_tab,weight,
590 4 lgrav ,itask,
591 5 nrbyac,irbyac,npby ,rby, python)
593 ENDIF
594
595 IF(nloadc/=0) THEN
598 2 v ,x ,xframe ,ms,tfexc,
599 3 nsensor,sensor_tab,weight,iframe,
600 4 lcfield ,itask,
601 5 nrbyac,irbyac,npby ,rby,iskew,python )
603 ENDIF
604
605
606 wfext = we_imp
607
608 ENDIF
609
610 IF(nfxvel/=0.AND.(imconv==1.OR.imconv==3)) THEN
612 CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
613 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
614 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
615 3 x ,dirul ,ndof ,a ,ar )
617 ENDIF
618
619
620 nt_rw=0
621 IF (nrwall>0) THEN
623 DO i=1,nddl0
624 IF (ikc(i)==3.OR.ikc(i)==10) ikc(i)=0
625 ENDDO
626 IF (imconv==1) THEN
627 DO i=1,nddl0
628 IF (ikc(i)==4.OR.ikc(i)==11) ikc(i)=0
629 ENDDO
630 ENDIF
631
632 IF (ismdisp > 0 .AND. iline == 0) THEN
634 1 x_a ,d_imp ,v ,rwbuf ,lprw ,
635 2 nprw ,ms ,fsav(1,ninter+1),fr_wall ,
636 3 fopt ,rwsav ,weight ,fsavd(1,ninter+1),
637 4 nt_rw ,iddl ,ikc ,imconv ,ndof , frwl6,
638 5 weight_md ,dimfb ,fbsav6 ,stabsen ,tabsensor, wfext, wfext_md)
639 ELSE
641 1 x ,d_imp ,v ,rwbuf ,lprw ,
642 2 nprw ,ms ,fsav(1,ninter+1),fr_wall ,
643 3 fopt ,rwsav ,weight ,fsavd(1,ninter+1),
644 4 nt_rw ,iddl ,ikc ,imconv ,ndof , frwl6,
645 5 weight_md ,dimfb ,fbsav6 ,stabsen ,tabsensor, wfext, wfext_md)
646 ENDIF
647
648 IF(nt_rw>0) THEN
649 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
650 ENDIF
652 ENDIF
653
654 ifdis=nt_rw+nfxv_g
655 IF(ifdis>0.AND.imconv==1) THEN
656 IF (ncycle>1.AND.iline/=1)
657
658 .
CALL fv_dd0(iddl ,ikc ,ndof ,dd ,ddr ,d_imp)
659 IF(nt_rw>0) THEN
660 DO i=1,nddl0
661 IF (ikc(i)==3) ikc(i)=4
662
663 IF (ikc(i)==10) ikc(i)=11
664 ENDDO
665 ENDIF
666 ENDIF
667
668 irwall = nt_rw
670
671 IF(irwall>0.AND.imconv>=0) THEN
672 IF(ispmd==0) THEN
673 WRITE(iout,*)' *--------- RIGID WALL IMPACT---------*'
674 WRITE(istdo,*)' *--------- RIGID WALL IMPACT---------*'
675 ENDIF
676 isetk = 1
677 ENDIF
678
679
680
681
682
683 CALL imp_setb(ac ,acr ,iddl ,ndof ,lb )
684
685
686
687
688
689
690 IF (isolv==5.OR.isolv==6.AND.imconv>=0) THEN
691 IF (idsc==0) THEN
692
693 IF (ipupd==0.AND.i_imp(2)==0.AND.it==0) THEN
695 ENDIF
696
697 IF(irwall > 0 ) idsc = 1
698 ENDIF
699 ELSE
701 END IF
702
703
704
705
706
707
708 IF (isetk ==1 ) THEN
709 IF (imon>0 .AND. itask ==0)
CALL startime(timers,31)
710 l1 = 1+nixs*numels
711 l2 = l1+6*numels10
712 l3 = l2+12*numels20
713
714
715
716 nddl = nddl0
717 nnzk = nnzk0
718 nnmax=lsize(9)
719 nkmax=lsize(10)
720 nmc2=lsize(11)
721 CALL zero1(diag_k,nddl)
722 CALL zero1(lt_k,nnzk)
723 li1 =1
724 li2 = li1+lsize(4)
725 li3 = li2+lsize(5)
726 li4 = li3+lsize(1)
727 li5 = li4+lsize(3)
728 li6 = li5+lsize(7)
729 li7 = li6+lsize(2)
730 li8 = li7+lsize(6)
731 li9 = li8+nint2
732 li10 = li9+lsize(8)
733
734 li11 = li10+(lsize(8)-lcokm)*lsize(9)
735 li12 = li11+lcokm*lsize(10)
736 li13 = li12+4*lsize(11)
737 li14 = li13+lsize(14)
738 li15 = li14+lsize(15)
739 lif = li15+lsize(16)
740
741 IF (iline/=1) THEN
742 ntmp=0
743 IF (i_imp(11)==1) THEN
744 ntmp=1
745 i_imp(11)=-1
746 ENDIF
748 1 itab ,nrbyac ,irbyac ,nsc ,ikinw(li1),
749 2 nmc ,ikinw(li2),ikinw(li3),ikinw(li4),nint2 ,
750 3 iint2 ,ipari ,intbuf_tab,ikinw(li8),ikinw(li5),
751 4 ikinw(li6),ikinw(li7),iparg ,elbuf ,elbuf_tab ,
752 5 ixs ,ixq ,ixc ,ixt ,ixp ,
753 6 ixr ,ixtg ,ixtg1 ,ixs(l1) ,ixs(l2) ,
754 7 ixs(l3) ,iddl ,ndof ,iadk ,
755 8 jdik ,nddl ,nnzk ,nnmax ,lsize(8) ,
756 9 inloc ,nkmax ,ikinw(li9),ikinw(li10),ikinw(li11),
757 a nmc2 ,ikinw(li12),ntmp ,lsize(12) ,lsize(13) ,
758 b fr_elem ,iad_elem ,ipm ,igeo ,irbe3 ,
759 c lrbe3 ,ikinw(li13),fr_i2m ,iad_i2m ,fr_rbe3m ,
760 d iad_rbe3m ,irbe2 ,lrbe2 ,ikinw(li14),ikinw(li15))
761
762
763
764 ENDIF
765
766
767
768
769
770
771
773 1 pm ,geo ,ipm ,igeo ,elbuf ,
774 2 ixs ,ixq ,ixc ,ixt ,ixp ,
775 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
776 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
777 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
778 6 rby ,skews%SKEW ,x ,
779 7 wa ,iddl ,ndof ,diag_k ,lt_k ,
780 8 iadk ,jdik ,ikg ,ibid ,itask ,
781 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
782
783
784
785
786 nddl_l = nddl
787
788
789
790 IF (idyna>0.AND.idy_damp>0) THEN
791 CALL dyna_cpk0(nddl ,nnzk ,iadk ,jdik ,diag_k ,
792 . lt_k )
793 END IF
794
795 IF (ncycle==1.AND.imconv==1.AND.i_imp(5)==0
796 . .AND.idyna>0.AND.ninvel>0) THEN
797 CALL imp_dykv0(nodft ,nodlt ,iddl ,ndof ,ikc ,
798 . diag_k ,iadk ,jdik ,lt_k ,weight ,
799 1 rby ,x ,skews%SKEW ,lpby ,npby ,
800 2 nrbyac ,irbyac ,nint2 ,iint2 ,ipari ,
801 3 intbuf_tab ,irbe3 ,lrbe3 ,frbe3 ,
802 4 irbe2 ,lrbe2 ,v ,vr ,nddl0 ,
803 5 fr_elem,iad_elem,ms ,in )
804 END IF
805 IF (idyna>0.OR.iqstat>0)
806 .
CALL imp_dynam(nodft ,nodlt ,iddl ,ndof ,diag_k ,
807 . ms ,in ,hht_a ,weight ,iadk ,
808 . lt_k )
809
810 IF (ikpres>0.AND.nbuck==0)
811 1
CALL imp_kpres(ibcl ,forc ,npc ,tf ,x ,
812 2 skews%SKEW ,nsensor,sensor_tab,weight,iads_f,
813 3 iddl ,ndof ,iadk ,jdik ,diag_k,
814 4 lt_k )
815 IF(iautspc>0) THEN
816 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) THEN
817 ELSE
820 END IF
821 ENDIF
823 1 icodt ,icodr ,iskew ,ibfv ,npc ,
824 2 tf ,vel ,xframe ,
825 3 rby ,x ,skews%SKEW ,lpby ,npby ,
826 4 itab ,weight ,ms ,in ,nrbyac ,
827 5 irbyac ,nsc ,ikinw(li1),nmc ,ikinw(li2),
828 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
829 7 ikinw(li5),ikinw(li6),ikinw(li7),ipari ,intbuf_tab,
830 8 nddl ,nnzk ,iadk ,jdik ,
831 9 diag_k ,lt_k ,ndof ,iddl ,ikc ,
832 a d_imp ,lb ,nkud ,ikud ,bkud ,
833 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
834 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
835 d lrbe2 ,ikinw(li14),ikinw(li15))
836
837 anew_stif = 'Y'
838
839 IF (nspmd>1) THEN
841 1 iadk ,jdik ,ndof ,ikc ,iddl ,
842 2 inloc ,fr_elem ,iad_elem ,nddl )
843
844 CALL weightddl(iddl ,ndof ,ikc ,weight ,w_ddl ,inloc )
845 ENDIF
846
847 IF(iautspc>0) THEN
848 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) THEN
849 ELSE
852 IF (nspc/=nspc_old) THEN
853 imconv=-2
854 IF (ispmd==0) THEN
855 WRITE(iout,1012)nspc_old,nspc
856 WRITE(istdo,1012)nspc_old,nspc
857 ENDIF
859 ENDIF
860 END IF
861 ENDIF
862
863 IF (n_pat>1) THEN
864 CALL fil_span1(nrbyac,irbyac,npby,iddl,nddl,ikc,ndof,inloc)
865 ENDIF
866
867 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) THEN
868
869 nddl_g = nddl
870 CALL pr_infok(nddl0,nnzk0,nddl,nnzk,
max(nnmax,nkmax))
871
872 IF (iprec>4) THEN
873 CALL k_band(nddl,iadk,jdik,ibid)
874 maxb =
min(maxb,ibid)
875 IF (maxb>10000) THEN
876 CALL m_lnz(nddl,iadk,jdik,maxb,max_l)
877 ENDIF
878 ENDIF
879
880 ntmp = (tstop-tt)/dt2
881 IF (ntmp>=2) THEN
882 idsgap = 1
883 ELSE
884 idsgap = 0
885 ENDIF
886
887 IF (isolv==7) THEN
889 END IF
890
891 IF (nspmd == 1) THEN
892 DO i=1,nddl
893 w_ddl(i)=1
894 ENDDO
895 ENDIF
896 IF (imconv/=-2)
CALL ini_k0h(nddl,nnzk,nnzk,iadk,jdik)
897
898 ENDIF
899
900 IF (nint7<=0.AND.imconv==1.AND.nspmd==1)
901 .
CALL imp_check(itab ,nddl ,iddl ,diag_k ,ndof ,
902 . ikc ,inloc ,nddl0 )
903
904 IF (imon>0)
CALL stoptime(timers,31)
905
906 IF (isolv==4.OR.isolv==6) THEN
908 ENDIF
909
910
911
912
913
914 IF (imconv==-2.AND.iline==0) THEN
915 IF (nint7 > 0) nint7=0
916 GOTO 100
917 END IF
918 ENDIF
919
920
921
922 IF (iqstat>0) THEN
923 CALL qstat_ini(nddl ,inloc ,iddl ,ndof ,ikc ,
924 . ms ,in )
925 ENDIF
926
927
928
929 gap=ep20
930 IF (nint7>0) THEN
931 l1=lsize(1)
932 l2=lsize(2)
933 lnss2=0
934 lnss=0
935 IF (imon>0)
CALL startime(timers,31)
936 CALL sav_inttd(nint7,num_imp,ns_imp(1+nt_imp5),
937 1 ne_imp(1+nt_imp5),ind_imp,num_imp1)
938
940 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
941 2 ind_imp ,ndof ,nint7 )
942
944 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
945 2 npby ,lpby ,itab ,nrbyac ,irbyac ,
946 3 lnss ,nint2 ,iint2 ,iaint2 ,lnss2 ,
948 5 n_impm ,nnmax ,nkmax ,ndof ,
nsrem ,
949 6 irbe3 ,lrbe3 ,lnss3 ,irbe2 ,lrbe2 ,
950 7 lnsb2 ,lnsrb2 ,ind_imp )
951 ALLOCATE(iadi0(
nddli+1))
953 ALLOCATE(jdii0(
nnzi))
954 ALLOCATE(nss2(l2),nss3(nrbe3),nsb2(lnsrb2))
955 nsb2=0
956 ALLOCATE(iss2(lnss2),iss3(lnss3),isb2(lnsb2))
957 ALLOCATE(nss(l1))
958 ALLOCATE(iss(lnss))
959
960 DO i=1,l1
961 nss(i)=0
962 ENDDO
963
965 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
966 2 npby ,lpby ,itab ,nrbyac ,irbyac ,
967 3 nss ,iss ,nint2 ,iint2 ,nss2 ,
969 5 iddli ,ndofi ,n_impn ,
itok ,iddl ,
970 6 nnmax ,nkmax ,n_impm ,ndof ,iaint2 ,
971 7 irbe3 ,lrbe3 ,nss3 ,iss3 ,irbe2 ,
972 8 lrbe2 ,nsb2 ,isb2 ,ind_imp )
973 ALLOCATE(diag_i0(
nddli))
974 ALLOCATE(lt_i0(
nnzi))
977
980 1 nbintc,intlist)
981 IF (intp_c>0)
983 2 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
984 3 iddli ,ikc ,ndof ,
nsrem ,ind_imp )
985 ENDIF
986
988
989 IF (ilintf>0) THEN
991 1 icodt ,icodr ,iskew ,ibfv ,npc ,
992 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
993 3 rby ,xi_c ,skews%SKEW ,lpby ,npby ,
994 4 itab ,weight ,ms ,in ,nrbyac ,
995 5 irbyac ,nss ,iss ,ipari ,intbuf_tab,
996 6 nint2 ,iint2 ,iaint2 ,nss2 ,
998 8 diag_i0 ,lt_i0 ,iddli ,nddl0 ,iadk ,
999 9 jdik ,ikc ,diag_k ,lt_k ,iddl ,
1000 a num_imp ,ns_imp ,ne_imp ,ind_imp ,ndofi ,
1001 b
itok ,d_imp ,lb ,gap ,dirul ,
1002 c nt_rw ,num_imp1 ,irbe3 ,lrbe3 ,frbe3 ,
1003 d nss3 ,iss3 ,irbe2 ,lrbe2 ,nsb2 ,
1004 e isb2 )
1005 ELSEIF (ismdisp>0.AND.iline==0) THEN
1007 1 icodt ,icodr ,iskew ,ibfv ,npc ,
1008 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
1009 3 rby ,x_a ,skews%SKEW ,lpby ,npby ,
1010 4 itab ,weight ,ms ,in ,nrbyac ,
1011 5 irbyac ,nss ,iss ,ipari ,intbuf_tab,
1012 6 nint2 ,iint2 ,iaint2 ,nss2 ,
1014 8 diag_i0 ,lt_i0 ,iddli ,nddl0 ,iadk ,
1015 9 jdik ,ikc ,diag_k ,lt_k ,iddl ,
1016 a num_imp ,ns_imp ,ne_imp ,ind_imp ,ndofi ,
1017 b
itok ,d_imp ,lb ,gap ,dirul ,
1018 c nt_rw ,num_imp1 ,irbe3 ,lrbe3 ,frbe3 ,
1019 d nss3 ,iss3 ,irbe2 ,lrbe2 ,nsb2 ,
1020 e isb2 )
1021 ELSE
1023 1 icodt ,icodr ,iskew ,ibfv ,npc ,
1024 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
1025 3 rby ,x ,skews%SKEW ,lpby ,npby ,
1026 4 itab ,weight ,ms ,in ,nrbyac ,
1027 5 irbyac ,nss ,iss ,ipari ,intbuf_tab,
1028 6 nint2 ,iint2 ,iaint2 ,nss2 ,
1030 8 diag_i0 ,lt_i0 ,iddli ,nddl0 ,iadk ,
1031 9 jdik ,ikc ,diag_k ,lt_k ,iddl ,
1032 a num_imp ,ns_imp ,ne_imp ,ind_imp ,ndofi ,
1033 b
itok ,d_imp ,lb ,gap ,dirul ,
1034 c nt_rw ,num_imp1 ,irbe3 ,lrbe3 ,frbe3 ,
1035 d nss3 ,iss3 ,irbe2 ,lrbe2 ,nsb2 ,
1036 e isb2 )
1037 ENDIF
1038 IF (imon>0)
CALL stoptime(timers,31)
1039
1040 DEALLOCATE(nss2,nss3,nsb2)
1041 DEALLOCATE(iss2,iss3,isb2)
1042 DEALLOCATE(nss)
1043 DEALLOCATE(iss)
1044
1046
1047 ifif = 0
1048 IF (ilintf>0) THEN
1052 ENDIF
1053 IF (ifif>0) THEN
1063 ALLOCATE(diag_i(
nddli))
1064 ALLOCATE(lt_i(
nnzi))
1067 ELSE
1068
1073 ALLOCATE(diag_i(
nddli))
1074 ALLOCATE(lt_i(
nnzi))
1077
1078 ENDIF
1079 DEALLOCATE(iadi0)
1080 DEALLOCATE(jdii0)
1081 DEALLOCATE(diag_i0)
1082 DEALLOCATE(lt_i0)
1083
1084 IF (isolv==4.OR.isolv==6) THEN
1086 ENDIF
1087
1088 ELSE
1091 DEALLOCATE(iadi0)
1092 DEALLOCATE(jdii0)
1093 ALLOCATE(diag_i(1))
1094 ALLOCATE(lt_i(1))
1095 DEALLOCATE(diag_i0)
1096 DEALLOCATE(lt_i0)
1097 ENDIF
1098
1099
1100 IF ((nspmd==1.OR.nbintc==0).AND.imconv>=0) i_imp(13) =
nddli
1101 IF ((nspmd==1.OR.nbintc==0).AND.imconv>=0.AND.
1102 . (lprint/=0.OR.nprint/=0)) THEN
1103 WRITE(iout,1006)
1104 WRITE(istdo,1006)
1107
1108
1109 ENDIF
1110 ENDIF
1111
1112 IF (nfxvel/=0.AND.imconv==1) THEN
1113 CALL fv_imp1(nkud ,ikud ,bkud ,lb )
1114 CALL fvbc_impl1(ibfv ,skews%SKEW ,xframe ,dirul ,iddl ,
1115 1 ikc ,ndof ,d_imp ,dr_imp,icodt ,
1116 3 icodr ,iskew )
1117 ENDIF
1118
1119
1120 IF (idtc==3.AND.imconv==1.AND.
1121 . i_imp(5)==0) THEN
1122 CALL get_fext(nddl0 ,nddl ,iddl ,ndof ,ikc ,
1123 1 inloc ,lb ,fext ,ac ,acr )
1124 r_imp(13) = tstop-tt+dt2
1125
1126 END IF
1127 IF (idyna>0.AND.idy_damp>0) THEN
1128 CALL imp_dykv(nodft ,nodlt ,iddl ,ndof ,ikc ,
1129 . diag_k ,iadk ,jdik ,lt_k ,weight ,
1130 1 rby ,x ,skews%SKEW ,lpby ,npby ,
1131 2 nrbyac ,irbyac ,nint2 ,iint2 ,ipari ,
1132 3 intbuf_tab ,irbe3 ,lrbe3 ,frbe3 ,
1133 4 irbe2 ,lrbe2 ,v ,vr ,nddl0 ,
1134 5 fr_elem,iad_elem,ms ,in )
1135 END IF
1136
1137
1138 CALL upd_rhs(icodt ,icodr ,iskew ,ibfv ,xframe ,
1139 1 rby ,x ,skews%SKEW ,lpby ,npby ,
1140 2 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
1141 3 intbuf_tab ,ndof ,iddl ,ikc ,
1142 4 nddl0 ,lb ,isetk ,inloc ,dirul ,
1143 5 a ,ar ,ac ,acr ,nt_rw ,
1144 6 irflag,w_ddl ,nddl ,r_imp(1),idyna ,
1145 7 v ,vr ,ms ,in ,irbe3 ,
1146 8 lrbe3 ,frbe3 ,weight ,irbe2 ,lrbe2 )
1147
1148 IF (nspmd>1) THEN
1151 IF (nbintc>0.) THEN
1153 IF (
iconta> 0.AND.gap>zero)
THEN
1154
1156 IF (ilintf>0) THEN
1158 1 num_imp ,ns_imp ,ne_imp ,ipari ,intbuf_tab,
1159 2 npby ,lpby ,itab ,nrbyac ,
1160 3 irbyac ,nint2 ,iint2 ,iddl ,ikc ,
1161 4 ndof ,inloc ,
nsrem ,
nsl ,nbintc ,
1162 5 intlist ,xi_c ,ibfv ,dirul ,skews%SKEW ,
1163 6 xframe ,iskew ,icodt ,r_imp(16) ,d_imp ,
1164 7 lb ,ifdis ,nddl ,dr_imp ,iddli ,
1165 8 irbe3 ,lrbe3 ,frbe3 ,irbe2 ,lrbe2 ,
1166 9 dd ,ddr ,a ,ar ,ac ,
1167 a acr ,ms ,v ,nddl0 ,r_imp(1) ,
1168 b rby ,icodr ,nt_rw ,w_ddl ,weight ,
1169 c irflag )
1170 ELSEIF (ismdisp>0.AND.iline==0) THEN
1172 1 num_imp ,ns_imp ,ne_imp ,ipari ,intbuf_tab,
1173 2 npby ,lpby ,itab ,nrbyac ,
1174 3 irbyac ,nint2 ,iint2 ,iddl ,ikc ,
1175 4 ndof ,inloc ,
nsrem ,
nsl ,nbintc ,
1176 5 intlist ,x_a ,ibfv ,dirul ,skews%SKEW ,
1177 6 xframe ,iskew ,icodt ,r_imp(16) ,d_imp ,
1178 7 lb ,ifdis ,nddl ,dr_imp ,iddli ,
1179 8 irbe3 ,lrbe3 ,frbe3 ,irbe2 ,lrbe2 ,
1180 9 dd ,ddr ,a ,ar ,ac ,
1181 a acr ,ms ,v ,nddl0 ,r_imp(1) ,
1182 b rby ,icodr ,nt_rw ,w_ddl ,weight ,
1183 c irflag )
1184 ELSE
1186 1 num_imp ,ns_imp ,ne_imp ,ipari ,intbuf_tab,
1187 2 npby ,lpby ,itab ,nrbyac ,
1188 3 irbyac ,nint2 ,iint2 ,iddl ,ikc ,
1189 4 ndof ,inloc ,
nsrem ,
nsl ,nbintc ,
1190 5 intlist ,x ,ibfv ,dirul ,skews%SKEW,
1191 6 xframe ,iskew ,icodt ,r_imp(16) ,d_imp ,
1192 7 lb ,ifdis ,nddl ,dr_imp ,iddli ,
1193 8 irbe3 ,lrbe3 ,frbe3 ,irbe2 ,lrbe2 ,
1194 9 dd ,ddr ,a ,ar ,ac ,
1195 a acr ,ms ,v ,nddl0 ,r_imp(1) ,
1196 b rby ,icodr ,nt_rw ,w_ddl ,weight ,
1197 c irflag )
1198 END IF
1199
1201 1 npby ,lpby ,itab ,nrbyac ,irbyac ,
1202 2 nint2 ,iint2 ,ipari ,intbuf_tab,ndofi ,
1203 3 ndof ,ikc ,iddl ,fr_elem ,iad_elem ,
1204 4
nddli ,
nsl ,nddli_g ,irbe3 ,lrbe3 ,
1205 5 irbe2 ,lrbe2 )
1206
1207 IF (ispmd==0.AND.imconv>=0) i_imp(13) = nddli_g
1208 IF (ispmd==0.AND.imconv>=0.AND.
1209 . (lprint/=0.OR.nprint/=0)) THEN
1210 WRITE(iout,1006)
1211 WRITE(istdo,1006)
1212 WRITE(iout,1011)nddli_g
1213 WRITE(istdo,1011)nddli_g
1214 WRITE(iout,*)
1215 WRITE(istdo,*)
1216 ENDIF
1217 ENDIF
1218 ENDIF
1219 ENDIF
1220
1221 IF (intp_c<0) THEN
1223 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
1224 2 npby ,lpby ,itab ,nrbyac ,irbyac ,
1225 3 nint2 ,iint2 ,ibfv ,dirul ,iskew ,
1226 6 icodt ,ndofi ,iddl ,ikc ,ndof ,
1227 5 inloc ,irbe3 ,lrbe3 ,frbe3 ,x ,
1228 6 skews%SKEW,irbe2 ,lrbe2)
1229 ENDIF
1230
1231 IF (nmonv>0.AND.isetk==1)
CALL monv_imp(
1232 . monvol ,volmon ,x ,igrsurf ,
1233 1 nmonv ,imonv ,ipari ,intbuf_tab ,
1234 2 a ,ar ,ndof ,iddl ,ikc ,
1235 3 inloc ,iline ,ibfv ,skews%SKEW,xframe ,
1236 4 dirul ,iskew ,icodt ,irbe3 ,lrbe3 ,
1237 5 frbe3 ,irbe2 ,lrbe2 ,nsurf)
1238
1239 IF (gap<zero) THEN
1240 imconv = -2
1241 IF (ispmd==0) THEN
1242 WRITE(iout,1009)int(-gap)
1243 WRITE(istdo,1009)int(-gap)
1244 ENDIF
1245 ENDIF
1246
1247 IF (isprb==1.AND.imconv==1) THEN
1248 DO i=1,nddl
1249 lb0(i) = lb(i)
1250 ENDDO
1251 ENDIF
1252
1253 IF (isigini==1.AND.ncycle==1.AND.imconv==1) THEN
1255 ENDIF
1256
1260 IF (isolv<5) idsc = 1
1261 ENDIF
1262
1263 IF (ilintf>2.AND.ncycle<ilintf) THEN
1266 ENDIF
1267
1268 IF (ilintf>0.AND.
nddli==0)
THEN
1271 IF (
ALLOCATED(
iadi))
DEALLOCATE(
iadi)
1274 IF (
ALLOCATED(
jdii))
DEALLOCATE(
jdii)
1276 IF (
ALLOCATED(
itok))
DEALLOCATE(
itok)
1281 IF (ALLOCATED(diag_i)) DEALLOCATE(diag_i)
1282 ALLOCATE(diag_i(
nddli))
1283 IF (ALLOCATED(lt_i)) DEALLOCATE(lt_i)
1284 ALLOCATE(lt_i(
nnzi))
1287 ENDIF
1288 ENDIF
1289
1290 r_imp(18)=gap
1291
1292 IF (iqstat>0.AND.ilintf>0.AND.ilintf==ncycle)
1293 .
CALL imp_qifam(nodft ,nodlt ,iddl ,ndof ,inloc ,
1294 . ikc ,diag_k ,ms ,in ,weight)
1295
1296
1297#if defined(MUMPS5)
1298 IF (imumpsv >0 .AND.idsc==1.AND.imconv>=0)
1299 .
CALL imp_mumps1(nddl0, nnzk0, nddl, nnzk, nnmax,
1300 . nodglob, iddl, ndof, inloc, ikc,
1301 . iadk, jdik, diag_k, lt_k, iad_elem,
1302 . fr_elem, mumps_par, cddlp,
iadi,
jdii,
1304 . iprint0, it )
1305#else
1306 WRITE(6,*) "Fatal error: MUMPS is required"
1307 CALL flush(6)
1309#endif
1311
1312 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) THEN
1314
1315 npcgpv=nddl
1318 IF (
m_vs> 0) npcgpv=-1
1319 END IF
1320
1321 IF(irig_m>0) THEN
1323 1 x ,iparg ,ixc ,ixtg ,partsav ,
1324 2 elbuf_tab ,pm ,ndof ,iddl ,ikc )
1325 END IF
1326 END IF
1327
1329
1330
1331
1332 100 CONTINUE
1333
1334 IF (iline==1) THEN
1335 IF (ncycle==1.AND.ispmd==0.AND.itask==0) THEN
1336 IF (iqstat>0) THEN
1337 WRITE(iout,*)
1338 WRITE(iout,*)' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1339 WRITE(istdo,*)
1340 WRITE(istdo,*)' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1341 WRITE(iout,*)
1342 WRITE(istdo,*)
1343 ELSE
1344 WRITE(iout,*)
1345 WRITE(iout,*)' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1346 WRITE(istdo,*)
1347 WRITE(istdo,*)' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1348 WRITE(iout,*)
1349 WRITE(istdo,*)
1350 END IF
1351 ENDIF
1352
1353 ntmp=0
1354
1355
1357
1358 IF (r2>zero.AND.r2<ep30) THEN
1359 ELSEIF(iqstat==0.AND.itask==0.AND.nddl>0) THEN
1361 ENDIF
1362
1363 CALL lin_solv(nddl ,iddl ,ndof ,ikc ,d_imp ,
1364 1 dr_imp,l_tol ,nnzk ,iadk ,jdik ,
1366 3 diag_i,lt_i ,
itok ,iadm ,jdim ,
1367 4 diag_m,lt_m ,lb ,r_imp(6),inloc ,
1368 5 fr_elem,iad_elem,w_ddl,itask ,isetp ,
1369 6 istop ,a ,ar ,v ,
1370 7 ms ,x ,ipari ,intbuf_tab ,
1371 8 num_imp,ns_imp,ne_imp,
nsrem ,
nsl ,
1372 9 ntmp ,graphe, itab ,rbid ,ibid ,
1373 a ibid ,nmonv ,imonv ,monvol,igrsurf,
1374 b fr_mv ,volmon,ibfv ,skews%SKEW ,
1375 c xframe,mumps_par,cddlp,ind_imp,xi_c,
1376 d irbe3 ,lrbe3 ,irbe2 ,lrbe2 )
1377
1378
1379
1380
1381 IF (inega>0) THEN
1382 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc ,
1383 . inega ,nnod )
1384 IF (nnod>0) THEN
1385 WRITE(iout,1008)itab(nnod)
1386 WRITE(istdo,1008)itab(nnod)
1387 ENDIF
1388
1389 ELSEIF(iprec>1.AND.isolv<=2) THEN
1390 CALL imp_checm(itab ,nddl ,iddl ,diag_m ,ndof ,
1391 . ikc ,inloc ,nddl0 )
1392
1393 ENDIF
1394 IF(nfxv_g/=0.AND.(
nsrem+
nsl-intp_c)>0)
THEN
1395 CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
1396 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
1397 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
1398 3 x ,dirul ,ndof ,a ,ar )
1399 ENDIF
1400 CALL recukin(rby ,lpby ,npby ,skews%SKEW ,iskew ,
1401 1 itab ,weight,ms ,in ,
1402 2 ibfv ,vel ,icodt,icodr ,
1403 3 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
1404 4 intbuf_tab ,ndof ,d_imp ,dr_imp,
1405 5 x ,xframe,dirul ,ixr ,ixc ,
1406 6 ixtg ,sh4tree,sh3tree,irbe3 ,lrbe3,
1407 7 frbe3 ,irbe2 ,lrbe2 )
1410 1 x ,v ,vr ,a ,ar )
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421 IF (ilintf>0.AND.ncycle<ilintf) THEN
1423 1 ipari ,intbuf_tab ,x_a ,d ,
1424 2 ms ,itab ,in ,d_imp ,dr_imp ,
1425 3 imsch ,i2msch ,isizxv,ilenxv ,igrbric ,
1426 4 islen7,irlen7 ,islen11,irlen11,islen17 ,
1427 5 irlen17,irlen7t,islen7t,iad_elem,fr_elem ,
1428 6 nbintc,intlist,itask ,kinet ,newfront,
1429 7 num_imp,ns_imp,ne_imp,ind_imp ,isendto ,
1430 8 irecvfrom,weight ,ixs ,temp ,
1431 9 dt2prev,waint ,num_imp1,irlen20,islen20,
1432 a irlen20t,islen20t,irlen20e,islen20e,
1433 b ikine,diag_sms,count_remslv,count_remslve,
1434 c nsensor,sensor_tab,xdp,h3d_data,multi_fvm,
1435 d forneqs,maxdgap,interfaces,glob_therm)
1436
1438 isetk =0
1439
1440 ELSE
1441 IF (ilintf>0) THEN
1442 nt_imp1 = 0
1443 DO i = 1,ninter
1444 num_imp1(i) = 0
1445 END DO
1446 ENDIF
1447
1449 IF ((isecut>0 .OR. iisrot>0 .OR. impose_dr/=0 .OR. idrot==1) .AND. iroddl/=0) THEN
1451 ENDIF
1452
1454 ENDIF
1456
1457
1458
1459 ELSE
1460
1461
1462 IF (r_imp(18)<zero.OR.imconv==-2) GOTO 300
1463 IF (imconv==1) THEN
1464
1465
1466 IF(ncy_max>0.AND.ncycle>ncy_max)
CALL imp_stop(-3)
1467 IF (inconv==1) THEN
1468 CALL cp_impbuf(1 ,elbuf ,elbuf_c ,bufmat ,bufmat_c ,
1469 . fsav ,volmon ,partsav ,intbuf_tab ,
1470 . intbuf_tab_c,ipari ,islen7 ,irlen7 ,
1471 . islen11,irlen11,islen17 ,irlen17,irlen7t ,
1472 . islen7t,irlen20,islen20 ,irlen20t,islen20t,
1473 . irlen20e,islen20e,newfront,elbuf_tab,elbuf_imp,
1474 . iparg )
1475 END IF
1476 IF (ncycle==1) THEN
1477 IF (isprb==1.AND.i_imp(5)==0) r_imp(1) = zero
1478 r_imp(1) =
max(r_imp(1),rf_min*rf_min)
1479 r_imp(1) =
min(r_imp(1),rf_max*rf_max)
1480 IF (inconv==1) i_imp(12)=1
1481 END IF
1482
1483 IF (ismdisp>0) THEN
1485 ELSE
1487 END IF
1488 i_imp(2)=0
1490 it=0
1491
1492
1493 IF (isigini==1) THEN
1494
1495
1496
1497
1498 bfac= (tt-r_imp(19))/(tstop-r_imp(19))
1499 r_imp(10)=bfac-one
1500 IF (r_imp(10)<zero)
CALL vaxpy_hp(nddl ,lb ,lb0 ,r_imp(10))
1501 ENDIF
1502
1503
1504
1505
1506
1508
1509
1510
1511 IF (r2>=zero.AND.r2<ep30) THEN
1512 ELSEIF(idyna==0.AND.iqstat==0) THEN
1514 ENDIF
1515
1516 IF (inconv == 1) r_imp(1)=
max(r_imp(1),r2)
1517
1518 IF(n_lim == 1 .AND. isprb == 0) r_imp(1)=r2
1519
1520 IF (isprb==1) THEN
1521 IF (sqrt(r2/r_imp(1))<=n_tol) THEN
1522
1523 dt_imp=tstop-tt+dt2
1525 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1526
1527 GOTO 200
1528 ENDIF
1529 END IF
1530
1531
1532
1533 IF (isprb==1) THEN
1534 tmp1 = dt2*ncycle
1535 tmp2 = tstop-tt+tmp1-dt2
1536 bfac =tmp1/
max(dt2,tmp2)
1537 r_imp(10)=bfac-one
1538 r_imp(2)=r2*bfac*bfac
1539 IF (ncycle==1) THEN
1540 r_imp(12)=em01
1541
1542 IF (
iconta>0) r_imp(12)=zep9
1543 ELSE
1544 tmp = dt12/
max(dt12,tstop-tt)+n_tol/sqrt(r2/r_imp(1))
1545 tmp =
min(half*tmp,one)
1546 r_imp(12)=r_imp(12)*(one-tmp)+tmp
1547 ENDIF
1548 ELSE
1549 r_imp(2)=r2
1550 ENDIF
1551 r_imp(3)=one
1552 r_imp(4)=r_imp(6)
1553
1554
1555
1556
1557
1558 IF (isprb==1) THEN
1559 tmp = r_imp(10)+one
1561 END IF
1562 ELSEIF (imconv==-1) THEN
1563
1564 IF (isprb==1.OR.isigini==1) THEN
1565 IF (r_imp(10)<zero) THEN
1566 CALL vaxpy_hp(nddl ,lb ,lb0 ,r_imp(10))
1567 ENDIF
1568 ENDIF
1569 ELSE
1570
1571 it=it+1
1572 i_imp(2)=i_imp(2)+1
1573
1574 IF (isprb==1.OR.isigini==1) THEN
1575 IF (r_imp(10)<zero) THEN
1576 CALL vaxpy_hp(nddl ,lb ,lb0 ,r_imp(10))
1577 ENDIF
1578 ENDIF
1579 ENDIF
1580
1581
1582
1583
1584
1585 IF (isprb==1) THEN
1586 faci=
min(one,r_imp(12))
1587 r02=faci*faci*r_imp(1)
1588 ELSE
1589 r02=r_imp(1)
1590 ENDIF
1591 IF (it==1.AND.irefi==5) THEN
1593 r_imp(6) =
max(em20,r_imp(6))
1594 ENDIF
1595 IF (it==1.AND.
iconta>i_imp(6))
THEN
1596
1597 IF (irefi==5.AND.nfxv_g>0.AND.imconv>=0) THEN
1598 CALL rer02(rby ,lpby ,npby ,skews%SKEW ,iskew ,
1599 1 itab ,weight,ms ,in ,
1600 2 ibfv ,vel ,icodt,icodr ,
1601 3 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
1602 4 intbuf_tab ,ndof ,d_imp ,dr_imp,
1603 5 x ,xframe,dirul ,ixr ,ixc ,
1604 6 ixtg ,sh4tree,sh3tree,irbe3 ,lrbe3,
1605 7 frbe3 ,iadk ,jdik ,diag_k,lt_k ,
1606 8 iddl ,ikc ,inloc ,num_imp,ns_imp,
1607 9 ne_imp,ind_imp,nddl ,w_ddl ,a ,
1608 a ar ,r02 ,irbe2 ,lrbe2 ,x_c )
1609 r_imp(1) =
max(r02,r_imp(1))
1610 ENDIF
1611 IF (i_imp(7)==0.AND.irefi==4) irefi= -4
1612 ENDIF
1613 IF (imconv>0.AND.isprb/=1) THEN
1614 r02 =
max(r02,rf_min*rf_min)
1615 r02 =
min(r02,rf_max*rf_max)
1616 END IF
1617
1618 IF (ncycle==1.AND.insolv>=2.AND.it==0.AND.imconv>=0)
1620 r_imp(17) = r02
1621
1622
1623
1624
1625
1626
1627
1628 IF (nddl_g==0.AND.nfxvel > 0) THEN
1629 IF (it==0) THEN
1630
1631 imconv=3
1632 isetk=0
1633 ELSE
1634 imconv=1
1635 END IF
1636
1637
1638
1639 ELSE
1640 CALL nl_solv(nddl ,iddl ,ndof ,ikc ,d_imp ,
1641 1 dr_imp,nnzk ,iadk ,jdik ,diag_k,
1643 3 diag_i,lt_i ,
itok ,iadm ,jdim ,
1644 4 diag_m,lt_m ,r_imp(17),dd ,ddr ,
1645 5 itask ,it ,i_imp(2),r_imp(3),r_imp(2),
1646 6 i_imp(5) ,inprint,isetp ,istop ,r_imp(4),
1647 7 r_imp(5),r_imp(6),inloc ,nddl0 ,r_imp(7),
1648 8 r_imp(11),r_imp(18),itab ,fr_elem,iad_elem,
1649 9 w_ddl ,a ,ar ,v ,ms ,
1650 a x ,ipari ,intbuf_tab ,num_imp,
1652 c graphe ,fac_k ,ipiv_k, nkcond,nmonv ,
1653 d imonv ,monvol ,igrsurf,fr_mv ,
1654 e volmon,ibfv ,skews%SKEW ,xframe,mumps_par,
1655 f cddlp ,ind_imp,nbintc,intlist,newfront,
1656 g isendto,irecvfrom,irbe3,lrbe3,i_imp(8),
1657 h i_imp(9),i_imp(10),fext ,dg ,dgr ,
1658 i dg0 ,dgr0 ,r_imp(13),r_imp(14),
1659 j nodftsk,nodltsk,irbe2,lrbe2,i_imp(12),
1660 k r_imp(20),anew_stif)
1661 END IF
1662
1663
1664
1665
1666 IF(nfxvel/=0) THEN
1667
1668 ntmp=0
1669 DO i=1,nfxvel
1670 ntmp=ntmp+iabs(dirul(i))
1671 END DO
1672 IF (ntmp>0)
1673 .
CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
1674 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
1675 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
1676 3 x ,dirul ,ndof ,a ,ar )
1677 END IF
1678
1679 IF(irig_m>0.AND.imconv==1) THEN
1681 1 x ,ixc ,ixtg ,ndof ,iddl ,
1682 2 ikc ,d_imp ,dr_imp ,icodt ,icodr ,
1683 3 skews%SKEW,iskew ,itab )
1684 END IF
1685 IF(imp_lr > 0)THEN
1686 CALL recukin(rby ,lpby ,npby ,skews%SKEW ,iskew ,
1687 1 itab ,weight,ms ,in ,
1688 2 ibfv ,vel ,icodt,icodr ,
1689 3 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
1690 4 intbuf_tab,ndof ,d_imp ,dr_imp,
1691 5 x_c ,xframe,dirul ,ixr ,ixc ,
1692 6 ixtg ,sh4tree,sh3tree,irbe3 ,lrbe3,
1693 7 frbe3 ,irbe2 ,lrbe2 )
1694 ELSE
1695 CALL recukin(rby ,lpby ,npby ,skews%SKEW ,iskew ,
1696 1 itab ,weight,ms ,in ,
1697 2 ibfv ,vel ,icodt,icodr ,
1698 3 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
1699 4 intbuf_tab ,ndof ,d_imp ,dr_imp,
1700 5 x ,xframe,dirul ,ixr ,ixc ,
1701 6 ixtg ,sh4tree,sh3tree,irbe3 ,lrbe3,
1702 7 frbe3 ,irbe2 ,lrbe2 )
1703 END IF
1704
1705 IF (solvnfo > zero) THEN
1706 IF (imconv /= -1) THEN
1707 CALL pr_solnfo(nddl ,iddl ,ndof ,ikc ,itab ,
1708 1 diag_k,diag_m,inloc ,fr_elem,iad_elem,
1709 2 iadk ,jdik ,lt_k ,lt_m ,
nddli ,
1712 5 d_imp ,dr_imp,1 ,w_ddl ,ac ,
1713 6 acr ,a ,ar ,r2 ,ndeb0 ,
1714 7 r_imp ,i_imp ,dd ,ddr)
1715 ENDIF
1716 ENDIF
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731 IF (nbintc>0) THEN
1732 IF (ismdisp>0) THEN
1734 1 ipari ,intbuf_tab ,x_a ,v ,
1735 2 vr ,itab ,d_imp ,dr_imp ,nbintc ,
1736 3 intlist,itask ,newfront,isendto ,irecvfrom,
1737 4 iddl ,ndof ,ikc ,tmp ,ms ,
1738 5 nsensor,sensor_tab,maxdgap)
1739 ELSE
1741 1 ipari ,intbuf_tab ,x ,v ,
1742 2 vr ,itab ,d_imp ,dr_imp ,nbintc ,
1743 3 intlist,itask ,newfront,isendto ,irecvfrom,
1744 4 iddl ,ndof ,ikc ,tmp ,ms ,
1745 5 nsensor,sensor_tab,maxdgap)
1746 IF(nfxv_g/=0.AND.tmp<one)
1747 .
CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
1748 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
1749 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
1750 3 x ,dirul ,ndof ,a ,ar )
1751 END IF
1752 END IF
1753
1754
1755
1756
1757 300 CONTINUE
1758
1759
1760
1761 IF (ismdisp>0) THEN
1763 ELSE
1765 END IF
1766 CALL cp_impbuf(2 ,elbuf ,elbuf_c ,bufmat ,bufmat_c ,
1767 . fsav ,volmon ,partsav ,intbuf_tab ,
1768 . intbuf_tab_c ,ipari ,islen7 ,irlen7 ,
1769 . islen11,irlen11,islen17 ,irlen17,irlen7t ,
1770 . islen7t,irlen20,islen20 ,irlen20t,islen20t,
1771 . irlen20e,islen20e,newfront,elbuf_tab,elbuf_imp,
1772 . iparg )
1773
1774 IF (ncycle == 1 .AND. istop == 0 .AND.isolv == 7) THEN
1775 IF (it == 1 .AND. i_imp(5) == 0 ) THEN
1776 WRITE (iout, *)
1777 . " **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1778 WRITE (istdo, *)
1779 . " **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1780 END IF
1781 END IF
1782
1783 IF (istop>0) THEN
1784 IF (istop == 3 .AND.isolv == 7) THEN
1785
1786 isolv = 3
1787 isetk = 1
1788 ikpat = 0
1789 i_imp(11)=1
1790 istop = 0
1791 iprec = 1
1792 IF (nspmd > 1 ) THEN
1793 IF (imumpsd == 0) imumpsd = 1
1794 IF (imumpsv == 0) imumpsv = 1
1795 END IF
1796 IF (ncycle == 1 ) THEN
1797 IF (ispmd == 0) THEN
1798 WRITE (iout, *)
1799 . " **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1800 WRITE (istdo, *)
1801 . " **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1802 END IF
1803 ELSE
1804 IF (ispmd == 0) THEN
1805 WRITE (iout, *)
1806 . " **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1807 WRITE (istdo, *)
1808 . " **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1809 END IF
1810 END IF
1811
1812 ENDIF
1813 imconv=-2
1814 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc ,
1815 . istop ,nnod )
1816 IF (nnod>0) THEN
1817 WRITE(iout,1008)itab(nnod)
1818 WRITE(istdo,1008)itab(nnod)
1819 ENDIF
1820 ENDIF
1821 inconv =
min(1,imconv)
1822 IF (imconv<=-2) THEN
1824 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1825 r_imp(6)=r_imp(4)
1826 i_imp(5)=-2
1827 IF (isprb==1.AND.imconv==-3.AND.
iconta==0)
THEN
1828 DO i=1,nddl
1829 lb(i) = lb0(i)
1830 ENDDO
1831 imconv=1
1832 GOTO 100
1833 ENDIF
1835 ncycle=ncycle-1
1836 IF (ncycle==0) dt1=zero
1838 IF (imconv==-2.AND.i_imp(11)/=1) THEN
1839
1840 CALL imp_dtn(it,r_imp(11),r_imp(10),r_imp(24))
1841
1843 IF (dt_imp==dt_min) THEN
1845 ENDIF
1846 ENDIF
1847 ENDIF
1848
1849 IF (imconv<=-2.OR.imconv==0) THEN
1850 IF (it==1.AND.
iconta>i_imp(6))
THEN
1851 r02 =r_imp(17)
1852 IF (irefi==1) THEN
1853 r02 =
min(r02,ten*r_imp(1))
1854 ELSEIF (irefi==2) THEN
1855 r02 =
min(r02,onep2*r_imp(1))
1856 ELSEIF (irefi==3.OR.irefi==4.OR.irefi==5) THEN
1857 r02 =
min(r02,r_imp(1))
1858 ELSEIF (irefi==-4) THEN
1859 i_imp(7) = 1
1860 irefi = 4
1861 END IF
1862
1863 IF (ncycle > 1) i_imp(7) = 1
1864 r_imp(1)=
max(r_imp(1),r02)
1865 ENDIF
1866 ENDIF
1867
1868 IF (imconv>0) THEN
1869 r_imp(1) =
max(r_imp(1),rf_min*rf_min)
1870 r_imp(1) =
min(r_imp(1),rf_max*rf_max)
1871 ENDIF
1872
1873 IF (imconv==2) dt2=dt2/i_imp(2)
1874
1875 200 CONTINUE
1876
1877
1878
1879
1880
1881
1882 IF (imconv==1.OR.imconv==2.OR.imconv==3) THEN
1883 IF(idyna>0.AND.nfxvel/=0) THEN
1884 CALL fv_fint0(ibfv ,npc ,tf ,vel ,sensor_tab,
1885 1 d_imp ,dr_imp,ikc ,iddl ,nsensor ,
1886 2 skews%SKEW ,iframe ,xframe,a ,ar ,
1887 3 x ,ndof ,ms ,in ,weight ,
1888 4 rby )
1889 END IF
1891 IF (r_imp(11)<em10)
1892 .
CALL produt_uhp0(d_imp ,dr_imp,r_imp(11),weight)
1893 CALL imp_dtn(it,r_imp(11),r_imp(10),r_imp(24))
1894 IF ( iqstat>0)
CALL dis_cp(nndl,d_imp,dr_imp,0 )
1895 ENDIF
1896 IF (inconv==1 .AND. (isecut>0.OR.iisrot>0
1897 . .OR. impose_dr/=0 .OR. idrot==1)
1898 . .AND. iroddl/=0) THEN
1900 ENDIF
1901 IF (ismdisp>0) THEN
1903 1 x_a ,v ,vr ,a ,ar )
1904 ELSE
1905
1907 1 x ,v ,vr ,a ,ar )
1908 ENDIF
1909
1910 IF(idyna>0.AND.imconv==1) THEN
1911 CALL dyna_wex(ibcl ,forc ,snpc,npc ,tf ,ac ,
1912 2 v ,x ,skews ,acr ,vr ,
1913 3 sensor_tab,weight,wfext ,iads_f,
1914 4 fsky ,igrv ,agrv ,ms ,in ,
1915 5 lgrav ,itask ,nrbyac,irbyac ,
1916 6 npby ,rby ,ibfv ,vel ,d_imp ,
1917 7 dr_imp,ikc ,iddl ,iframe,xframe ,
1918 8 ndof ,h3d_data,cptreac,fthreac,nodreac,nsensor,
1919 9 th_surf ,dpl0cld,
1920 a vel0cld, numnod,nsurf,nfunct,nconld,
1921 b ngrav,nfxvel,stf,numskw,python)
1923 END IF
1924
1925 IF (imconv<=-2 .AND.iqstat>0 .AND. i_imp(7) >0) THEN
1926 CALL dis_cp(nndl,d_imp,dr_imp,1 )
1927 END IF
1928
1929 IF (imconv == 3 ) inconv = 0
1930 IF (imconv<=-2) imconv=1
1931 IF (imconv==1) i_imp(1)=i_imp(1)+it+1
1932 IF (imconv==1) i_imp(12)=inconv
1933 i_imp(4)=ndt-1
1934 it_t = i_imp(1)
1935
1936
1937
1938 ENDIF
1939
1941
1942
1943 IF (nint7>0) THEN
1947 DEALLOCATE(diag_i)
1948 DEALLOCATE(lt_i)
1949 ENDIF
1950
1952 IF (ilintf>0) DEALLOCATE(xi_c)
1954 IF (nint2>0) DEALLOCATE(iaint2)
1955
1956
1957
1958 1001 FORMAT(' symbolic dim : nddl =',I8,1X,'nnz =',I8,1X,'nb_max =',I8)
1959 1002 FORMAT(' final dim : nddl =',I8,1X,'nnz =',I8,1X,'nb_max =',I8)
1960 1003 FORMAT(/,5X,'--stiffness matrix is reformed --')
1961 1004 FORMAT(3X,'line. solver : isolv =',I4,2X,'prec. meth. =',I4,2X,
1962 . 'tol =',E11.4)
1963 1005 FORMAT(5X,'--stiffness matrix will be reformed after each ',I4,
1964 . 2X,'iterations--')
1965 1006 FORMAT(5X,'--supplementary contact stiffness matrix',
1966 . 1X, 'is created--')
1967 1007 FORMAT(5X,' with dim. : nd =',I8,1X,'nz =',I8) !,1X,'nb_max =',I8)
1968 1008 FORMAT(3X,'**warning: stiffness matrix is not definite**'/,
1969 . 3X,'**look at node: ',I8)
1970 1009 FORMAT(3X,'**timestep will be reduced to avoid de-activation ',
1971 . 'in interface:**',I8)
1972 1010 FORMAT(/,5X,'--stiffness matrix is reformed',1X,
1973 . 'due to rigid wall impact--'/,5X,'with impact num. =',I8)
1974 1011 FORMAT(5X,' with dim. : nd =',I8)
1975 1012 FORMAT(3X,'**timestep will be reduced due to ',
1976 . 'dim.(nd) change w/autospc::**',2i8)
1977 RETURN
1978
1979#endif
subroutine put_nspc(nspc)
subroutine get_nspc(nspc)
subroutine fv_fint0(ibfv, npc, tf, vel, sensor_tab, ud, rd, ifix, iddl, nsensor, skew, iframe, xframe, a, ar, x, ndof, ms, in, weight, rby)
subroutine fvbc_impl1(ibfv, skew, xframe, lj, iddl, ifix, ndof, ud, rd, icodt, icodr, iskew)
subroutine fv_dd0(iddl, ikc, ndof, dd, ddr, d)
subroutine bfgs_ini(nddl, max_bfgs)
subroutine imp_dtn(it, ul2, fac, cumul_alen)
subroutine dyna_ina(ibcl, forc, snpc, npc, tf, a, v, x, skews, ar, vr, sensor_tab, weight, wfexc, iads_f, fsky, igrv, agrv, ms, in, lgrav, itask, nrbyac, irbyac, npby, rby, fr_elem, iad_elem, nddl, nnzk, idiv, h3d_data, cptreac, fthreac, nodreac, nsensor, th_surf, dpl0cld, vel0cld, d, dr, numnod, nsurf, nfunct, nconld, ngrav, ninvel, stf, numskw, wfext, python)
subroutine dyna_cpk0(nddl, nnzk, iadk, jdik, diag_k, lt_k)
subroutine qstat_ini(nddl, inloc, iddl, ndof, ikc, ms, in)
subroutine imp_qifam(nodft, nodlt, iddl, ndof, inloc, ikc, diag_k, ms, in, weight)
subroutine imp_dykv(nodft, nodlt, iddl, ndof, ikc, diag_k, iadk, jdik, lt_k, weight, rby, x, skew, lpby, npby, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, irbe3, lrbe3, frbe3, irbe2, lrbe2, v, vr, nddl, fr_elem, iad_elem, ms, in)
subroutine dyna_wex(ibcl, forc, snpc, npc, tf, a, v, x, skews, ar, vr, sensor_tab, weight, wfext, iads_f, fsky, igrv, agrv, ms, in, lgrav, itask, nrbyac, irbyac, npby, rby, ibfv, vel, d, dr, ikc, iddl, iframe, xframe, ndof, h3d_data, cptreac, fthreac, nodreac, nsensor, th_surf, dpl0cld, vel0cld, numnod, nsurf, nfunct, nconld, ngrav, nfxvel, stf, numskw, python)
subroutine imp_dykv0(nodft, nodlt, iddl, ndof, ikc, diag_k, iadk, jdik, lt_k, weight, rby, x, skew, lpby, npby, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, irbe3, lrbe3, frbe3, irbe2, lrbe2, v, vr, nddl, fr_elem, iad_elem, ms, in)
subroutine dyna_cpr0(nddl)
subroutine ind_frkd(ipari, intbuf_tab, num_imp, ns_imp, ne_imp, iddl, ikc, ndof, nsrem, ind_imp)
subroutine getnddli_g(npby, lpby, itab, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, ndofi, ndof, ikc, iddl, fr_elem, iad_elem, nddli, nsl, nddlig, irbe3, lrbe3, irbe2, lrbe2)
subroutine imp_kpres(ib, fac, npc, tf, x, skew, nsensor, sensor_tab, weight, iadc, iddl, ndof, iadk, jdik, k_diag, k_lt)
subroutine etfac_ini(iparg)
subroutine imp_inttd0(output, timers, ipari, intbuf_tab, x, d, ms, itab, in, d_imp, dr_imp, imsch, i2msch, isizxv, ilenxv, igrbric, islen7, irlen7, islen11, irlen11, islen17, irlen17, irlen7t, islen7t, iad_elem, fr_elem, nbintc, intlist, itask, kinet, newfront, num_imp, ns_imp, ne_imp, ind_imp, isendto, irecvfrom, weight, ixs, temp, dt2prev, wa, num_imp1, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, ikine, diag_sms, count_remslv, count_remslve, nsensor, sensor_tab, xdp, h3d_data, multi_fvm, forneqs, maxdgap, interfaces, glob_therm)
subroutine sav_inttd(nt_imp, numimp, ns_imp, ne_imp, ind_imp, numimp1)
subroutine kin_knl(ipari, intbuf_tab, num_imp, ns_imp, ne_imp, npby, lpby, itab, nrbyac, irbyac, nint2, iint2, ibfv, lj, iskew, icodt, ndofi, iddl, ikc, ndof, inloc, irbe3, lrbe3, frbe3, x, skew, irbe2, lrbe2)
subroutine imp_dtkin(ipari, intbuf_tab, x, v, vr, itab, d_imp, dr_imp, nbintc, intlist, itask, newfront, isendto, irecvfrom, iddl, ndof, ikc, scal, ms, nsensor, sensor_tab, maxdgap)
subroutine imp_mumps1(nddl0, nnzk0, nddl, nnzk, nnmax, nodglob, iddl, ndof, inloc, ikc, iadk, jdik, diag_k, lt_k, iad_elem, fr_elem, mumps_par, cddlp, iadi, jdii, itok, diag_i, lt_i, nddli, nnzi, imprint, it)
subroutine dis_cp(n, d, dr, iflag)
subroutine spbrm_pre(itab, x, iparg, ixc, ixtg, partsav, elbuf_tab, pm, ndof, iddl, ikc)
subroutine int5_diverg(ipari)
subroutine ini_bminma_imp(intbuf_tab)
subroutine pr_solnfo(nddl, iddl, ndof, ikc, itab, diag_k, diag_m, inloc, fr_elem, iad_elem, iadk, jdik, lt_k, lt_m, nddli, iadi, jdii, itok, diag_i, lt_i, u, f, it, nsrem, nsl, d, dr, iflag, w_ddl, fext, mext, fint, mint, r01, ndeb, r_imp, i_imp, dd, ddr)
subroutine get_fext(nddl0, nddl, iddl, ndof, ikc, inloc, lb, fext, ac, acr)
subroutine spb_rm_rig(x, ixc, ixtg, ndof, iddl, ikc, d_imp, dr_imp, icodt, icodr, skew, iskew, itab)
subroutine save_kif(nddl, iadk, jdik, diag_k, lt_k, itok, nddlg)
subroutine imp_checm(itab, nddl, iddl, diag_m, ndof, ikc, inloc, nddl0)
subroutine imp_check(itab, nddl, iddl, diag_k, ndof, ikc, inloc, nddl0)
subroutine imp_intfr(num_imp, ns_imp, ne_imp, ipari, intbuf_tab, npby, lpby, itab, nrbyac, irbyac, nint2, iint2, iddl, ikc, ndof, inloc, nsrem, nsl, nbintc, intlist, x, ibfv, dirul, skew, xframe, iskew, icodt, de, d_imp, lb, ifdis, nddl, dr_imp, iddli, irbe3, lrbe3, frbe3, irbe2, lrbe2, dd, ddr, a, ar, ac, acr, ms, v, nddl0, r02, rby, icodr, nt_rw, w_ddl, weight, irflag)
subroutine du_ini_hp(dn, dnr, dd, ddr, idiv, icont0)
subroutine imp_b2a(f, m, iddl, ndof, b)
subroutine crit_llim(nddl, nnzk)
subroutine fil_span1(nrbyac, irbyac, npby, iddl, nddl, ikc, ndof, inloc)
subroutine ind_glob_k(npby, lpby, itab, nrbyac, irbyac, nsc, isij, nmc, imij, nss, iss, nint2, iint2, ipari, intbuf_tab, nsc2, isij2, nss2, iss2, iparg, elbuf, elbuf_tab, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iddl, ndof, iadk, jdik, nddl, nnzk, nnmax, nkine, inloc, nkmax, nrowk, icok, icokm, nmc2, imij2, irk, npn, npp, fr_elem, iad_elem, ipm, igeo, irbe3, lrbe3, iss3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, isb2, nsrb2)
subroutine integratorl_hp(d, dr, x, v, vr, a, ar)
subroutine integrator1_hp(d, x)
subroutine integrator_hp(ndt, d, dr, x, v, vr, a, ar)
subroutine monv_imp(monvol, volmon, x, igrsurf, nmonv, imonv, ipari, intbuf_tab, a_mv, ar_mv, ndof, iddl, ikc, inloc, iprec, ibfv, skew, xframe, lj, iskew, icodt, irbe3, lrbe3, frbe3, irbe2, lrbe2, nsurf)
integer, dimension(:), allocatable jdiif
integer, dimension(:), allocatable iadif
subroutine nl_solv(nddl, iddl, ndof, ikc, d, dr, nnz, iadk, jdik, diag_k, lt_k, f, nddli, iadi, jdii, diag_i, lt_i, itok, iadm, jdim, diag_m, lt_m, r02, dd, ddr, itask0, it, itc, ru0, rold, idiv, inprint, icprec, istop, e02, de0, eimp, inloc, nddl0, ls, u02, gap, itab, fr_elem, iad_elem, w_ddl, a, ar, v, ms, x, ipari, intbuf_tab, num_imp, ns_imp, ne_imp, nsrem, nsl, icont, graphe, fac_k, ipiv_k, nk, nmonv, imonv, monvol, igrsurf, fr_mv, volmon, ibfv, skew, xframe, mumps_par, cddlp, ind_imp, nbintc, intlist, newfront, isendto, irecvfrom, irbe3, lrbe3, ndiv, icont0, isign, fext, dg, dgr, dg0, dgr0, rfext, ls1, nodft, nodlt, irbe2, lrbe2, idiv0, relres, anew_stif)
subroutine cp_int_hp(n, x, xc)
subroutine zeror_hp(x, n)
subroutine produt_uhp0(dd, ddr, norm2, weight)
subroutine produt_hp(nddl, x, y, w, r)
subroutine vscaly_hp(n, v, y, s)
subroutine vaxpy_hp(n, v, y, s)
subroutine cp_impbuf(iflag, elbuf, elbuf_c, bufmat, bufmat_c, fsav, volmon, partsav, intbuf_tab, intbuf_tab_c, ipari, islen7, irlen7, islen11, irlen11, islen17, irlen17, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, newfront, elbuf_tab, elbuf_imp, iparg)
subroutine iddl2nod(nddl, iddl, ndof, ikc, inloc, iid, nn)
subroutine recukin(rby, lpby, npby, skew, iskew, itab, weight, ms, in, ibfv, vel, icodt, icodr, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, ndof, d, dr, x, xframe, lj, ixr, ixc, ixtg, sh4tree, sh3tree, irbe3, lrbe3, frbe3, irbe2, lrbe2)
subroutine rer02(rby, lpby, npby, skew, iskew, itab, weight, ms, in, ibfv, vel, icodt, icodr, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, ndof, d, dr, x, xframe, lj, ixr, ixc, ixtg, sh4tree, sh3tree, irbe3, lrbe3, frbe3, iadk, jdik, diag_k, lt_k, iddl, ikc, inloc, num_imp, ns_imp, ne_imp, index2, nddl, w_ddl, a, ar, r02, irbe2, lrbe2, x_c)