145 1 ICODE ,ISKEW ,ISKWN ,IPART ,IXTG ,IXS ,IXQ ,
146 2 IXC ,IXT ,IXP ,IXR ,IXTG1 ,ITAB ,ITABM1 ,
147 3 NPC ,IBCL ,IBFV ,SENSOR_TAB,NNLINK ,LNLINK ,IPARG ,IGRV ,
148 4 IPARI ,INTBUF_TAB,NPRW ,ICONX ,NPBY ,LPBY ,LRIVET ,
149 5 NSTRF ,LJOINT ,ICODT ,ICODR ,ISKY ,ADSKY ,IADS_F ,
150 6 ILINK ,LLINK ,WEIGHT ,ITASK ,IBVEL ,LBVEL ,FBVEL ,
151 7 X ,D ,V ,VR ,DR ,THKE ,DAMP ,MS ,
152 8 IN ,PM ,SKEWS ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
153 9 TF ,FORC ,VEL ,FSAV ,AGRV ,FR_WAVE,PARTS0 ,
154 A ELBUF ,RBY ,RIVET ,FR_ELEM,IAD_ELEM,
155 B WA ,A ,AR ,STIFN ,STIFR ,PARTSAV,FSKY ,
156 C FSKYI ,IFRAME ,XFRAME ,W16 ,IACTIV ,FSKYM ,IGEO ,IPM ,
157 D WFEXT ,NODFT ,NODLT ,NINT7 ,NUM_IMP,NS_IMP ,NE_IMP ,IND_IMP,
158 L IT ,RWBUF ,LPRW ,FR_WALL,NBINTC ,INTLIST,FOPT ,RWSAV ,
159 M FSAVD ,GRAPHE ,FAC_K ,IPIV_K ,NKCOND ,NSENSOR,
160 N MONVOL ,IGRSURF,FR_MV ,VOLMON ,DIRUL ,
161 O NODGLOB,MUMPS_PAR,CDDLP,ISENDTO,IRECVFROM,NEWFRONT,IMSCH ,
162 P I2MSCH ,ISIZXV,ILENXV ,ISLEN7 ,IRLEN7 ,ISLEN11,IRLEN11,ISLEN17,
163 Q IRLEN17,IRLEN7T,ISLEN7T,KINET ,NUM_IMP1,TEMP ,DT2PREV,WAINT ,
164 R LGRAV ,SH4TREE ,SH3TREE,IRLEN20,ISLEN20,IRLEN20T,ISLEN20T ,
165 S IRLEN20E,ISLEN20E,IRBE3,LRBE3 ,FRBE3 ,FR_I2M,IAD_I2M,FR_RBE3M,
166 T IAD_RBE3M,FRWL6,IRBE2 ,LRBE2 ,INTBUF_TAB_C,IKINE ,DIAG_SMS,
167 V ICFIELD,LCFIELD,CFIELD,COUNT_REMSLV,COUNT_REMSLVE,
168 X ELBUF_TAB,ELBUF_IMP,XDP,WEIGHT_MD , STACK ,
169 Y DIMFB ,FBSAV6 ,STABSEN,TABSENSOR,DRAPE_SH4N, DRAPE_SH3N,
170 Z H3D_DATA,MULTI_FVM,IGRBRIC,IGRSH4N,IGRSH3N,IGRBEAM,FORNEQS,MAXDGAP,
171 A NDDL0 ,NNZK0 ,IT_T ,IMPBUF_TAB,CPTREAC,FTHREAC,NODREAC, DRAPEG,
172 B INTERFACES,TH_SURF,DPL0CLD,VEL0CLD,SNPC,STF,GLOB_THERM, WFEXT_MD)
195 use python_funct_mod,
only: python_
199#include "implicit_f.inc"
203#include "comlock.inc"
205#include "dmumps_struc.h"
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"
222 TYPE(timer_) :: TIMERS
224 INTEGER ,
INTENT(IN) :: NSENSOR
225 INTEGER ,
INTENT(IN) :: SNPC
226 INTEGER ,
INTENT(IN) :: STF
227 INTEGER ITASK,ICODE(*), ISKEW(*), ISKWN(LISKN,*),(*),
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(*), LJOINT(*), ICODT(*), ICODR(*), ILINK(*),
233 . LLINK(*),ISKY(*),ADSKY(*),
234 . NNLINK(10,*),(*),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(*),(*),
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 ,,ILENXV ,ISLEN7 ,IRLEN7 ,ISLEN11,IRLEN11,
259 . ISLEN17,IRLEN17,IRLEN7T,ISLEN7T,
260 . IRLEN20,ISLEN20,IRLEN20T,ISLEN20T,IRLEN20E,,
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)
268 TYPE(PRGRAPH) :: GRAPHE(*)
271 TYPE(dmumps_struc) MUMPS_PAR
276 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*),
278 TYPE(H3D_DATABASE) :: H3D_DATA
279 TYPE(MULTI_FVM_STRUCT),
INTENT(INOUT) :: MULTI_FVM
281 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
282 TYPE () ,
DIMENSION(NGRSHEL) :: IGRSH4N
283 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
284 TYPE () ,
DIMENSION(NGRBEAM) :: IGRBEAM
285 TYPE (GROUP_) ,
DIMENSION(NSURF) :: IGRSURF
286 TYPE (DRAPE_) :: (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
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,,LI11,
309 . li1,li2,li3,li4,li5,li6,li7,li8,li9,lif,ic,isetp,
310 . li12,nddl_ini0,li13,li14,li15,lnss3,lnsb2,lnsrb2
311 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IADI0,JDII0
313 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSS,ISS,NSS2,ISS2,NSS3,ISS3
314 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSB2,ISB2,IAINT2
316 INTEGER ,IFDIS,NODFTSK ,NODLTSK,N1,N2,N3
318 INTEGER LBAND,NCL_MAX,IRFLAG,IPRINT0,IPRJ_S
320 INTEGER IBID,IFIF,F_DDL,L_DDL,NSPC_OLD,NSPC,NFXV_G
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
326 INTEGER,
POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
327 INTEGER,
DIMENSION(:) ,
POINTER :: IADK,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,X_C,DD,DDR,X_A,R_IMP
334 my_real,
DIMENSION(:) ,
POINTER :: FEXT,DG,DGR,DG0,DGR0,BUFIN_C,AC,ACR
336 character*1 anew_stif
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
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
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
390 fext =>impbuf_tab%FEXT
394 dgr0 =>impbuf_tab%DGR0
397 r_imp => impbuf_tab%R_IMP
398 ALLOCATE(iaint2(nint2))
407 IF (imconv==1) imconv=2
415 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0) iprint0=1
416 IF (iline/=1) inprint=nprint
421 IF (irref>0.AND.imconv==1.AND.iline/=1)
THEN
436 IF (imconv==2) imconv=1
449 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
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,
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,
489 CALL imp_b2a(a ,ar ,iddl ,ndof ,lb0 )
490 IF (ncycle==ilintf)
THEN
504 IF (ncycle>1.AND.iline/=1)
THEN
511 1 ddr ,i_imp(5),i_imp(7))
514 IF (iroddl
CALL zeror_hp(dr_imp,numnod)
517 IF (iroddl/=0)
CALL zeror_hp(acr,numnod)
519 IF (isigini==1.AND.ncycle==1)
THEN
520 CALL imp_setb(a ,ar ,iddl ,ndof ,lb0 )
523 IF (ncycle==1.AND.idyna>0)
524 .
CALL dyna_ina(ibcl ,forc ,snpc ,npc ,tf ,a ,
525 2 v ,x ,skews ,ar ,vr ,
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,
544 CALL force_imp( ibcl ,forc ,snpc ,npc ,tf ,
546 3 acr ,vr ,nsensor ,sensor_tab ,tfexc ,
547 4 iads_f ,fsky ,dummy_fext ,h3d_data ,cptreac ,
549 6 dpl0cld ,vel0cld ,d ,dr ,nconld ,
550 7 numnod ,nfunct ,stf ,wfext)
553 DO i=iad_elem(1,1),iad_elem(1,nspmd+1)-1
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
570 lband = iad_elem(1,nspmd+1)-iad_elem(1,1)
576 CALL spmd_sumf_a(ac,acr,iad_elem,fr_elem,ntmp,lband)
583 2 v ,x ,skews%SKEW ,ms,tfexc,
584 3 nsensor,sensor_tab,weight,
586 5 nrbyac,irbyac,npby ,rby, python)
593 2 v ,x ,xframe ,ms,tfexc,
594 3 nsensor,sensor_tab,weight,iframe,
596 5 nrbyac,irbyac,npby ,rby,iskew,python )
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 ,
610 3 x ,dirul ,ndof ,a ,ar )
619 IF (ikc(i)==3.OR.ikc(i)==10) ikc(i)=0
623 IF (ikc(i)==4.OR.ikc(i)==11) ikc(i)=0
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)
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)
644 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
650 IF(ifdis>0.AND.imconv==1)
THEN
651 IF (ncycle>1.AND.iline/=1)
653 .
CALL fv_dd0(iddl ,ikc ,ndof ,dd ,ddr ,d_imp)
656 IF (ikc(i)==3) ikc(i)=4
658 IF (ikc(i)==10) ikc(i)=11
666 IF(irwall>0.AND.imconv>=0)
THEN
668 WRITE(iout,*)
' *--------- RIGID WALL IMPACT---------*'
669 WRITE(istdo,*)
' *--------- RIGID WALL IMPACT---------*'
678 CALL imp_setb(ac ,acr ,iddl ,ndof ,lb )
685 IF (isolv==5.OR.isolv==6.AND.imconv>=0)
THEN
688 IF (ipupd==0.AND.i_imp(2)==0.AND.it==0)
THEN
692 IF(irwall > 0 ) idsc = 1
704 IF (imon>0 .AND. itask ==0)
CALL startime(timers,31)
716 CALL zero1(diag_k,nddl)
717 CALL zero1(lt_k,nnzk)
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)
738 IF (i_imp(11)==1)
THEN
743 1 itab ,nrbyac ,irbyac ,nsc ,ikinw(li1),
744 2 nmc ,ikinw(li2),ikinw(li3),ikinw(li4),nint2 ,
745 3 iint2 ,ipari ,intbuf_tab,ikinw(li8),ikinw(li5),
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))
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 )
785 IF (idyna>0.AND.idy_damp>0)
THEN
786 CALL dyna_cpk0(nddl ,nnzk ,iadk ,jdik ,diag_k ,
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 )
800 IF (idyna>0.OR.iqstat>0)
801 .
CALL imp_dynam(nodft ,nodlt ,iddl ,ndof ,diag_k ,
802 . ms ,in ,hht_a ,weight ,iadk ,
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,
811 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
818 1 icodt ,icodr ,iskew ,ibfv ,npc ,
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 ,
836 1 iadk ,jdik ,ndof ,ikc ,iddl ,
837 2 inloc ,fr_elem ,iad_elem ,nddl )
839 CALL weightddl(iddl ,ndof ,ikc ,weight ,w_ddl ,inloc )
843 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
847 IF (nspc/=nspc_old)
THEN
850 WRITE(iout,1012)nspc_old,nspc
851 WRITE(istdo,1012)nspc_old,nspc
859 CALL fil_span1(nrbyac,irbyac,npby,iddl,nddl,ikc,ndof,inloc)
862 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
865 CALL pr_infok(nddl0,nnzk0,nddl,nnzk,
max(nnmax,nkmax))
868 CALL k_band(nddl,iadk,jdik,ibid)
869 maxb =
min(maxb,ibid)
871 CALL m_lnz(nddl,iadk,jdik,maxb,max_l)
875 ntmp = (tstop-tt)/dt2
891 IF (imconv/=-2)
CALL ini_k0h(nddl,nnzk,nnzk,iadk,jdik)
895 IF (nint7<=0.AND.imconv==1.AND.nspmd==1)
896 .
CALL imp_check(itab ,nddl ,iddl ,diag_k ,ndof ,
897 . ikc ,inloc ,nddl0 )
901 IF (isolv==4.OR.isolv==6)
THEN
909 IF (imconv==-2.AND.iline==0)
THEN
910 IF (nint7 > 0) nint7=0
918 CALL qstat_ini(nddl ,inloc ,iddl ,ndof ,ikc ,
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)
935 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
936 2 ind_imp ,ndof ,nint7 )
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))
951 ALLOCATE(iss2(lnss2),iss3(lnss3),isb2(lnsb2))
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))
978 2 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
979 3 iddli ,ikc ,ndof ,
nsrem ,ind_imp )
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 ,
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
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 ,
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
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 ,
1033 IF (imon>0)
CALL stoptime(timers,31)
1035 DEALLOCATE(nss2,nss3,nsb2)
1036 DEALLOCATE(iss2,iss3,isb2)
1058 ALLOCATE(diag_i(
nddli))
1059 ALLOCATE(lt_i(
nnzi))
1068 ALLOCATE(diag_i(
nddli))
1069 ALLOCATE(lt_i(
nnzi))
1079 IF (isolv==4.OR.isolv==6)
THEN
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
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
1115 IF (idtc==3.AND.imconv==1.AND.
1117 CALL get_fext(nddl0 ,nddl ,iddl ,ndof ,ikc ,
1118 1 inloc ,lb ,fext ,ac ,acr )
1119 r_imp(13) = tstop-tt+dt2
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 )
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 )
1148 IF (
iconta> 0.AND.gap>zero)
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 ,
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 ,skews%SKEW ,
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 ,
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 ,
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 ,
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
1207 WRITE(iout,1011)nddli_g
1208 WRITE(istdo,1011)nddli_g
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)
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)
1237 WRITE(iout,1009)int(-gap)
1238 WRITE(istdo,1009)int(-gap)
1242 IF (isprb==1.AND.imconv==1)
THEN
1248 IF (isigini==1.AND.ncycle==1.AND.imconv==1)
THEN
1258 IF (ilintf>2.AND.ncycle<ilintf)
THEN
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))
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)
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,
1301 WRITE(6,*)
"Fatal error: MUMPS is required"
1307 IF(ncycle==1.AND.imconv==1.AND.i_imp(5)==0)
THEN
1313 IF (
m_vs> 0) npcgpv=-1
1318 1 x ,iparg ,ixc ,ixtg ,partsav ,
1319 2 elbuf_tab ,pm ,ndof ,iddl ,ikc )
1330 IF (ncycle==1.AND.ispmd==0.AND.itask==0)
THEN
1333 WRITE(iout,*)
' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1335 WRITE(istdo,*)
' ** BEGIN LINEAR QUASI-STATIC IMPLICIT COMPUTATION **'
1340 WRITE(iout,*)
' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1342 WRITE(istdo,*)
' ** BEGIN LINEAR STATIC IMPLICIT COMPUTATION **'
1353 IF (r2>zero.AND.r2<ep30)
THEN
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 ,
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 )
1377 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc ,
1380 WRITE(iout,1008)itab(nnod)
1381 WRITE(istdo,1008)itab(nnod)
1384 ELSEIF(iprec>1.AND.isolv<=2)
THEN
1385 CALL imp_checm(itab ,nddl ,iddl ,diag_m ,ndof ,
1386 . ikc ,inloc ,nddl0 )
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 )
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,
1401 6 ixtg ,sh4tree,sh3tree,irbe3 ,lrbe3,
1402 7 frbe3 ,irbe2 ,lrbe2 )
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)
1444 IF ((isecut>0 .OR. iisrot>0 .OR. impose_dr/=0 .OR. idrot==1) .AND. iroddl/=0)
THEN
1457 IF (r_imp(18)<zero.OR.imconv==-2)
GOTO 300
1461 IF(ncy_max>0.AND.ncycle>ncy_max)
CALL imp_stop(-3)
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,
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
1488 IF (isigini==1)
THEN
1493 bfac= (tt-r_imp(19))/(tstop-r_imp(19))
1495 IF (r_imp(10)<zero)
CALL vaxpy_hp(nddl ,lb ,lb0 ,r_imp(10))
1506 IF (r2>=zero.AND.r2<ep30)
THEN
1507 ELSEIF(idyna==0.AND.iqstat==0)
THEN
1511 IF (inconv == 1) r_imp(1)=
max(r_imp(1),r2)
1513 IF(n_lim == 1 .AND. isprb == 0) r_imp(1)=r2
1516 IF (sqrt(r2/r_imp(1))<=n_tol)
THEN
1520 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1530 tmp2 = tstop-tt+tmp1-dt2
1531 bfac =tmp1/
max(dt2,tmp2)
1533 r_imp(2)=r2*bfac*bfac
1537 IF (
iconta>0) r_imp(12)=zep9
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
1557 ELSEIF (imconv==-1)
THEN
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))
1569 IF (isprb==1.OR.isigini==1)
THEN
1570 IF (r_imp(10)<zero)
THEN
1581 faci=
min(one,r_imp(12))
1582 r02=faci*faci*r_imp(1)
1586 IF (it==1.AND.irefi==5)
THEN
1588 r_imp(6) =
max(em20,r_imp(6))
1590 IF (it==1.AND.
iconta>i_imp(6))
THEN
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 ,
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))
1606 IF (i_imp(7)==0.AND.irefi==4) irefi= -4
1608 IF (imconv>0.AND.isprb/=1)
THEN
1609 r02 =
max(r02,rf_min*rf_min)
1610 r02 =
min(r02,rf_max*rf_max)
1613 IF (ncycle==1.AND.insolv>=2.AND.it==0.AND.imconv>=0)
1623 IF (nddl_g==0.AND.nfxvel > 0)
THEN
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)
1665 ntmp=ntmp+iabs(dirul(i))
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 )
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 )
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 )
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 )
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)
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)
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
1743 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
1744 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
1745 3 x ,dirul ,ndof ,a ,ar )
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,
1769 IF (ncycle == 1 .AND. istop == 0 .AND.isolv == 7)
THEN
1770 IF (it == 1 .AND. i_imp(5) == 0 )
THEN
1772 .
" **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1774 .
" **PCG SOLVER HAS BEEN SELECTED FIRSTLY FOR THIS RUN**"
1779 IF (istop == 3 .AND.isolv == 7)
THEN
1787 IF (nspmd > 1 )
THEN
1788 IF (imumpsd == 0) imumpsd = 1
1789 IF (imumpsv == 0) imumpsv = 1
1791 IF (ncycle == 1 )
THEN
1792 IF (ispmd == 0)
THEN
1794 .
" **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1796 .
" **DIRECT SOLVER HAS BEEN SELECTED FOR THIS RUN**"
1799 IF (ispmd == 0)
THEN
1801 .
" **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1803 .
" **PCG SOLVER HAS BEEN CHANGED TO DIRECT SOLVER **"
1809 CALL iddl2nod(nddl ,iddl ,ndof ,ikc ,inloc ,
1812 WRITE(iout,1008)itab(nnod)
1813 WRITE(istdo,1008)itab(nnod)
1816 inconv =
min(1,imconv)
1817 IF (imconv<=-2)
THEN
1819 IF (iroddl/=0)
CALL zeror_hp(dr_imp,numnod)
1822 IF (isprb==1.AND.imconv==-3.AND.
iconta==0)
THEN
1831 IF (ncycle==0) dt1=zero
1833 IF (imconv==-2.AND.i_imp(11)/=1)
THEN
1835 CALL imp_dtn(it,r_imp(11),r_imp(10),r_imp(24))
1838 IF (dt_imp==dt_min)
THEN
1844 IF (imconv<=-2.OR.imconv==0)
THEN
1845 IF (it==1.AND.
iconta>i_imp(6))
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
1858 IF (ncycle > 1) i_imp(7) = 1
1859 r_imp(1)=
max(r_imp(1),r02)
1864 r_imp(1) =
max(r_imp(1),rf_min*rf_min)
1865 r_imp(1) =
min(r_imp(1),rf_max*rf_max)
1868 IF (imconv==2) dt2=dt2/i_imp(2)
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 ,
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 )
1891 IF (inconv==1 .AND. (isecut>0.OR.iisrot>0
1892 . .OR. impose_dr/=0 .OR. idrot==1)
1893 . .AND. iroddl/=0)
THEN
1898 1 x_a ,v ,vr ,a ,ar )
1905 IF(idyna>0.AND.imconv==1)
THEN
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,
1915 a vel0cld, numnod,nsurf,nfunct,nconld,
1916 b ngrav,nfxvel,stf,numskw,python)
1920 IF (imconv<=-2 .AND.iqstat>0 .AND. i_imp(7) >0)
THEN
1921 CALL dis_cp(nndl,d_imp,dr_imp,1 )
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
1947 IF (ilintf>0)
DEALLOCATE(xi_c)
1949 IF (nint2>0)
DEALLOCATE(iaint2)
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,
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)
3113 1 ICODE ,ISKEW ,ISKWN ,IPART ,IXTG ,IXS ,IXQ ,
3114 2 IXC ,IXT ,IXP ,IXR ,IXTG1 ,ITAB ,ITABM1 ,
3115 3 NPC ,IBCL ,IBFV ,SENSOR_TAB,NNLINK ,LNLINK ,IPARG ,IGRV ,
3116 4 IPARI ,INTBUF_TAB,NPRW ,ICONX ,NPBY ,LPBY ,LRIVET ,
3117 5 NSTRF ,LJOINT ,ICODT ,ICODR ,ISKY ,ADSKY ,IADS_F ,
3118 6 ILINK ,LLINK ,WEIGHT ,ITASK ,IBVEL ,LBVEL ,FBVEL ,
3119 7 X ,D ,V ,VR ,DR ,THKE ,DAMP ,MS ,
3120 8 IN ,PM ,SKEWS ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
3121 9 TF ,FORC ,VEL ,FSAV ,AGRV ,FR_WAVE,PARTS0 ,
3122 A ELBUF ,RBY ,RIVET ,FR_ELEM,IAD_ELEM,NSENSOR,
3123 B WA ,A ,AR ,STIFN ,STIFR ,PARTSAV,FSKY ,
3124 C FSKYI ,IFRAME ,XFRAME ,W16 ,IACTIV ,FSKYM ,IGEO ,IPM ,
3125 D WFEXT ,NODFT ,NODLT ,NINT7 ,NUM_IMP,NS_IMP ,NE_IMP ,IND_IMP,
3126 L IT ,RWBUF ,LPRW ,FR_WALL,NBINTC ,INTLIST,FOPT ,RWSAV ,
3127 M FSAVD ,DIRUL ,LGRAV ,IRBE3 ,LRBE3 ,FRBE3 ,
3128 N FRWL6 ,IRBE2 ,LRBE2 ,ICFIELD,LCFIELD,CFIELD,ELBUF_TAB,WEIGHT_MD,
3129 O STACK ,DIMFB ,FBSAV6 ,STABSEN,TABSENSOR,DRAPE_SH4N,DRAPE_SH3N,H3D_DATA,
3130 P NDDL0 ,NNZK0 ,IMPBUF_TAB,CPTREAC,FTHREAC,NODREAC,DRAPEG,TH_SURF ,
3131 Q DPL0CLD,VEL0CLD,SNPC,STF, WFEXT_MD,IGRSURF)
3136 USE python_funct_mod,
only: python_
3147 USE skew_mod ,
ONLY : skew_
3152#include "implicit_f.inc"
3157#include "dmumps_struc.h"
3159#include "timeri_c.inc"
3160#include "impl1_c.inc"
3161#include "impl2_c.inc"
3162#include "param_c.inc"
3163#include "com01_c.inc"
3164#include "com04_c.inc"
3165#include "units_c.inc"
3166#include "task_c.inc"
3170 TYPE(timer_),
INTENT(INOUT) :: TIMERS
3171 TYPE(PYTHON_),
INTENT(INOUT) :: PYTHON
3172 INTEGER ,
INTENT(IN) :: SNPC
3173 INTEGER ,
INTENT(IN) :: STF
3174 INTEGER ,
INTENT(IN) :: NSENSOR
3175 INTEGER ITASK,ICODE(*), ISKEW(*), ISKWN(LISKN,*),ITABM1(*),
3176 . IPART(*),IXS(*),IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*),
3178(*),IPARG(NPARG,*),IPARI(NPARI,*),
3179 . (*), NPBY(NNPBY,*), LPBY(*),IADS_F(*),
3180 . (*), NSTRF(*), (*), ICODT(*), ICODR(*), ILINK(*),
3181 . LLINK(*),ISKY(*),ADSKY(*),
3182 . NNLINK(10,*),LNLINK(*),IGRV(*),LGRAV(*),
3183 . WEIGHT(*),IFRAME(LISKN,*),IBVEL(NBVELP,*),LBVEL(*),
3184 . IACTIV(*),IGEO(*),IPM(*),ICONX(*),NODFT ,NODLT,IT,
3185 . icfield(*),lcfield(*),weight_md(*),
3186 . dimfb,stabsen,tabsensor(*),cptreac,nodreac(*)
3187 INTEGER LPRW(*), FR_WALL(NSPMD+2,*), FR_ELEM(*), IAD_ELEM(2,*),NBINTC ,INTLIST(*),DIRUL(
3189 . ms(*) ,in(*) ,pm(npropm,*),geo(npropg,*),
3190 . bufmat(*) ,tf(*) ,forc(*) ,vel(*),fsav(nthvki,*) ,elbuf(*) ,
3191 . rwbuf(nrwlp,*),rwsav(*),rby(nrby,*),
3192 . rivet(*),wa(*), a(3,*) ,ar(3,*),partsav(*) ,
3193 . stifn(*) ,stifr(*),fsky(*),fskyi(*),dr(3,*),
3194 . eani(*),agrv(*), thke(*),fr_wave(*),parts0(*),bufgeo(*),
3195 . xframe(nxframe,*),w16(*),fbvel(*),fskym(*),bufsf(*),
3196 . fopt(6,*),fsavd(nthvki,*),cfield(*),frbe3(*),
3198 INTEGER NDDL0,NNZK0,NINT7
3199 INTEGER NUM_IMP(*),NS_IMP(*),NE_IMP(*),IND_IMP(*),IRBE3(*),LRBE3(*),IRBE2(*),LRBE2(*)
3200 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
3202 my_real,
INTENT(IN) :: DPL0CLD(6,NCONLD),VEL0CLD(6,NCONLD)
3203 DOUBLE PRECISION FRWL6(*)
3204 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
3205 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
3206 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
3207 TYPE (STACK_PLY) :: STACK
3208 TYPE(H3D_DATABASE) :: H3D_DATA
3209 TYPE (IMPBUF_STRUCT_) ,
TARGET :: IMPBUF_TAB
3210 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
3211 TYPE () ,
INTENT(INOUT) :: TH_SURF
3212 TYPE(SKEW_),
INTENT(INOUT) :: SKEWS
3213 DOUBLE PRECISION,
INTENT(INOUT) :
3214TYPE (GROUP_) ,
DIMENSION(NSURF) :: IGRSURF
3218 INTEGER ,NKMAX,N_IMPN,N_IMPM,LNSS,,NDT,NDS,NT_RW
3219 INTEGER I,J,NTMP,L1,L2,L3,NNDL,INPRINT,ISTOP,LI10,LI11
3221 . li12,lnss3,li13,li14,li15,lnsb2,lnsrb2
3222 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSS,ISS,NSS2,ISS2,NSS3,ISS3
3223 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NSB2,ISB2,IAINT2
3224 INTEGER NNOD,IFDIS,N1,N2,N3
3225 INTEGER LBAND,NCL_MAX,IRFLAG,IBID
3226 my_real TFEXC,TMP,TMP1,TMP2,R2,BFAC,FACI,R02,GAP,,WE_IMP,LAMDA,DUMMY_FEXT(3,1)
3227 INTEGER,
POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
3228 INTEGER,
DIMENSION(:) ,
POINTER :: IADK,JDIK,IADM,JDIM
3229 INTEGER,
DIMENSION(:) ,
POINTER :: IDDL,NDOF,INLOC,LSIZE,I_IMP,IKC,
3230 . ,NSC,IINT2,NKUD,IMONV,
3231 . ,W_DDL,IKUD,NDOFI,IDDLI
3232 my_real,
DIMENSION(:) ,
POINTER :: DIAG_K,LT_K,DIAG_M,LT_M,LB,
3233 . LB0,,D_IMP,ELBUF_C,BUFMAT_C,
3234 . DR_IMP,X_C,DD,DDR,X_A,R_IMP
3235 my_real,
DIMENSION(:) ,
POINTER :: FEXT,DG,DGR,DG0,DGR0,BUFIN_C,AC,ACR
3236 TYPE(PRGRAPH) :: GRAPHE(1)
3238 TYPE(dmumps_struc) MUMPS_PAR
3248 nddl => impbuf_tab%NDDL
3249 nnzk => impbuf_tab%NNZK
3250 nrbyac => impbuf_tab%NRBYAC
3251 nint2 => impbuf_tab%NINT2
3252 nmc => impbuf_tab%NMC
3253 nmc2 => impbuf_tab%NMC2
3254 nmonv => impbuf_tab%NMONV
3255 iadk => impbuf_tab%IADK
3256 jdik => impbuf_tab%JDIK
3257 iddl => impbuf_tab%IDDL
3258 ndof => impbuf_tab%NDOF
3259 inloc => impbuf_tab%INLOC
3260 lsize => impbuf_tab%LSIZE
3261 i_imp => impbuf_tab%I_IMP
3262 irbyac => impbuf_tab%IRBYAC
3263 nsc => impbuf_tab%NSC
3264 iint2 => impbuf_tab%IINT2
3265 nkud => impbuf_tab%NKUD
3266 imonv => impbuf_tab%IMONV
3267 ikinw => impbuf_tab%IKINW
3268 ikc => impbuf_tab%IKC
3269 w_ddl => impbuf_tab%W_DDL
3270 ikud => impbuf_tab%IKUD
3271 iadm => impbuf_tab%IADM
3272 jdim => impbuf_tab%JDIM
3273 iddli => impbuf_tab%IDDLI
3274 ndofi => impbuf_tab%NDOFI
3275 diag_k =>impbuf_tab%DIAG_K
3276 lt_k =>impbuf_tab%LT_K
3277 diag_m =>impbuf_tab%DIAG_M
3278 lt_m =>impbuf_tab%LT_M
3280 lb0 =>impbuf_tab%LB0
3281 bkud =>impbuf_tab%BKUD
3282 d_imp =>impbuf_tab%D_IMP
3283 elbuf_c =>impbuf_tab%ELBUF_C
3284 bufmat_c=>impbuf_tab%BUFMAT_C
3285 x_c =>impbuf_tab%X_C
3287 ddr =>impbuf_tab%DDR
3288 fext =>impbuf_tab%FEXT
3290 dgr =>impbuf_tab%DGR
3291 dg0 =>impbuf_tab%DG0
3292 dgr0 =>impbuf_tab%DGR0
3293 dr_imp=>impbuf_tab%DR_IMP
3296 r_imp => impbuf_tab%R_IMP
3297 ALLOCATE(iaint2(nint2))
3310 IF (irref>0.AND.imconv==1.AND.iline/=1)
THEN
3316 CALL zeror(d_imp,numnod)
3317 IF (iroddl/=0)
CALL zeror(dr_imp,numnod)
3318 CALL zeror(ac,numnod)
3319 IF (iroddl/=0)
CALL zeror(acr,numnod)
3326 CALL force_imp(ibcl ,forc ,snpc ,npc ,tf ,
3328 3 acr ,vr ,nsensor ,sensor_tab ,tfexc ,
3330 5 fthreac ,nodreac ,th_surf ,
3331 6 dpl0cld ,vel0cld ,d ,dr ,nconld ,
3332 7 numnod ,nfunct ,stf ,wfext)
3334 DO i=iad_elem(1,1),iad_elem(1,nspmd+1)-1
3339 tmp = abs(ac(n1))+abs(ac(n2))+abs(ac(n3))
3340 IF (iroddl/=0) tmp = tmp + abs(acr(n1))+abs(acr(n2))+abs(acr(n3))
3341 IF (tmp>zero) ncl_max = ncl_max + 1
3348 lband = iad_elem(1,nspmd+1)-iad_elem(1,1)
3354 CALL spmd_sumf_a(ac,acr,iad_elem,fr_elem,ntmp,lband)
3359 2 v ,x ,skews%SKEW ,ms,tfexc,
3360 3 nsensor,sensor_tab
3362 5 nrbyac ,irbyac ,npby ,rby , python)
3366 2 v ,x ,xframe ,ms,tfexc,
3367 3 nsensor,sensor_tab,weight,iframe,
3369 5 nrbyac,irbyac,npby ,rby,iskwn, python )
3372 IF(nfxvel/=0.AND.imconv==1)
THEN
3373 CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
3374 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
3375 2 skews%SKEW ,iframe ,xframe ,v ,vr ,
3376 3 x ,dirul ,ndof ,a ,vr )
3380 IF (nrwall > 0)
THEN
3382 1 x ,d_imp ,v ,rwbuf , lprw ,
3383 2 nprw ,ms ,fsav(1 ,ninter+1) , fr_wall ,
3384 3 fopt ,rwsav ,weight ,fsavd(1,ninter+1),
3385 4 nt_rw ,iddl ,ikc ,imconv , ndof , frwl6
3386 5 weight_md ,dimfb ,fbsav6 ,stabsen , tabsensor, wfext, wfext_md)
3388 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
3392 IF(ifdis>0.AND.imconv==1)
THEN
3395 IF (ikc(i)==3) ikc(i)=4
3396 IF (ikc(i)==10) ikc(i)=11
3404 WRITE(iout,*)
' *--------- RIGID WALL IMPACT---------*'
3408 CALL imp_setb(ac ,acr ,iddl ,ndof ,lb )
3414 WRITE(istdo,*)
' ** BEGIN IMPLICIT MODEL CHECKING **'
3416 WRITE(iout,*)
' ** BEGIN IMPLICIT MODEL CHECKING **'
3421 1 icodt ,icodr ,iskew ,ibfv ,npc ,
3422 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
3424 4 itab ,nrbyac ,irbyac ,nint2 ,iint2 ,
3425 5 ipari ,intbuf_tab,nt_rw ,nddl ,
3426 6 ndof ,ikc ,inloc ,iddl ,nddl0 ,
3430 1 icodt ,icodr ,iskew ,ibfv ,npc ,
3431 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
3432 3 rby ,x ,skews%SKEW ,lpby ,npby ,
3433 4 itab ,nrbyac ,irbyac ,nint2 ,iint2 ,
3434 5 ipari ,intbuf_tab,nt_rw ,nddl ,
3435 6 ndof ,ikc ,inloc ,iddl ,nddl0 ,
3445 WRITE(istdo,*)
' * FINIT ELEMENT CHECKING '
3446 WRITE(iout,*)
' ** FINIT ELEMENT CHECKING **'
3449 IF (imon>0 .AND. itask ==0)
CALL startime(timers,31)
3456 CALL zero1(diag_k,nddl)
3457 CALL zero1(lt_k,nnzk)
3472 li11 = li10+(lsize(8)-lcokm)*lsize(9)
3473 li12 = li11+lcokm*lsize(10)
3474 li13 = li12+4*lsize(11)
3475 li14 = li13+lsize(14)
3476 li15 = li14+lsize(15)
3477 lif = li15+lsize(16)
3482 1 pm ,geo ,ipm ,igeo ,elbuf ,
3483 2 ixs ,ixq ,ixc ,ixt ,ixp ,
3484 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
3485 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
3486 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
3487 6 rby ,skews%SKEW ,x ,
3488 7 wa ,iddl ,ndof ,diag_k ,lt_k ,
3489 8 iadk ,jdik ,ikg ,ibid ,itask ,
3490 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
3497 IF (impdeb>0.AND.nddl<1000)
THEN
3498 CALL pvp_k(nddl,iadk,jdik,iddl ,inloc,ndof,itab,diag_k,lt_k ,lamda, j , ms )
3499 tmp = two*sqrt(one/lamda)
3500 write(iout,*)
'critical DT =',tmp
3502 IF (idyna>0.OR.iqstat>0)
3503 .
CALL imp_dynam(nodft ,nodlt ,iddl ,ndof ,diag_k ,
3504 . ms ,in ,hht_a ,weight ,iadk ,
3507 1 icodt ,icodr ,iskew ,ibfv ,npc ,
3509 3 rby ,x ,skews%SKEW ,lpby ,npby ,
3510 4 itab ,weight ,ms ,in ,nrbyac ,
3511 5 irbyac ,nsc ,ikinw(li1) ,nmc ,ikinw(li2),
3512 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
3513 7 ikinw(li5),ikinw(li6),ikinw(li7) ,ipari ,intbuf_tab,
3514 8 nddl ,nnzk ,iadk ,jdik ,
3515 9 diag_k ,lt_k ,ndof ,iddl ,ikc ,
3516 a d_imp ,lb ,nkud ,ikud ,bkud ,
3517 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
3518 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
3519 d lrbe2 ,ikinw(li14),ikinw(li15))
3523 1 iadk ,jdik ,ndof ,ikc ,iddl ,
3524 2 inloc ,fr_elem ,iad_elem ,nddl )
3526 CALL weightddl(iddl ,ndof ,ikc ,weight ,w_ddl ,inloc )
3528 CALL pr_infok(nddl0,nnzk0,nddl,nnzk,
max(nnmax,nkmax))
3529 IF (iprec>4.AND.nkmax>200)
THEN
3530 CALL k_band(nddl,iadk,jdik,ibid)
3531 maxb =
min(maxb,ibid)
3532 IF (maxb>10000)
THEN
3533 CALL m_lnz(nddl,iadk,jdik,maxb,max_l)
3537 CALL ini_k0h(nddl,nnzk,nnzk,iadk,jdik)
3538 IF (imon>0)
CALL stoptime(timers,31)
3550 IF (imon>0)
CALL startime(timers,31)
3552 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
3553 2 ind_imp ,ndof ,nint7 )
3555 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
3556 2 npby ,lpby ,itab ,nrbyac ,irbyac ,
3557 3 lnss ,nint2 ,iint2 ,iaint2 ,lnss2 ,
3559 5 n_impm ,nnmax ,nkmax ,ndof ,
nsrem ,
3560 6 irbe3 ,lrbe3 ,lnss3 ,irbe2 ,lrbe2 ,
3561 7 lnsb2 ,lnsrb2 ,ind_imp )
3567 ALLOCATE(iss2(lnss2),iss3(lnss3),isb2(lnsb2))
3574 1 ipari ,intbuf_tab,num_imp ,ns_imp ,ne_imp ,
3575 2 npby ,lpby ,itab ,nrbyac ,irbyac ,
3576 3 nss ,iss ,nint2 ,iint2 ,nss2 ,
3579 6 nnmax ,nkmax ,n_impm ,ndof ,iaint2 ,
3580 7 irbe3 ,lrbe3 ,nss3 ,iss3 ,irbe2 ,
3581 8 lrbe2 ,nsb2 ,isb2 ,ind_imp )
3582 ALLOCATE(diag_i(
nddli))
3583 ALLOCATE(lt_i(
nnzi))
3591 1 icodt ,icodr ,iskew ,ibfv ,npc ,
3592 2 tf ,vel ,nsensor ,sensor_tab,xframe ,
3593 3 rby ,x ,skews%SKEW ,lpby ,npby ,
3594 4 itab ,weight ,ms ,in ,nrbyac ,
3595 5 irbyac ,nss ,iss ,ipari ,intbuf_tab,
3596 6 nint2 ,iint2 ,iaint2 ,nss2 ,
3598 8 diag_i ,lt_i ,iddli ,nddl0 ,iadk ,
3599 9 jdik ,ikc ,diag_k ,lt_k ,iddl ,
3600 a num_imp ,ns_imp ,ne_imp ,ind_imp ,ndofi ,
3601 b
itok ,d_imp ,lb ,gap ,dirul ,
3602 c nt_rw ,ibid ,irbe3 ,lrbe3 ,frbe3 ,
3603 d nss3 ,iss3 ,irbe2 ,lrbe2 ,nsb2 ,
3606 DEALLOCATE(nss2,nss3,nsb2)
3607 DEALLOCATE(iss2,iss3,isb2)
3610 IF (nspmd==1.AND.imconv>=0.AND.(lprint/=0.OR.nprint/=0))
THEN
3615 IF (imon>0)
CALL stoptime(timers,31)
3618 IF (nfxvel/=0.AND.imconv==1)
THEN
3619 CALL fv_imp1(nkud ,ikud ,bkud ,lb )
3622 CALL upd_rhs(icodt ,icodr ,iskew ,ibfv ,xframe ,
3623 1 rby ,x ,skews%SKEW ,lpby ,npby ,
3624 2 nrbyac,irbyac,nint2 ,iint2 ,ipari ,
3625 3 intbuf_tab ,ndof ,iddl ,ikc ,
3626 4 nddl0 ,lb ,isetk ,inloc ,dirul ,
3627 5 a ,ar ,ac ,acr ,nt_rw ,
3628 6 irflag,w_ddl ,nddl ,r_imp(1),idyna ,
3629 7 v ,vr ,ms ,in ,irbe3 ,
3630 8 lrbe3 ,frbe3 ,weight ,irbe2 ,lrbe2 )
3638 1 num_imp ,ns_imp ,ne_imp ,ipari ,intbuf_tab,
3639 2 npby ,lpby ,itab ,nrbyac ,
3640 3 irbyac ,nint2 ,iint2 ,iddl ,ikc ,
3641 4 ndof ,inloc ,
nsrem ,
nsl ,nbintc ,
3642 5 intlist ,x ,ibfv ,dirul ,skews%SKEW,
3643 6 xframe ,iskew ,icodt ,a ,d_imp ,
3644 7 lb ,ifdis ,nddl ,dr_imp ,iddli ,
3645 8 irbe3 ,lrbe3 ,frbe3 ,irbe2 ,lrbe2 )
3650 1 num_imp ,ns_imp ,ne_imp ,ipari ,intbuf_tab,
3651 2 iddl ,ikc ,ndof ,
nsrem ,
3652 3
nsl ,d_imp ,dd ,dr_imp ,ddr ,
3654 5 lb ,nddl ,ibfv ,skews%SKEW,xframe ,
3655 6 irbe3 ,lrbe3 ,irbe2 ,lrbe2 ,r_imp(16) ,
3663 WRITE(iout,1009)int(-gap)
3664 WRITE(istdo,1009)int(-gap)
3670 CALL imp_check0(itab ,nddl ,iddl ,diag_k ,diag_m ,
3671 . ndof ,ikc ,inloc ,nddl0 ,inega ,
3673 IF (inega>0)
GOTO 100
3676 IF (r2>zero.AND.r2<ep30)
THEN
3677 ELSEIF(iqstat>0)
THEN
3679 WRITE(iout,*)
' ** WARNING :IMPLICIT LOADING DATA **'
3683 WRITE(iout,*)
' ** ERROR :IMPLICIT LOADING DATA **'
3691 CALL lin_solv(nddl ,iddl ,ndof ,ikc ,d_imp ,
3692 1 dr_imp,l_tol ,nnzk ,iadk ,jdik ,
3694 3 diag_i,lt_i ,
itok ,iadm ,jdim ,
3695 4 diag_m,lt_m ,lb ,r_imp(6),inloc ,
3696 5 fr_elem,iad_elem,w_ddl,itask ,isetp ,
3698 7 ms ,x ,ipari ,intbuf_tab ,
3699 8 num_imp,ns_imp,ne_imp,
nsrem ,
nsl ,
3700 9 ntmp ,graphe, itab ,rbid ,ibid ,
3701 a ibid ,ntmp ,ibid ,ibid ,igrsurf ,
3702 b ibid ,rbid ,ibfv ,skews%SKEW ,
3703 c xframe,mumps_par,ibid,ibid ,rbid ,
3704 d irbe3 ,lrbe3 ,irbe2 ,lrbe2 )
3705 CALL imp_checm0(itab ,nddl ,iddl ,diag_m ,ndof ,ikc ,inloc ,nddl0 ,imp_iw ,imp_ir)
3718 IF (ispmd == 0 .AND. itask == 0)
THEN
3719 WRITE(istdo,1011)imp_ir,imp_iw
3722 1001
FORMAT(
' SYMBOLIC DIM : NDDL =',i8,1x,
'NNZ =',i8,1x,
'NB_MAX =',i8)
3723 1002
FORMAT(
' FINAL DIM : NDDL =',i8,1x,
'NNZ =',i8,1x,
'NB_MAX =',i8)
3724 1006
FORMAT(5x,
'--SUPPLEMENTARY STIFFNESS MATRIX',1x,
'DUE TO INTERFACE IS CREATED --')
3725 1007
FORMAT(5x,
' WITH DIM. : ND =',i8,1x,
'NZ =',i8,1x,'nb_max =
',I8)
3726 1009 FORMAT(3X,'**timestep will be reduced to avoid de-activation
','in
INTERFACE :**
',I8)
3727 1011 FORMAT(/,2X,'** end
IMPLICIT model checking **
'/,
3728 . 5X,'termination with
'/,I8,' errors '/,i8,
' WARNINGS'/
3729 . 5x,
'** DETAILS REPORTED IN LISTING FILE **'/)
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)