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