173
174
175
177 USE elbufdef_mod
178 USE intbufdef_mod
186 USE pblast_mod
191 USE sensor_mod
195 USE output_mod
196 USE nloc_count_solnod_mod
197 USE inter_sh_offset_ini_mod , only : inter_sh_offset_ini
198 USE inter_sh_offset_mod , only:sh_offset_
199 USE loads_mod
200 USE inivel_init_mod , only: inivel_init
201 use glob_therm_mod
202 use spmd_xv_inter_type1_mod , only : is_present_inter1
203 USE parith_on_mod, only: element_pon_
204 use rbe3_mod
205
206
207
208#include "implicit_f.inc"
209
210
211
212#include "com01_c.inc"
213#include "com04_c.inc"
214#include "com08_c.inc"
215#include "com10_c.inc"
216#include "com_xfem1.inc"
217#include "param_c.inc"
218#include "scr02_c.inc"
219#include "scr03_c.inc"
220#include "scr07_c.inc"
221#include "scr12_c.inc"
222#include "scr14_c.inc"
223#include "scr16_c.inc"
224#include "scr17_c.inc"
225#include "scr23_c.inc"
226#include "units_c.inc"
227#include "cong2_c.inc"
228#include "task_c.inc"
229#include "parit_c.inc"
230#include "timerc_c.inc"
231#include "rad2r_c.inc"
232#include "scr18_c.inc"
233#include "spmd_c.inc"
234#include "fxbcom.inc"
235#include "flowcom.inc"
236#include "remesh_c.inc"
237#include "sms_c.inc"
238#include "lagmult.inc"
239#include "sphcom.inc"
240#include "intstamp_c.inc"
241
242
243
244 TYPE(element_pon_) :: PON
245 INTEGER ITASK, NBINTC, NODFT, NODLT, LINDIDEL, LBUFIDEL,
246 . NUMNTHREAD, NDTASK, NFIA, NFEA, NFOA ,NDMA, NFNCA, NFTCA,
247 . NDMA2,NDIN,N1,N2,N3,IGTYP,NPARTL,NGROUC,NGROUNC,
248 . I13A,I13B,I13C,I13D,I13E,I13F,I13G,I13H,I13I,
249 . I15A,I15B,I15C,I15D,I15E,I15F,,I15H,I15I,I15J,I15K,
250 . I87A,I87B,I87C,I87D,I87E,I87F,I87G,I87H,I87I
251
252
253
254
255
256
257
258INTEGER
259 . IXS(NIXS,*),IXS10(6,*) ,IXS20(12,*),
260 . IXS16(6,*) , IGEO(NPROPGI,*),
261 . IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*),
262 . IXR(NIXR,*), IXTG(NIXTG,*), IXTG1(4,*),
263 . ITAB(*), IPARG(NPARG,*), IPARI(NPARI,*),
264 . IEXLNK(NR2R,*),
265 . WEIGHT(*), NSTRF(*), IB(NIBCLD,*), ITABM1(*),
266 . MONVOL(*),KXX(NIXX,*),ISENDTO(NINTER+1,NSPMD+1),
267 . FR_NBCC(2,NSPMD+1), IAD_ELEM(2,NSPMD+1) ,FR_ELEM(*),
268 . IRCVFROM(NINTER+1,NSPMD+1), INTLIST(NINTER), PROCNE(*),
269 . NISKYFI(*),ADDCNI2(*),PROCNI2(*),IAD_I2M(*),FR_I2M(*),
270 . FR_NBCCI2(*), IPART(*),
271 . DD_R2R(NSPMD+1,*),IPARTL(*),
272 . MADPRT(*), MADSH4(*), (*), MADSOL(*), MADNOD(*),
273 . MADFAIL(*), FR_MAD(5,*), LWIBEM, LWRBEM, LWIFLOW, LWRFLOW,
274 . IFLOW(*), ADDCNEL(0:*), CNEL(0:*), ADDTMPL(0:*),
275 . IPM(NPROPMI,*), SH4TREE(*), IPADMESH(*), SH3TREE(*),
276 . SH4TRIM(*), SH3TRIM(*), NISKYFIE(*),
277 . ICODT(*), ICODR(*),IBFV(NIFV,*),
278 . INOD_PXFEM(*),IEL_PXFEM(*) ,IADC_PXFEM(4,*),ELCUTC(2,*),
279 . ADSKY_PXFEM(*), KXFENOD2ELC(*),NODLEVXF(*),CRKNODIAD(*),
280 . NODEDGE(*),IAD_EDGE(*),FR_EDGE(*),FR_NBEDGE(*), NODREAC(*),
281 . IGROUC(*),IGROUNC(*),FR_RBY(*),FR_RBY6(*),NPBY(*),
282 . NOM_SECT(*), GRTH(*),IGRTH(*), NPRW(*),IAD_RBE2(*),
283 . FR_RBE2(*),FR_RBE2M(*),R2SIZE, IRBE2(NRBE2L,*),LRBE2(*),
284 . IKINE(NUMNOD),LPBY(*), PROCNE_PXFEM(*),
285 . ISENDP_PXFEM(*),IRECVP_PXFEM(*),IADSDP_PXFEM(*),
286 . IADRCP_PXFEM(*),FR_NBCC1(2,*),INOD_CRKXFEM(*),
287 . IEL_CRKXFEM(*),IADC_CRKXFEM(*),ADSKY_CRKXFEM(0:*),
288 . PROCNE_CRKXFEM(*),ISENDP_CRKXFEM(*),IRECVP_CRKXFEM(*),
289 . IADSDP_CRKXFEM(*),IADRCP_CRKXFEM(*),
290 . IGROUPC(*),IGROUPTG(*),(*),IGROUPFLG(2),
291 . IRBKIN_L(*), KINDRBY(*), DD_R2R_ELEM(*),SDD_R2R_ELEM,
292 . KINET(*),WEIGHT_MD(*),NUMSPH_GLO_R2R,FLG_SPHINOUT_R2R,
293 . ISENSINT(NISUBMAX+1,NINTER),NISUBMAX,
294 . INTLIST25(NINTER25) ,INT24E2EUSE ,FXVEL_FGEO,
295 . TAGSLV_RBY(NUMNOD)
296 INTEGER, INTENT(IN ),DIMENSION(LISKN,NUMFRAM+1) :: IFRAME
297 INTEGER, INTENT(IN ),DIMENSION(LISKN,NUMSKW+1) :: ISKWN
298
299
300
301
302 INTEGER, INTENT(INOUT) :: INT7ITIED
304 . x(3,*), d(3,*), v(3,*), vr(3,*),
305 . ms(*), in(*), wa(*), a(3,*), ar(3,*),
306 . fani(3,*), uwa(*), stifn(*), stifr(*),
307 . anin(*), partsav(npsav,*),parts0(*),
308 . dmas, diner ,
309 . pm(npropm,*) , geo(npropg,*),
310 . viscn(*),
311 . secbuf(*),secfcum(7,numnod,nsect),xframe(nxframe,*),
312 . elbuf(*), msc(*), inc(*), mstg(*), intg(*), ptg(*),
313 . mscnd(*), incnd(*), fthe(*), fthesky(*),ftheskyi(*), mcp(*),
314 . ms0(*), admsms(*), mcpc(*), mcptg(*), diag_sms(*),
315 . dmelc(*), dmeltg(*), dmels(*), dmeltr(*), dmelp(*), dmelrt(*),
316 . res_sms(3,*),rby(nrby,*), dmint2(4,i2nsn25),
317 . dmsph(*),condn(*),condnsky ,tab_mat(ngroup),forneqs(3,*)
319 . fxbfp(*), fxbefw(*), fxbedp(*), fxbgrp(*), fxbgrw(*),in0(*)
321 . thke(numelc+numeltg)
322
323
324
325
326
327 LOGICAL, INTENT(inout) :: NEED_COMM_INT25_SOLID_EROSION
328 INTEGER, INTENT(inout) :: COMM_INT25_SOLID_EROSION
329
330 DOUBLE PRECISION XDP(3,*)
331 TYPE(INTBUF_STRUCT_) (*)
332 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
333 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
334 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
335 TYPE(H3D_DATABASE) :: H3D_DATA
336 TYPE (PINCH) :: PINCH_DATA
337 TYPE (SENSORS_) :: SENSORS
338
339 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
340 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
341 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
342 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
343 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
344 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
345 TYPE (GROUP_) , DIMENSION(NGRSPRI) :: IGRSPRING
346 TYPE (GROUP_) , DIMENSION(NGRPART) :: IGRPART
347 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
348
349 TYPE (FAILWAVE_STR_) ,TARGET :: FAILWAVE
350 TYPE (NLOCAL_STR_) ,TARGET :: NLOC_DMG
351 TYPE(), DIMENSION(NINTER), INTENT(inout) :: SORT_COMM
352 TYPE (STACK_PLY) :: STACK
353
354 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
355 TYPE(sh_offset_) :: SH_OFFSET_TAB
356 TYPE (LOADS_) ,INTENT(INOUT) :: LOADS
357 type (glob_therm_) ,intent(inout) :: glob_therm
358 type () ,intent(inout) :: pblast
359 type (rbe3_) ,intent(inout) :: rbe3
360
361
362
363 INTEGER IMUEL, I, J, K, NG, NINT7,NNOD,K2S,K0,IAD1,IDUM,LLL,
364 . LRBUF, LIBUF, ITY, IAD, NNBEM, ITYP,IROTG,NS,LF,LT,LL,L,
365 . L1,L2,ISECTR,NFR,IC,ICR,NISUB, NI25,NBR,NSENSOR,INLOC
366 INTEGER JD(50),KD(50),JFI,KFI,NMN,II,NINOUT,NNO,NEL,,
367 . N,JJ,KK, NFT, ISOLNOD,NBS
368 INTEGER, DIMENSION(SENSORS%NSENSOR) :: INDEX_SENSOR
369 INTEGER, DIMENSION(:), ALLOCATABLE :: ISEND,IRECV
370 INTEGER :: ITIED,NINIVELTG
372 CHARACTER ZONE*5
373 INTEGER VALUES(8)
374
375 idum = 0
376 rdum = zero
377 isectr = 0
378 nsensor = sensors%NSENSOR
379
380
381
382
383
384
385 IF (itask == 0)THEN
386
387
388 itypts=0
389
390
391
392 CALL init_kyne(ikine,npby,lpby,tagslv_rby)
393
394
395
396 cptreac = 0
397 IF (ireac == 1 )
CALL init_reac_nod(cptreac,nodreac,nthgrp,output%TH%ITHGRP,output%TH%ITHBUF)
398
399
400
401 ngrth = 0
402 IF (igrelem == 1 ) THEN
404 . ipart ,igrbric ,igrquad ,igrsh4n ,igrsh3n,
405 . igrtruss ,igrbeam ,igrspring)
406 ENDIF
407
408 IF (imassi /= 0) THEN
409 ms(1:numnod)=ms0(1:numnod)
410 IF (iroddl /=0) in(1:numnod)=in0(1:numnod)
411 END IF
412
413
414
415 irotg=0
416 DO i=1,nrbe3
417 irotg=
max(irotg,rbe3%IRBE3(6,i))
418 ENDDO
420 rbe3%irotg = irotg
421 IF(irotg==0) THEN
422 rbe3%irotg_sz = 5
423 ELSE
424 rbe3%irotg_sz = 10
425 ENDIF
426
427
428 irotg=0
429 DO i=1,nrbe2
430 ic = irbe2(4,i)
431 icr=(ic-512*(ic/512))/64
433 IF (irbe2(11,i)==0) irotg =1
434 ENDDO
436 IF(irotg==0) THEN
437 r2size = 4
438 ELSE
439 r2size = 8
440 ENDIF
441 ns = nrbe2
443 IF (ns==0) r2size = 0
444 nfr = iad_rbe2(nspmd+1)-iad_rbe2(1)
445 IF (nspmd==1) THEN
446 rbe3%irotg_sz = 0
447 r2size = 0
448 ENDIF
449
450
451
452 CALL rbe2_init(irbe2 ,lrbe2 ,nmrbe2 ,fr_rbe2 ,fr_rbe2m,nfr)
453
455 1 ipari ,isendto ,ircvfrom,intlist ,nbintc ,
456 2 isizxv ,ilenxv ,iad_elem,i2size ,itask ,
457 3 islen7 ,irlen7 ,islen11 ,irlen11 ,igrbric ,
458 4 nme17 ,islen17 ,irlen17 ,irlen7t ,islen7t ,
459 5 lindidel,lbufidel,irlen20 ,islen20 ,irlen20t,
460 6 islen20t,nbint20 ,irlen20e,islen20e,fr_rby ,
461 7 fr_rby6 ,npby ,irbkin_l,nrbykin_l,kindrby,
462 8 nsensor ,sensors%SENSOR_TAB,lbufidel24, intbuf_tab,
463 9 sort_comm,need_comm_int25_solid_erosion,comm_int25_solid_erosion )
464
465 IF(idel7ng>0.OR.irad2r>0.OR.
alemuscl_param%IALEMUSCL>0.OR.pdel>0)
THEN
467 2 ixs ,ixq ,ixc ,ixt ,ixp ,
468 3 ixr ,ixtg ,ixs10 ,ixs20 ,
469 4 ixs16 ,ixtg1 ,geo ,addcnel ,cnel ,
470 5 addtmpl ,iparg )
471 ENDIF
472
473
474 IF (irad2r /= 0) THEN
475 CALL r2r_init(iexlnk ,itab,igrnod,x ,
476 2 ms ,in ,dd_r2r,weight ,iad_elem,
477 3 fr_elem,addcnel,cnel,ixc,iparg,icodt,icodr,
478 4 ibfv,d,rby,npby,xdp,stifn,stifr,dd_r2r_elem,
479 5 sdd_r2r_elem,weight_md,ilenxv,numsph_glo_r2r,
480 6 flg_sphinout_r2r,ipari,nloc_dmg)
481 END IF
482
483 nfia = numnod*
min(1,anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT)
484 nfea = nfia + numnod*
min(1,anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT)
485 nfnca= nfea + numnod*
min(1,anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT)
486 nftca= nfnca+ numnod*
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT)
487 nfoa = nftca+ numnod*
min(1,anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT)
488 nft2 = nfoa+ 2*(nsect+nrbody+nrwall)
489 nfnca2= nft2 + numnod*
min(1,anim_v(13)+h3d_data%N_VECT_CONT2)
490 nftca2= nfnca2+ numnod*
min(1,anim_v(27)+h3d_data%N_VECT_PCONT2)
491 ndma = numnod*
min(1,anim_n(1)+outp_n(1)+h3d_data%N_SCAL_DT)
492 ndin = ndma +numnod*
min(1,anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS)
493 ndma2 = ndin+numnod*
min(1,anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER)
494 ndama2 = ndma2+numelr*(anim_fe(11)+anim_fe(12)+anim_fe(13))
495 IF(iroddl/=0)THEN
496 DO ng=1,ninter
497 ity = ipari(7,ng)
498 IF(ity==2) THEN
499 nmn=ipari(6,ng)
500 DO ii = 1, nmn
501 i = intbuf_tab(ng)%MSR(ii)
502 intbuf_tab(ng)%NMAS(nmn+ii) = in(i)
503
504 IF (irad2r==1) in(i)=
max(em20,in(i))
505 END DO
506 END IF
507 END DO
508 END IF
509 dmas = zero
510 diner = zero
511
512 IF(mcheck==0)ncycle=0
513 i7kglo = 0
514 nabfwr = 0
515
516 i13a=1+2*nsnod
517 i13b=i13a+nsels
518 i13c=i13b+nselq
519 i13d=i13c+nselc
520 i13e=i13d+nselt
521 i13f=i13e+nselp
522 i13g=i13f+nselr
523 i13h=i13g+nselu
524 i13i=i13h+nseltg
525 i15ath=1+lipart1*(npart+nthpart)
526 i15a=i15ath+2*9*(npart+nthpart)
527 i15b=i15a+numels
528 i15c=i15b+numelq
529 i15d=i15c+numelc
530 i15e=i15d+numelt
531 i15f=i15e+numelp
532 i15g=i15f+numelr
533 i15h=i15g
534 i15i=i15h+numeltg
535 i15j=i15i+numelx
536 i15k=i15j+numsph
537 i35ath=1+lisub1*nsubs
538
539 i87a = 1
540 i87b = i87a + 8 * numels + 6 * numels10 + 12 * numels20 + 8 * numels16
541 i87c = i87b + 4 * numelq
542 i87d = i87c + 4 * numelc
543 i87e = i87d + 2 * numelt
544 i87f = i87e + 2 * numelp
545 i87g = i87f + 3 * numelr
546 i87h = i87g + 3 * numeltg
547 i87h = i87h + 3 * numeltg6
548 i87i = i87h
549 i87j = i87i + 4 * nskymv0
550 i87k = i87j + 4 * nconld
551 i87l = i87k + 4 * glob_therm%NUMCONV
552 i87m = i87l + 4 * glob_therm%NUMRADIA
553 i87n = i87m + slloadp
554
555
556
557 maxnx=0
558 DO i=1,numelx
559 IF (kxx(3,i)>maxnx) maxnx=kxx(3,i)
560 ENDDO
561
562 DO i=1,npart
563 partsav(8,i)=parts0(i)
564 ENDDO
565
566 IF (ispmd==0)THEN
567 CALL date_and_time(startdate, starttime, zone, values)
568 WRITE(istdo,'(A,I2.2,A,I2.2,A,I4.4)') ' ',values(3),'/',values(2),'/',values(1)
569 WRITE(iout,'(A,I2.2,A,I2.2,A,I4.4)') ' ',values(3),'/',values(2),'/',values(1)
570 END IF
571
572 manim = 0
573 mrest = 0
574 mstop = 0
575 ictlstop = 0
576 h3d_data%MH3D = 0
577 IF(dtin/=0. .AND. mcheck==0)THEN
578 IF(dt2old==zero)THEN
579 dt2old=dtin/onep1
580 ELSE
581 dt2old=
min(dt2old,dtin/onep1)
582 ENDIF
583 ENDIF
584 IF(anim_v(26)+h3d_data%N_VECT_CONT_MAX >0)
ifcontmax=1
590 IF(h3d_data%N_SCAL_CSE_FRIC >0) THEN
593 ENDIF
596
597
598
599 IF(iparit==3) THEN
600 write(6,*) 'Non supported /PARITH option'
601 ELSEIF(iparit/=0) THEN
602
603
604
605 IF(ivector==1)THEN
606 iad1 = numnod+2
607 ELSE
608 iad1 = 1
609 ENDIF
611 1 pon%ADSKY ,pon%ADSKY(iad1),pon%FSKY ,pon%FSKYM ,iad_elem ,
612 2 fr_elem ,fr_nbcc ,procne,niskyfi ,addcni2 ,
613 3 procni2 ,iad_i2m ,fr_i2m,fr_nbcci2,addcni2(iad1),
614 4 pon%IADSDP ,pon%IADRCP ,pon%ISENDP,pon%IRECVP ,fthesky ,
615 5 niskyfie,inod_pxfem ,adsky_pxfem,procne_pxfem,
616 6 isendp_pxfem,irecvp_pxfem ,iadsdp_pxfem,iadrcp_pxfem,
617 7 fr_nbcc1,inod_crkxfem,adsky_crkxfem,procne_crkxfem,
618 8 isendp_crkxfem,irecvp_crkxfem,iadsdp_crkxfem,iadrcp_crkxfem,
619 9 condnsky,glob_therm)
620 ENDIF
621
623 1 ipartl ,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
624 2 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
625 3 ipart(i15j),ipart(i15k),npartl )
626
627
628
630 1 iparg, igrouc, ngrouc, igrounc, ngrounc,
631 2 ixc,ixs,ixtg,ipm,igeo,pm,geo,tabmp_l,tab_mat)
632
633
634
635 IF(igroupflg(1) == 1 )
CALL findgroupc(iparg, igrouc, ngrouc, igroupc, igrouptg)
636
637
638
639 IF(igroupflg(2) == 1 )
CALL findgroups(iparg, igroups)
640
641
642
643 IF(isecut/=0)THEN
644 k0=nstrf(25)
645 DO i=1,nsect
646 nnod=nstrf(k0+6)
647 k2s=k0+30+nstrf(k0+14)
648 DO j=1,nnod
649 secfcum(4,nstrf(k2s),i)=1.
650 k2s=k2s+1
651 ENDDO
652 IF (nstrf(k0) >= 100 ) isectr = i
653 k0=nstrf(k0+24)
654 ENDDO
655 CALL section_init(nstrf,secbuf,nom_sect,isectr,nsect,ioldsect)
656 ENDIF
657
658
659
660 DO i = 1, numgeo
661 igtyp = igeo(11,i)
662 IF(igtyp==1.OR.(igtyp>=9 .AND. igtyp<=11).OR.igtyp==16) THEN
663 geo(18,i) = sqrt(geo(13,i))
664 geo(19,i) = sqrt(geo(14,i))
665 geo(20,i) = sqrt(geo(15,i))
666 ENDIF
667 ENDDO
668
669
670
671 IF(pminver<6)THEN
672 DO i = 1, numgeo
673 geo(100,i) = sqrt(geo(38,i))
674 END DO
675 DO i = 1, nummat
676 IF(ipm(2,i)==999)cycle
677 pm(12,i) = sqrt(abs(pm(22,i)))
678 pm(13,i) = sqrt(abs(pm(24,i)))
679 pm(14,i) = sqrt(abs(pm(25,i)))
680 pm(190,i)= sqrt(abs(pm(21,i)))
681 END DO
682 END IF
683
684
685
686 IF (nfxbody>0) THEN
687 DO i=1,lenvar
688 fxbfp(i)=zero
689 fxbgrp(i)=zero
690 ENDDO
691 DO i=1,nfxbody
692 fxbefw(i)=zero
693 fxbgrw(i)=zero
694 fxbedp(i)=zero
695 ENDDO
696 ENDIF
697
698
699
700 iad=0
701 lwibem=0
702 lwrbem=0
703 DO i=1,nvolu
704 ityp=monvol(iad+2)
705 IF (ityp==7) THEN
706 nnbem=monvol(iad+32)
707 lwibem=lwibem+1+nnbem
708 lwrbem=lwrbem+nnbem**2
709 ENDIF
710 iad=iad+nimv
711 ENDDO
712
713
714
715 iad=0
716 lwiflow=0
717 lwrflow=0
718 DO i=1,nflow
719 ityp=iflow(iad+2)
720 IF (ityp == 1 .OR.ityp == 3) THEN
721 lwiflow=lwiflow+iflow(iad+8)
722 lwrflow=lwrflow+iflow(iad+9)
723 ENDIF
724 iad=iad+liflow
725 ENDDO
726
727
728
730
731
732
733 IF(nadmesh/=0)THEN
734 CALL admini(ixc ,ipart(i15c),ixtg ,ipart(i15h),ipart,
735 . igeo,ipm ,iparg ,x ,ms ,
736 . in ,elbuf_tab ,sh4tree,ipadmesh,msc ,
737 . inc ,sh3tree ,mstg ,intg ,ptg ,
738 . sh4trim ,sh3trim,mscnd ,incnd ,pm ,
739 . mcp ,mcpc ,mcptg ,tagtrimc ,tagtrimtg,
740 . glob_therm%ITHERM_FE)
741
742 CALL admordr(sh4tree,sh3tree,ixc,ixtg)
743 iadmesh=0
744 ngdone=1
745 END IF
746 IF(istatcnd/=0)THEN
747
748 CALL cndordr(ipart,ipart(i15c),ipart(i15h),sh4tree,sh3tree)
749 END IF
750
751
752
753 IF(lag_ncf+lag_ncl > 0)THEN
754 lag_sec=0
755
756 DO i = 1, ninter
757 IF(ipari(33,i)/=0)lag_sec=1
758 END DO
759 DO i = 1, nrwall
760 IF(nprw(i+5*nrwall)==1)lag_sec=1
761 END DO
762 IF(nbcslag+ngjoint+nrbylag > 0)lag_sec=1
763
764 END IF
765
766
767
768
769 is_present_inter1 = -1
770
771
772
773 int18kine=0
774 DO i=1, ninter
775 IF(ipari(7,i) == 7 .AND. ipari(34,i) == -2 .AND. ipari(22,i) == 7)THEN
776 int18kine=1
777 ENDIF
778 ENDDO
779
780
781
782 int7itied = 0
783 DO i=1, ninter
784 ityp = ipari(7,i)
785 itied = ipari(85,i)
786 IF(ityp==7.AND.itied/=0)THEN
787 int7itied = 1
788 ENDIF
789 IF(ityp==10) int7itied = 1
790 ENDDO
791
792
793
794 int24use = 0
795 DO i=1, ninter
796 IF(ipari(7,i)==24)THEN
797 int24use = 1
798
799 IF(ipari(59,i) >0) int24e2euse=1
800 ENDIF
801 ENDDO
802
803
804
805 ni25 = 0
806 DO i=1, ninter
807 IF(ipari(7,i)==25)THEN
808 ni25 = ni25 + 1
809 intlist25(ni25)=i
810 ENDIF
811 ENDDO
812
813
814
815 IF (sensors%STABSEN > 0) THEN
816 DO n=1,ninter
817 nisub =ipari(36,n)
818 isensint(1,n) = sensors%TABSENSOR(n+1 + nsect) - sensors%TABSENSOR(n + nsect)
819
820 IF (ipari(71,n)>0) THEN
821
822 isensint(1,n) = isensint(1,ipari(71,n))
823 ENDIF
824
825 DO i=1,nisub
826 isensint(i+1,n) = sensors%TABSENSOR(i +1 + nsect + ninter) -
827 . sensors%TABSENSOR(i
828 ENDDO
829 ENDDO
830 ENDIF
831
832
833
834 int2pen=0
835 DO i=1, ninter
836 IF (ipari(7,i) == 2 .AND. ipari(20,i) == 25) THEN
837 int2pen=1
838 EXIT
839 ENDIF
840 ENDDO
841
842
843
844
845 fxvel_fgeo=0
846 DO n=1,nfxvel
847 IF (ibfv(13,n) > 0 ) THEN
848 fxvel_fgeo = 1
849 EXIT
850 ENDIF
851 ENDDO
852
853
854 ENDIF
855
856
857
858
860
861
862
863 IF(ninter/=0.AND.anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT >0)
CALL zeror(fani(1,nodft),numnthread)
864 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0) THEN
865 CALL zeror(fani(1,nfnca+nodft),numnthread)
866 CALL zeror(fani(1,nftca+nodft),numnthread)
867 END IF
868 IF(anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS >0)THEN
869#include "vectorize.inc"
870 DO i=nodft,nodlt
871 anin(i+ndma) = zero
872 ENDDO
873 ENDIF
874 IF(anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER >0)THEN
875#include "vectorize.inc"
876 DO i=nodft,nodlt
877 anin(i+ndin) = zero
878 ENDDO
879 END IF
880 IF(anim_n(15) == 1 .OR. anim_n(16) == 1 .OR. h3d_data%N_SCAL_DAMA2 == 1)THEN
881#include "vectorize.inc"
882 DO i=nodft,nodlt
883 anin(ndama2+2*(i-1)+1) = zero
884 anin(ndama2+2*(i-1)+2) = zero
885 ENDDO
886 ENDIF
887
888
889 IF (iparit==0) THEN
890 CALL zeror(a(1,ndtask),numnod)
891 IF(iroddl/=0)
CALL zeror(ar(1,ndtask),numnod)
892 DO i=ndtask,ndtask+numnod-1
893 stifn(i)=em20
894 ENDDO
895 IF(iroddl/=0)THEN
896 DO i=ndtask,ndtask+numnod-1
897 stifr(i)=em20
898 ENDDO
899 ENDIF
900
901 IF(kdtint/=0)THEN
902 CALL zero1(viscn(ndtask),numnod)
903 ENDIF
904
905 IF (glob_therm%ITHERM_FE > 0) THEN
906 CALL zero1(fthe(ndtask),numnod)
907 ENDIF
908
909 IF(sol2sph_flag/=0)THEN
910 CALL zero1(dmsph(ndtask),numnod)
911 ENDIF
912
913 IF (glob_therm%NODADT_THERM > 0) THEN
914 CALL zero1(condn(ndtask),numnod
915 ENDIF
916
919 DO i=ndtask,ndtask+numnod-1
920 pinch_data%STIFPINCH(i)=em20
921 ENDDO
922 ENDIF
923 ELSE
924 CALL zeror(a(1,nodft),numnthread)
925 IF(iroddl/=0)
CALL zeror(ar(1,nodft),numnthread)
926 DO i=nodft,nodlt
927 stifn(i)=em20
928 ENDDO
929 IF(iroddl/=0)THEN
930 DO i=nodft,nodlt
931 stifr(i)=em20
932 ENDDO
933 ENDIF
934 IF(kdtint/=0)THEN
935 CALL zero1(viscn(nodft),numnthread)
936 ENDIF
937
938 IF (glob_therm%ITHERM_FE > 0 ) THEN
939 CALL zero1(fthe(nodft),numnthread)
940 ENDIF
941
942 IF(nsphsol/=0)THEN
943 CALL zero1(dmsph(nodft),numnthread)
944 ENDIF
945
946 IF (glob_therm%NODADT_THERM > 0) THEN
947 CALL zero1(condn(nodft),numnthread)
948 ENDIF
949
951 CALL zeror(pinch_data%APINCH(1,nodft),numnthread)
952 DO i=nodft,nodlt
953 pinch_data%STIFPINCH(i)=em20
954 ENDDO
955 ENDIF
956 ENDIF
957
958
959 IF(iparit==0) THEN
960 IF(iroddl==0) THEN
961 DO i = nodft, nodlt
962 stifn(i) = stifn(i)*weight(i)
963 ENDDO
964 ELSE
965 DO i = nodft, nodlt
966 stifn(i) = stifn(i)*weight(i)
967 stifr(i) = stifr(i)*weight(i)
968 ENDDO
969 ENDIF
970 ENDIF
971
972
973
974
975 IF (itask==0)
CALL imp_init(v,vr,iparg,ipm,igeo,elbuf_tab)
976
977
978
979 IF(nadmesh/=0)THEN
980 iflgadm=0
982 1 iparg ,elbuf_tab ,pon%FSKY ,pon%FSKY ,fthesky,
983 2 pon%IADC,pon%IAD_TG,iflgadm,igrouc,ngrouc,
984 3 condnsky ,glob_therm%NODADT_THERM)
985 END IF
986
987
988 IF( itask == 0)
CALL kinini()
989
990
991
992 IF(idtmins == 1 .AND. idtmins_old == 1)THEN
993 IF(dtfacs /= dtfacs_old .OR. dtmins /= dtmins_old)THEN
994
995 admsms(nodft:nodlt)=zero
996 res_sms(1:3,nodft:nodlt)=zero
997 ELSEIF(idtgrs_old/=0)THEN
998 IF( idtgrs < 0.AND.
999 . -idtgrs /= igrpart(idtgrs_old)%ID) THEN
1000
1001
1002 admsms(nodft:nodlt)=zero
1003 res_sms(1:3,nodft:nodlt)=zero
1004 ELSE
1005
1006 END IF
1007 ELSEIF(idtgrs_old==0.AND.idtgrs/=0)THEN
1008
1009
1010 admsms(nodft:nodlt)=zero
1011 res_sms(1:3,nodft:nodlt)=zero
1012 ELSE
1013
1014 END IF
1015
1016 ELSEIF(idtmins == 2 .AND. idtmins_old == 2)THEN
1017 IF(dtfacs /= dtfacs_old .OR. dtmins /= dtmins_old)THEN
1018
1019 ELSEIF(idtgrs_old/=0)THEN
1020 IF( idtgrs < 0.AND.
1021 . -idtgrs/= igrpart(idtgrs_old)%ID) THEN
1022
1023
1024 IF(itask==0)THEN
1025 dmelc(1:numelc )=zero
1026 dmeltg(1:numeltg)=zero
1027 dmels(1:numels )=zero
1028 dmeltr(1:numelt )=zero
1029 dmelp(1:numelp )=zero
1030 dmelrt(1:numelr )=zero
1031 dmint2(1:4,1:i2nsn25)=zero
1032 END IF
1033 res_sms(1:3,nodft:nodlt)=zero
1034 ELSE
1035
1036 END IF
1037 ELSEIF(idtgrs_old==0.AND.idtgrs/=0)THEN
1038
1039
1040 IF(itask==0)THEN
1041 dmelc(1:numelc )=zero
1042 dmeltg(1:numeltg)=zero
1043 dmels(1:numels )=zero
1044 dmeltr(1:numelt )=zero
1045 dmelp(1:numelp )=zero
1046 dmelrt(1:numelr )=zero
1047 dmint2(1:4,1:i2nsn25)=zero
1048 END IF
1049 res_sms(1:3,nodft:nodlt)=zero
1050 ELSE
1051
1052 END IF
1053
1054 ELSEIF(idtmins == 1 .AND. idtmins_old /= idtmins)THEN
1055
1056 admsms(nodft:nodlt)=zero
1057 res_sms(1:3,nodft:nodlt)=zero
1058
1059 ELSEIF(idtmins == 2 .AND. idtmins_old /= idtmins)THEN
1060
1061 IF(itask==0)THEN
1062 dmelc(1:numelc )=zero
1063 dmeltg(1:numeltg)=zero
1064 dmels(1:numels )=zero
1065 dmeltr(1:numelt )=zero
1066 dmelp(1:numelp )=zero
1067 dmelrt(1:numelr )=zero
1068 dmint2(1:4,1:i2nsn25)=zero
1069 END IF
1070 res_sms(1:3,nodft:nodlt)=zero
1071
1072 ELSEIF(idtmins_int /= 0 .AND. idtmins_int_old /= idtmins_int)THEN
1073
1074 res_sms(1:3,nodft:nodlt)=zero
1075
1076 END IF
1077
1078 IF(itask == 0) THEN
1079 nisky_sms=0
1080
1081 kforsms=0
1082 IF((idtmins==2.AND.idtmins_old/=idtmins).OR.
1083 . (idtmins_int/=0.AND.idtmins_int_old/=idtmins_int))THEN
1084 kforsms=1
1085 END IF
1086 ENDIF
1087
1088 IF(anim_ply > 0.AND. itask == 0) THEN
1090 ENDIF
1091
1092 IF (icrack3d > 0 .AND. itask == 0)THEN
1094 . iadc_crkxfem,iadc_crkxfem(1+4*ecrkxfec))
1095 ENDIF
1096
1097
1098
1099 IF(ns10e > 0) THEN
1100 IF (itask == 0) THEN
1101 IF(nspmd>1) THEN
1105 ELSE
1107 END IF
1108
1116 END IF
1122 END IF
1124 ENDIF
1125
1126
1127
1128 IF (itask == 0)
1129 .
CALL tmax_ipart(iparg ,ipart ,ipart(i15a),ipart(i15c),
1130 . ipart(i15i),h3d_data)
1131 CALL ini_tmax(elbuf_tab ,iparg ,geo ,pm ,
1132 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
1133 . ixc ,ixtg ,ixt ,ixp ,ixr ,
1134 . x ,d ,v ,iad_elem ,fr_elem ,
1135 . weight ,ipm ,igeo ,stack ,itask )
1136
1137 IF (failwave%WAVE_MOD > 0) THEN
1139 ENDIF
1140
1141 IF (nloc_dmg%IMOD > 0) THEN
1143 CALL nloc_count_solnod(ngroup, nparg, iparg, elbuf_tab, ixs, nixs, numels)
1144 ENDIF
1145
1146
1147
1148 ntsheg =0
1150 IF (idttsh>0)
CALL dim_tshedg(elbuf_tab ,ntsheg, ixs ,iparg )
1151 IF(nspmd>1) THEN
1154 END IF
1155 IF (ntsheg > 0) THEN
1156 ALLOCATE (
ienunl(2*ntsheg),alpha_dc(numnod))
1158 alpha_dc=one
1160 IF(nspmd>1) THEN
1161 nbs = iad_elem(1,nspmd+1)-iad_elem(1,1)
1162 ALLOCATE (isend(nbs),irecv(nbs))
1163 isend=0
1165 . isend ,irecv )
1170 DEALLOCATE(isend,irecv)
1171 END IF
1172 END IF
1173
1174
1175
1176 CALL inter_sh_offset_ini(
1177 . ngroup, nparg, iparg, npropg,
1178 . numgeo, geo, numelc, nixc,
1179 . ixc, numeltg, nixtg, ixtg,
1180 . numnod, nspmd, iad_elem, fr_elem,
1181 . sfr_elem, thke, elbuf_tab, sh_offset_tab,
1182 . iparit )
1183
1184 niniveltg = loads%NINIVELT
1186 loads%NINIVELT_G = niniveltg
1187 IF (tt == zero .AND. loads%NINIVELT > 0) THEN
1188 CALL inivel_init(
1189 . ngrnod, ngrbric, ngrquad, ngrsh3n,
1190 . igrnod, igrbric, igrquad, igrsh3n,
1191 . numskw, liskn, iskwn, numfram,
1192 . iframe, loads%NINIVELT,loads%INIVELT,sensors)
1193 END IF
1194
1195 DO n = 1, ninter
1196 CALL int_flushtime(intbuf_tab(n)%METRIC)
1197 ENDDO
1198
1199
1200 RETURN
subroutine admgvid(iparg, elbuf_tab, fskyv, fsky, fthesky, iadc, iadtg, iflg, igrouc, ngrouc, condnsky, nodadt_therm)
subroutine admini(ixc, ipartc, ixtg, iparttg, ipart, igeo, ipm, iparg, x, ms, in, elbuf_tab, sh4tree, ipadmesh, msc, inc, sh3tree, mstg, intg, ptg, sh4trim, sh3trim, mscnd, incnd, pm, mcp, mcpc, mcptg, tagtrimc, tagtrimtg, itherm_fe)
subroutine admordr(sh4tree, sh3tree, ixc, ixtg)
subroutine anim_xfe_init(ixc, ixtg, inod_crk, iel_crk, iadc_crk, iadtg_crk)
subroutine assadd2(addcne, indsky, fsky, fskym, iad_elem, fr_elem, fr_nbcc, procne, niskyfi, addcni2, procni2, iad_i2m, fr_i2m, fr_nbcci2, indskyi2, iadsdp, iadrcp, isendp, irecvp, fthesky, niskyfie, inod_pxfem, addcne_pxfem, procne_pxfem, isendp_pxfem, irecvp_pxfem, iadsdp_pxfem, iadrcp_pxfem, fr_nbcc1, inod_crkxfem, addcne_crkxfem, procne_crkxfem, isendp_crkxfem, irecvp_crkxfem, iadsdp_crkxfem, iadrcp_crkxfem, condnsky, glob_therm)
subroutine chkinit(ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixs10, ixs20, ixs16, ixtg1, geo, addcnel, cnel, adsky, iparg)
subroutine cndordr(ipart, ipartc, iparttg, sh4tree, sh3tree)
subroutine dim_tshedg(elbuf_str, nedg, ixs, iparg)
subroutine findgroups(iparg, igroups)
subroutine findgroupc(iparg, igrouc, ngrouc, igroupc, igrouptg)
subroutine imp_init(v, vr, iparg, ipm, igeo, elbuf_tab)
subroutine ind_tshedg(elbuf_str, ienunl, ixs, iparg)
subroutine ini_tmax(elbuf_tab, iparg, geo, pm, ixs, ixs10, ixs16, ixs20, ixq, ixc, ixtg, ixt, ixp, ixr, x, d, v, iad_elem, fr_elem, weight, ipm, igeo, stack, itask)
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
integer, dimension(:), pointer fr_stsh
integer, dimension(:), pointer iad_stsh
integer, dimension(:), pointer iad_rtsh
integer, dimension(:), pointer ienunl
integer, dimension(:), pointer fr_rtsh
integer, dimension(:), pointer iad_cndm1
integer, dimension(:), pointer fr_nbcccnd1
integer, dimension(:), pointer iad_cnds
integer, dimension(:), allocatable imap2nd
integer, dimension(:), pointer fr_cndm
integer, dimension(:), pointer fr_cndm1
integer, dimension(:), pointer itagnd
integer, dimension(:), pointer procncnd
integer, dimension(:), pointer icnds10
integer, dimension(:), pointer fr_cnds
integer, dimension(:), pointer addcncnd
integer, dimension(:), pointer iad_cndm
integer, dimension(:), pointer fr_nbcccnd
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 fillipartl(ipartl, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, ipartx, ipartsp, ipartig3d, npartl)
subroutine grpsplit(iparg, igrouc, ngrouc, igrounc, ngrounc, ixc, ixs, ixtg, ipm, igeo, pm, geo, tabmp_l, tab_mat)
subroutine init_kyne(ikine, npby, lpby, tagslv_rby)
subroutine s10cnds_ini(icnds10, itags, fr_elem, iad_elem, iad_cdns, fr_cdns)
subroutine s10cnd_ini(icnds10, itagnd, iad_cndm, fr_cndm, fr_nbcccnd, addcncnd, procncnd, vnd, v, itab, iad_cndm1, fr_cndm1, fr_nbcccnd1)
subroutine s10cndi2_ini(ipari, intbuf_tab, icnds10, itagnd, weight, fr_cnds, iad_cnds, itab)
subroutine cndmasi2_dim(ipari, intbuf_tab, icnds10, itagnd, weight, nkend, iad_cnds, fr_cnds, s_fr, nspmd)
subroutine s10cnds_dim(icnds10, itags, fr_elem, iad_elem, nbdds)
subroutine cndmasi2_ini(ipari, intbuf_tab, icnds10, itagnd, nkend, imap2nd, masi2nd0, ms, weight, itab)
subroutine section_init(nstrf, secbuf, nom_sect, isectr, nsect, ioldsect)
subroutine spmd_failwave_boundaries(failwave, iad_elem, fr_elem)
subroutine spmd_sub_boundaries(nloc_dmg, iad_elem, fr_elem)
subroutine spmd_anim_ply_init(igeo, geo, iparg, ixc, ixtg, ipartc, ipartq, iparttg, stack)
subroutine tmax_ipart(iparg, ipart, iparts, ipartc, ipartg, h3d_data)
subroutine tshcdcom_dim(ienunl, fr_elem, iad_elem, nbdds, nbddr, isend, irecv)
subroutine tshcdcom_ini(isend, iad_elem, fr_elem, iad_stsh, fr_stsh)