147 1 ICODE ,ISKEW ,ISKWN ,IPART ,IXTG ,IXS ,IXQ ,
148 2 IXC ,IXT ,IXP ,IXR ,IXTG1 ,ITAB ,ITABM1 ,
149 3 NPC ,IBCL ,IBFV ,SENSOR_TAB,NNLINK ,LNLINK ,IPARG ,IGRV ,
150 4 IPARI ,INTBUF_TAB,NPRW ,ICONX ,NPBY ,LPBY ,LRIVET ,
151 5 NSTRF ,LJOINT ,ICODT ,ICODR ,ISKY ,ADSKY ,IADS_F ,
152 6 ILINK ,LLINK ,WEIGHT ,ITASK ,IBVEL ,LBVEL ,FBVEL ,
153 7 X ,D ,V ,VR ,DR ,THKE ,DAMP ,MS ,
154 8 IN ,PM ,SKEWS ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
155 9 TF ,FORC ,VEL ,FSAV ,AGRV ,FR_WAVE,PARTS0 ,
156 A ELBUF ,RBY ,RIVET ,FR_ELEM,IAD_ELEM,
157 B WA ,A ,AR ,STIFN ,STIFR ,PARTSAV,FSKY ,
158 C FSKYI ,IFRAME ,XFRAME ,W16 ,IACTIV ,FSKYM ,IGEO ,IPM ,
159 D WFEXT ,NODFT ,NODLT ,NINT7 ,NUM_IMP,NS_IMP ,NE_IMP ,IND_IMP,
160 L IT ,RWBUF ,LPRW ,FR_WALL,NBINTC ,INTLIST,FOPT ,RWSAV ,
161 M FSAVD ,GRAPHE ,FAC_K ,IPIV_K ,NKCOND ,NSENSOR,
162 N MONVOL ,IGRSURF,FR_MV ,VOLMON ,DIRUL ,
163 O NODGLOB,MUMPS_PAR,CDDLP,ISENDTO,IRECVFROM,NEWFRONT,IMSCH ,
164 P I2MSCH ,ISIZXV,ILENXV ,ISLEN7 ,IRLEN7 ,ISLEN11,IRLEN11,ISLEN17,
165 Q IRLEN17,IRLEN7T,ISLEN7T,KINET ,NUM_IMP1,TEMP ,DT2PREV,WAINT ,
166 R LGRAV ,SH4TREE ,SH3TREE,IRLEN20,ISLEN20,IRLEN20T,ISLEN20T ,
167 S IRLEN20E,ISLEN20E,IRBE3,LRBE3 ,FRBE3 ,FR_I2M,IAD_I2M,FR_RBE3M,
168 T IAD_RBE3M,FRWL6,IRBE2 ,LRBE2 ,INTBUF_TAB_C,IKINE ,DIAG_SMS,
169 V ICFIELD,LCFIELD,CFIELD,COUNT_REMSLV,COUNT_REMSLVE,
170 X ELBUF_TAB,ELBUF_IMP,XDP,WEIGHT_MD , STACK ,
171 Y DIMFB ,FBSAV6 ,STABSEN,TABSENSOR,DRAPE_SH4N, DRAPE_SH3N,
172 Z H3D_DATA,MULTI_FVM,IGRBRIC,IGRSH4N,IGRSH3N,IGRBEAM,FORNEQS,MAXDGAP,
173 A NDDL0 ,NNZK0 ,IT_T ,IMPBUF_TAB,CPTREAC,FTHREAC,NODREAC, DRAPEG,
174 B INTERFACES,TH_SURF,DPL0CLD,VEL0CLD,SNPC,STF,GLOB_THERM, WFEXT_MD)
198 use python_funct_mod,
only: python_
199 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
203#include "implicit_f.inc"
207#include "comlock.inc"
209#include "dmumps_struc.h"
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"
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(
243INTEGER 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)
273 TYPE(PRGRAPH) :: GRAPHE(*)
276 TYPE(dmumps_struc) MUMPS_PAR
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
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
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
318 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSS,ISS,NSS2,ISS2,NSS3,ISS3
319 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSB2,ISB2,IAINT2
321 INTEGER NNOD,IFDIS,NODFTSK ,NODLTSK,N1,N2,N3
323 INTEGER LBAND,NCL_MAX,IRFLAG,IPRINT0,IPRJ_S
325 INTEGER IBID,IFIF,F_DDL,L_DDL,NSPC_OLD,NSPC,NFXV_G
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
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,,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,,DGR0,BUFIN_C,AC,ACR
341 character*1 anew_stif
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
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
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
395 fext =>impbuf_tab%FEXT
399 dgr0 =>impbuf_tab%DGR0
402 r_imp => impbuf_tab%R_IMP
403 ALLOCATE(iaint2(nint2))
412 IF (imconv==1) imconv=2
420 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) iprint0=1
421 IF (iline/=1) inprint=nprint
426 IF (irref>0.AND.imconv==1.AND.iline/=1)
THEN
441 IF (imconv==2) imconv=1
454 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
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,
477 CALL imp_setb(a ,ar ,iddl ,ndof ,lb0 )
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,
494 CALL imp_b2a(a ,ar ,iddl ,ndof ,lb0 )
495 IF (ncycle==ilintf)
THEN
509 IF (ncycle>1.AND.iline/=1)
THEN
516 1 ddr ,i_imp(5),i_imp(7))
519 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
522 IF (iroddl/=0)
CALL zeror_hp(acr,numnod)
524 IF (isigini==1.AND.ncycle==1)
THEN
525 CALL imp_setb(a ,ar ,iddl ,ndof ,lb0 )
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,
549 CALL force_imp( ibcl ,forc ,snpc ,npc ,tf ,
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)
558 DO i=iad_elem(1,1),iad_elem(1,nspmd+1)-1
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
575 lband = iad_elem(1,nspmd+1)-iad_elem(1,1)
581 CALL spmd_sumf_a(ac,acr,iad_elem,fr_elem,ntmp,lband)
588 2 v ,x ,skews%SKEW ,ms,tfexc,
589 3 nsensor,sensor_tab,weight,
591 5 nrbyac,irbyac,npby ,rby, python)
598 2 v ,x ,xframe ,ms,tfexc,
599 3 nsensor,sensor_tab,weight,iframe,
601 5 nrbyac,irbyac,npby ,rby,iskew,python )
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 )
624 IF (ikc(i)==3.OR.ikc(i)==10) ikc(i)=0
628 IF (ikc(i)==4.OR.ikc(i)==11) ikc(i)=0
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)
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)
649 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
655 IF(ifdis>0.AND.imconv==1)
THEN
656 IF (ncycle>1.AND.iline/=1)
658 .
CALL fv_dd0(iddl ,ikc ,ndof ,dd ,ddr ,d_imp)
661 IF (ikc(i)==3) ikc(i)=4
663 IF (ikc(i)==10) ikc(i)=11
671 IF(irwall>0.AND.imconv>=0)
THEN
673 WRITE(iout,*)
' *--------- RIGID WALL IMPACT---------*'
674 WRITE(istdo,*)
' *--------- RIGID WALL IMPACT---------*'
683 CALL imp_setb(ac ,acr ,iddl ,ndof ,lb )
690 IF (isolv==5.OR.isolv==6.AND.imconv>=0)
THEN
693 IF (ipupd==0.AND.i_imp(2)==0.AND.it==0)
THEN
697 IF(irwall > 0 ) idsc = 1
709 IF (imon>0 .AND. itask ==0)
CALL startime(timers,31)
721 CALL zero1(diag_k,nddl)
722 CALL zero1(lt_k,nnzk)
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)
743 IF (i_imp(11)==1)
THEN
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))
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 )
790 IF (idyna>0.AND.idy_damp>0)
THEN
791 CALL dyna_cpk0(nddl ,nnzk ,iadk ,jdik ,diag_k ,
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 )
805 IF (idyna>0.OR.iqstat>0)
806 .
CALL imp_dynam(nodft ,nodlt ,iddl ,ndof ,diag_k ,
807 . ms ,in ,hht_a ,weight ,iadk ,
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,
816 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
823 1 icodt ,icodr ,iskew ,ibfv ,npc ,
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))
841 1 iadk ,jdik ,ndof ,ikc ,iddl ,
842 2 inloc ,fr_elem ,iad_elem ,nddl )
844 CALL weightddl(iddl ,ndof ,ikc ,weight ,w_ddl ,inloc )
848 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
852 IF (nspc/=nspc_old)
THEN
855 WRITE(iout,1012)nspc_old,nspc
856 WRITE(istdo,1012)nspc_old,nspc
864 CALL fil_span1(nrbyac,irbyac,npby,iddl,nddl,ikc,ndof,inloc)
867 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
870 CALL pr_infok(nddl0,nnzk0,nddl,nnzk,
max(nnmax,nkmax))
873 CALL k_band(nddl,iadk,jdik,ibid)
874 maxb =
min(maxb,ibid)
876 CALL m_lnz(nddl,iadk,jdik,maxb,max_l)
880 ntmp = (tstop-tt)/dt2
896 IF (imconv/=-2)
CALL ini_k0h(nddl,nnzk,nnzk,iadk,jdik)
900 IF (nint7<=0.AND.imconv==1.AND.nspmd==1)
901 .
CALL imp_check(itab ,nddl ,iddl ,diag_k ,ndof ,
902 . ikc ,inloc ,nddl0 )
904 IF (imon>0)
CALL stoptime(timers,31)
906 IF (isolv==4.OR.isolv==6)
THEN
914 IF (imconv==-2.AND.iline==0)
THEN
915 IF (nint7 > 0) nint7=0
923 CALL qstat_ini(nddl ,inloc ,iddl ,ndof ,ikc ,
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)
940 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
941 2 ind_imp ,ndof ,nint7 )
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 ,
951 ALLOCATE(iadi0(
nddli+1))
953 ALLOCATE(jdii0(
nnzi))
954 ALLOCATE(nss2(l2),nss3(nrbe3),nsb2(lnsrb2))
956 ALLOCATE(iss2(lnss2),iss3(lnss3),isb2(lnsb2))
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))
983 2 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
984 3 iddli ,ikc ,ndof ,
nsrem ,ind_imp )
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 ,
1005 ELSEIF (ismdisp>0.AND.iline==0)
THEN
1007 1 icodt ,icodr ,iskew ,ibfv
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 ,
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 ,
1038 IF (imon>0)
CALL stoptime(timers,31)
1040 DEALLOCATE(nss2,nss3,nsb2)
1041 DEALLOCATE(iss2,iss3,isb2)
1063 ALLOCATE(diag_i(
nddli))
1064 ALLOCATE(lt_i(
nnzi))
1073 ALLOCATE(diag_i(
nddli))
1074 ALLOCATE(lt_i(
nnzi))
1084 IF (isolv==4.OR.isolv==6)
THEN
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
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 ,
1120 IF (idtc==3.AND.imconv==1.AND.
1122 CALL get_fext(nddl0 ,nddl ,iddl ,ndof ,ikc ,
1123 1 inloc ,lb ,fext ,ac ,acr )
1124 r_imp(13) = tstop-tt+dt2
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 )
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 )
1153 IF (
iconta> 0.AND.gap>zero)
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 ,
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 ,
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 ,
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 ,
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
1212 WRITE(iout,1011)nddli_g
1213 WRITE(istdo,1011)nddli_g
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)
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)
1242 WRITE(iout,1009)int(-gap)
1243 WRITE(istdo,1009)int(-gap)
1247 IF (isprb==1.AND.imconv==1)
THEN
1253 IF (isigini==1.AND.ncycle==1.AND.imconv==1)
THEN
1260 IF (isolv<5) idsc = 1
1263 IF (ilintf>2.AND.ncycle<ilintf)
THEN
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))
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)
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,
1306 WRITE(6,*)
"Fatal error: MUMPS is required"
1312 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
1318 IF (
m_vs> 0) npcgpv=-1
1323 1 x ,iparg ,ixc ,ixtg ,partsav ,
1324 2 elbuf_tab ,pm ,ndof ,iddl ,ikc )
1335 IF (ncycle==1.AND.ispmd==0.AND.itask==0)
THEN
1338 WRITE(iout,*)
' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1340 WRITE(istdo,*)
' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1345 WRITE(iout,*)
' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1347 WRITE(istdo,*)
' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1358 IF (r2>zero.AND.r2<ep30)
THEN
1359 ELSEIF(iqstat==0.AND.itask==0.AND.nddl>0)
THEN
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 ,
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 )
1382 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc
1385 WRITE(iout,1008)itab(nnod)
1386 WRITE(istdo,1008)itab(nnod)
1389 ELSEIF(iprec>1.AND.isolv<=2)
THEN
1390 CALL imp_checm(itab ,nddl ,iddl ,diag_m ,ndof ,
1391 . ikc ,inloc ,nddl0 )
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 )
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 )
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)
1449 IF ((isecut>0 .OR. iisrot>0 .OR. impose_dr/=0 .OR. idrot==1) .AND. iroddl/=0)
THEN
1462 IF (r_imp(18)<zero.OR.imconv==-2)
GOTO 300
1466 IF(ncy_max>0.AND.ncycle>ncy_max)
CALL imp_stop(-3)
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,
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
1493 IF (isigini==1)
THEN
1498 bfac= (tt-r_imp(19))/(tstop-r_imp(19))
1500 IF (r_imp(10)<zero)
CALL vaxpy_hp(nddl ,lb ,lb0 ,r_imp(10))
1511 IF (r2>=zero.AND.r2<ep30)
THEN
1512 ELSEIF(idyna==0.AND.iqstat==0)
THEN
1516 IF (inconv == 1) r_imp(1)=
max(r_imp(1),r2)
1518 IF(n_lim == 1 .AND. isprb == 0) r_imp(1)=r2
1521 IF (sqrt(r2/r_imp(1))<=n_tol)
THEN
1525 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1535 tmp2 = tstop-tt+tmp1-dt2
1536 bfac =tmp1/
max(dt2,tmp2)
1538 r_imp(2)=r2*bfac*bfac
1542 IF (
iconta>0) r_imp(12)=zep9
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
1562 ELSEIF (imconv==-1)
THEN
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))
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))
1586 faci=
min(one,r_imp(12))
1587 r02=faci*faci*r_imp(1)
1591 IF (it==1.AND.irefi==5)
THEN
1593 r_imp(6) =
max(em20,r_imp(6))
1595 IF (it==1.AND.
iconta>i_imp(6))
THEN
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))
1611 IF (i_imp(7)==0.AND.irefi==4) irefi= -4
1613 IF (imconv>0.AND.isprb/=1)
THEN
1614 r02 =
max(r02,rf_min*rf_min)
1615 r02 =
min(r02,rf_max*rf_max)
1618 IF (ncycle==1.AND.insolv>=2.AND.it==0.AND.imconv>=0)
1628 IF (nddl_g==0.AND.nfxvel > 0)
THEN
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)
1670 ntmp=ntmp+iabs(dirul(i))
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 )
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 )
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 )
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 )
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)
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)
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 !(ismdisp>0)
THEN
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,
1774 IF (ncycle == 1 .AND. istop == 0 .AND.isolv == 7)
THEN
1775 IF (it == 1 .AND. i_imp(5) == 0 )
THEN
1777 .
" **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1779 .
" **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1784 IF (istop == 3 .AND.isolv == 7)
THEN
1792 IF (nspmd > 1 )
THEN
1793 IF (imumpsd == 0) imumpsd = 1
1794 IF (imumpsv == 0) imumpsv = 1
1796 IF (ncycle == 1 )
THEN
1797 IF (ispmd == 0)
THEN
1799 .
" **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1801 .
" **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1804 IF (ispmd == 0)
THEN
1806 .
" **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1808 .
" **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1814 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc ,
1817 WRITE(iout,1008)itab(nnod)
1818 WRITE(istdo,1008)itab(nnod)
1821 inconv =
min(1,imconv)
1822 IF (imconv<=-2)
THEN
1824 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1827 IF (isprb==1.AND.imconv==-3.AND.
iconta==0)
THEN
1836 IF (ncycle==0) dt1=zero
1838 IF (imconv==-2.AND.i_imp(11)/=1)
THEN
1840 CALL imp_dtn(it,r_imp(11),r_imp(10),r_imp(24))
1843 IF (dt_imp==dt_min)
THEN
1849 IF (imconv<=-2.OR.imconv==0)
THEN
1850 IF (it==1.AND.
iconta>i_imp(6))
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
1863 IF (ncycle > 1) i_imp(7) = 1
1864 r_imp(1)=
max(r_imp(1),r02)
1869 r_imp(1) =
max(r_imp(1),rf_min*rf_min)
1870 r_imp(1) =
min(r_imp(1),rf_max*rf_max)
1873 IF (imconv==2) dt2=dt2/i_imp(2)
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 ,
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 )
1896 IF (inconv==1 .AND. (isecut>0.OR.iisrot>0
1897 . .OR. impose_dr/=0 .OR. idrot==1)
1898 . .AND. iroddl/=0)
THEN
1903 1 x_a ,v ,vr ,a ,ar )
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,
1920 a vel0cld, numnod,nsurf,nfunct,nconld,
1921 b ngrav,nfxvel,stf,numskw,python)
1925 IF (imconv<=-2 .AND.iqstat>0 .AND. i_imp(7) >0)
THEN
1926 CALL dis_cp(nndl,d_imp,dr_imp,1 )
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
1952 IF (ilintf>0)
DEALLOCATE(xi_c)
1954 IF (nint2>0)
DEALLOCATE(iaint2)
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,
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)
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)