171
172
173
175 USE elbufdef_mod
176 USE intbufdef_mod
184 USE pblast_mod
189 USE sensor_mod
192 USE output_mod
193 USE inter_sh_offset_ini_mod , only : inter_sh_offset_ini
194 USE inter_sh_offset_mod , only:sh_offset_
195 USE loads_mod
196 USE inivel_init_mod , only: inivel_init
197 use glob_therm_mod
198 use spmd_xv_inter_type1_mod , only : is_present_inter1
199 USE parith_on_mod, only: element_pon_
200 use rbe3_mod
201 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
202
203
204
205#include "implicit_f.inc"
206
207
208
209#include "com01_c.inc"
210#include "com04_c.inc"
211#include "com08_c.inc"
212#include "com10_c.inc"
213#include "com_xfem1.inc"
214#include "param_c.inc"
215#include "scr02_c.inc"
216#include "scr03_c.inc"
217#include "scr07_c.inc"
218#include "scr12_c.inc"
219#include "scr14_c.inc"
220#include "scr16_c.inc"
221#include "scr17_c.inc"
222#include "scr23_c.inc"
223#include "units_c.inc"
224#include "cong2_c.inc"
225#include "task_c.inc"
226#include "parit_c.inc"
227#include "timerc_c.inc"
228#include "rad2r_c.inc"
229#include "scr18_c.inc"
230#include "spmd_c.inc"
231#include "fxbcom.inc"
232#include "flowcom.inc"
233#include "remesh_c.inc"
234#include "sms_c.inc"
235#include "lagmult.inc"
236#include "sphcom.inc"
237#include "intstamp_c.inc"
238
239
240
241 TYPE(element_pon_) :: PON
242 INTEGER ITASK, NBINTC, NODFT, NODLT, LINDIDEL, LBUFIDEL,
243 . NUMNTHREAD, NDTASK, NFIA, NFEA, NFOA ,NDMA, NFNCA, NFTCA,
244 . NDMA2,NDIN,N1,N2,N3,IGTYP,NPARTL,NGROUC,NGROUNC,
245 . I13A,I13B,I13C,I13D,I13E,I13F,I13G,I13H,I13I,
246 . I15A,I15B,I15C,I15D,I15E,I15F,I15G,I15H,I15I,I15J,I15K,
247 . I87A,I87B,I87C,I87D,I87E,I87F,I87G,I87H,I87I,I87J,
248 . I87K,I87L,I87M,I87N,NFNCA2,NFTCA2,
249 . ISIZXV , ILENXV, I2SIZE, ISLEN7,IRLEN7 ,ISLEN11 ,IRLEN11,
250 . I15ATH, I35ATH, NME17,ISLEN17,IRLEN17,IRLEN7T,ISLEN7T,
251 . IRLEN20,ISLEN20,IRLEN20T,ISLEN20T,NBINT20,,
252 . ISLEN20E,NELEM,LAG_SEC, NGRTH, NFT2,NMRBE2,
253 . INT18KINE,INT24USE,NDAMA2, NRBYKIN_L,IOLDSECT,LBUFIDEL24,
254 . TABMP_L,TAGTRIMC(*),TAGTRIMTG(*), SLLOADP,SFR_ELEM
255 INTEGER
256 . IXS(NIXS,*),IXS10(6,*) ,IXS20(12,*),
257 . IXS16(6,*) , IGEO(NPROPGI,*),
258 . IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*),
259 . IXR(NIXR,*), IXTG(NIXTG,*), IXTG1(4,*),
260 . ITAB(*), IPARG(NPARG,*), IPARI(NPARI,*),
261 . IEXLNK(NR2R,*),
262 . WEIGHT(*), NSTRF(*), IB(NIBCLD,*), ITABM1(*),
263 . MONVOL(*),KXX(NIXX,*),ISENDTO(NINTER+1,NSPMD+1),
264 . FR_NBCC(2,NSPMD+1), IAD_ELEM(2,NSPMD+1) ,FR_ELEM(*),
265 . IRCVFROM(NINTER+1,NSPMD+1), INTLIST(NINTER), PROCNE(*),
266 . NISKYFI(*),ADDCNI2(*),PROCNI2(*),IAD_I2M(*),FR_I2M(*),
267 . FR_NBCCI2(*), IPART(*),
268 . DD_R2R(NSPMD+1,*),IPARTL(*),
269 . MADPRT(*), MADSH4(*), MADSH3(*), MADSOL(*), MADNOD(*),
270 . MADFAIL(*), FR_MAD(5,*), LWIBEM, LWRBEM, LWIFLOW, LWRFLOW,
271 . IFLOW(*), ADDCNEL(0:*), CNEL(0:*), ADDTMPL(0:*),
272 . IPM(NPROPMI,*), (*), IPADMESH(*), SH3TREE(*),
273 . SH4TRIM(*), SH3TRIM(*), NISKYFIE(*),
274 . ICODT(*), ICODR(*),IBFV(NIFV,*),
275 . INOD_PXFEM(*),IEL_PXFEM(*) ,IADC_PXFEM(4,*),ELCUTC(2,*),
276 . ADSKY_PXFEM(*), KXFENOD2ELC(*),NODLEVXF(*),CRKNODIAD(*),
277 . NODEDGE(*),IAD_EDGE(*),FR_EDGE(*),FR_NBEDGE(*), NODREAC(*),
278 . IGROUC(*),(*),FR_RBY(*),FR_RBY6(*),NPBY(*),
279 . NOM_SECT(*), GRTH(*),IGRTH(*), NPRW(*),IAD_RBE2(*),
280 . FR_RBE2(*),FR_RBE2M(*),R2SIZE, IRBE2(NRBE2L,*),LRBE2(*),
281 . IKINE(NUMNOD),LPBY(*), PROCNE_PXFEM(*),
282 . ISENDP_PXFEM(*),IRECVP_PXFEM(*),IADSDP_PXFEM(*),
283 . IADRCP_PXFEM(*),FR_NBCC1(2,*),INOD_CRKXFEM(*),
284 . IEL_CRKXFEM(*),IADC_CRKXFEM(*),ADSKY_CRKXFEM(0:*),
285 . PROCNE_CRKXFEM(*),ISENDP_CRKXFEM(*),IRECVP_CRKXFEM(*),
286 . IADSDP_CRKXFEM(*),IADRCP_CRKXFEM(*),
287 . IGROUPC(*),IGROUPTG(*),IGROUPS(*),IGROUPFLG(2),
288 . IRBKIN_L(*), KINDRBY(*), DD_R2R_ELEM(*),SDD_R2R_ELEM,
289 . KINET(*),WEIGHT_MD(*),NUMSPH_GLO_R2R,FLG_SPHINOUT_R2R,
290 . ISENSINT(NISUBMAX+1,NINTER),NISUBMAX,
291 . INTLIST25(NINTER25) ,INT24E2EUSE ,FXVEL_FGEO,
292 . TAGSLV_RBY(NUMNOD)
293 INTEGER, INTENT(IN ),DIMENSION(LISKN,NUMFRAM+1) :: IFRAME
294 INTEGER, INTENT(IN ),DIMENSION(LISKN,NUMSKW+1) :: ISKWN
295
296
297
298
299 INTEGER, INTENT(INOUT) :: INT7ITIED
300 INTEGER, INTENT(INOUT) :: NHIER_RBY
302 . x(3,*), d(3,*), v(3,*), vr(3,*),
303 . ms(*), in(*), wa(*), a(3,*), ar(3,*),
304 . uwa(*), stifn(*), stifr(*),
305 . partsav(npsav,*),parts0(*),
306 . dmas, diner ,
307 . pm(npropm,*) , geo(npropg,*),
308 . viscn(*),
309 . secbuf(*),secfcum(7,numnod,nsect),xframe(nxframe,*),
310 . elbuf(*), msc(*), inc(*), mstg(*), intg(*), ptg(*),
311 . mscnd(*), incnd(*), fthe(*), fthesky(*),ftheskyi(*), mcp(*),
312 . ms0(*), admsms(*), mcpc(*), mcptg(*), diag_sms(*),
313 . dmelc(*), dmeltg(*), dmels(*), dmeltr(*), dmelp(*), dmelrt(*),
314 . res_sms(3,*),rby(nrby,*), dmint2(4,i2nsn25),
315 . dmsph(*),condn(*),condnsky ,tab_mat(ngroup),forneqs(3,*)
317 . fxbfp(*), fxbefw(*), fxbedp(*), fxbgrp(*), fxbgrw(*),in0(*)
319 . thke(numelc+numeltg)
320
321
322
323
324
325 LOGICAL, DIMENSION(NSPMD), INTENT(inout) :: NEED_COMM_INT25_SOLID_EROSION
326 INTEGER, INTENT(inout) :: COMM_INT25_SOLID_EROSION
327
328 DOUBLE PRECISION XDP(3,*)
329 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
330 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
331 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
332 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
333 TYPE(H3D_DATABASE) :: H3D_DATA
334 TYPE (PINCH) :: PINCH_DATA
335 TYPE (SENSORS_) :: SENSORS
336
337 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
338 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
339 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
340 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
341 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
342 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
343 TYPE (GROUP_) , DIMENSION(NGRSPRI) :: IGRSPRING
344 TYPE (GROUP_) , DIMENSION(NGRPART) :: IGRPART
345 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
346
347 TYPE (FAILWAVE_STR_) ,TARGET :: FAILWAVE
348 TYPE (NLOCAL_STR_) ,TARGET :: NLOC_DMG
349 TYPE(sorting_comm_type), DIMENSION(NINTER), INTENT(inout) :: SORT_COMM
350 TYPE (STACK_PLY) :: STACK
351
352 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
353 TYPE(sh_offset_) :: SH_OFFSET_TAB
354 TYPE (LOADS_) ,INTENT(INOUT) :: LOADS
355 type (glob_therm_) ,intent(inout) :: glob_therm
356 type (pblast_) ,intent(inout) :: pblast
357 type (rbe3_) ,intent(inout) :: rbe3
358
359
360
361 INTEGER IMUEL, I, J, K, NG, NINT7,NNOD,K2S,K0,IAD1,IDUM,LLL,
362 . LRBUF, LIBUF, ITY, IAD, NNBEM, ITYP,IROTG,NS,LF,LT,LL,L,
363 . L1,L2,ISECTR,NFR,IC,ICR,NISUB, NI25,NBR,NSENSOR,INLOC
364 INTEGER JD(50),KD(50),JFI,KFI,NMN,II,NINOUT,NNO,NEL,IFLGADM,
365 . N,JJ,KK, NFT, ISOLNOD,NBS
366 INTEGER, DIMENSION(SENSORS%NSENSOR) :: INDEX_SENSOR
367 INTEGER, DIMENSION(:), ALLOCATABLE :: ISEND,IRECV
368 INTEGER :: ITIED,NINIVELTG
370 CHARACTER ZONE*5
371 INTEGER VALUES(8)
372
373 idum = 0
374 rdum = zero
375 isectr = 0
376 nsensor = sensors%NSENSOR
377
378
379
380
381
382
383 IF (itask == 0)THEN
384
385
386 itypts=0
387
388
389
390 CALL init_kyne(ikine,npby,lpby,tagslv_rby,nhier_rby)
392
393
394
395 cptreac = 0
396 IF (ireac == 1 )
CALL init_reac_nod(cptreac,nodreac,nthgrp,output%TH%ITHGRP,output%TH%ITHBUF)
397
398
399
400 ngrth = 0
401 IF (igrelem == 1 ) THEN
403 . ipart ,igrbric ,igrquad ,igrsh4n ,igrsh3n,
404 . igrtruss ,igrbeam ,igrspring)
405 ENDIF
406
407 IF (imassi /= 0) THEN
408 ms(1:numnod)=ms0(1:numnod)
409 IF (iroddl /=0) in(1:numnod)=in0(1:numnod)
410 END IF
411
412
413
414 irotg=0
415 DO i=1,nrbe3
416 irotg=
max(irotg,rbe3%IRBE3(6,i))
417 ENDDO
419 rbe3%irotg = irotg
420 IF(irotg==0) THEN
421 rbe3%irotg_sz = 5
422 ELSE
423 rbe3%irotg_sz = 10
424 ENDIF
425
426
427 irotg=0
428 DO i=1,nrbe2
429 ic = irbe2(4,i)
430 icr=(ic-512*(ic/512))/64
432 IF (irbe2(11,i)==0) irotg =1
433 ENDDO
435 IF(irotg==0) THEN
436 r2size = 4
437 ELSE
438 r2size = 8
439 ENDIF
440 ns = nrbe2
442 IF (ns==0) r2size = 0
443 nfr = iad_rbe2(nspmd+1)-iad_rbe2(1)
444 IF (nspmd==1) THEN
445 rbe3%irotg_sz = 0
446 r2size = 0
447 ENDIF
448
449
450
451 CALL rbe2_init(irbe2 ,lrbe2 ,nmrbe2 ,fr_rbe2 ,fr_rbe2m,nfr)
452
454 1 ipari ,isendto ,ircvfrom,intlist ,nbintc ,
455 2 isizxv ,ilenxv ,iad_elem,i2size ,itask ,
456 3 islen7 ,irlen7 ,islen11 ,irlen11 ,igrbric ,
457 4 nme17 ,islen17 ,irlen17 ,irlen7t ,islen7t ,
458 5 lindidel,lbufidel,irlen20 ,islen20 ,irlen20t,
459 6 islen20t,nbint20 ,irlen20e,islen20e,fr_rby ,
460 7 fr_rby6 ,npby ,irbkin_l,nrbykin_l,kindrby,
461 8 nsensor ,sensors%SENSOR_TAB,lbufidel24, intbuf_tab,
462 9 sort_comm,need_comm_int25_solid_erosion,comm_int25_solid_erosion )
463
464 IF(idel7ng>0.OR.irad2r>0.OR.
alemuscl_param%IALEMUSCL>0.OR.pdel>0)
THEN
466 2 ixs ,ixq ,ixc ,ixt ,ixp ,
467 3 ixr ,ixtg ,ixs10 ,ixs20 ,
468 4 ixs16 ,ixtg1 ,geo ,addcnel ,cnel ,
469 5 addtmpl ,iparg )
470 ENDIF
471
472
473 IF (irad2r /= 0) THEN
474 CALL r2r_init(iexlnk ,itab,igrnod,x ,
475 2 ms ,in ,dd_r2r,weight ,iad_elem,
476 3 fr_elem,addcnel,cnel,ixc,iparg,icodt,icodr,
477 4 ibfv,d,rby,npby,xdp,stifn,stifr,dd_r2r_elem,
478 5 sdd_r2r_elem,weight_md,ilenxv,numsph_glo_r2r,
479 6 flg_sphinout_r2r,ipari,nloc_dmg)
480 END IF
481
482
483
484 nfia = numnod*
min(1,anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT)
485
486 nfea = nfia + numnod*
min(1,anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT)
487
488 nfnca= nfea + numnod*
min(1,anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT)
489
490 nftca= nfnca+ numnod*
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT)
491
492 nfoa = nftca+ numnod*
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT)
493
494 nft2 = nfoa+ 2*(nsect+nrbody+nrwall)
495
496 nfnca2= nft2 + numnod*
min(1,anim_v(13)+h3d_data%N_VECT_CONT2)
497
498 nftca2= nfnca2+ numnod*
min(1,anim_v(27)+h3d_data%N_VECT_PCONT2)
499
500
501
502 ndma = numnod*
min(1,anim_n(1)+outp_n(1)+h3d_data%N_SCAL_DT)
503
504 ndin = ndma +numnod*
min(1,anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS)
505
506 ndma2 = ndin+numnod*
min(1,anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER)
507
508 ndama2 = ndma2+numelr*(anim_fe(11)+anim_fe(12)+anim_fe(13))
509
510
511 IF(iroddl/=0)THEN
512 DO ng=1,ninter
513 ity = ipari(7,ng)
514 IF(ity==2) THEN
515 nmn=ipari(6,ng)
516 DO ii = 1, nmn
517 i = intbuf_tab(ng)%MSR(ii)
518 intbuf_tab(ng)%NMAS(nmn+ii) = in(i)
519
520 IF (irad2r==1) in(i)=
max(em20,in(i))
521 END DO
522 END IF
523 END DO
524 END IF
525 dmas = zero
526 diner = zero
527
528 IF(mcheck==0)ncycle=0
529 i7kglo = 0
530 nabfwr = 0
531
532 i13a=1+2*nsnod
533 i13b=i13a+nsels
534 i13c=i13b+nselq
535 i13d=i13c+nselc
536 i13e=i13d+nselt
537 i13f=i13e+nselp
538 i13g=i13f+nselr
539 i13h=i13g+nselu
540 i13i=i13h+nseltg
541 i15ath=1+lipart1*(npart+nthpart)
542 i15a=i15ath+2*9*(npart+nthpart)
543 i15b=i15a+numels
544 i15c=i15b+numelq
545 i15d=i15c+numelc
546 i15e=i15d+numelt
547 i15f=i15e+numelp
548 i15g=i15f+numelr
549 i15h=i15g
550 i15i=i15h+numeltg
551 i15j=i15i+numelx
552 i15k=i15j+numsph
553 i35ath=1+lisub1*nsubs
554
555 i87a = 1
556 i87b = i87a + 8 * numels + 6 * numels10 + 12 * numels20 + 8 * numels16
557 i87c = i87b + 4 * numelq
558 i87d = i87c + 4 * numelc
559 i87e = i87d + 2 * numelt
560 i87f = i87e + 2 * numelp
561 i87g = i87f + 3 * numelr
562 i87h = i87g + 3 * numeltg
563 i87h = i87h + 3 * numeltg6
564 i87i = i87h
565 i87j = i87i + 4 * nskymv0
566 i87k = i87j + 4 * nconld
567 i87l = i87k + 4 * glob_therm%NUMCONV
568 i87m = i87l + 4 * glob_therm%NUMRADIA
569 i87n = i87m + slloadp
570
571
572
573 maxnx=0
574 DO i=1,numelx
575 IF (kxx(3,i)>maxnx) maxnx=kxx(3,i)
576 ENDDO
577
578 DO i=1,npart
579 partsav(8,i)=parts0(i)
580 ENDDO
581
582 IF (ispmd==0)THEN
583 CALL date_and_time(startdate, starttime, zone, values)
584 WRITE(istdo,'(A,I2.2,A,I2.2,A,I4.4)') ' ',values(3),'/',VALUES(2),'/',VALUES(1)
585 WRITE(IOUT,'(a,i2.2,a,i2.2,a,i4.4)') ' ',VALUES(3),'/',VALUES(2),'/',VALUES(1)
586 END IF
587
588 MANIM = 0
589 MREST = 0
590 MSTOP = 0
591 ICTLSTOP = 0
592 H3D_DATA%MH3D = 0
593.AND. IF(DTIN/=0. MCHECK==0)THEN !go on with previous time step in case of checkpoint restart (/CHKPT)
594 IF(DT2OLD==ZERO)THEN
595 DT2OLD=DTIN/ONEP1
596 ELSE
597 DT2OLD= MIN(DT2OLD,DTIN/ONEP1)
598 ENDIF
599 ENDIF
600 IF(ANIM_V(26)+H3D_DATA%N_VECT_CONT_MAX >0) IFCONTMAX=1
601 IF(H3D_DATA%N_VECT_PCONT_MAX >0) IFCONTPMAX=1
602 IF(H3D_DATA%N_VECT_CONT2_MAX >0) IFCONT2MAX=1
603 IF(H3D_DATA%N_VECT_PCONT2_MAX >0) IFCONTP2MAX=1
604 IF(H3D_DATA%N_VECT_CONT2_MIN >0) IFCONT2MIN=1
605 IF(H3D_DATA%N_VECT_PCONT2_MIN >0) IFCONTP2MIN=1
606 IF(H3D_DATA%N_SCAL_CSE_FRIC >0) THEN
607 OUTPUT%DATA%S_EFRIC = NUMNOD
608 IF(NINTSTAMP/=0) OUTPUT%DATA%S_EFRICG = NUMNODG
609 ENDIF
610 IF(OUTPUT%DATA%NINEFRIC >0) OUTPUT%DATA%S_EFRICINT = NUMNOD
611 IF(OUTPUT%DATA%NINEFRIC_STAMP >0) OUTPUT%DATA%S_EFRICINTG = NUMNODG
612
613
614
615 IF(IPARIT==3) THEN
616 write(6,*) 'non supported /parith option'
617 ELSEIF(IPARIT/=0) THEN
618
619
620
621 IF(IVECTOR==1)THEN
622 IAD1 = NUMNOD+2
623 ELSE
624 IAD1 = 1
625 ENDIF
626 CALL ASSADD2(
627 1 PON%ADSKY ,PON%ADSKY(IAD1),PON%FSKY ,PON%FSKYM ,IAD_ELEM ,
628 2 FR_ELEM ,FR_NBCC ,PROCNE,NISKYFI ,ADDCNI2 ,
629 3 PROCNI2 ,IAD_I2M ,FR_I2M,FR_NBCCI2,ADDCNI2(IAD1),
630 4 PON%IADSDP ,PON%IADRCP ,PON%ISENDP,PON%IRECVP ,FTHESKY ,
631 5 NISKYFIE,INOD_PXFEM ,ADSKY_PXFEM,PROCNE_PXFEM,
632 6 ISENDP_PXFEM,IRECVP_PXFEM ,IADSDP_PXFEM,IADRCP_PXFEM,
633 7 FR_NBCC1,INOD_CRKXFEM,ADSKY_CRKXFEM,PROCNE_CRKXFEM,
634 8 ISENDP_CRKXFEM,IRECVP_CRKXFEM,IADSDP_CRKXFEM,IADRCP_CRKXFEM,
635 9 CONDNSKY,GLOB_THERM)
636 ENDIF
637
638 CALL FILLIPARTL(
639 1 IPARTL ,IPART(I15A),IPART(I15B),IPART(I15C),IPART(I15D),
640 2 IPART(I15E),IPART(I15F),IPART(I15G),IPART(I15H),IPART(I15I),
641 3 IPART(I15J),IPART(I15K),NPARTL )
642
643
644
645 CALL GRPSPLIT(
646 1 IPARG, IGROUC, NGROUC, IGROUNC, NGROUNC,
647 2 IXC,IXS,IXTG,IPM,IGEO,PM,GEO,TABMP_L,TAB_MAT)
648
649
650
651 IF(IGROUPFLG(1) == 1 ) CALL FINDGROUPC(IPARG, IGROUC, NGROUC, IGROUPC, IGROUPTG)
652
653
654
655 IF(IGROUPFLG(2) == 1 ) CALL FINDGROUPS(IPARG, IGROUPS)
656
657
658
659 IF(ISECUT/=0)THEN
660 K0=NSTRF(25)
661 DO I=1,NSECT
662 NNOD=NSTRF(K0+6)
663 K2S=K0+30+NSTRF(K0+14)
664 DO J=1,NNOD
665 SECFCUM(4,NSTRF(K2S),I)=1.
666 K2S=K2S+1
667 ENDDO
668 IF (NSTRF(K0) >= 100 ) ISECTR = I
669 K0=NSTRF(K0+24)
670 ENDDO
671 CALL SECTION_INIT(NSTRF,SECBUF,NOM_SECT,ISECTR,NSECT,IOLDSECT)
672 ENDIF
673
674
675
676 DO I = 1, NUMGEO
677 IGTYP = IGEO(11,I)
678.OR..AND..OR. IF(IGTYP==1(IGTYP>=9 IGTYP<=11)IGTYP==16) THEN
679 GEO(18,I) = SQRT(GEO(13,I))
680 GEO(19,I) = SQRT(GEO(14,I))
681 GEO(20,I) = SQRT(GEO(15,I))
682 ENDIF
683 ENDDO
684
685
686
687 IF(PMINVER<6)THEN
688 DO I = 1, NUMGEO
689 GEO(100,I) = SQRT(GEO(38,I)) ! SHFSR
690 END DO
691 DO I = 1, NUMMAT
692 IF(IPM(2,I)==999)CYCLE !possible negative square root otherwise PM(25)=CPE(gas)
693 PM(12,I) = SQRT(ABS(PM(22,I))) ! GSR
694 PM(13,I) = SQRT(ABS(PM(24,I))) ! A11SR
695 PM(14,I) = SQRT(ABS(PM(25,I))) ! A12SR
696 PM(190,I)= SQRT(ABS(PM(21,I))) ! NUSR
697 END DO
698 END IF
699
700
701
702 IF (NFXBODY>0) THEN
703 DO I=1,LENVAR
704 FXBFP(I)=ZERO
705 FXBGRP(I)=ZERO
706 ENDDO
707 DO I=1,NFXBODY
708 FXBEFW(I)=ZERO
709 FXBGRW(I)=ZERO
710 FXBEDP(I)=ZERO
711 ENDDO
712 ENDIF
713
714
715
716 IAD=0
717 LWIBEM=0
718 LWRBEM=0
719 DO I=1,NVOLU
720 ITYP=MONVOL(IAD+2)
721 IF (ITYP==7) THEN
722 NNBEM=MONVOL(IAD+32)
723 LWIBEM=LWIBEM+1+NNBEM
724 LWRBEM=LWRBEM+NNBEM**2
725 ENDIF
726 IAD=IAD+NIMV
727 ENDDO
728
729
730
731 IAD=0
732 LWIFLOW=0
733 LWRFLOW=0
734 DO I=1,NFLOW
735 ITYP=IFLOW(IAD+2)
736.OR. IF (ITYP == 1 ITYP == 3) THEN
737 LWIFLOW=LWIFLOW+IFLOW(IAD+8)
738 LWRFLOW=LWRFLOW+IFLOW(IAD+9)
739 ENDIF
740 IAD=IAD+LIFLOW
741 ENDDO
742
743
744
745 IF(IDDW>0) CALL INITIMEG(NGROUP)
746
747
748
749 IF(NADMESH/=0)THEN
750 CALL ADMINI(IXC ,IPART(I15C),IXTG ,IPART(I15H),IPART,
751 . IGEO,IPM ,IPARG ,X ,MS ,
752 . IN ,ELBUF_TAB ,SH4TREE,IPADMESH,MSC ,
753 . INC ,SH3TREE ,MSTG ,INTG ,PTG ,
754 . SH4TRIM ,SH3TRIM,MSCND ,INCND ,PM ,
755 . MCP ,MCPC ,MCPTG ,TAGTRIMC ,TAGTRIMTG,
756 . GLOB_THERM%ITHERM_FE)
757!
758 CALL ADMORDR(SH4TREE,SH3TREE,IXC,IXTG)
759 IADMESH=0
760 NGDONE=1
761 END IF
762 IF(ISTATCND/=0)THEN
763
764 CALL CNDORDR(IPART,IPART(I15C),IPART(I15H),SH4TREE,SH3TREE)
765 END IF
766
767
768
769 IF(LAG_NCF+LAG_NCL > 0)THEN
770 LAG_SEC=0
771
772 DO I = 1, NINTER
773 IF(IPARI(33,I)/=0)LAG_SEC=1
774 END DO
775 DO I = 1, NRWALL
776 IF(NPRW(I+5*NRWALL)==1)LAG_SEC=1
777 END DO
778 IF(NBCSLAG+NGJOINT+NRBYLAG > 0)LAG_SEC=1
779
780 END IF
781
782
783
784
785 IS_PRESENT_INTER1 = -1
786
787
788
789 INT18KINE=0
790 DO I=1, NINTER
791.AND..AND. IF(IPARI(7,I) == 7 IPARI(34,I) == -2 IPARI(22,I) == 7)THEN
792 INT18KINE=1
793 ENDIF
794 ENDDO
795
796
797
798 INT7ITIED = 0
799 DO I=1, NINTER
800 ITYP = IPARI(7,I)
801 ITIED = IPARI(85,I)
802.AND. IF(ITYP==7ITIED/=0)THEN
803 INT7ITIED = 1
804 ENDIF
805 IF(ITYP==10) INT7ITIED = 1
806 ENDDO
807
808
809
810 INT24USE = 0
811 DO I=1, NINTER
812 IF(IPARI(7,I)==24)THEN
813 INT24USE = 1
814
815 IF(IPARI(59,I) >0) INT24E2EUSE=1
816 ENDIF
817 ENDDO
818
819
820
821 NI25 = 0
822 DO I=1, NINTER
823 IF(IPARI(7,I)==25)THEN
824 NI25 = NI25 + 1
825 INTLIST25(NI25)=I
826 ENDIF
827 ENDDO
828
829
830
831 IF (SENSORS%STABSEN > 0) THEN
832 DO N=1,NINTER
833 NISUB =IPARI(36,N)
834 ISENSINT(1,N) = SENSORS%TABSENSOR(N+1 + NSECT) - SENSORS%TABSENSOR(N + NSECT)
835
836 IF (IPARI(71,N)>0) THEN
837
838 ISENSINT(1,N) = ISENSINT(1,IPARI(71,N))
839 ENDIF
840
841 DO I=1,NISUB
842 ISENSINT(I+1,N) = SENSORS%TABSENSOR(I +1 + NSECT + NINTER) -
843 . SENSORS%TABSENSOR(I + NSECT + NINTER)
844 ENDDO
845 ENDDO
846 ENDIF
847
848
849
850 INT2PEN=0
851 DO I=1, NINTER
852.AND. IF (IPARI(7,I) == 2 IPARI(20,I) == 25) THEN
853 INT2PEN=1
854 EXIT
855 ENDIF
856 ENDDO
857
858
859
860
861 FXVEL_FGEO=0
862 DO N=1,NFXVEL
863 IF (IBFV(13,N) > 0 ) THEN
864 FXVEL_FGEO = 1
865 EXIT
866 ENDIF
867 ENDDO
868
869
870 ENDIF ! ITASK==0
871
872
873
874
875 CALL MY_BARRIER()
876
877
878
879.AND. IF(NINTER/=0ANIM_V(4)+OUTP_V(4)+H3D_DATA%N_VECT_CONT >0) OUTPUT%DATA%VECT_CONT = 0
880 IF(ANIM_V(12)+OUTP_V(12)+H3D_DATA%N_VECT_PCONT>0) THEN
881 OUTPUT%DATA%VECT_PCONT = 0
882 OUTPUT%DATA%VECT_PCONT_2 = 0
883 END IF
884 IF(ANIM_N(2)+OUTP_N(2)+H3D_DATA%N_SCAL_DMAS >0)THEN
885 OUTPUT%DATA%SCAL_DMAS = 0
886!!#include "vectorize.inc"
887!! DO I=NODFT,NODLT
888!! ANIN(I+NDMA) = ZERO
889!! ENDDO
890 ENDIF
891 IF(ANIM_N(12)+OUTP_N(3)+H3D_DATA%N_SCAL_DINER >0)THEN
892 OUTPUT%DATA%SCAL_DINER = 0
893!!#include "vectorize.inc"
894!! DO I=NODFT,NODLT
895!! ANIN(I+NDIN) = ZERO
896!! ENDDO
897 END IF
898.OR..OR. IF(ANIM_N(15) == 1 ANIM_N(16) == 1 H3D_DATA%N_SCAL_DAMA2 == 1)THEN
899 OUTPUT%DATA%SCAL_DAMA2 = 0
900!!#include "vectorize.inc"
901!! DO I=NODFT,NODLT
902!! ANIN(NDAMA2+2*(I-1)+1) = ZERO
903!! ANIN(NDAMA2+2*(I-1)+2) = ZERO
904!! ENDDO
905 ENDIF
906!C-----------------------------------------------
907
908 IF (IPARIT==0) THEN
909 CALL ZEROR(A(1,NDTASK),NUMNOD)
910 IF(IRODDL/=0)CALL ZEROR(AR(1,NDTASK),NUMNOD)
911 DO I=NDTASK,NDTASK+NUMNOD-1
912 STIFN(I)=EM20
913 ENDDO
914 IF(IRODDL/=0)THEN
915 DO I=NDTASK,NDTASK+NUMNOD-1
916 STIFR(I)=EM20
917 ENDDO
918 ENDIF
919
920 IF(KDTINT/=0)THEN
921 CALL ZERO1(VISCN(NDTASK),NUMNOD)
922 ENDIF
923
924 IF (GLOB_THERM%ITHERM_FE > 0) THEN
925 CALL ZERO1(FTHE(NDTASK),NUMNOD)
926 ENDIF
927
928 IF(SOL2SPH_FLAG/=0)THEN
929 CALL ZERO1(DMSPH(NDTASK),NUMNOD)
930 ENDIF
931
932 IF (GLOB_THERM%NODADT_THERM > 0) THEN
933 CALL ZERO1(CONDN(NDTASK),NUMNOD)
934 ENDIF
935
936 IF(NPINCH > 0) THEN
937 CALL ZEROR(PINCH_DATA%APINCH(1,NDTASK),NPINCH)
938 DO I=NDTASK,NDTASK+NUMNOD-1
939 PINCH_DATA%STIFPINCH(I)=EM20
940 ENDDO
941 ENDIF
942 ELSE ! IPARIT>0
943 CALL ZEROR(A(1,NODFT),NUMNTHREAD)
944 IF(IRODDL/=0)CALL ZEROR(AR(1,NODFT),NUMNTHREAD)
945 DO I=NODFT,NODLT
946 STIFN(I)=EM20
947 ENDDO
948 IF(IRODDL/=0)THEN
949 DO I=NODFT,NODLT
950 STIFR(I)=EM20
951 ENDDO
952 ENDIF
953 IF(KDTINT/=0)THEN
954 CALL ZERO1(VISCN(NODFT),NUMNTHREAD)
955 ENDIF
956
957 IF (GLOB_THERM%ITHERM_FE > 0 ) THEN
958 CALL ZERO1(FTHE(NODFT),NUMNTHREAD)
959 ENDIF
960
961 IF(SOL2SPH_FLAG/=0)THEN
962 CALL ZERO1(DMSPH(NODFT),NUMNTHREAD)
963 ENDIF
964
965 IF (GLOB_THERM%NODADT_THERM > 0) THEN
966 CALL ZERO1(CONDN(NODFT),NUMNTHREAD)
967 ENDIF
968
969 IF(NPINCH > 0) THEN
970 CALL ZEROR(PINCH_DATA%APINCH(1,NODFT),NUMNTHREAD)
971 DO I=NODFT,NODLT
972 PINCH_DATA%STIFPINCH(I)=EM20
973 ENDDO
974 ENDIF
975 ENDIF
976
977
978 IF(IPARIT==0) THEN
979 IF(IRODDL==0) THEN
980 DO I = NODFT, NODLT
981 STIFN(I) = STIFN(I)*WEIGHT(I)
982 ENDDO
983 ELSE
984 DO I = NODFT, NODLT
985 STIFN(I) = STIFN(I)*WEIGHT(I)
986 STIFR(I) = STIFR(I)*WEIGHT(I)
987 ENDDO
988 ENDIF
989 ENDIF
990
991
992
993
994 IF (ITASK==0) CALL IMP_INIT(V,VR,IPARG,IPM,IGEO,ELBUF_TAB)
995
996
997
998 IF(NADMESH/=0)THEN
999 IFLGADM=0
1000 CALL ADMGVID(
1001 1 IPARG ,ELBUF_TAB ,PON%FSKY ,PON%FSKY ,FTHESKY,
1002 2 PON%IADC,PON%IAD_TG,IFLGADM,IGROUC,NGROUC,
1003 3 CONDNSKY ,GLOB_THERM%NODADT_THERM)
1004 END IF
1005
1006
1007 IF( ITASK == 0) CALL KININI()
1008
1009
1010
1011.AND. IF(IDTMINS == 1 IDTMINS_OLD == 1)THEN
1012.OR. IF(DTFACS /= DTFACS_OLD DTMINS /= DTMINS_OLD)THEN
1013
1014 ADMSMS(NODFT:NODLT)=ZERO
1015 RES_SMS(1:3,NODFT:NODLT)=ZERO
1016 ELSEIF(IDTGRS_OLD/=0)THEN
1017.AND. IF( IDTGRS < 0
1018 . -IDTGRS /= IGRPART(IDTGRS_OLD)%ID) THEN
1019
1020
1021 ADMSMS(NODFT:NODLT)=ZERO
1022 RES_SMS(1:3,NODFT:NODLT)=ZERO
1023 ELSE
1024
1025 END IF
1026.AND. ELSEIF(IDTGRS_OLD==0IDTGRS/=0)THEN
1027
1028
1029 ADMSMS(NODFT:NODLT)=ZERO
1030 RES_SMS(1:3,NODFT:NODLT)=ZERO
1031 ELSE
1032
1033 END IF
1034
1035.AND. ELSEIF(IDTMINS == 2 IDTMINS_OLD == 2)THEN
1036.OR. IF(DTFACS /= DTFACS_OLD DTMINS /= DTMINS_OLD)THEN
1037
1038 ELSEIF(IDTGRS_OLD/=0)THEN
1039.AND. IF( IDTGRS < 0
1040 . -IDTGRS/= IGRPART(IDTGRS_OLD)%ID) THEN
1041
1042
1043 IF(ITASK==0)THEN
1044 DMELC (1:NUMELC )=ZERO
1045 DMELTG(1:NUMELTG)=ZERO
1046 DMELS (1:NUMELS )=ZERO
1047 DMELTR(1:NUMELT )=ZERO
1048 DMELP (1:NUMELP )=ZERO
1049 DMELRT(1:NUMELR )=ZERO
1050 DMINT2(1:4,1:I2NSN25)=ZERO
1051 END IF
1052 RES_SMS(1:3,NODFT:NODLT)=ZERO
1053 ELSE
1054
1055 END IF
1056.AND. ELSEIF(IDTGRS_OLD==0IDTGRS/=0)THEN
1057
1058
1059 IF(ITASK==0)THEN
1060 DMELC (1:NUMELC )=ZERO
1061 DMELTG(1:NUMELTG)=ZERO
1062 DMELS (1:NUMELS )=ZERO
1063 DMELTR(1:NUMELT )=ZERO
1064 DMELP (1:NUMELP )=ZERO
1065 DMELRT(1:NUMELR )=ZERO
1066 DMINT2(1:4,1:I2NSN25)=ZERO
1067 END IF
1068 RES_SMS(1:3,NODFT:NODLT)=ZERO
1069 ELSE
1070
1071 END IF
1072
1073.AND. ELSEIF(IDTMINS == 1 IDTMINS_OLD /= IDTMINS)THEN
1074
1075 ADMSMS(NODFT:NODLT)=ZERO
1076 RES_SMS(1:3,NODFT:NODLT)=ZERO
1077
1078.AND. ELSEIF(IDTMINS == 2 IDTMINS_OLD /= IDTMINS)THEN
1079
1080 IF(ITASK==0)THEN
1081 DMELC (1:NUMELC )=ZERO
1082 DMELTG(1:NUMELTG)=ZERO
1083 DMELS (1:NUMELS )=ZERO
1084 DMELTR(1:NUMELT )=ZERO
1085 DMELP (1:NUMELP )=ZERO
1086 DMELRT(1:NUMELR )=ZERO
1087 DMINT2(1:4,1:I2NSN25)=ZERO
1088 END IF
1089 RES_SMS(1:3,NODFT:NODLT)=ZERO
1090
1091.AND. ELSEIF(IDTMINS_INT /= 0 IDTMINS_INT_OLD /= IDTMINS_INT)THEN
1092
1093 RES_SMS(1:3,NODFT:NODLT)=ZERO
1094
1095 END IF
1096
1097 IF(ITASK == 0) THEN
1098 NISKY_SMS=0
1099
1100 KFORSMS=0
1101.AND..OR. IF((IDTMINS==2IDTMINS_OLD/=IDTMINS)
1102.AND. . (IDTMINS_INT/=0IDTMINS_INT_OLD/=IDTMINS_INT))THEN
1103 KFORSMS=1
1104 END IF
1105 ENDIF
1106
1107.AND. IF(ANIM_PLY > 0 ITASK == 0) THEN
1108 CALL SPMD_ANIM_PLY_INIT ()
1109 ENDIF
1110
1111.AND. IF (ICRACK3D > 0 ITASK == 0)THEN
1112 CALL ANIM_XFE_INIT(IXC,IXTG,INOD_CRKXFEM,IEL_CRKXFEM,
1113 . IADC_CRKXFEM,IADC_CRKXFEM(1+4*ECRKXFEC))
1114 ENDIF
1115
1116
1117
1118 IF(NS10E > 0) THEN
1119 IF (ITASK == 0) THEN
1120 IF(NSPMD>1) THEN
1121 CALL S10CNDS_DIM(ICNDS10,ITAGND,FR_ELEM,IAD_ELEM,NBS )
1122 ALLOCATE (IAD_CNDS(NSPMD+1),FR_CNDS(NBS))
1123 CALL S10CNDS_INI(ICNDS10,ITAGND,FR_ELEM,IAD_ELEM,IAD_CNDS,FR_CNDS )
1124 ELSE
1125 ALLOCATE (IAD_CNDS(0),FR_CNDS(0))
1126 END IF
1127
1128 CALL CNDMASI2_DIM(IPARI,INTBUF_TAB,ICNDS10,ITAGND,WEIGHT,NKEND,
1129 1 IAD_CNDS,FR_CNDS,NBS,NSPMD)
1130 IF(NKEND>0) THEN
1131 ALLOCATE (IMAP2ND(NKEND),MASI2ND0(NKEND))
1132 CALL CNDMASI2_INI(IPARI,INTBUF_TAB,ICNDS10,ITAGND,
1133 . NKEND,IMAP2ND,MASI2ND0,MS0,WEIGHT, itab )
1134 IF(MCHECK>0) NKEND = -NKEND
1135 END IF
1136 CALL S10CNDI2_INI(IPARI,INTBUF_TAB,ICNDS10,ITAGND,WEIGHT,
1137 . FR_CNDS,IAD_CNDS,itab )
1138 CALL S10CND_INI(ICNDS10,ITAGND,IAD_CNDM,FR_CNDM,FR_NBCCCND,
1139 1 ADDCNCND,PROCNCND,VND ,V ,ITAB ,
1140 2 IAD_CNDM1,FR_CNDM1,FR_NBCCCND1)
1141 END IF
1142 CALL MY_BARRIER()
1143 ENDIF
1144
1145
1146
1147 IF (ITASK == 0)
1148 . CALL TMAX_IPART(IPARG ,IPART ,IPART(I15A),IPART(I15C),
1149 . IPART(I15I),H3D_DATA)
1150 CALL INI_TMAX(ELBUF_TAB ,IPARG ,GEO ,PM ,
1151 . IXS ,IXS10 ,IXS16 ,IXS20 ,IXQ ,
1152 . IXC ,IXTG ,IXT ,IXP ,IXR ,
1153 . X ,D ,V ,IAD_ELEM ,FR_ELEM ,
1154 . WEIGHT ,IPM ,IGEO ,STACK ,ITASK )
1155!$OMP SINGLE
1156 IF (FAILWAVE%WAVE_MOD > 0) THEN
1157 CALL SPMD_FAILWAVE_BOUNDARIES(FAILWAVE,IAD_ELEM,FR_ELEM)
1158 ENDIF
1159 ! Non-local regularization is activated
1160 IF (NLOC_DMG%IMOD > 0) THEN
1161 CALL SPMD_SUB_BOUNDARIES(NLOC_DMG,IAD_ELEM,FR_ELEM)
1162 ENDIF
1163
1164
1165
1166 NTSHEG =0
1167 NTSHEGG =0
1168 IF (IDTTSH>0) CALL DIM_TSHEDG(ELBUF_TAB ,NTSHEG, IXS ,IPARG )
1169 IF(NSPMD>1) THEN
1170 NTSHEGG = NTSHEG
1171 CALL SPMD_MAX_I(NTSHEGG)
1172 END IF
1173 IF (NTSHEG > 0) THEN
1174 ALLOCATE (IENUNL(2*NTSHEG),ALPHA_DC(NUMNOD))
1175 IENUNL=0
1176 ALPHA_DC=ONE
1177 CALL IND_TSHEDG(ELBUF_TAB ,IENUNL, IXS ,IPARG )
1178 IF(NSPMD>1) THEN
1179 NBS = IAD_ELEM(1,NSPMD+1)-IAD_ELEM(1,1)
1180 ALLOCATE (ISEND(NBS),IRECV(NBS))
1181 ISEND=0
1182 CALL TSHCDCOM_DIM(IENUNL,FR_ELEM,IAD_ELEM,NBS,NBR ,
1183 . ISEND ,IRECV )
1184 ALLOCATE (IAD_STSH(NSPMD+1),FR_STSH(NBS))
1185 CALL TSHCDCOM_INI(ISEND,IAD_ELEM,FR_ELEM,IAD_STSH,FR_STSH)
1186 ALLOCATE (IAD_RTSH(NSPMD+1),FR_RTSH(NBR))
1187 CALL TSHCDCOM_INI(IRECV,IAD_ELEM,FR_ELEM,IAD_RTSH,FR_RTSH)
1188 DEALLOCATE(ISEND,IRECV)
1189 END IF
1190 END IF
1191
1192
1193
1194 CALL INTER_SH_OFFSET_INI(
1195 . NGROUP, NPARG, IPARG, NPROPG,
1196 . NUMGEO, GEO, NUMELC, NIXC,
1197 . IXC, NUMELTG, NIXTG, IXTG,
1198 . NUMNOD, NSPMD, IAD_ELEM, FR_ELEM,
1199 . SFR_ELEM, THKE, ELBUF_TAB, SH_OFFSET_TAB,
1200 . IPARIT )
1201! inivel w/ Tstart
1202 NINIVELTG = LOADS%NINIVELT
1203 IF (NSPMD>1) CALL SPMD_MAX_I(NINIVELTG)
1204 LOADS%NINIVELT_G = NINIVELTG
1205.AND. IF (TT == ZERO LOADS%NINIVELT > 0) THEN
1206 CALL INIVEL_INIT(
1207 . NGRNOD, NGRBRIC, NGRQUAD, NGRSH3N,
1208 . IGRNOD, IGRBRIC, IGRQUAD, IGRSH3N,
1209 . NUMSKW, LISKN, ISKWN, NUMFRAM,
1210 . IFRAME, LOADS%NINIVELT,LOADS%INIVELT,SENSORS)
1211 END IF
1212
1213 DO N = 1, NINTER
1214 CALL INT_FLUSHTIME(INTBUF_TAB(N)%METRIC)
1215 ENDDO
1216!$OMP END SINGLE
1217
1218 RETURN
subroutine chkinit(ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixs10, ixs20, ixs16, ixtg1, geo, addcnel, cnel, adsky, iparg)
subroutine init_reac_nod(cptreac, nodreac, nthgrp, ithgrp, ithbuf)
subroutine init_th_group(gr, igr, nelem, ngrth, iparg, ipart, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring)
type(alemuscl_param_) alemuscl_param
subroutine r2r_init(iexlnk, itab, igrnod, x, ms, in, dd_r2r, weight, iad_elem, fr_elem, addcnel, cnel, ixc, iparg, icodt, icodr, ibfv, dx, rby, npby, xdp, stifn, stifr, dd_r2r_elem, sdd_r2r_elem, weight_md, ilenxv, numsph_glo_r2r, flg_sphinout_r2r, ipari, nloc_dmg)
subroutine rbe2_init(irbe2, lrbe2, nmrbe2, fr_rbe2, fr_rbe2m, nfr)
subroutine init_kyne(ikine, npby, lpby, tagslv_rby, nhier_rby)