172 SUBROUTINE genh3d(OUTPUT, TIMERS,X ,D ,V ,A ,BUFEL ,
173 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
174 3 IXR ,IXTG ,SWAFT ,SMAS ,SXNORM ,
175 4 SIAD ,IPARG ,PM ,GEO ,MS ,
176 5 SINVERT ,CONT ,SMATER ,ICUT ,SKEW ,
177 6 XCUT ,FINT ,ITAB ,SEL2FA ,FEXT ,
178 7 FOPT ,LPBY ,NPBY ,NSTRF ,
179 8 RWBUF ,NPRW ,TANI ,ELBUF_TAB ,MAT_PARAM,
180 A DD_IAD ,WEIGHT ,EANI ,IPART ,CLUSTER ,
181 B IPARTS ,IPARTQ ,IPARTC ,IPARTT ,IPARTP ,
182 C IPARTR ,IPARTUR ,IPARTTG ,
183 D RBY ,SWA4 ,TORS ,NOM_OPT ,
184 E BUFSF ,IDATA ,RDATA ,SIADG ,BUFMAT ,
185 F BUFGEO ,KXX ,IXX ,IPARTX ,SUIX ,
186 G SXUSR ,SNFACPTX ,SIXEDGE ,SIXFACET ,SIXSOLID ,
187 H SNUMX1 ,SNUMX2 ,SNUMX3 ,SOFFX1 ,SOFFX2 ,
188 I SOFFX3 ,SMASS1 ,SMASS2 ,SMASS3 ,SFUNC1 ,
189 J SFUNC2 ,SFUNC3 ,KXSP ,IXSP ,NOD2SP ,
190 K IPARTSP ,SPBUF ,IXS10 ,IXS20 ,IXS16 ,
191 L VR ,MONVOL ,VOLMON ,IPM ,IGEO ,NODGLOB,
192 M IAD_ELEM ,FR_ELEM ,FR_SEC ,FR_RBY2 ,IAD_RBY2 ,
193 N FR_WALL ,IFLOW ,RFLOW ,FNCONT ,FTCONT ,
194 O TEMP ,THKE ,ERR_THK_SH4 ,ERR_THK_SH3 ,DIAG_SMS ,
195 P IPARI ,FNCONT2 ,DR ,ALE_CONNECT ,
196 Q IRBE2 ,IRBE3 ,LRBE2 ,LRBE3 ,FR_RBE2,
197 R FR_RBE3M ,IAD_RBE2 ,DXANCG ,NOD_PXFEM ,IEL_PXFEM,
198 S ZI_PLY ,VGAZ ,FCONTG ,FNCONTG ,FTCONTG ,
199 T FANREAC ,INOD_CRK ,IEL_CRK ,ELCUTC ,IADC_CRK ,
200 U PDAMA2 ,RES_SMS ,WEIGHT_MD ,NODGLOBXFE ,NODEDGE ,
201 V FCLUSTER ,MCLUSTER ,XFEM_TAB ,W ,
202 W NV46 ,IPARTIG3D,KXIG3D ,IXIG3D ,SIG3DSOLID,
203 X KNOT ,WIGE ,NERCVOIS ,NESDVOIS ,LERCVOIS ,
204 Y LESDVOIS ,CRKEDGE ,INDX_CRK ,XEDGE4N ,XEDGE3N ,
205 Z STACK ,SPH2SOL ,STIFN ,STIFR ,IGRNOD ,
206 1 SH4TREE ,SH3TREE ,H3D_DATA ,MULTI_FVM ,SUBSET ,
207 2 PSKIDS ,TAG_SKINS6,TF ,NPF ,FCONT_MAX ,
208 3 MDS_MATID,FNCONTP2 ,FTCONTP2 ,IBCL ,ILOADP ,
209 4 LLOADP ,FAC ,SENSORS ,TAGNCONT ,LOADP_HYD_INTER,
210 5 XFRAME ,FORC ,AR ,CSEFRIC ,CSEFRICG ,
211 6 CSEFRIC_STAMP,CSEFRICG_STAMP ,TABLE ,IFRAME ,LOADS,
212 7 DRAPE_SH4N, DRAPE_SH3N, DRAPEG ,X_C ,GLOB_THERM,PBLAST)
218 USE h3d_oned_scalar_mod,
ONLY: h3d_oned_scalar
244 USE h3d_gather_id_val_mod
246 use element_mod ,
only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
250#include "implicit_f.inc"
256#include "build_info.inc"
257#include "com01_c.inc"
258#include "com04_c.inc"
259#include "com08_c.inc"
260#include "com_xfem1.inc"
262#include "param_c.inc"
263#include "units_c.inc"
264#include "scr14_c.inc"
265#include "scr16_c.inc"
266#include "scr17_c.inc"
267#include "scr23_c.inc"
268#include "chara_c.inc"
271#include "filescount_c.inc"
272#include "tabsiz_c.inc"
273#include "intstamp_c.inc"
275#include "sysunit.inc"
283 TYPE(output_),
INTENT(INOUT) :: OUTPUT
284 TYPE(timer_),
INTENT(INOUT) :: TIMERS
285 INTEGER SWAFT,SMAS,SXNORM,SIAD,SINVERT,SMATER,SEL2FA,SWA4,
286 . siadg,nercvois(*),nesdvois(*),lercvois(*),
287 . lesdvois(*),sph2sol(*),sh4tree(*),sh3tree(*),tag_skins6(*)
289 . suix, sxusr ,sfacptx,sixedge,sixfacet,sixsolid,snumx1,
290 . snumx2,snumx3,soffx1,soffx2,soffx3,smass1,smass2,
291 .
smass3,sfunc1,sfunc2,sfunc3,sfin,snfacptx,npf(*)
293 INTEGER IGEO(NPROPGI,NUMGEO),IPM(NPROPMI,NUMMAT),INDX_CRK(*),
294 . LRBE2(*),LRBE3(*),FR_RBE2(3,*),FR_RBE3M(3,*),
295 . NOD_PXFEM(*), IEL_PXFEM(*),NODEDGE(2,*),XEDGE4N(4,*),XEDGE3N(3,*),
296 . INOD_CRK(*),IEL_CRK(*),ELCUTC(2,*),IADC_CRK(*)
298 . X(3*NUMNOD), D(3*NUMNOD), V(3*NUMNOD), A(3,NUMNOD), BUFEL(*),
299 . PM(NPROPM,NUMMAT), GEO(NPROPG,),CONT(*),
300 . XCUT(*) , FINT(3,NUMNOD),MS(NUMNOD),RWBUF(NRWLP,*),SKEW(LSKEW,*),
301 . RBY(NRBY,*),FEXT(3,NUMNOD) ,FOPT(6,*),TANI(6,*),EANI(*),
302 . TORS(15,*),BUFSF(*), RDATA(*),
303 . BUFMAT(*),BUFGEO(*),
304 . SPBUF(*), VR(3*NUMNOD),(SVOLMON), RFLOW(*), FNCONT(3,*), FTCONT(3,*),
305 . TEMP(*), THKE(*), ERR_THK_SH4(*), ERR_THK_SH3(*), DIAG_SMS(*),
306 . FNCONT2(3,*), DR(3,*),DXANCG(3,*),ZI_PLY(*),VGAZ(*),
307 . FCONTG(*), FNCONTG(*), FTCONTG(*),FANREAC(6,*),PDAMA2(2,*),
308 . RES_SMS(*),FCLUSTER(3,*),MCLUSTER(3,*),W(SW),
309 . WIGE(*),KNOT(*),STIFN(*),STIFR(*),PSKIDS(*),TF(*),FCONT_MAX(*),
310 . FNCONTP2(3,*) ,FTCONTP2(3,*)
311 INTEGER IPARG(NPARG,NGROUP),NSTRF(*),LPBY(*),
312 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG)
320 . kxsp(nisp,*), ixsp(kvoisph,*), nod2sp(*), ipartsp(*),
321 . nodglob(*),iad_elem(2,*),fr_elem(*),fr_wall(*), iflow(*),
322 . ipari(npari,*),irbe2(nrbe2l,*),irbe3(nrbe3l,*),
323 . weight_md(*),nodglobxfe(*),ipartig3d(*)
324 INTEGER CTEXT(111), IB
325 INTEGER DD_IAD(NSPMD+1,*)
326 INTEGER FR_SEC(NSPMD+1,*),FR_RBY2(3,*),(4,*),
328 . nerbe3t(nrbe3g),iad_rbe2(4,*),nv46,kxig3d(*),
329 . ixig3d(*),sig3dsolid,mds_matid(*)
330 INTEGER LLOADP(SLLOADP)
331 INTEGER ILOADP(SIZLOADP,*),IBCL(NIBCLD,*)
332 INTEGER TAGNCONT(NLOADP_HYD_INTER,NUMNOD),LOADP_HYD_INTER(NLOADP_HYD)
333 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1),
INTENT(IN) :: IFRAME
335 . FAC(LFACCLD,*),XFRAME(NXFRAME,*),FORC(*)
336 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
337 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP,NXEL) ::
338 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTER
339 TYPE (XFEM_EDGE_) ,
DIMENSION(*) ::
340 TYPE (STACK_PLY) :: STACK
341 TYPE (H3D_DATABASE) :: H3D_DATA
342 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
343 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
344 TYPE (SUBSET_) ,
TARGET,
DIMENSION(NSUBS) :: SUBSET
345 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
346 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
347 TYPE (LOADS_) ,
INTENT(IN) :: LOADS
348 TYPE (TTABLE),
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
349 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
350 my_real ,
INTENT(IN) :: AR(SAR)
351 my_real ,
INTENT(IN) :: csefric(output%DATA%NINEFRIC,output%DATA%S_EFRICINT) ,csefricg(output%DATA%S_EFRIC),
352 . csefric_stamp(output%DATA%NINEFRIC_STAMP,output%DATA%S_EFRICINTG) ,csefricg_stamp(output%DATA%S_EFRICG)
353 my_real ,
DIMENSION(3,NUMNOD),
INTENT(IN) :: x_c
354 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
355 TYPE (DRAPEG_),
INTENT(IN) :: DRAPEG
356 type (glob_therm_),
intent(in) ::
357 type (pblast_),
intent(in) :: PBLAST
362 my_real,
DIMENSION(:),
ALLOCATABLE :: WAFT , MAS
363 INTEGER IAD(SIAD),INVERT(SINVERT),EL2FA(SEL2FA),IADG(NSPMD,SIADG),FIRST_NODE_IG3D
364 my_real ,
DIMENSION (:),
ALLOCATABLE :: cbuf
365 INTEGER ,
DIMENSION (:),
ALLOCATABLE :: ICBUF
367 CHARACTER*80 STR,H3DTITLE
368 CHARACTER(LEN=NCHARLINE100):: KEYWORD
369 CHARACTER CH_H3D*4,FILNAM*100
370 INTEGER I, NBF, NBPART, J, IFUNC, FILEN, NSENSOR,NELCUT,N,K,NERBY,ISK(6),LAYER,IPT,GAUSS,ID_PLY,IUVAR
371 INTEGER II,II_L,INC,NDMA2,,NBONED_T, NBF_L, LEN
372 INTEGER NERBE2,NERBE3,ALL_SUB_CHILDS,IDMDS,IMDSVAR,ID
373 INTEGER I161,I16A,I16B,I16C,I16D,I16E,I16F,I16G,I16H,I16I,I16J,I16K,I16L,I16M,I16N
376 INTEGER SBUFSPM,SBUFRECVM,SBUFSPO,SPORBY,N_OUTP_DATA,LEN_H3DTITLE,N_H3D_PART_LIST
377 my_real cdg(3),xmin,ymin,zmin,xmax,
ymax,zmax, scale
378 INTEGER JJ, SUBG,IR,IS,IT,INTER_INPUT,INTERSKID,NI,ITYSKID,INTERFRIC
379 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SHELL_ID,SHELL_ID_P,
380 . shell_ity,shell_ity_p,oned_id,oned_id_p,
381 . oned_ity,oned_ity_p,solid_id,solid_id_p,
382 . solid_ity,solid_ity_p,is_writen_shell,
383 . is_writen_shell_p,is_writen_oned,
384 . is_writen_oned_p,is_writen_node,
385 . is_writen_node_p,node_id,node_id_p,
386 . is_writen_solid,is_writen_solid_p,
387 . sph_id,sph_id_p,is_writen_sph,is_writen_sph_p,
388 . quad_id,quad_id_p,is_writen_quad,is_writen_quad_p,
389 . skin_id_p,is_writen_skin,is_writen_skin_p,
391 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IS_WRITEN_NODE_FVM,NODE_ID_FVM
392 INTEGER INFO1,INFO2,IS_CORNER_DATA, COMPID_RBODIES, COMPID_RBE2S, COMPID_RBE3S, MAX_PART_ID
393 INTEGER ERROR_LOAD,NUMNOD_H3DPART
395 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
420 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
435 my_real,
DIMENSION(:),
ALLOCATABLE :: x_p,d_p
436 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAB_P
437 INTEGER :: IAD_H3DPART,IAD_P,NUMNODG0,IP0 ,NIXSKIN
438 INTEGER :: NUMNOD_P(NSPMD)
439 INTEGER MAX_NOD_ID,MAX_NCORN
440 REAL(KIND=4),
DIMENSION(:),
ALLOCATABLE :: SHELL_STACK
441 REAL(KIND=4),
DIMENSION(:),
ALLOCATABLE :: SHELL_STACK_P
442 INTEGER,
DIMENSION(NSPMD) :: GATHER_SIZE
443 INTEGER,
DIMENSION(NSPMD) :: TMP_OFFSETS
444 INTEGER,
DIMENSION(NSPMD+1) :: SH_TRIA_SPMD_OFFSETS
445 my_real,
DIMENSION(:),
ALLOCATABLE :: NODAL_SCALAR,NODAL_SCALAR_P,
446 . NODAL_VECTOR,NODAL_VECTOR_P,
447 . NODAL_TENSOR,NODAL_TENSOR_P,
448 . ONED_SCALAR,ONED_SCALAR_P,
449 . ONED_VECTOR,ONED_VECTOR_P,
450 . ONED_TENSOR,ONED_TENSOR_P,
451 . ONED_TORSOR,ONED_TORSOR_P,
452 . SHELL_SCALAR_P,SHELL_SCALAR,
453 . SHELL_VECTOR,SHELL_VECTOR_P,
455 . SOLID_SCALAR,SOLID_SCALAR_P,
456 . SOLID_VECTOR,SOLID_VECTOR_P
461 . skin_tensor,skin_tensor_p,
463 . sph_tensor,sph_tensor_p,
464 . quad_scalar,quad_scalar_p,
465 . quad_vector,quad_vector_p,
466 . quad_tensor,quad_tensor_p,nodal_scalar_fvm,
468 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD,TAGNOD_P,
470 my_real XWL(NRWALL) ,YWL(NRWALL) , ZWL(NRWALL), V1(NRWALL), V2(NRWALL), V3(NRWALL)
473LOGICAL IS_FILE_EXISTS
474 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_CHILD,SUB_IAD,SUB_TITLE
475 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_NCHILD
476 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_LEVEL
477 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_ID
478 INTEGER (KIND=8) :: H3DTOTALSIZE8
479 INTEGER :: LEN_TMP_NAME,LEN_RADVERS,OBJECT_ID, NPOLH, NPOLHG, NPOLH_ANIM, NPOLH_ANIM_G,
481 INTEGER :: AIRBAGS_TOTAL_FVM_IN_H3D_G
482 CHARACTER(len=2148) :: TMP_NAME
484 TYPE(
fvbag_data),
DIMENSION(:),
ALLOCATABLE :: FVDATA_P
485 my_real,
DIMENSION(:),
ALLOCATABLE :: fvdata_1d_array,fvdata_1d_array_p
507 TYPE(USER_NOD_ID_) :: USER_NOD_ID
509 INTEGER :: MAX_SHELL_STACKSIZE
510 INTEGER :: SHELL_STACKSIZE
511 INTEGER :: SHELL_STACKSIZE_P0
516 max_shell_stacksize = numelc + numeltg
517 CALL startime(timers,macro_timer_genh3d)
519 user_nod_id%INPUT_MAX=0
520 user_nod_id%RWALL_SHIFT=0
521 user_nod_id%RWALL_LEN=0
522 user_nod_id%FVMBAG_SHIFT=0
523 user_nod_id%FVMBAG_LEN=0
525 ndma2 = numnod*(
min(1,anim_n(1)+outp_n(1)+h3d_data%N_SCAL_DT)
526 . +
min(1,anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS)
527 . +
min(1,anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER))
528 nsensor = sensors%NSENSOR
530 ALLOCATE(sub_nchild(nsubs))
531 ALLOCATE(sub_level(nsubs))
532 ALLOCATE(sub_id(nsubs))
536 i16a=i161+lnopt1*nrbody0
537 i16b=i16a+lnopt1*naccelm
538 i16c=i16b+lnopt1*nvolu
539 i16d=i16c+lnopt1*(ninter+nintsub)
540 i16e=i16d+lnopt1*nrwall
542 i16g=i16f+lnopt1*njoint
543 i16h=i16g+lnopt1*nsect
544 i16i=i16h+lnopt1*nlink
545 i16j=i16i+lnopt1*(numskw+1+numfram+1)
546 i16k=i16j+lnopt1*nfxbody
547 i16l=i16k+lnopt1*nflow
548 i16m=i16l+lnopt1*nrbe2
549 i16n=i16m+lnopt1*nrbe3
556 h3d_data%IH3D_RUN = h3d_data%IH3D_RUN + 1
567 ALLOCATE(x_p(8*numnodg0))
568 ALLOCATE(itab_p(numnodg0))
570 CALL my_alloc( ixtg_p ,nixtg,numeltgg*ip0)
571 CALL my_alloc( ixs_p ,nixs,(numelsg-numels10g-numels16g-numels20g)*ip0)
572 CALL my_alloc( ixp_p ,nixp,numelpg*ip0)
573 CALL my_alloc( ixr_p ,nixr,numelrg*ip0)
574 CALL my_alloc( kxsp_p ,nisp,numsphg*ip0)
575 CALL my_alloc( ixt_p ,nixt,numeltrg*ip0)
576 CALL my_alloc( ixc_p ,nixc,numelcg
577 CALL my_alloc( ixs10_p ,11,numels10g*ip0)
578 CALL my_alloc( ixs16_p ,17,numels16g*ip0)
579 CALL my_alloc( ixs20_p ,21,numels20g*ip0)
580 ALLOCATE( ipartc_p(numelcg*ip0))
581 ALLOCATE( iparttg_p(numeltgg*ip0))
582 ALLOCATE( ipartq_p(numelqg
583 ALLOCATE( iparts_p((numelsg-numels10g-numels16g-numels20g)*ip0))
584 ALLOCATE( ipartr_p(numelrg*ip0))
585 ALLOCATE( ipartp_p(numelpg*ip0))
586 ALLOCATE( ipartt_p(numeltrg*ip0))
587 ALLOCATE( ipartsp_p(numsphg*ip0))
588 ALLOCATE( iparts10_p(numels10g*ip0))
589 ALLOCATE( iparts16_p(numels16g*ip0))
590 ALLOCATE( iparts20_p(numels20g*ip0))
591 CALL my_alloc( ixq_p ,nixq,numelqg*ip0)
592 CALL my_alloc( ixc_tmp ,nixc,numelc)
593 CALL my_alloc( ixtg_tmp ,nixtg,numeltg)
594 CALL my_alloc( ixr_tmp ,nixr,numelr)
595 CALL my_alloc( ixp_tmp ,nixp,numelp)
596 CALL my_alloc( kxsp_tmp ,nisp,numsph)
597 CALL my_alloc( ixt_tmp ,nixt,numelt)
598 CALL my_alloc( ixs10_tmp ,11,numels10)
599 CALL my_alloc( ixs16_tmp ,17,numels16)
600 CALL my_alloc( ixs20_tmp ,21,numels20)
601 CALL my_alloc( ixq_tmp ,nixq,numelq)
602 CALL my_alloc( ixskin_tmp ,nixskin,numskin)
603 CALL my_alloc( ixskin_p ,nixskin,numsking*ip0)
604 ALLOCATE( ipartskin_p(numsking*ip0))
606 ALLOCATE(d_p(numnodg0*8))
609 CALL startime(timers,macro_timer_spmdh3d)
611 CALL stoptime(timers,macro_timer_spmdh3d)
622 max_part_id =
max(max_part_id,ipart(4,i))
624 IF(h3d_data%RBODY_SINGLE == 1)compid_rbodies = max_part_id + 1
625 IF(h3d_data%RBE2_SINGLE == 1)compid_rbe2s = max_part_id + 2
626 IF(h3d_data%RBE3_SINGLE == 1)compid_rbe3s = max_part_id + 3
631 filnam=rootnam(1:rootlen)//
'.h3d'
639 IF ((h3d_data%IH3D == 1 .AND. irun == 1)
640 . .OR.( h3d_data%IH3D_RUN == 1 .AND. irun > 1))
THEN
645 all_sub_childs = all_sub_childs + subset(j)%NCHILD
646 sub_id(j) = subset(j)%ID
647 sub_nchild(j) = subset(j)%NCHILD
648 sub_level(j) = subset(j)%LEVEL
651 ALLOCATE(sub_child(all_sub_childs))
652 sub_child(1:all_sub_childs) = 0
653 ALLOCATE(sub_iad(nsubs))
655 ALLOCATE(sub_title(nsubs*ltitr))
656 sub_title(1:nsubs*ltitr) = 0
659 DO i=1,subset(j)%NCHILD
661 sub_child(k) = subset(j)%CHILD(i)
667 CALL fretitl(subset(j)%TITLE,sub_title(ltitr * (j
672 ALLOCATE(sub_title(0))
676 IF (h3d_data%IH3D == 1 .AND. irun == 1)
THEN
683 IF(error_load == 1)
THEN
684 CALL ancmsg(msgid=274,anmode=aninfo)
692 WRITE(radvers,
'(A,A)')
'Radioss ',vers
693 len_radvers = len_trim(radvers)
695 CALL startime(timers,macro_timer_libh3d)
696 CALL c_h3d_open_file(tmp_name,len_tmp_name,h3d_data%PERCENTAGE_ERROR,h3d_data%COMP_LEVEL,
697 . radvers,len_radvers,fac_mass,fac_length,fac_time)
699 . h3d_data%PARTS(1)%PART,
700 . nrbody, nrwall, nom_opt, lnopt1, i16d, npby, nnpby,
701 . sub_nchild, nsubs, nrbe2, nrbe3, i16l, i16m, n2d ,irbe2,
702 . nrbe2l,sub_id,sub_child,sub_level,sub_iad,sub_title,irbe3,
703 . nrbe3l,compid_rbodies,compid_rbe2s,compid_rbe3s)
704 CALL stoptime(timers,macro_timer_libh3d)
708 ELSEIF( h3d_data%IH3D_RUN == 1 .AND. irun > 1)
THEN
714 IF(error_load == 1)
THEN
715 CALL ancmsg(msgid=274,anmode=aninfo)
722 INQUIRE( file=tmp_name(1:len_tmp_name), exist=is_file_exists )
723 IF (is_file_exists)
THEN
724 CALL startime(timers,macro_timer_libh3d)
726 CALL c_h3d_reopen_file(tmp_name,len_tmp_name,h3d_data%PERCENTAGE_ERROR,h3d_data%COMP_LEVEL)
727 CALL stoptime(timers,macro_timer_libh3d)
732 WRITE(ch_h3d,
'(I4.4)')irun
733 filnam=rootnam(1:rootlen)//
'_'//ch_h3d//
'.h3d'
740 WRITE(radvers,
'(A,A)')
'Radioss ',vers
741 len_radvers = len_trim(radvers)
743 CALL startime(timers,macro_timer_libh3d)
744 CALL c_h3d_open_file(tmp_name,len_tmp_name,h3d_data%PERCENTAGE_ERROR,h3d_data%COMP_LEVEL,
745 . radvers,len_radvers,fac_mass,fac_length,fac_time)
747 . nrbody, nrwall, nom_opt, lnopt1, i16d, npby, nnpby,
748 . sub_nchild, nsubs, nrbe2g, nrbe3g, i16e, i16f, n2d ,irbe2,
749 . nrbe2l,sub_id,sub_child,sub_level,sub_iad,sub_title,irbe3,
750 . nrbe3l,compid_rbodies,compid_rbe2s,compid_rbe3s)
751 CALL stoptime(timers,macro_timer_libh3d)
760 CALL startime(timers,macro_timer_spmdh3d
763 CALL stoptime(timers,macro_timer_spmdh3d)
773 ALLOCATE(tagnod_p(numnodg))
775 ALLOCATE(tagnod_p(1))
778 IF(h3d_data%IPART_SELECT == 1)
THEN
779 ALLOCATE(tagnod(numnod))
784 IF (h3d_data%PARTS(1)%PART(ipartsp(i)) == 1)
THEN
785 IF(kxsp(2,i) > 0 )tagnod(kxsp(2,i)) = 1
790 IF (h3d_data%PARTS(1)%PART(ipartr(i)) == 1)
THEN
792 IF(ixr(j,i) > 0 )tagnod(ixr(j,i)) = 1
798 IF (h3d_data%PARTS(1)%PART(ipartp(i)) == 1)
THEN
800 IF(ixp(j,i) > 0 )tagnod(ixp(j,i)) = 1
806 IF (h3d_data%PARTS(1)%PART(ipartt(i)) == 1)
THEN
808 IF(ixt(j,i) > 0 )tagnod(ixt(j,i)) = 1
814 IF(npby(1,i) > 0 ) tagnod(npby(1,i)) = 1
816 IF(lpby(npby(11,i)+j) > 0) tagnod(lpby(npby(11,i)+j)) = 1
821 IF (h3d_data%PARTS(1)%PART(ipartc(i)) == 1)
THEN
823 IF(ixc(j,i) > 0 )tagnod(ixc(j,i)) = 1
829 IF (h3d_data%PARTS(1)%PART(iparttg(i)) == 1)
THEN
831 tagnod(ixtg(j,i)) = 1
837 IF (h3d_data%PARTS(1)%PART(iparts(i)) == 1)
THEN
839 IF(ixs(j,i) > 0 )tagnod(ixs(j,i)) = 1
845 IF (h3d_data%PARTS(1)%PART(ipartq(i)) == 1)
THEN
847 IF(ixq(j,i) > 0 )tagnod(ixq(j,i)) = 1
855 CALL startime(timers,macro_timer_spmdh3d)
857 CALL stoptime(timers,macro_timer_spmdh3d)
860 numnod_h3dpart = numnod_h3dpart + numnod_p(i)
865 ALLOCATE(itab_p_part(numnod_h3dpart))
866 ALLOCATE(itabm1_p(2*numnodg))
872 CALL stoptime(timers,macro_timer_spmdh3d)
875 DO i=1,numnod_h3dpart
876 IF(itab_p_part(i) /= 0)
THEN
877 IF(sysfus2(itab_p_part(i),itabm1_p,numnodg) /= 0)
THEN
878 tagnod_p(sysfus2(itab_p_part(i),itabm1_p,numnodg)) = 1
885 tagnod_p(i) = tagnod(i)
888 DEALLOCATE(itab_p_part)
890 ELSE IF(ispmd == 0)
THEN
900 IF(nspmd > 1 .AND. ispmd==0)
THEN
902 max_nod_id =
max(max_nod_id,itab_p(i))
904 ELSEIF(nspmd == 1)
THEN
907 max_nod_id =
max(max_nod_id,itab(i))
910 user_nod_id%INPUT_MAX = max_nod_id
913 IF(nspmd > 1 .AND. ispmd==0 .AND. h3d_data%IH3D == 1 )
THEN
914 CALL startime(timers,macro_timer_libh3d)
916 CALL stoptime(timers,macro_timer_libh3d)
917 ELSEIF(ispmd==0 .AND. h3d_data%IH3D == 1)
THEN
918 CALL startime(timers,macro_timer_libh3d)
920 CALL stoptime(timers,macro_timer_libh3d)
925 airbags_total_fvm_in_h3d_g = 0
927 user_nod_id%FVMBAG_SHIFT = max_nod_id
928 user_nod_id%FVMBAG_LEN = 0
933 if (ispmd == 0)
ALLOCATE (fvdata_p(
nfvbag))
934 airbags_total_fvm_in_h3d_g = 0
938 if ( (
fvspmd(j)%PMAIN-1 == 0) .and. (ispmd == 0))
then
941 npolh_anim_g =
fvdata(j)%NPOLH_ANIM
945 if (
fvspmd(j)%PMAIN-1 == ispmd)
then
947 fvm_globals(1) =
fvdata(j)%NPOLH
948 fvm_globals(2) =
fvdata(j)%NPOLH_ANIM
951 call spmd_send(fvm_globals,3,it_spmd(1),25001)
955 call spmd_recv(fvm_globals,3,it_spmd(
fvspmd(j)%PMAIN),25001)
956 npolhg = fvm_globals(1)
957 npolh_anim_g = fvm_globals(2)
958 airbags_total_fvm_in_h3d_g = fvm_globals(3)
962 airbags_total_fvm_in_h3d_g = 0
968 ALLOCATE (fvdata_p(j)%CENTROID_POLH(3,npolhg))
969 ALLOCATE (fvdata_p(j)%QPOLH(3,npolhg))
970 ALLOCATE (fvdata_p(j)%PPOLH(npolhg))
971 ALLOCATE (fvdata_p(j)%SSPPOLH(npolhg))
972 ALLOCATE (fvdata_p(j)%DTPOLH(npolhg))
973 ALLOCATE (fvdata_p(j)%MPOLH(npolhg))
974 ALLOCATE (fvdata_p(j)%RPOLH(npolhg))
975 ALLOCATE (fvdata_p(j)%TPOLH(npolhg))
976 fvdata_p(j)%NPOLH = npolhg
977 fvdata_p(j)%NPOLH_ANIM = npolh_anim_g
980 if ( (
fvspmd(j)%PMAIN-1 == 0) .and. (ispmd == 0))
then
982 fvdata_p(j)%CENTROID_POLH(1,1:npolh) =
fvdata(j)%CENTROID_POLH(1,1:npolh)
983 fvdata_p(j)%CENTROID_POLH(2,1:npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
984 fvdata_p(j)%CENTROID_POLH(3,1:npolh) =
fvdata(j)%CENTROID_POLH(3,1:npolh)
985 fvdata_p(j)%QPOLH(1,1:npolh) =
fvdata(j)%QPOLH(1,1:npolh)
986 fvdata_p(j)%QPOLH(2,1:npolh) =
fvdata(j)%QPOLH(2,1:npolh)
987 fvdata_p(j)%QPOLH(3,1:npolh) =
fvdata(j)%QPOLH(3,1:npolh)
988 fvdata_p(j)%PPOLH(1:npolh) =
fvdata(j)%PPOLH(1:npolh)
989 fvdata_p(j)%SSPPOLH(1:npolh) =
fvdata(j)%SSPPOLH(1:npolh)
990 fvdata_p(j)%DTPOLH(1:npolh) =
fvdata(j)%DTPOLH(1:npolh)
991 fvdata_p(j)%MPOLH(1:npolh) =
fvdata(j)%MPOLH(1:npolh)
992 fvdata_p(j)%RPOLH(1:npolh) =
fvdata(j)%RPOLH(1:npolh)
993 fvdata_p(j)%TPOLH(1:npolh) =
fvdata(j)%TPOLH(1:npolh
995 if (ispmd ==
fvspmd(j)%PMAIN-1)
then
996 ALLOCATE(fvdata_1d_array(12*npolh))
997 fvdata_1d_array(00*npolh+1:01*npolh) =
fvdata(j)%CENTROID_POLH(1,1:npolh)
998 fvdata_1d_array(01*npolh+1:02*npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
999 fvdata_1d_array(02*npolh+1:03*npolh) =
fvdata(j)%CENTROID_POLH(3,1:npolh)
1000 fvdata_1d_array(03*npolh+1:04*npolh) =
fvdata(j)%QPOLH(1,1:npolh)
1001 fvdata_1d_array(04*npolh+1:05*npolh) =
fvdata(j)%QPOLH(2,1:npolh)
1002 fvdata_1d_array(05*npolh+1:06*npolh) =
fvdata(j)%QPOLH(3,1:npolh)
1003 fvdata_1d_array(06*npolh+1:07*npolh) =
fvdata(j)%PPOLH(1:npolh)
1004 fvdata_1d_array(07*npolh+1:08*npolh) =
fvdata(j)%SSPPOLH(1
1005 fvdata_1d_array(08*npolh+1:09*npolh) =
fvdata(j)%DTPOLH(1:npolh)
1006 fvdata_1d_array(09*npolh+1:10*npolh) =
fvdata(j)%MPOLH(1:npolh)
1007 fvdata_1d_array(10*npolh+1:11*npolh) =
fvdata(j)%RPOLH(1:npolh)
1008 fvdata_1d_array(11*npolh+1:12*npolh) =
fvdata(j)%TPOLH(1:npolh)
1010 call spmd_send(fvdata_1d_array,12*npolh,it_spmd(1),25000)
1011 DEALLOCATE(fvdata_1d_array)
1015 ALLOCATE(fvdata_1d_array(12*npolhg))
1016 call spmd_recv(fvdata_1d_array,12*npolhg,it_spmd(
fvspmd(j)%PMAIN),25000)
1018 fvdata_p(j)%CENTROID_POLH(1,1:npolhg) = fvdata_1d_array(00*npolhg+1:01*npolhg
1019 fvdata_p(j)%CENTROID_POLH(2,1:npolhg) = fvdata_1d_array(01*npolhg+1:02*npolhg)
1020 fvdata_p(j)%CENTROID_POLH(3,1:npolhg) = fvdata_1d_array(02*npolhg+1:03*npolhg)
1021 fvdata_p(j)%QPOLH(1,1:npolhg) = fvdata_1d_array(03*npolhg+1:04*npolhg
1022 fvdata_p(j)%QPOLH(2,1:npolhg) = fvdata_1d_array(04*npolhg+1:05*npolhg)
1023 fvdata_p(j)%QPOLH(3,1:npolhg) = fvdata_1d_array(05*npolhg+1:06*npolhg)
1024 fvdata_p(j)%PPOLH(1:npolhg) = fvdata_1d_array(06*npolhg+1:07*npolhg)
1025 fvdata_p(j)%SSPPOLH(1:npolhg) = fvdata_1d_array(
1026 fvdata_p(j)%DTPOLH(1:npolhg) = fvdata_1d_array(08*npolhg+1:09*npolhg)
1027 fvdata_p(j)%MPOLH(1:npolhg) = fvdata_1d_array(09*npolhg+1:10*npolhg)
1028 fvdata_p(j)%RPOLH(1:npolhg) = fvdata_1d_array(10*npolhg+1:11*npolhg)
1029 fvdata_p(j)%TPOLH(1:npolhg) = fvdata_1d_array(11*npolhg+1:12*npolhg)
1030 user_nod_id%FVMBAG_LEN = user_nod_id%FVMBAG_LEN + npolhg
1031 DEALLOCATE(fvdata_1d_array)
1042 ALLOCATE (fvdata_p(
nfvbag))
1045 npolh_anim =
fvdata(j)%NPOLH
1046 npolh =
max(1,npolh)
1047 ALLOCATE (fvdata_p(j)%CENTROID_POLH(3,npolh))
1048 ALLOCATE (fvdata_p(j)%QPOLH(3,npolh))
1049 ALLOCATE (fvdata_p(j)%PPOLH(npolh))
1050 ALLOCATE (fvdata_p(j)%SSPPOLH(npolh))
1051 ALLOCATE (fvdata_p(j)%DTPOLH(npolh))
1052 ALLOCATE (fvdata_p(j)%MPOLH(npolh))
1053 ALLOCATE (fvdata_p(j)%RPOLH(npolh))
1054 ALLOCATE (fvdata_p(j)%TPOLH(npolh))
1056 fvdata_p(j)%NPOLH = npolh
1057 fvdata_p(j)%NPOLH_ANIM = npolh_anim
1058 fvdata_p(j)%CENTROID_POLH(1,1:npolh) =
fvdata(j)%CENTROID_POLH(1,1:npolh
1059 fvdata_p(j)%CENTROID_POLH(2,1:npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
1060 fvdata_p(j)%CENTROID_POLH(3,1:npolh) =
fvdata(j)%CENTROID_POLH(3,1:npolh)
1061 fvdata_p(j)%QPOLH(1,1:npolh) =
fvdata(j)%QPOLH(1,1:npolh)
1062 fvdata_p(j)%QPOLH(2,1:npolh) =
fvdata(j)%QPOLH(2,1:npolh)
1063 fvdata_p(j)%QPOLH(3,1:npolh) =
fvdata(j)%QPOLH(3,1:npolh)
1064 fvdata_p(j)%PPOLH(1:npolh) =
fvdata(j)%PPOLH(1:npolh)
1065 fvdata_p(j)%SSPPOLH(1:npolh) =
fvdata(j)%SSPPOLH(1:npolh)
1066 fvdata_p(j)%DTPOLH(1:npolh) =
fvdata(j)%DTPOLH(1:npolh)
1067 fvdata_p(j)%MPOLH(1:npolh) =
fvdata(j)%MPOLH(1:npolh)
1068 fvdata_p(j)%RPOLH(1:npolh) =
fvdata(j)%RPOLH(1:npolh)
1069 fvdata_p(j)%TPOLH(1:npolh) =
fvdata(j)%TPOLH(1:npolh)
1070 user_nod_id%FVMBAG_LEN = user_nod_id%FVMBAG_LEN + npolh
1075 max_nod_id = max_nod_id + user_nod_id%FVMBAG_LEN
1078 CALL startime(timers,macro_timer_libh3d)
1080 CALL stoptime(timers,macro_timer_libh3d)
1087 IF(h3d_data%IH3D == 1)
THEN
1091 kxsp_tmp(j,i) = kxsp(j,i)
1093 kxsp_tmp(3,i) = itab(kxsp(3,i))
1095 kxsp_tmp(j,i) = kxsp(j,i)
1099 CALL startime(timers,macro_timer_spmdh3d)
1101 CALL stoptime(timers,macro_timer_spmdh3d)
1106 kxsp_p(j,i) = kxsp(j,i)
1108 kxsp_p(3,i) = itab(kxsp(3,i))
1110 kxsp_p(j,i) = kxsp(j,i)
1117 ipartsp_p(1:numsphg)=0
1119 CALL startime(timers,macro_timer_spmdh3d)
1121 CALL stoptime(timers,macro_timer_spmdh3d)
1124 ipartsp_p(i) = ipartsp(i)
1129 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1130 CALL startime(timers,macro_timer_libh3d)
1131 CALL c_h3d_create_sph(itab_p,numnodg,kxsp_p,nisp,numsphg,ipartsp_p,ipart,lipart1,x,h3d_data%PARTS(1)%PART)
1132 CALL stoptime(timers,macro_timer_libh3d)
1140 IF(h3d_data%IH3D == 1)
THEN
1143 ixr_tmp(1,i) = ixr(1,i)
1145 IF (ixr(j,i) /= 0 )ixr_tmp(j,i) = itab(ixr(j,i))
1147 ixr_tmp(4:nixr,i) = ixr(4:nixr,i)
1150 CALL startime(timers,macro_timer_spmdh3d)
1152 CALL stoptime(timers,macro_timer_spmdh3d)
1156 ixr_p(1,i) = ixr(1,i)
1158 IF (ixr(j,i) /= 0 ) ixr_p(j,i) = itab(ixr(j,i))
1160 ixr_p(4:nixr,i) = ixr(4:nixr,i)
1165 CALL startime(timers,macro_timer_spmdh3d)
1167 CALL stoptime(timers,macro_timer_spmdh3d)
1170 ipartr_p(i) = ipartr(i)
1175 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1176 CALL startime(timers,macro_timer_libh3d)
1177 CALL c_h3d_create_springs(itab,numnod,ixr_p,nixr,numelrg,ipartr_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1178 CALL stoptime(timers,macro_timer_libh3d)
1184 IF(h3d_data%IH3D == 1)
THEN
1187 ixp_tmp(1,i) = ixp(1,i)
1189 ixp_tmp(j,i) = itab(ixp(j,i))
1191 ixp_tmp(4:nixp,i) = ixp(4:nixp,i)
1194 CALL startime(timers,macro_timer_spmdh3d)
1196 CALL stoptime(timers,macro_timer_spmdh3d)
1200 ixp_p(1,i) = ixp(1,i
1202 ixp_p(j,i) = itab(ixp(j,i))
1204 ixp_p(4:nixp,i) = ixp(4:nixp,i)
1208 CALL startime(timers,macro_timer_spmdh3d)
1210 CALL stoptime(timers,macro_timer_spmdh3d)
1213 ipartp_p(i) = ipartp(i)
1219 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1220 CALL startime(timers,macro_timer_libh3d)
1221 CALL c_h3d_create_beams(itab,numnod,ixp_p,nixp,numelpg,ipartp_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1222 CALL stoptime(timers,macro_timer_libh3d)
1228 IF(h3d_data%IH3D == 1)
THEN
1231 ixt_tmp(1,i) = ixt(1,i)
1233 ixt_tmp(j,i) = itab(ixt(j,i))
1235 ixt_tmp(4:nixt,i) = ixt(4:nixt,i)
1238 CALL startime(timers,macro_timer_spmdh3d)
1240 CALL stoptime(timers,macro_timer_spmdh3d)
1244 ixt_p(1,i) = ixt(1,i)
1246 ixt_p(j,i) = itab(ixt(j,i))
1248 ixt_p(4:nixt,i) = ixt(4:nixt,i)
1252 CALL startime(timers,macro_timer_spmdh3d)
1254 CALL stoptime(timers,macro_timer_spmdh3d)
1257 ipartt_p(i) = ipartt(i)
1263 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1264 CALL startime(timers,macro_timer_libh3d)
1265 CALL c_h3d_create_truss(itab,numnod,ixt_p,nixt,numeltrg,ipartt_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1266 CALL stoptime(timers,macro_timer_libh3d)
1273 IF(nspmd > 1 .AND. h3d_data%IH3D == 1)
THEN
1276 .
CALL drbycnt(nerby,npby,fr_rby2)
1279 .
CALL drbe2cnt(nerbe2,irbe2,lrbe2,weight)
1282 .
CALL drbe3cnt(nerbe3,irbe3,lrbe3,weight)
1290 sbufspm = sbufspm + iad_rby2(1,i)
1291 sbufrecvm = sbufrecvm
1293 sbufspm = sbufspm + 2*nrbykin
1297 IF ((ispmd+1)==abs(fr_rby2(3,i)))
1298 . sbufspo = sbufspo + fr_rby2(2,i)
1300 sbufspo = sbufspo + nrbykin*2
1302 sporby = nerby+nrbykin*2
1308 . sbufspm,sbufrecvm,sbufspo,sporby,
1309 . nodglob,weight,itab,compid_rbodies)
1312 . nerbe2t,itab,compid_rbe2s)
1315 . nerbe3t,itab,compid_rbe3s)
1318 IF(nspmd == 1 .AND. ispmd==0 .AND. h3d_data%IH3D == 1)
THEN
1319 CALL startime(timers,macro_timer_libh3d)
1321 CALL c_h3d_create_rbe2(itab,numnod,irbe2,nrbe2l,lrbe2,nrbe2,compid_rbe2s,compid_rbe2s)
1322 CALL c_h3d_create_rbe3(itab,numnod,irbe3,nrbe3l,lrbe3,nrbe3,compid_rbe3s,compid_rbe3s)
1323 CALL stoptime(timers,macro_timer_libh3d)
1331 IF(h3d_data%IH3D == 1)
THEN
1332 IF(nspmd > 1 .AND. h3d_data%IH3D == 1)
THEN
1334 ixc_tmp(1,i) = ixc(1,i)
1336 ixc_tmp(j,i) = itab(ixc(j,i))
1338 ixc_tmp(6:nixc,i) = ixc(6:nixc,i)
1341 CALL startime(timers,macro_timer_spmdh3d)
1343 CALL stoptime(timers,macro_timer_spmdh3d)
1346 ixtg_tmp(1,i) = ixtg(1,i)
1348 ixtg_tmp(j,i) = itab(ixtg(j,i))
1353 CALL startime(timers,macro_timer_spmdh3d)
1355 CALL stoptime(timers,macro_timer_spmdh3d)
1359 ixc_p(1,i) = ixc(1,i)
1361 ixc_p(j,i) = itab(ixc(j,i))
1363 ixc_p(6:nixc,i) = ixc(6:nixc,i)
1367 ixtg_p(1,i) = ixtg(1,i)
1369 ixtg_p(j,i) = itab(ixtg(j,i))
1371 ixtg_p(5:nixtg,i) = ixtg(5:nixtg,i)
1376 CALL startime(timers,macro_timer_spmdh3d)
1378 CALL stoptime(timers,macro_timer_spmdh3d)
1379 CALL startime(timers,macro_timer_spmdh3d)
1381 CALL stoptime(timers,macro_timer_spmdh3d)
1384 ipartc_p(i) = ipartc(i)
1387 iparttg_p(i) = iparttg(i)
1394 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1395 CALL startime(timers,macro_timer_libh3d)
1397 . h3d_data%PARTS(1)%PART)
1398 CALL c_h3d_create_sh3ns(itab_p,numnodg,ixtg_p,nixtg,numeltgg,iparttg_p,ipart,lipart1,
1399 . h3d_data%PARTS(1)%PART)
1400 CALL stoptime(timers,macro_timer_libh3d)
1407 max_nod_id = user_nod_id%FVMBAG_SHIFT + user_nod_id%FVMBAG_LEN
1408 user_nod_id%RWALL_SHIFT = max_nod_id
1410 IF(h3d_data%IH3D == 1 .AND. nrwall>0)
THEN
1412 CALL scanor(x,d,cdg,xmin,ymin,zmin,xmax,
ymax,zmax,scale,
1417 2 nstrf,rwbuf,nprw ,x,xmin,
1418 3 ymin,zmin,xmax,
ymax,zmax,
1419 4 fr_sec,fr_wall,weight,itab,
1420 5 xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3, xl, xn, yn, zn )
1424 CALL startime(timers,macro_timer_libh3d)
1426 . xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3, xl, xn, yn, zn, user_nod_id%RWALL_LEN )
1427 CALL stoptime(timers,macro_timer_libh3d)
1428 max_nod_id = max_nod_id + user_nod_id%RWALL_LEN
1437 IF(h3d_data%IH3D == 1)
THEN
1440 ALLOCATE(ixs_tmp(nixs,numels8))
1443 ixs_tmp(1,i) = ixs(1,i)
1445 ixs_tmp(j,i) = itab(ixs(j,i))
1447 ixs_tmp(10:nixs,i) = ixs(10:nixs,i)
1451 ixs10_tmp(1,i) = itab(ixs(2,numels8+i))
1452 ixs10_tmp(2,i) = itab(ixs(4,numels8+i))
1453 ixs10_tmp(3,i) = itab(ixs(7,numels8+i))
1454 ixs10_tmp(4,i) = itab(ixs(6,numels8+i))
1456 IF (ixs10(j,i)>0)
THEN
1457 ixs10_tmp(4+j,i) = itab(ixs10(j,i))
1459 ixs10_tmp(4+j,i) = 0
1462 ixs10_tmp(11,i) = ixs(nixs,numels8+i)
1467 ixs16_tmp(1,i) = itab(ixs(2,numels8+numels10+numels20+i))
1468 ixs16_tmp(2,i) = itab(ixs(3,numels8+numels10+numels20+i))
1469 ixs16_tmp(3,i) = itab(ixs(4,numels8+numels10+numels20+i))
1470 ixs16_tmp(4,i) = itab(ixs(5,numels8+numels10+numels20+i))
1471 ixs16_tmp(5,i) = itab(ixs(6,numels8+numels10+numels20+i))
1472 ixs16_tmp(6,i) = itab(ixs(7,numels8+numels10+numels20+i))
1473 ixs16_tmp(7,i) = itab(ixs(8,numels8+numels10+numels20+i))
1474 ixs16_tmp(8,i) = itab(ixs(9,numels8+numels10+numels20+i))
1476 ixs16_tmp(8+j,i) = itab(ixs16(j,i))
1478 ixs16_tmp(17,i) = ixs(nixs,numels8+numels10+numels20+i)
1483 ixs20_tmp(1,i) = itab(ixs(2,numels8+numels10+i))
1484 ixs20_tmp(2,i) = itab(ixs(3,numels8+numels10+i))
1485 ixs20_tmp(3,i) = itab(ixs(4,numels8+numels10+i))
1486 ixs20_tmp(4,i) = itab(ixs(5,numels8+numels10+i))
1487 ixs20_tmp(5,i) = itab(ixs(6,numels8+numels10+i))
1488 ixs20_tmp(6,i) = itab(ixs(7,numels8+numels10+i))
1489 ixs20_tmp(7,i) = itab(ixs(8,numels8+numels10+i))
1490 ixs20_tmp(8,i) = itab(ixs(9,numels8+numels10+i))
1492 ixs20_tmp(8+j,i) = itab(ixs20(j,i))
1494 ixs20_tmp(21,i) = ixs(nixs,numels8+numels10+i)
1497 CALL startime(timers,macro_timer_spmdh3d)
1498 CALL spmd_h3d_gather_i(ixs_tmp,nixs*numels8,ixs_p,nixs*(numelsg-numels10g-numels16g-numels20g))
1502 CALL stoptime(timers,macro_timer_spmdh3d)
1507 ixs_p(1,i) = ixs(1,i)
1509 ixs_p(j,i) = itab(ixs(j,i))
1511 ixs_p(10:nixs,i) = ixs(10:nixs,i)
1515 ixs10_p(1,i) = itab(ixs(2,numels8+i))
1516 ixs10_p(2,i) = itab(ixs(4,numels8+i))
1517 ixs10_p(3,i) = itab(ixs(7,numels8+i))
1518 ixs10_p(4,i) = itab(ixs(6,numels8+i))
1520 ixs10_p(4+j,i) = itab(ixs10(j,i))
1522 ixs10_p(11,i) = ixs(nixs,numels8+i)
1526 ixs16_p(1,i) = itab(ixs(2,numels8+numels10+numels20+i))
1527 ixs16_p(2,i) = itab(ixs(3,numels8+numels10+numels20+i))
1528 ixs16_p(3,i) = itab(ixs(4,numels8+numels10+numels20+i))
1529 ixs16_p(4,i) = itab(ixs(5,numels8+numels10+numels20+i))
1530 ixs16_p(5,i) = itab(ixs(6,numels8+numels10+numels20+i))
1531 ixs16_p(6,i) = itab(ixs(7,numels8+numels10+numels20+i))
1532 ixs16_p(7,i) = itab(ixs(8,numels8+numels10+numels20+i))
1533 ixs16_p(8,i) = itab(ixs(9,numels8+numels10+numels20+i))
1535 ixs16_p(8+j,i) = ixs16(j,i)
1537 ixs16_p(17,i) = ixs(nixs,numels8+numels10+numels20+i)
1541 ixs20_p(1,i) = itab(ixs(2,numels8+numels10+i))
1542 ixs20_p(2,i) = itab(ixs(3,numels8+numels10+i))
1543 ixs20_p(3,i) = itab(ixs(4,numels8+numels10+i))
1544 ixs20_p(4,i) = itab(ixs(5,numels8+numels10+i))
1545 ixs20_p(5,i) = itab(ixs(6,numels8+numels10+i))
1546 ixs20_p(6,i) = itab(ixs(7,numels8+numels10+i))
1547 ixs20_p(7,i) = itab(ixs(8,numels8+numels10+i))
1548 ixs20_p(8,i) = itab(ixs(9,numels8+numels10+i))
1550 ixs20_p(8+j,i) = itab(ixs20(j,i))
1552 ixs20_p(21,i) = ixs(nixs,numels8+numels10+i)
1556 CALL startime(timers,macro_timer_spmdh3d)
1557 CALL spmd_h3d_gather_i(iparts,numels8,iparts_p,numelsg-numels10g-numels16g-numels20g)
1559 CALL spmd_h3d_gather_i(iparts(numels8+numels10+1),numels20,iparts20_p,numels20g)
1560 CALL spmd_h3d_gather_i(iparts(numels8+numels10+numels20+1),numels16,iparts16_p,numels16g)
1561 CALL stoptime(timers,macro_timer_spmdh3d)
1564 iparts_p(i) = iparts(i)
1567 iparts10_p(i) = iparts(i+numels8)
1570 iparts20_p(i) = iparts(i+numels8+numels10)
1573 iparts16_p(i) = iparts(i+numels8+numels10+numels20)
1579 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1580 CALL startime(timers,macro_timer_libh3d)
1582 . h3d_data%PARTS(1)%PART,numels10g,ixs10_p,iparts10_p,numels16g,ixs16_p,
1583 . iparts16_p,numels20g,ixs20_p,iparts20_p)
1584 CALL stoptime(timers,macro_timer_libh3d)
1591 IF(h3d_data%IH3D == 1)
THEN
1594 ixq_tmp(1,i) = ixq(1,i)
1596 ixq_tmp(j,i) = itab(ixq(j,i))
1598 ixq_tmp(6:nixq,i) = ixq(6:nixq,i)
1600 CALL startime(timers,macro_timer_spmdh3d)
1602 CALL stoptime(timers,macro_timer_spmdh3d)
1605 ixq_p(1,i) = ixq(1,i)
1607 ixq_p(j,i) = itab(ixq(j,i))
1609 ixq_p(6:nixq,i) = ixq(6:nixq,i)
1613 CALL startime(timers,macro_timer_spmdh3d)
1615 CALL stoptime(timers,macro_timer_spmdh3d)
1618 ipartq_p(i) = ipartq(i)
1624 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1625 CALL startime(timers,macro_timer_libh3d)
1627 . ixq_p,nixq,numelqg,ipartq_p)
1628 CALL stoptime(timers,macro_timer_libh3d)
1635 ALLOCATE(nodal_ipart(numnod),imapskp(
numskinp0))
1637 . ixc, ixtg, ixs,ixs10,ixs16,ixs20,
1641 IF(h3d_data%IH3D == 1 .AND. numsking>0 )
THEN
1645 . itab ,ixskin_tmp ,tag_skins6,
1646 . ibcl,iloadp,lloadp,nodal_ipart,imapskp,loads,pblast)
1650 CALL startime(timers,macro_timer_spmdh3d)
1652 CALL stoptime(timers,macro_timer_spmdh3d)
1654 ixskin_p(1:nixskin,1:numskin) = ixskin_tmp(1:nixskin,1:numskin)
1661 ipartskin_p(i) = ixskin_p(1,i)
1662 ixskin_p(nixskin,i) = i
1664 CALL startime(timers,macro_timer_libh3d)
1667 . ixskin_p,nixskin,numsking,ipartskin_p)
1668 CALL stoptime(timers,macro_timer_libh3d)
1675 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1676 CALL startime(timers,macro_timer_libh3d)
1678 CALL stoptime(timers,macro_timer_libh3d)
1684 IF(ispmd==0.AND. ( h3d_data%IH3D_RUN == 1))
THEN
1685 CALL startime(timers,macro_timer_libh3d)
1692 CALL stoptime(timers,macro_timer_libh3d)
1702 CALL scanor(x,d,cdg,xmin,ymin,zmin,xmax,
ymax,zmax,scale,
1707 2 nstrf,rwbuf,nprw ,d,xmin,
1708 3 ymin,zmin,xmax,
ymax,zmax,
1709 4 fr_sec,fr_wall,weight,itab,
1710 5 xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3)
1715 IF (h3d_data%N_TITLE /= 0)
THEN
1716 DO i=1,h3d_data%N_TITLE
1717 IF(h3d_data%ITITLE(i) == h3d_data%IH3D)
THEN
1718 h3dtitle = h3d_data%TITLE(i)
1719 len_h3dtitle = len_trim(h3d_data%TITLE(i))
1724 IF(nspmd > 1 .AND. ispmd==0)
THEN
1725 CALL startime(timers,macro_timer_libh3d)
1726 CALL c_h3d_update_nodes(h3dtitle,len_h3dtitle,tt,h3d_data%IH3D,
1727 . itab_p,numnodg,d_p, nrwall, user_nod_id%RWALL_SHIFT,
1728 . xwl ,ywl , zwl, v1, v2,
1729 . v3, vv1, vv2, vv3,kxsp_p,
1730 . nisp,numsphg,tagnod_p,nprw)
1731 CALL stoptime(timers,macro_timer_libh3d)
1732 ELSEIF(ispmd==0 )
THEN
1733 CALL startime(timers,macro_timer_libh3d)
1734 CALL c_h3d_update_nodes(h3dtitle,len_h3dtitle,tt,h3d_data%IH3D,
1735 . itab,numnod,d, nrwall, user_nod_id%RWALL_SHIFT,
1736 . xwl ,ywl , zwl, v1, v2,
1737 . v3, vv1, vv2, vv3,kxsp_p,
1738 . nisp,numsphg,tagnod_p,nprw)
1739 CALL stoptime(timers,macro_timer_libh3d)
1744 IF(
nfvbag > 0 .AND. ispmd==0)
THEN
1745 CALL startime(timers,macro_timer_libh3d)
1747 . fvdata_p, user_nod_id%FVMBAG_SHIFT)
1748 CALL stoptime(timers,macro_timer_libh3d)
1756 ALLOCATE(nodal_scalar(numnod))
1757 ALLOCATE(nodal_vector(3*numnod))
1758 ALLOCATE(nodal_tensor(6*numnod))
1759 ALLOCATE(node_id(numnod))
1760 ALLOCATE(is_writen_node(numnod))
1761 is_writen_node(1:numnod) = 0
1764 ALLOCATE(nodal_scalar_fvm(airbags_total_fvm_in_h3d_g))
1765 ALLOCATE(nodal_vector_fvm(3*airbags_total_fvm_in_h3d_g))
1766 ALLOCATE(node_id_fvm(airbags_total_fvm_in_h3d_g))
1767 ALLOCATE(is_writen_node_fvm(airbags_total_fvm_in_h3d_g))
1768 is_writen_node_fvm(1:airbags_total_fvm_in_h3d_g) = 0
1770 ALLOCATE(nodal_scalar_fvm(1))
1771 ALLOCATE(nodal_vector_fvm(3*1))
1772 ALLOCATE(node_id_fvm(1))
1773 ALLOCATE(is_writen_node_fvm(1))
1774 is_writen_node_fvm(1:1) = 0
1778 IF (ispmd == 0 )
THEN
1779 ALLOCATE(is_writen_node_p(numnodg))
1780 ALLOCATE(nodal_scalar_p(numnodg))
1781 ALLOCATE(nodal_vector_p(3*numnodg))
1782 ALLOCATE(nodal_tensor_p(6*numnodg))
1783 ALLOCATE(node_id_p(numnodg))
1784 is_writen_node_p(1:numnodg) = 0
1786 ALLOCATE(is_writen_node_p(1))
1787 ALLOCATE(nodal_scalar_p(1))
1788 ALLOCATE(nodal_vector_p(1))
1789 ALLOCATE(nodal_tensor_p(1))
1790 ALLOCATE(node_id_p(1))
1791 is_writen_node_p(1) = 0
1795 ALLOCATE(oned_scalar(numelr+numelp+numelt))
1796 ALLOCATE(oned_vector(3*(numelr+numelp+numelt)))
1797 ALLOCATE(oned_tensor(6*(numelr+numelp+numelt)))
1798 ALLOCATE(oned_torsor(9*(numelr+numelp+numelt)))
1799 ALLOCATE(oned_id(numelrg+numelpg+numeltrg))
1800 ALLOCATE(oned_ity(numelrg+numelpg+numeltrg))
1801 ALLOCATE(is_writen_oned(numelrg+numelpg+numeltrg))
1802 oned_id(1:numelr+numelp+numelt) = 0
1803 oned_ity(1:numelr+numelp+numelt) = 0
1804 is_writen_oned(1:numelr+numelp+numelt) = 0
1806 IF (ispmd == 0 )
THEN
1807 ALLOCATE(oned_scalar_p(numelrg+numelpg+numeltrg))
1808 ALLOCATE(oned_vector_p(3*(numelrg+numelpg+numeltrg)))
1809 ALLOCATE(oned_tensor_p(6*(numelrg+numelpg+numeltrg)))
1810 ALLOCATE(oned_torsor_p(9*(numelrg+numelpg+numeltrg)))
1811 ALLOCATE(oned_id_p(numelrg+numelpg+numeltrg))
1812 ALLOCATE(oned_ity_p(numelrg+numelpg+numeltrg))
1813 ALLOCATE(is_writen_oned_p(numelrg+numelpg+numeltrg))
1814 is_writen_oned_p(1:numelrg+numelpg+numeltrg) = 0
1816 ALLOCATE(oned_scalar_p(1))
1817 ALLOCATE(oned_vector_p(1))
1818 ALLOCATE(oned_tensor_p(1))
1819 ALLOCATE(oned_torsor_p(1))
1820 ALLOCATE(oned_id_p(1))
1821 ALLOCATE(oned_ity_p(1))
1822 ALLOCATE(is_writen_oned_p(1))
1823 is_writen_oned_p(1) = 0
1827 ALLOCATE(shell_scalar(numelc+numeltg))
1828 ALLOCATE(shell_stack(max_shell_stacksize))
1829 ALLOCATE(shell_stack_p(numelcg+numeltgg))
1830 ALLOCATE(shell_vector(3*(numelc+numeltg)))
1831 ALLOCATE(shell_tensor(3*(numelc+numeltg)))
1832 ALLOCATE(shell_id(numelc+numeltg))
1833 ALLOCATE(shell_ity(numelc+numeltg))
1834 ALLOCATE(is_writen_shell(numelc+numeltg))
1835 shell_id(1:numelc+numeltg) = 0
1836 shell_ity(1:numelc+numeltg) = 0
1837 is_writen_shell(1:numelc+numeltg) = 0
1839 IF (ispmd == 0 )
THEN
1840 ALLOCATE(shell_scalar_p(numelcg+numeltgg))
1841 ALLOCATE(shell_vector_p(3*(numelcg+numeltgg)))
1842 ALLOCATE(shell_tensor_p(3*(numelcg+numeltgg)))
1843 ALLOCATE(shell_id_p(numelcg+numeltgg))
1844 ALLOCATE(shell_ity_p(numelcg+numeltgg))
1845 ALLOCATE(is_writen_shell_p(numelcg+numeltgg))
1846 is_writen_shell_p(1:numelcg+numeltgg) = 0
1848 ALLOCATE(shell_scalar_p(1))
1849 ALLOCATE(shell_vector_p(1))
1850 ALLOCATE(shell_tensor_p(1))
1851 ALLOCATE(shell_id_p(1))
1852 ALLOCATE(shell_ity_p(1))
1853 ALLOCATE(is_writen_shell_p(1))
1854 is_writen_shell_p(1) = 0
1859 ALLOCATE(solid_scalar(numels))
1860 ALLOCATE(solid_vector(3*numels))
1861 ALLOCATE(solid_tensor(6*numels))
1862 ALLOCATE(solid_tensor_corner(6*numels*max_ncorn))
1863 ALLOCATE(solid_id(numels))
1864 ALLOCATE(isolnod(numels))
1865 ALLOCATE(solid_ity(numels))
1866 ALLOCATE(is_writen_solid(numels))
1867 solid_id(1:numels) = 0
1868 isolnod(1:numels) = 0
1869 solid_ity(1:numels) = 0
1870 is_writen_solid(1:numels) = 0
1872 IF (ispmd == 0 )
THEN
1873 ALLOCATE(solid_scalar_p(numelsg))
1874 ALLOCATE(solid_vector_p(3*numelsg))
1875 ALLOCATE(solid_tensor_p(6*numelsg))
1876 ALLOCATE(solid_tensor_corner_p(6*numelsg*max_ncorn))
1877 ALLOCATE(solid_id_p(numelsg))
1878 ALLOCATE(solid_ity_p(numelsg))
1879 ALLOCATE(isolnod_p(numelsg))
1880 ALLOCATE(is_writen_solid_p(numelsg))
1881 is_writen_solid_p(1:numelsg) = 0
1883 ALLOCATE(solid_scalar_p(1))
1884 ALLOCATE(solid_vector_p(1))
1885 ALLOCATE(solid_tensor_p(1))
1886 ALLOCATE(solid_tensor_corner_p(1))
1887 ALLOCATE(solid_id_p(1))
1888 ALLOCATE(solid_ity_p(1))
1889 ALLOCATE(isolnod_p(1))
1890 ALLOCATE(is_writen_solid_p(1))
1891 is_writen_solid_p(1) = 0
1895 ALLOCATE(sph_scalar(numsph))
1896 ALLOCATE(sph_tensor(6*numsph
1897 ALLOCATE(sph_id(numsph))
1898 ALLOCATE(is_writen_sph(numsph))
1899 sph_id(1:numsph) = 0
1900 is_writen_sph(1:numsph) = 0
1902 IF (ispmd == 0 )
THEN
1903 ALLOCATE(sph_scalar_p(numsphg))
1904 ALLOCATE(sph_tensor_p(6*numsphg))
1905 ALLOCATE(sph_id_p(numsphg))
1906 ALLOCATE(is_writen_sph_p(numsphg))
1907 is_writen_sph_p(1:numsphg) = 0
1909 ALLOCATE(sph_scalar_p(1))
1910 ALLOCATE(sph_tensor_p(1))
1911 ALLOCATE(sph_id_p(1))
1912 ALLOCATE(is_writen_sph_p(1))
1913 is_writen_sph_p(1) = 0
1917 ALLOCATE(quad_scalar(numelq))
1918 ALLOCATE(quad_vector(3*numelq))
1919 ALLOCATE(quad_tensor(6*numelq))
1920 ALLOCATE(quad_id(numelq))
1921 ALLOCATE(is_writen_quad(numelq))
1922 quad_id(1:numelq) = 0
1923 is_writen_quad(1:numelq) = 0
1925 IF (ispmd == 0 )
THEN
1926 ALLOCATE(quad_scalar_p(numelqg))
1927 ALLOCATE(quad_vector_p(3*numelqg))
1928 ALLOCATE(quad_tensor_p(6*numelqg))
1929 ALLOCATE(quad_id_p(numelqg))
1930 ALLOCATE(is_writen_quad_p(numelqg))
1931 is_writen_quad_p(1:numelqg) = 0
1933 ALLOCATE(quad_scalar_p(1))
1934 ALLOCATE(quad_vector_p(1))
1935 ALLOCATE(quad_tensor_p(1))
1936 ALLOCATE(quad_id_p(1))
1937 ALLOCATE(is_writen_quad_p(1))
1938 is_writen_quad_p(1) = 0
1941 ALLOCATE(skin_tensor(3*numskin))
1942 ALLOCATE(skin_vector(3*numskin))
1943 ALLOCATE(skin_scalar(numskin))
1944 ALLOCATE(is_writen_skin(numskin))
1945 is_writen_skin(1:numskin) = 0
1947 IF (ispmd == 0 )
THEN
1948 ALLOCATE(skin_tensor_p(3*numsking))
1949 ALLOCATE(skin_vector_p(3*numsking))
1950 ALLOCATE(skin_scalar_p(numsking))
1951 ALLOCATE(skin_id_p(numsking))
1952 ALLOCATE(is_writen_skin_p(numsking))
1953 is_writen_skin_p(1:numsking) = 0
1955 ALLOCATE(skin_tensor_p(1))
1956 ALLOCATE(skin_vector_p(1))
1957 ALLOCATE(skin_scalar_p(1))
1958 ALLOCATE(skin_id_p(1))
1959 ALLOCATE(is_writen_skin_p(1))
1960 is_writen_skin_p(1) = 0
1969 . elbuf_tab ,iparg ,ixc, ixtg,numelc,shell_scalar, shell_id, shell_ity,
1970 . ipart, ipartc ,iparttg)
1972 IF (nspmd > 1 )
THEN
1973 CALL startime(timers,macro_timer_spmdh3d)
1976 CALL spmd_h3d_gather_r(shell_scalar,numelc+numeltg,shell_scalar_p,numelcg+numeltgg)
1981 IF (ispmd == 0)
THEN
1982 sh_tria_spmd_offsets(1) = 0
1984 sh_tria_spmd_offsets(i) = sh_tria_spmd_offsets(i-1) + tmp_offsets(i-1)
1988 CALL stoptime(timers,macro_timer_spmdh3d)
1990 shell_id_p(1:numelc+numeltg) = shell_id(1:numelc+numeltg)
1991 shell_ity_p(1:numelc+numeltg) = shell_ity(1:numelc+numeltg)
1992 shell_scalar_p(1:numelc+numeltg) = shell_scalar(1:numelc+numeltg)
1996 CALL startime(timers,macro_timer_libh3d)
1998 . nixc,numelcg,ipartc,ixtg,nixtg,
1999 . numeltgg,iparttg,shell_scalar_p,shell_id_p,
2000 . h3d_data%N_OUTP_H3D+3,shell_ity_p,numels,
2001 . numelq,numelt,numelp,numelr)
2002 CALL stoptime(timers,macro_timer_libh3d)
2006 . elbuf_tab ,iparg ,ixs ,solid_scalar, solid_id, solid_ity, isolnod)
2008 IF (nspmd > 1 )
THEN
2009 CALL startime(timers,macro_timer_spmdh3d
2014 CALL stoptime(timers,macro_timer_spmdh3d)
2016 solid_id_p(1:numels) = solid_id(1:numels)
2017 solid_ity_p(1:numels) = solid_ity(1:numels)
2018 solid_scalar_p(1:numels) = solid_scalar(1:numels)
2019 isolnod_p(1:numels) = isolnod(1:numels)
2023 CALL startime(timers,macro_timer_libh3d)
2025 . nixs,numelsg,iparts,solid_scalar_p,solid_id_p,
2026 . h3d_data%N_OUTP_H3D+4,solid_ity_p,
2028 CALL stoptime(timers,macro_timer_libh3d)
2033 . elbuf_tab ,iparg ,ixt, ixp, ixr ,oned_scalar, oned_id, oned_ity,
2034 . ipart , ipartt ,ipartp ,ipartr)
2036 IF (nspmd > 1 )
THEN
2037 CALL startime(timers,macro_timer_spmdh3d)
2039 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2040 CALL spmd_h3d_gather_r(oned_scalar,numelt+numelp+numelr,oned_scalar_p,numeltrg+numelpg+numelrg)
2041 CALL stoptime(timers,macro_timer_spmdh3d)
2043 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2044 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2045 oned_scalar_p(1:numelt+numelp+numelr) = oned_scalar(1:numelt+numelp+numelr)
2049 CALL startime(timers,macro_timer_libh3d)
2051 . nixt,numeltrg,ipartt,ixp_p,nixp,
2052 . numelpg,ipartp,ixr_p,nixr,numelrg,
2053 . ipartr,oned_scalar_p,oned_id_p,h3d_data%N_OUTP_H3D+5,oned_ity_p)
2054 CALL stoptime(timers,macro_timer_libh3d)
2059 . elbuf_tab ,iparg ,kxsp ,sph_scalar, sph_id)
2061 IF (nspmd > 1 )
THEN
2062 CALL startime(timers,macro_timer_spmdh3d)
2065 CALL stoptime(timers,macro_timer_spmdh3d)
2067 sph_id_p(1:numsph) = sph_id
2068 sph_scalar_p(1:numsph) = sph_scalar(1:numsph)
2072 CALL startime(timers,macro_timer_libh3d)
2074 . h3d_data%N_OUTP_H3D+6)
2075 CALL stoptime(timers,macro_timer_libh3d)
2080 . elbuf_tab ,iparg ,ixq,quad_scalar, quad_id,
2083 IF (nspmd > 1 )
THEN
2084 CALL startime(timers,macro_timer_spmdh3d)
2087 CALL stoptime(timers,macro_timer_spmdh3d)
2089 quad_id_p(1:numelq) = quad_id(1:numelq)
2090 quad_scalar_p(1:numelq) = quad_scalar(1:numelq)
2094 CALL startime(timers,macro_timer_libh3d)
2096 . nixq,numelqg,ipartq,quad_scalar_p,quad_id_p,
2097 . h3d_data%N_OUTP_H3D+7)
2098 CALL stoptime(timers,macro_timer_libh3d)
2101 CALL h3d_skin_off(elbuf_tab,iparg,ixs,ixs10,tag_skins6,skin_scalar)
2102 IF (nspmd > 1 )
THEN
2103 CALL startime(timers,macro_timer_spmdh3d)
2105 CALL stoptime(timers,macro_timer_spmdh3d)
2107 skin_scalar_p(1:numskin) = skin_scalar(1:numskin)
2114 CALL startime(timers,macro_timer_libh3d)
2116 . h3d_data%N_OUTP_H3D+8,numsking)
2117 CALL stoptime(timers,macro_timer_libh3d)
2123 DO i = 1,h3d_data%N_OUTP_H3D
2127 IF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .AND.
2128 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1)
THEN
2130 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2131 inter_input = h3d_data%OUTPUT_LIST(i)%INTER
2132 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2133 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2134 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2135 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2136 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2138 IF(keyword ==
'SKID_LINE')
THEN
2140 IF(ni == inter_input )
THEN
2141 interskid = h3d_data%N_SKID_INTER (ni)
2142 ityskid = ipari(7,ni)
2148 IF(keyword ==
'CSE_FRIC')
THEN
2150 IF(ni == inter_input )
THEN
2151 interfric = h3d_data%N_CSE_FRIC_INTER (ni)
2161 . elbuf_tab ,nodal_scalar ,ifunc ,iparg ,geo ,
2162 . mas ,pm ,itab ,node_id ,
2163 . info1 ,info2 ,is_writen_node ,h3d_data%OUTPUT_LIST(i)%PART ,ipartc ,
2164 . iparttg ,ixc ,ixtg ,temp ,iflow ,
2165 . rflow ,ixs ,ixq ,nv46 ,monvol ,
2166 . volmon ,ale_connect ,diag_sms ,ms ,pdama2 ,
2167 . x ,stifr ,stifn ,keyword ,h3d_data ,
2168 . npby ,rby ,interskid ,h3d_data%N_SCAL_SKID ,pskids ,
2169 . nodglob ,ityskid ,ipartsp ,ipartr ,ipartp ,
2170 . ipartt ,iparts ,ipartq ,kxsp ,ixr ,
2171 . ixp ,ixt ,n_h3d_part_list,interfric ,csefric ,
2172 . csefricg ,csefric_stamp ,csefricg_stamp ,nodal_scalar_fvm ,airbags_total_fvm_in_h3d_g,
2173 . is_writen_node_fvm,ispmd ,fvdata_p ,user_nod_id%FVMBAG_SHIFT ,multi_fvm ,
2174 . glob_therm%ITHERM_FE,
nfvbag)
2177 IF (nspmd > 1 )
THEN
2178 CALL startime(timers,macro_timer_spmdh3d)
2180 IF(keyword ==
'SKID_LINE')
THEN
2182 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2183 IF(ityskid== 21)
THEN
2185 . interskid,h3d_data%N_SCAL_SKID)
2189 ELSEIF(keyword ==
'CSE_FRIC'.AND.interfric > 0)
THEN
2191 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2192 IF(interfric <= output%DATA%NINEFRIC )
THEN
2196 nodal_scalar_p(1:numnodg) =csefric_stamp(interfric-output%DATA%NINEFRIC,1:numnodg)
2199 ELSEIF((keyword ==
'CSE_FRIC'.AND.interfric == 0).OR.keyword ==
'CSE_FRICG')
THEN
2201 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2202 IF(nintstamp==0)
THEN
2207 nodal_scalar_p(1:numnodg) =nodal_scalar_p(1:numnodg) + csefricg_stamp(1:numnodg)
2215 CALL stoptime(timers,macro_timer_spmdh3d)
2217 node_id_p(1:numnod) = node_id(1:numnod)
2218 is_writen_node_p(1:numnod) = is_writen_node(1:numnod)
2219 nodal_scalar_p(1:numnod) = nodal_scalar(1:numnod)
2222 ! nodal scalar
for /node entities
2224 CALL startime(timers,macro_timer_libh3d)
2226 . n_outp_data,is_writen_node_p)
2227 CALL stoptime(timers,macro_timer_libh3d)
2233 IF(airbags_total_fvm_in_h3d_g > 0)
THEN
2234 DO j=1,airbags_total_fvm_in_h3d_g
2235 node_id_fvm(j) = user_nod_id%FVMBAG_SHIFT + j
2237 CALL startime(timers,macro_timer_libh3d)
2239 . n_outp_data,is_writen_node_fvm)
2240 CALL stoptime(timers,macro_timer_libh3d)
2247 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .AND.
2248 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2)
THEN
2250 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2251 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2252 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2253 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2255 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2261 . elbuf_tab ,nodal_vector , ifunc ,iparg ,geo ,
2262 . mas ,pm , itab ,node_id ,
2263 . info1 ,info2 , is_writen_node,h3d_data%OUTPUT_LIST(i)%PART,
2265 . iparttg ,ixc , ixtg ,temp ,iflow ,
2266 . rflow ,ixs , ixq ,nv46 ,monvol ,
2267 . diag_sms ,ms , pdama2 ,x ,volmon ,
2268 . stifr ,stifn , a ,d ,v ,
2269 . cont ,fcontg , fint ,fext ,keyword ,
2270 . fncont ,fncontg , ftcont ,ftcontg ,fncont2 ,
2271 . dr ,dxancg , fanreac ,fcluster ,mcluster ,
2272 . vr ,fopt , npby ,vgaz ,
2273 . ipari ,igrnod , weight ,nodglob ,fcont_max ,
2274 . fncontp2 ,ftcontp2 , ar ,ipartsp ,ipartr ,
2275 . ipartp ,ipartt , iparts ,ipartq ,kxsp ,
2276 . ixr ,ixp , ixt ,n_h3d_part_list ,
2278 . is_writen_node_fvm,airbags_total_fvm_in_h3d_g,smonvol ,svolmon ,ispmd ,
2279 . fvdata_p ,user_nod_id%FVMBAG_SHIFT ,w ,sw ,x_c )
2282 IF (nspmd > 1 )
THEN
2283 IF(keyword ==
'CONT'.OR.keyword ==
'PCONT/NORMAL'.OR.keyword ==
'PCONT/TANGENT'.OR.keyword ==
'FEXT'
2284 . .OR.(keyword ==
'CONT2'.OR.keyword ==
'PCONT2/NORMAL'.OR.keyword ==
'PCONT2/TANGENT')
2285 . .OR.(keyword ==
'CONT2/MOMENT'))
THEN
2286 CALL startime(timers,macro_timer_spmdh3d)
2288 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2289 IF(nintstamp==0.OR.keyword ==
'CONT2'.OR.keyword ==
'PCONT2/NORMAL'.OR.keyword ==
'PCONT2/NORMAL'
2290 . .OR.keyword ==
'PCONT2/TANGENT'.OR.keyword ==
'FEXT')
THEN
2292 ELSEIF(keyword ==
'CONT')
THEN
2294 ELSEIF(keyword ==
'PCONT/NORMAL')
THEN
2296 ELSEIF(keyword ==
'PCONT/TANGENT')
THEN
2298 ELSEIF(keyword ==
'CONT2/MOMENT')
THEN
2301 CALL stoptime(timers,macro_timer_spmdh3d)
2303 ELSEIF(nintstamp/=0.AND.((keyword ==
'CONT/TMAX').OR.(keyword ==
'MAXPCONT/NORMAL') .OR.
2304 . (keyword ==
'MAXPCONT/TANGENT')))
THEN
2305 IF(keyword ==
'CONT/TMAX')
THEN
2307 nodal_vector_p(1:3*numnodg) =fcont_max(1:3*numnodg)
2309 ELSEIF(keyword ==
'MAXPCONT/NORMAL')
THEN
2311 nodal_vector_p(1:3*numnodg) =fncont_max(1:3*numnodg)
2313 ELSEIF(keyword ==
'MAXPCONT/TANGENT')
THEN
2315 nodal_vector_p(1:3*numnodg) =ftcont_max(1:3*numnodg)
2320 CALL startime(timers,macro_timer_spmdh3d)
2324 CALL stoptime(timers,macro_timer_spmdh3d)
2329 node_id_p(1:numnod) = node_id(1:numnod)
2330 is_writen_node_p(1:numnod) = is_writen_node(1:numnod)
2331 nodal_vector_p(1:3*numnod) = nodal_vector(1:3*numnod)
2337 CALL startime(timers,macro_timer_libh3d)
2339 . n_outp_data,is_writen_node_p)
2340 CALL stoptime(timers,macro_timer_libh3d)
2345 IF(ispmd == 0 .AND. airbags_total_fvm_in_h3d_g > 0)
THEN
2346 CALL startime(timers,macro_timer_libh3d)
2347 DO j=1,airbags_total_fvm_in_h3d_g
2348 node_id_fvm(j) = user_nod_id%FVMBAG_SHIFT + j
2352 . n_outp_data,is_writen_node_fvm)
2353 CALL stoptime(timers,macro_timer_libh3d)
2360 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .AND.
2361 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3)
THEN
2363 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2364 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2365 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2366 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2367 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2368 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2374 . elbuf_tab, nodal_tensor ,ifunc ,iparg,geo ,mas ,pm ,
2375 . itab, node_id ,info1 ,info2 ,
2376 . is_writen_node,h3d_data%OUTPUT_LIST(i)%PART ,ipartc,iparttg,
2377 . ixc, ixtg,temp,iflow,rflow,ixs,ixq,nv46,monvol ,volmon, diag_sms,ms,
2379 . bufmat ,ixs10 ,ixs16 ,ixs20 ,ixt ,
2380 . ixp ,ixr ,iad_elem ,fr_elem ,weight ,
2381 . ipartsp ,ipartr ,ipartp ,ipartt ,iparts ,
2382 . ipartq ,kxsp ,n_h3d_part_list)
2385 IF (nspmd > 1 )
THEN
2386 CALL startime(timers,macro_timer_spmdh3d)
2390 CALL stoptime(timers,macro_timer_spmdh3d)
2392 node_id_p(1:numnod) = node_id(1:numnod)
2393 is_writen_node_p(1:numnod) = is_writen_node(1:numnod)
2394 nodal_tensor_p(1:6*numnod) = nodal_tensor(1:6*numnod)
2398 CALL startime(timers,macro_timer_libh3d)
2400 . n_outp_data,is_writen_node_p)
2401 CALL stoptime(timers,macro_timer_libh3d)
2407 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2408 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2410 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2411 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2412 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2413 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2414 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2415 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2420 sz_anin = sanin - ndma2
2421 CALL h3d_oned_scalar(elbuf_tab ,iparg ,geo , ixt,
2422 . ixp ,ixr ,pm , output%DATA%SCAL_SPRING,
2423 . oned_scalar ,oned_id ,oned_ity,
2424 . is_writen_oned ,ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,
2425 . keyword, x , d ,ipt,
2426 . numelp, numelt, numelr,nixt,nixp,
2427 . nixr, ngroup, anim_fe, mx_ani, nparg,
2428 . npropm, npropg, nummat, numgeo, numnod,
2429 . sz_anin, numelpg, numelrg, numeltrg, npart)
2432 IF (nspmd > 1 )
THEN
2433 CALL startime(timers,macro_timer_spmdh3d)
2434 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2435 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2436 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2437 CALL spmd_h3d_gather_r(oned_scalar,numelt+numelp+numelr,oned_scalar_p,numeltrg+numelpg+numelrg)
2438 CALL stoptime(timers,macro_timer_spmdh3d)
2440 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2441 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2442 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2443 oned_scalar_p(1:numelt+numelp+numelr) = oned_scalar(1:numelt+numelp+numelr)
2447 CALL startime(timers,macro_timer_libh3d)
2449 . n_outp_data,oned_ity_p,is_writen_oned_p)
2450 CALL stoptime(timers,macro_timer_libh3d)
2456 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2457 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2459 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2460 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2461 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2462 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2463 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2469 . ixt ,ixp ,ixr ,pm ,
2470 . output%DATA%SCAL_SPRING,oned_vector,
2471 . oned_id ,oned_ity,info1 ,info2 , is_writen_oned ,
2472 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,
2473 . keyword , x , d ,tors )
2476 IF (nspmd > 1 )
THEN
2477 CALL startime(timers,macro_timer_spmdh3d)
2478 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2479 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2480 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2481 CALL spmd_h3d_gather_r(oned_vector,3*(numelt+numelp+numelr),oned_vector_p,3*(numeltrg+numelpg+numelrg))
2482 CALL stoptime(timers,macro_timer_spmdh3d)
2484 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2485 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2486 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2487 oned_vector_p(1:3*(numelt+numelp+numelr)) = oned_vector(1:3*(numelt+numelp+numelr))
2491 CALL startime(timers,macro_timer_libh3d)
2493 . n_outp_data,oned_ity_p,is_writen_oned_p)
2494 CALL stoptime(timers,macro_timer_libh3d)
2500 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2501 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2503 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2504 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2505 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2506 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2507 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2508 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2514 . ixt ,ixp ,ixr ,pm ,
2515 . output%DATA%SCAL_SPRING,oned_tensor,
2516 . oned_id ,oned_ity,info1 ,info2 , is_writen_oned ,
2517 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,
2518 . keyword , x , d ,ipt)
2520 IF (nspmd > 1 )
THEN
2521 CALL startime(timers,macro_timer_spmdh3d)
2522 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2523 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2524 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2525 CALL spmd_h3d_gather_r(oned_tensor,6*(numelt+numelp+numelr),oned_tensor_p,6*(numeltrg+numelpg+numelrg))
2526 CALL stoptime(timers,macro_timer_spmdh3d)
2528 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2529 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2530 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2531 oned_tensor_p(1:6*(numelt+numelp+numelr)) = oned_tensor(1:6*(numelt+numelp+numelr))
2535 CALL startime(timers,macro_timer_libh3d)
2537 . n_outp_data,oned_ity_p,is_writen_oned_p)
2538 CALL stoptime(timers,macro_timer_libh3d)
2544 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2545 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 4 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2547 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2548 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2549 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2550 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2551 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2557 . ixr ,tors ,oned_torsor,oned_id
2558 . oned_ity,info1 ,info2 , is_writen_oned,
2559 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,keyword)
2562 IF (nspmd > 1 )
THEN
2563 CALL startime(timers,macro_timer_spmdh3d)
2564 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2565 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2566 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2567 CALL spmd_h3d_gather_r(oned_torsor,9*(numelt+numelp+numelr),oned_torsor_p,9*(numeltrg+numelpg+numelrg))
2568 CALL stoptime(timers,macro_timer_spmdh3d)
2570 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2571 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2572 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2573 oned_torsor_p(1:9*(numelt+numelp+numelr)) = oned_torsor(1:9*(numelt+numelp+numelr))
2577 CALL startime(timers,macro_timer_libh3d)
2579 . n_outp_data,oned_ity_p,is_writen_oned_p)
2580 CALL stoptime(timers,macro_timer_libh3d)
2585 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND.
2586 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. (numelcg+numeltgg) > 0)
THEN
2588 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2589 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2590 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2591 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2592 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2593 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2594 gauss = h3d_data%OUTPUT_LIST(i)%GAUSS
2595 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2596 idmds = h3d_data%OUTPUT_LIST(i)%IDMDS
2597 imdsvar = h3d_data%OUTPUT_LIST(i)%IMDSVAR
2598 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2599 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2600 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2601 mode = h3d_data%OUTPUT_LIST(i)%MODE
2608 . elbuf_tab ,shell_stack ,iparg ,geo ,
2609 . ixc ,ixtg ,pm ,bufmat ,
2611 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2612 . x ,v ,w ,ale_connect,
2613 . nercvois ,nesdvois ,lercvois ,lesdvois ,
2614 . stack ,shell_id ,shell_ity ,
2615 . is_writen_shell,ipartc ,iparttg ,layer ,ipt ,
2616 . id_ply ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,glob_therm%ITHERM,
2617 . d ,multi_fvm ,idmds ,imdsvar ,mds_matid ,
2618 . object_id ,mode ,mat_param ,h3d_data%LIGHT,max_shell_stacksize,
2624 is_writen_shell_p(1:shell_stacksize) = is_writen_shell(1:shell_stacksize)
2625 shell_stack_p(1:shell_stacksize) = shell_stack(1:shell_stacksize)
2626 shell_stacksize_p0 = shell_stacksize
2628 shell_stacksize_p0 = 1
2630 IF (nspmd > 1 )
THEN
2631 CALL startime(timers,macro_timer_spmdh3d)
2638 CALL h3d_gather_id_val(is_writen_shell,shell_stack,shell_stacksize,
2639 * is_writen_shell_p,shell_stack_p,numelcg+numeltgg,
2640 * shell_stacksize_p0,gather_size,sh_tria_spmd_offsets,nspmd,ispmd,it_spmd)
2642 CALL stoptime(timers,macro_timer_spmdh3d)
2647 CALL startime(timers,macro_timer_libh3d)
2649 . nixc,numelcg,ipartc,ixtg,nixtg,
2650 . numeltgg,iparttg,shell_stack_p,shell_id_p,
2651 . n_outp_data,shell_ity_p,numels,
2652 . numelq,numelt,numelp,numelr,is_writen_shell_p,
2653 . shell_stacksize_p0)
2654 CALL stoptime(timers,macro_timer_libh3d)
2660 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND.
2661 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. (numelcg+numeltgg) > 0)
THEN
2663 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2664 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2665 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2666 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2667 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2668 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2669 gauss = h3d_data%OUTPUT_LIST(i)%GAUSS
2670 iuvar = h3d_data%OUTPUT_LIST(i
2671 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2672 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2678 . elbuf_tab ,shell_vector ,ifunc ,iparg,geo ,
2679 . ixq ,ixc ,ixtg ,pm ,
2681 . nbf_l ,eani ,output%DATA%SCAL_SPRING ,nbpart ,iadg ,
2682 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2684 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
2685 . stack ,shell_id ,shell_ity ,info1 ,info2 ,
2686 . is_writen_shell,ipartc ,iparttg ,layer ,ipt ,
2687 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,
2690 IF (nspmd > 1 )
THEN
2691 CALL startime(timers,macro_timer_spmdh3d)
2692 CALL spmd_h3d_gather_i(is_writen_shell,numelc+numeltg,is_writen_shell_p,numelcg+numeltgg)
2693 CALL spmd_h3d_gather_r(shell_vector,3*(numelc+numeltg),shell_vector_p,3*(numelcg+numeltgg))
2694 CALL stoptime(timers,macro_timer_spmdh3d)
2696 is_writen_shell_p(1:numelc+numeltg) = is_writen_shell(1:numelc+numeltg)
2697 shell_vector_p(1:3*(numelc+numeltg)) = shell_vector(1:3*(numelc+numeltg))
2702 CALL startime(timers,macro_timer_libh3d)
2704 . nixc,numelcg,ipartc,ixtg,nixtg,
2705 . numeltgg,iparttg,shell_vector_p,shell_id_p,
2706 . n_outp_data,shell_ity_p,numels,
2707 . numelq,numelt,numelp,numelr,is_writen_shell_p)
2708 CALL stoptime(timers,macro_timer_libh3d)
2714 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND.
2715 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. (numelcg+numeltgg) > 0)
THEN
2717 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2718 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2719 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2720 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2721 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2722 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2723 gauss = h3d_data%OUTPUT_LIST(i
2724 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2725 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2726 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2727 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2729 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2730 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2731 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2732 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2738 . el2fa ,nbf ,waft ,tani ,iad ,
2739 . nbf_l ,nbpart,iadg ,x ,ixc ,
2740 . igeo ,ixtg ,ipm ,stack ,shell_id
2741 . info2 ,is_writen_shell ,ipartc ,iparttg ,layer ,ipt ,
2742 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST
2743 . object_id ,bufmat ,mat_param,geo ,drape_sh4n, drape_sh3n, drapeg)
2746 IF (nspmd > 1 )
THEN
2747 CALL startime(timers,macro_timer_spmdh3d)
2748 CALL spmd_h3d_gather_i(is_writen_shell,numelc+numeltg,is_writen_shell_p,numelcg+numeltgg)
2749 CALL spmd_h3d_gather_r(shell_tensor,3*(numelc+numeltg),shell_tensor_p,3*(numelcg+numeltgg))
2750 CALL stoptime(timers,macro_timer_spmdh3d)
2752 is_writen_shell_p(1:numelc+numeltg) = is_writen_shell(1:numelc+numeltg)
2753 shell_tensor_p(1:3*(numelc+numeltg)) = shell_tensor(1:3*(numelc+numeltg))
2757 CALL startime(timers,macro_timer_libh3d)
2759 . nixc,numelcg,ipartc,ixtg,nixtg,
2760 . numeltgg,iparttg,shell_tensor_p,shell_id_p,
2761 . n_outp_data,shell_ity_p,numels,
2762 . numelq,numelt,numelp,numelr,is_writen_shell_p)
2763 CALL stoptime(timers,macro_timer_libh3d)
2770 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2771 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numelsg > 0)
THEN
2773 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2774 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2775 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2776 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2777 ir = h3d_data%OUTPUT_LIST(i)%IR
2778 is = h3d_data%OUTPUT_LIST(i)%IS
2779 it = h3d_data%OUTPUT_LIST(i)%IT
2780 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2781 idmds = h3d_data%OUTPUT_LIST(i)%IDMDS
2782 imdsvar = h3d_data%OUTPUT_LIST(i)%IMDSVAR
2783 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2784 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2785 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2786 mode = h3d_data%OUTPUT_LIST(i)%MODE
2790 . elbuf_tab ,solid_scalar ,iparg ,
2794 . x ,v ,w ,ale_connect,
2795 . nercvois,nesdvois, lercvois,lesdvois,
2796 . solid_id ,solid_ity ,iparts ,layer ,
2797 . ir ,is ,it ,iuvar ,h3d_data%OUTPUT_LIST(i
2798 . is_writen_solid,info1,keyword ,glob_therm%ITHERM,output%DATA%FANI_CELL ,
2799 . multi_fvm, idmds ,imdsvar ,
2800 . object_id ,mat_param ,mode )
2802 IF (nspmd > 1 )
THEN
2803 CALL startime(timers,macro_timer_spmdh3d)
2806 CALL stoptime(timers,macro_timer_spmdh3d)
2808 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2809 solid_scalar_p(1:numels) = solid_scalar(1:numels)
2813 CALL startime(timers,macro_timer_libh3d)
2815 . nixs,numelsg,iparts,solid_scalar_p,solid_id_p,
2816 . n_outp_data,solid_ity_p,
2817 . numelq,numelt,numelp,numelr,is_writen_solid_p)
2818 CALL stoptime(timers,macro_timer_libh3d)
2824 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2825 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numelsg > 0)
THEN
2827 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2828 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2829 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2830 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2831 ir = h3d_data%OUTPUT_LIST(i)%IR
2832 is = h3d_data%OUTPUT_LIST(i)%IS
2833 it = h3d_data%OUTPUT_LIST(i)%IT
2834 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2835 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2836 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2840 . elbuf_tab ,solid_vector ,ifunc ,iparg,geo ,
2841 . ixq ,ixs ,ixtg ,pm ,
2843 . nbf_l ,eani ,output%DATA%SCAL_SPRING ,nbpart ,iadg ,
2844 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2846 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
2847 . stack ,solid_id ,solid_ity ,iparts ,layer ,
2848 . ir ,is ,it ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,
2849 . is_writen_solid,info1,keyword ,output%DATA%FANI_CELL ,
2850 . h3d_data, multi_fvm
2852 IF (nspmd > 1 )
THEN
2853 CALL startime(timers,macro_timer_spmdh3d)
2856 CALL stoptime(timers,macro_timer_spmdh3d)
2858 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2859 solid_vector_p(1:3*numels) = solid_vector(1:3*numels)
2863 CALL startime(timers,macro_timer_libh3d)
2865 . nixs,numelsg,iparts,solid_vector_p,solid_id_p,
2866 . n_outp_data,solid_ity_p,
2867 . numelq,numelt,numelp,numelr,is_writen_solid_p)
2868 CALL stoptime(timers,macro_timer_libh3d)
2874 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2875 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numelsg > 0)
THEN
2877 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2878 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2879 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2880 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2881 ir = h3d_data%OUTPUT_LIST(i)%IR
2882 is = h3d_data%OUTPUT_LIST(i)%IS
2883 it = h3d_data%OUTPUT_LIST(i)%IT
2884 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2885 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2886 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2887 is_corner_data = h3d_data%OUTPUT_LIST(i)%IS_CORNER_DATA
2891 . elbuf_tab,solid_tensor, iparg ,ifunc ,ixs ,pm ,
2892 2 el2fa ,nnn ,waft ,tani ,
2893 3 nbpart ,x ,iadg ,ipart ,
2894 4 ipartsp ,iparts ,isph3d ,ipm ,igeo , solid_id ,solid_ity , is_writen_solid,
2895 5 layer , ir ,is ,it ,h3d_data%OUTPUT_LIST(i)%PART,info1 ,keyword ,d ,
2896 6 solid_tensor_corner,is_corner_data , ixs10 ,max_ncorn,object_id)
2898 IF (nspmd > 1 )
THEN
2902 IF (is_corner_data == 1)
2903 .
CALL spmd_h3d_gather_r(solid_tensor_corner,6*numels*max_ncorn,solid_tensor_corner_p,6*numelsg*max_ncorn)
2904 CALL stoptime(timers,macro_timer_spmdh3d)
2906 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2907 solid_tensor_p(1:6*numels) = solid_tensor(1:6*numels)
2908 IF (is_corner_data == 1)
2909 . solid_tensor_corner_p(1:6*numels*max_ncorn) = solid_tensor_corner(1:6*numels*max_ncorn)
2913 CALL startime(timers,macro_timer_libh3d)
2915 . nixs,numelsg,iparts,solid_tensor_p,solid_id_p,
2916 . n_outp_data,solid_ity_p,
2917 . numelq,numelt,numelp,numelr,is_writen_solid_p,
2918 3 solid_tensor_corner_p,is_corner_data,isolnod_p,max_ncorn)
2919 CALL stoptime(timers,macro_timer_libh3d)
2925 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 5.AND.
2926 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numsphg > 0)
THEN
2928 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2929 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2930 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2931 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2935 . elbuf_tab ,sph_scalar,ifunc ,iparg ,
2938 . sph_id ,ipartsp ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,
2939 . is_writen_sph,keyword,spbuf, object_id )
2942 IF (nspmd > 1 )
THEN
2943 CALL startime(timers,macro_timer_spmdh3d)
2947 CALL stoptime(timers,macro_timer_spmdh3d)
2949 sph_id_p(1:numsph) = sph_id(1:numsph)
2950 is_writen_sph_p(1:numsph) = is_writen_sph(1:numsph)
2951 sph_scalar_p(1:numsph) = sph_scalar(1:numsph)
2955 CALL startime(timers,macro_timer_libh3d)
2957 . nisp,numsphg,iparts,sph_scalar_p,sph_id_p,
2959 . numelq,numelt,numelp,numelr,is_writen_sph_p)
2960 CALL stoptime(timers,macro_timer_libh3d)
2966 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 5.AND.
2967 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numsphg > 0)
THEN
2969 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2970 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2974 . elbuf_tab,sph_tensor, iparg ,ifunc ,kxsp ,pm ,
2975 2 el2fa ,nnn ,waft ,tani ,
2976 3 nbpart ,x ,iadg ,ipart ,
2977 4 ipartsp ,isph3d ,ipm ,igeo , sph_id , is_writen_sph,
2978 5 h3d_data%OUTPUT_LIST(i)%PART,keyword )
2980 IF (nspmd > 1 )
THEN
2981 CALL startime(timers,macro_timer_spmdh3d)
2985 CALL stoptime(timers,macro_timer_spmdh3d)
2987 sph_id_p(1:numsph) = sph_id(1:numsph)
2988 is_writen_sph_p(1:numsph) = is_writen_sph(1:numsph)
2989 sph_tensor_p(1:6*numsph) = sph_tensor(1:6*numsph)
2993 CALL startime(timers,macro_timer_libh3d)
2995 . n_outp_data,is_writen_sph_p)
2996 CALL stoptime(timers,macro_timer_libh3d)
3002 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3003 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numelqg > 0)
THEN
3005 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3006 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3007 ir = h3d_data%OUTPUT_LIST(i)%IR
3008 is = h3d_data%OUTPUT_LIST(i)%IS
3009 it = h3d_data%OUTPUT_LIST(i)%IT
3010 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3011 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3012 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
3020 . elbuf_tab ,quad_scalar ,iparg,
3024 . x ,v ,w ,ale_connect,
3025 . nercvois ,nesdvois ,lercvois ,lesdvois ,
3027 . is_writen_quad,ipartq ,layer , npart,
3028 . iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,glob_therm%ITHERM,
3029 . bufmat ,multi_fvm ,ir ,is ,it
3030 . object_id ,mat_param)
3032 IF (nspmd > 1 )
THEN
3033 CALL startime(timers,macro_timer_spmdh3d)
3037 CALL stoptime(timers,macro_timer_spmdh3d)
3039 quad_id_p(1:numelq) = quad_id(1:numelq)
3040 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3041 quad_scalar_p(1:numelq) = quad_scalar(1:numelq)
3046 CALL startime(timers,macro_timer_libh3d)
3048 . nixc,numelc,ipartc,ixtg,nixtg,
3049 . numeltgg,iparttg,quad_scalar_p,quad_id_p,
3050 . n_outp_data,numels,
3051 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3052 CALL stoptime(timers,macro_timer_libh3d)
3058 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3059 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numelqg > 0)
THEN
3061 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3062 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3063 ir = h3d_data%OUTPUT_LIST(i)%IR
3064 is = h3d_data%OUTPUT_LIST(i)%IS
3065 it = h3d_data%OUTPUT_LIST(i)%IT
3066 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3067 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3074 . elbuf_tab ,quad_vector ,ifunc ,iparg,geo ,
3075 . ixq ,ixc ,ixtg ,pm ,
3077 . nbf_l ,eani ,output%DATA%SCAL_SPRING ,nbpart ,iadg ,
3078 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
3080 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
3081 . stack ,quad_id ,info1 ,info2 ,
3082 . is_writen_quad,ipartq ,iparttg ,layer ,ipt ,
3083 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,
3084 . bufmat ,multi_fvm ,ir ,is ,it )
3086 IF (nspmd > 1 )
THEN
3087 CALL startime(timers,macro_timer_spmdh3d)
3091 CALL stoptime(timers,macro_timer_spmdh3d)
3093 quad_id_p(1:numelq) = quad_id(1:numelq)
3094 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3095 quad_vector_p(1:3*numelq) = quad_vector(1:3*numelq)
3099 CALL startime(timers,macro_timer_libh3d)
3102 . nixc,numelc,ipartc,ixtg,nixtg,
3103 . numeltgg,iparttg,quad_vector_p,quad_id_p,
3104 . n_outp_data,numels,
3105 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3106 CALL stoptime(timers,macro_timer_libh3d)
3112 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3113 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numelqg > 0)
THEN
3115 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3116 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3117 ir = h3d_data%OUTPUT_LIST(i)%IR
3118 is = h3d_data%OUTPUT_LIST(i)%IS
3119 it = h3d_data%OUTPUT_LIST(i)%IT
3120 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3121 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3127 CALL h3d_quad_tensor(elbuf_tab,quad_tensor ,iparg ,ifunc ,invert,nelcut,
3128 . el2fa ,waft ,tani ,iad ,
3129 . nbpart,iadg ,x ,ixq ,
3130 . igeo ,ixtg ,ipm ,stack ,quad_id ,info1,
3131 . info2 ,is_writen_quad ,ipartq ,iparttg ,layer ,ipt ,
3132 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART ,keyword ,
3136 IF (nspmd > 1 )
THEN
3137 CALL startime(timers,macro_timer_spmdh3d)
3141 CALL stoptime(timers,macro_timer_spmdh3d)
3143 quad_id_p(1:numelq) = quad_id(1:numelq)
3144 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3145 quad_tensor_p(1:6*(numelq)) = quad_tensor(1:6*(numelq))
3149 CALL startime(timers,macro_timer_libh3d)
3151 . nixc,numelcg,ipartc,ixtg,nixtg,
3152 . numeltgg,iparttg,quad_tensor_p,quad_id_p,
3153 . n_outp_data,numels,
3154 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3155 CALL stoptime(timers,macro_timer_libh3d)
3162 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3163 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numsking > 0)
THEN
3165 ifunc = h3d_data%OUTPUT_LIST(i)%ID
3166 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
3167 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3168 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3171 . elbuf_tab ,skin_scalar ,ifunc ,iparg ,geo ,
3172 . ixs ,ixs10 ,ixs16 , ixs20 ,pm ,
3173 . ipm ,igeo ,x ,v ,w ,
3174 . iparts ,h3d_data%OUTPUT_LIST(i)%PART,
3175 . is_writen_skin,info1,keyword , h3d_data ,
3176 6 iad_elem ,fr_elem , weight ,tag_skins6,
3177 7 npf ,tf ,bufmat,ibcl ,iloadp ,lloadp ,fac ,
3178 8 nsensor,sensors%SENSOR_TAB,tagncont,loadp_hyd_inter,xframe,forc ,
3179 9 nodal_ipart ,imapskp ,loads ,table,iframe,mat_param,d,pblast)
3181 IF (nspmd > 1 )
THEN
3182 CALL startime(timers,macro_timer_spmdh3d)
3185 CALL stoptime(timers,macro_timer_spmdh3d)
3187 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3188 skin_scalar_p(1:numskin) = skin_scalar(1:numskin)
3195 CALL startime(timers,macro_timer_libh3d)
3197 . skin_scalar_p,skin_id_p,n_outp_data,
3198 . numsking,is_writen_skin_p)
3199 CALL stoptime(timers,macro_timer_libh3d)
3205 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3206 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numsking > 0)
THEN
3208 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3209 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
3210 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3212 . is_writen_skin ,h3d_data%OUTPUT_LIST(i)%PART,info1 ,keyword ,
3213 . ibcl,iloadp,lloadp,fac ,npf,tf ,sensors%SENSOR_TAB,
3214 . tagncont,loadp_hyd_inter,forc,xframe,x ,v ,imapskp,loads ,
3215 . table,iframe,d,pblast)
3217 IF (nspmd > 1 )
THEN
3218 CALL startime(timers,macro_timer_spmdh3d)
3221 CALL stoptime(timers,macro_timer_spmdh3d)
3223 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3224 skin_vector_p(1:3*(numskin)) = skin_vector(1:3*(numskin))
3231 CALL startime(timers,macro_timer_libh3d)
3233 . numsking,skin_vector_p,skin_id_p,
3234 . n_outp_data,is_writen_skin_p)
3235 CALL stoptime(timers,macro_timer_libh3d)
3241 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3242 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numsking > 0)
THEN
3244 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3245 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3246 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3247 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3249 . elbuf_tab,skin_tensor, iparg ,ixs ,x ,pm ,
3250 4 iparts ,ipm ,igeo ,ixs10 ,ixs16 ,ixs20 ,
3251 5 is_writen_skin ,h3d_data%OUTPUT_LIST(i)%PART,info1 ,
3252 6 keyword ,iad_elem ,fr_elem , weight ,tag_skins6)
3254 IF (nspmd > 1 )
THEN
3255 CALL startime(timers,macro_timer_spmdh3d)
3258 CALL stoptime(timers,macro_timer_spmdh3d)
3260 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3261 skin_tensor_p(1:3*(numskin)) = skin_tensor(1:3*(numskin))
3269 CALL startime(timers,macro_timer_libh3d)
3271 . numsking,skin_tensor_p,skin_id_p,
3272 . n_outp_data,is_writen_skin_p)
3273 CALL stoptime(timers,macro_timer_libh3d)
3285 itmp = user_nod_id%FVMBAG_LEN + user_nod_id%RWALL_LEN
3287 IF(itmp >= huge(itmp) - user_nod_id%INPUT_MAX)
THEN
3288 CALL ancmsg(msgid=305,anmode=aninfo)
3296 IF(
ALLOCATED(nodal_scalar_fvm))
DEALLOCATE(nodal_scalar_fvm)
3297 IF(
ALLOCATED(nodal_vector_fvm))
DEALLOCATE(nodal_vector_fvm)
3298 IF(
ALLOCATED(node_id_fvm))
DEALLOCATE(node_id_fvm)
3299 IF(
ALLOCATED(is_writen_node_fvm))
DEALLOCATE(is_writen_node_fvm)
3303 IF(
ALLOCATED(fvdata_p))
THEN
3305 IF(
ASSOCIATED(fvdata_p(j)%CENTROID_POLH))
DEALLOCATE (fvdata_p(j)%CENTROID_POLH)
3306 IF(
ASSOCIATED(fvdata_p(j)%PPOLH))
DEALLOCATE (fvdata_p(j)%PPOLH)
3307 IF(
ASSOCIATED(fvdata_p(j)%SSPPOLH))
DEALLOCATE (fvdata_p(j)%SSPPOLH)
3308 IF(
ASSOCIATED(fvdata_p(j)%DTPOLH))
DEALLOCATE (fvdata_p(j)%DTPOLH)
3309 IF(
ASSOCIATED(fvdata_p(j)%QPOLH))
DEALLOCATE (fvdata_p(j)%QPOLH)
3310 IF(
ASSOCIATED(fvdata_p(j)%MPOLH))
DEALLOCATE (fvdata_p(j)%MPOLH)
3311 IF(
ASSOCIATED(fvdata_p(j)%RPOLH))
DEALLOCATE (fvdata_p(j)%RPOLH)
3312 IF(
ASSOCIATED(fvdata_p(j)%TPOLH))
DEALLOCATE (fvdata_p(j)%TPOLH)
3314 DEALLOCATE(fvdata_p)
3318 DEALLOCATE(nodal_scalar)
3319 DEALLOCATE(nodal_vector)
3321 DEALLOCATE(is_writen_node)
3322 DEALLOCATE(is_writen_node_p)
3323 DEALLOCATE(nodal_vector_p)
3324 DEALLOCATE(nodal_scalar_p)
3325 DEALLOCATE(node_id_p)
3327 DEALLOCATE(oned_scalar)
3328 DEALLOCATE(oned_vector)
3329 DEALLOCATE(oned_tensor)
3330 DEALLOCATE(oned_torsor)
3332 DEALLOCATE(oned_ity)
3333 DEALLOCATE(is_writen_oned)
3334 DEALLOCATE(is_writen_oned_p)
3335 DEALLOCATE(oned_ity_p)
3336 DEALLOCATE(oned_id_p)
3337 DEALLOCATE(oned_scalar_p)
3338 DEALLOCATE(oned_vector_p)
3339 DEALLOCATE(oned_tensor_p)
3340 DEALLOCATE(oned_torsor_p)
3342 DEALLOCATE(shell_scalar)
3343 DEALLOCATE(shell_vector)
3344 DEALLOCATE(shell_tensor)
3345 DEALLOCATE(shell_id)
3346 DEALLOCATE(shell_ity)
3347 DEALLOCATE(is_writen_shell)
3348 DEALLOCATE(shell_scalar_p)
3349 DEALLOCATE(is_writen_shell_p)
3350 DEALLOCATE(shell_tensor_p)
3351 DEALLOCATE(shell_id_p)
3352 DEALLOCATE(shell_ity_p)
3354 DEALLOCATE(solid_scalar)
3355 DEALLOCATE(solid_vector)
3356 DEALLOCATE(solid_tensor)
3357 DEALLOCATE(solid_tensor_corner)
3358 DEALLOCATE(solid_id)
3360 DEALLOCATE(solid_ity)
3361 DEALLOCATE(is_writen_solid)
3362 DEALLOCATE(solid_scalar_p)
3363 DEALLOCATE(solid_vector_p)
3364 DEALLOCATE(solid_tensor_p)
3365 DEALLOCATE(solid_tensor_corner_p)
3366 DEALLOCATE(is_writen_solid_p)
3367 DEALLOCATE(solid_id_p)
3368 DEALLOCATE(isolnod_p)
3369 DEALLOCATE(solid_ity_p)
3371 DEALLOCATE(sph_scalar)
3372 DEALLOCATE(sph_tensor)
3374 DEALLOCATE(is_writen_sph)
3375 DEALLOCATE(sph_scalar_p)
3376 DEALLOCATE(sph_tensor_p)
3377 DEALLOCATE(is_writen_sph_p)
3378 DEALLOCATE(sph_id_p)
3380 DEALLOCATE(quad_scalar)
3381 DEALLOCATE(quad_vector)
3382 DEALLOCATE(quad_tensor)
3384 DEALLOCATE(is_writen_quad)
3385 DEALLOCATE(quad_scalar_p)
3386 DEALLOCATE(quad_tensor_p)
3387 DEALLOCATE(is_writen_quad_p)
3388 DEALLOCATE(quad_id_p)
3390 DEALLOCATE(skin_tensor,skin_vector,skin_scalar)
3391 DEALLOCATE(is_writen_skin)
3392 DEALLOCATE(skin_tensor_p,skin_vector_p,skin_scalar_p)
3393 DEALLOCATE(is_writen_skin_p)
3394 DEALLOCATE(skin_id_p)
3395 DEALLOCATE(ixskin_tmp)
3396 DEALLOCATE(ixskin_p)
3397 IF (
numskinp>0)
DEALLOCATE(nodal_ipart,imapskp)
3409 DEALLOCATE( ixs10_p)
3410 DEALLOCATE( ixs16_p)
3411 DEALLOCATE( ixs20_p)
3412 DEALLOCATE( ipartc_p)
3413 DEALLOCATE( iparttg_p)
3414 DEALLOCATE( ipartq_p)
3415 DEALLOCATE( iparts_p)
3416 DEALLOCATE( ipartr_p)
3417 DEALLOCATE( ipartp_p)
3418 DEALLOCATE( ipartt_p)
3419 DEALLOCATE( ipartsp_p)
3420 DEALLOCATE( iparts10_p)
3421 DEALLOCATE( iparts16_p)
3422 DEALLOCATE( iparts20_p)
3424 DEALLOCATE( ixc_tmp)
3425 DEALLOCATE( ixtg_tmp)
3427 DEALLOCATE( ixr_tmp)
3428 DEALLOCATE( ixp_tmp)
3429 DEALLOCATE( kxsp_tmp)
3430 DEALLOCATE( ixt_tmp)
3431 DEALLOCATE( ixs10_tmp)
3432 DEALLOCATE( ixs16_tmp)
3433 DEALLOCATE( ixs20_tmp)
3434 DEALLOCATE( ixq_tmp)
3435 DEALLOCATE( sub_id,sub_level,sub_nchild)
3436 IF(
ALLOCATED(sub_child))
DEALLOCATE( sub_child,sub_iad,sub_title)
3439 IF (
ALLOCATED(nodal_ipart))
DEALLOCATE(nodal_ipart)
3442 IF (
ALLOCATED(tagnod))
DEALLOCATE(tagnod)
3444 DEALLOCATE(tagnod_p)
3449 CALL startime(timers,macro_timer_libh3d)
3450 CALL c_h3d_write_toc()
3451 CALL stoptime(timers,macro_timer_libh3d)
3455 INQUIRE(file=tmp_name(1:len_tmp_name), size=h3dtotalsize8)
3456 h3dtotalsize8 = h3dtotalsize8/(1024*1024)
3457 h3dtotalsize = h3dtotalsize8
3458 WRITE (iout,1000) filnam(1:filen),h3d_data%IH3D,ncycle,tt
3459 WRITE (istdo,1000) filnam(1:filen),h3d_data%IH3D,ncycle,tt
3462 CALL stoptime(timers,macro_timer_genh3d)
3465 1000
FORMAT (4x,
' H3D FILE:',1x,a,
' UPDATED: FRAME=',1x,i5,
' , NC=',1x,i7
' , TIME='