171 SUBROUTINE genh3d(TIMERS,X ,D ,V ,A ,BUFEL ,
172 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
173 3 IXR ,IXTG ,SWAFT ,SMAS ,SXNORM ,
174 4 SIAD ,IPARG ,PM ,GEO ,MS ,
175 5 SINVERT ,CONT ,SMATER ,ICUT ,SKEW ,
176 6 XCUT ,FINT ,ITAB ,SEL2FA ,FEXT ,
177 7 FOPT ,ANIN ,LPBY ,NPBY ,NSTRF ,
178 8 RWBUF ,NPRW ,TANI ,ELBUF_TAB ,MAT_PARAM,
179 A DD_IAD ,WEIGHT ,EANI ,IPART ,CLUSTER ,
180 B IPARTS ,IPARTQ ,IPARTC ,IPARTT ,IPARTP ,
181 C IPARTR ,IPARTUR ,IPARTTG ,
182 D RBY ,SWA4 ,TORS ,NOM_OPT ,
183 E BUFSF ,IDATA ,RDATA ,SIADG ,BUFMAT ,
184 F BUFGEO ,KXX ,IXX ,IPARTX ,SUIX ,
185 G SXUSR ,SNFACPTX ,SIXEDGE ,SIXFACET ,SIXSOLID ,
186 H SNUMX1 ,SNUMX2 ,SNUMX3 ,SOFFX1 ,SOFFX2 ,
187 I SOFFX3 ,SMASS1 ,SMASS2 ,SMASS3 ,SFUNC1 ,
188 J SFUNC2 ,SFUNC3 ,KXSP ,IXSP ,NOD2SP ,
189 K IPARTSP ,SPBUF ,IXS10 ,IXS20 ,IXS16 ,
190 L VR ,MONVOL ,VOLMON ,IPM ,IGEO ,NODGLOB,
191 M IAD_ELEM ,FR_ELEM ,FR_SEC ,FR_RBY2 ,IAD_RBY2 ,
192 N FR_WALL ,IFLOW ,RFLOW ,FNCONT ,FTCONT ,
193 O TEMP ,THKE ,ERR_THK_SH4 ,ERR_THK_SH3 ,DIAG_SMS ,
194 P IPARI ,FNCONT2 ,DR ,ALE_CONNECT ,
195 Q IRBE2 ,IRBE3 ,LRBE2 ,LRBE3 ,FR_RBE2,
196 R FR_RBE3M ,IAD_RBE2 ,DXANCG ,NOD_PXFEM ,IEL_PXFEM,
197 S ZI_PLY ,VGAZ ,FCONTG ,FNCONTG ,FTCONTG ,
198 T FANREAC ,INOD_CRK ,IEL_CRK ,ELCUTC ,IADC_CRK ,
199 U PDAMA2 ,RES_SMS ,WEIGHT_MD ,NODGLOBXFE ,NODEDGE ,
200 V FCLUSTER ,MCLUSTER ,XFEM_TAB ,W ,
201 W NV46 ,IPARTIG3D,KXIG3D ,IXIG3D ,SIG3DSOLID,
202 X KNOT ,WIGE ,NERCVOIS ,NESDVOIS ,LERCVOIS ,
203 Y LESDVOIS ,CRKEDGE ,INDX_CRK ,XEDGE4N ,XEDGE3N ,
204 Z STACK ,SPH2SOL ,STIFN ,STIFR ,IGRNOD ,
205 1 SH4TREE ,SH3TREE ,H3D_DATA ,MULTI_FVM ,SUBSET ,
206 2 PSKIDS ,TAG_SKINS6,TF ,NPF ,FCONT_MAX ,
207 3 MDS_MATID,FNCONTP2 ,FTCONTP2 ,IBCL ,ILOADP ,
208 4 LLOADP ,FAC ,SENSORS ,TAGNCONT ,LOADP_HYD_INTER,
209 5 XFRAME ,FORC ,AR ,CSEFRIC ,CSEFRICG ,
210 6 CSEFRIC_STAMP,CSEFRICG_STAMP ,TABLE ,IFRAME ,LOADS,
211 7 DRAPE_SH4N, DRAPE_SH3N, DRAPEG ,X_C ,GLOB_THERM,PBLAST)
217 USE h3d_oned_scalar_mod,
ONLY: h3d_oned_scalar
243 USE h3d_gather_id_val_mod
248#include "implicit_f.inc"
254#include "build_info.inc"
255#include "com01_c.inc"
256#include "com04_c.inc"
257#include "com08_c.inc"
258#include "com_xfem1.inc"
260#include "param_c.inc"
261#include "units_c.inc"
262#include "scr14_c.inc"
263#include "scr16_c.inc"
264#include "scr17_c.inc"
265#include "scr23_c.inc"
266#include "chara_c.inc"
269#include "filescount_c.inc"
270#include "tabsiz_c.inc"
271#include "intstamp_c.inc"
273#include "sysunit.inc"
281 TYPE(timer_),
INTENT(INOUT) :: TIMERS
282 INTEGER SWAFT,SMAS,SXNORM,SIAD,SINVERT,SMATER,SEL2FA,SWA4,
283 . siadg,nercvois(*),nesdvois(*),lercvois(*),
284 . lesdvois(*),sph2sol(*),sh4tree(*),sh3tree(*),tag_skins6(*)
286 . suix, sxusr ,sfacptx,sixedge,sixfacet,sixsolid,snumx1,
287 . snumx2,snumx3,soffx1,soffx2,soffx3,smass1,smass2,
288 .
smass3,sfunc1,sfunc2,sfunc3,sfin,snfacptx,npf(*)
290 INTEGER IGEO(NPROPGI,NUMGEO),IPM(NPROPMI,NUMMAT),INDX_CRK(*),
291 . LRBE2(*),LRBE3(*),FR_RBE2(3,*),FR_RBE3M(3,*),
292 . (*), IEL_PXFEM(*),NODEDGE(2,*),(4,*),XEDGE3N(3,*),
293 . (*),IEL_CRK(*),ELCUTC(2,*),IADC_CRK(*)
295 . X(3*NUMNOD), D(3*NUMNOD), V(3*NUMNOD), A(3,NUMNOD), BUFEL(*),
296 . PM(NPROPM,NUMMAT), GEO(,NUMGEO),CONT(*),
297 . XCUT(*) , FINT(3,NUMNOD),MS(NUMNOD),RWBUF(NRWLP,*),SKEW(LSKEW,*),
298 . RBY(,*),FEXT(3,NUMNOD) ,FOPT(6,*),ANIN(*),TANI(6,*),EANI(*),
299 . TORS(15,*),(*), RDATA(*),
300 . BUFMAT(*),BUFGEO(*),
301 . SPBUF(*), VR(3*NUMNOD),VOLMON(SVOLMON), RFLOW(*), FNCONT(3,*), FTCONT(3,*),
302 . TEMP(*), THKE(*), ERR_THK_SH4(
305(3,*),MCLUSTER(3,*),W(SW),
306 . WIGE(*),KNOT(*),STIFN(*),STIFR(*),PSKIDS(*),TF(*),FCONT_MAX(*),
307 . FNCONTP2(3,*) ,FTCONTP2(3,*)
308 INTEGER IPARG(NPARG,NGROUP),NSTRF(*),LPBY(*),
309 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXTG(,NUMELTG),
310 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),MONVOL(SMONVOL) ,
311 . IXS10(6,*) ,IXS16(8,*) ,IXS20(12,*) ,
312 . ICUT(*), ITAB(NUMNOD),NPBY(NNPBY,*),NPRW(*),
313 . (*),IPART(LIPART1,*),IPARTS(*),IPARTQ(*),IPARTC(*),
314 . IPARTT(*),IPARTP(*),IPARTR(*),IPARTUR(*),IPARTTG(*),
316 . IDATA(*),KXX(NIXX,*), IXX(*), IPARTX(*),
317 . kxsp(nisp,*), ixsp(kvoisph,*), nod2sp(*), ipartsp(*),
318 . nodglob(*),iad_elem(2,*),fr_elem(*),fr_wall(*), iflow(*),
319 . ipari(npari,*),irbe2(nrbe2l,*),irbe3(nrbe3l,*),
320 . weight_md(*),nodglobxfe(*),ipartig3d(*)
321 INTEGER CTEXT(111), IB
322 INTEGER DD_IAD(NSPMD+1,*)
323 INTEGER FR_SEC(NSPMD+1,*),FR_RBY2(3,*),IAD_RBY2(4,*),
325 . nerbe3t(nrbe3g),iad_rbe2(4,*),nv46,kxig3d(*),
326 . ixig3d(*),sig3dsolid,mds_matid(*)
327 INTEGER LLOADP(SLLOADP)
328 INTEGER ILOADP(SIZLOADP,*),IBCL(NIBCLD,*)
329 INTEGER TAGNCONT(NLOADP_HYD_INTER,NUMNOD),LOADP_HYD_INTER(NLOADP_HYD)
330 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1),
INTENT(IN) :: IFRAME
332 . FAC(LFACCLD,*),XFRAME(NXFRAME,*),FORC(*)
333 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
334 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP,NXEL) :: XFEM_TAB
335 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTER
336 TYPE (XFEM_EDGE_) ,
DIMENSION(*) ::
337 TYPE (STACK_PLY) :: STACK
338 TYPE (H3D_DATABASE) :: H3D_DATA
339 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
340 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
341 TYPE (SUBSET_) ,
TARGET,
DIMENSION(NSUBS) :: SUBSET
342 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
343 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
344 TYPE (LOADS_) ,
INTENT(IN) :: LOADS
345 TYPE (TTABLE),
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
346 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
347 my_real ,
INTENT(IN) :: AR(SAR)
350 my_real ,
DIMENSION(3,NUMNOD),
INTENT(IN) :: x_c
351 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
352 TYPE (DRAPEG_),
INTENT(IN) :: DRAPEG
353 type (glob_therm_),
intent(in) :: GLOB_THERM
354 type (pblast_),
intent(in) :: PBLAST
359 my_real,
DIMENSION(:),
ALLOCATABLE :: WAFT , MAS
360 INTEGER IAD(SIAD),INVERT(SINVERT),EL2FA(SEL2FA),IADG(NSPMD,SIADG),FIRST_NODE_IG3D
361 my_real ,
DIMENSION (:),
ALLOCATABLE :: cbuf
362 INTEGER ,
DIMENSION (:),
ALLOCATABLE :: ICBUF
364 CHARACTER*80 STR,H3DTITLE
365 CHARACTER(LEN=NCHARLINE100):: KEYWORD
366 CHARACTER CH_H3D*4,FILNAM*100
367 INTEGER I, NBF, NBPART, J, IFUNC, FILEN, NSENSOR,NELCUT,N,K,NERBY,ISK(6),LAYER,IPT,GAUSS,ID_PLY,IUVAR
368 INTEGER II,II_L,INC,NDMA2,NB1D,NBONED_T, NBF_L, LEN
369 INTEGER NERBE2,NERBE3,ALL_SUB_CHILDS,IDMDS,IMDSVAR,ID
370 INTEGER I161,I16A,I16B,I16C,I16D,I16E,I16F,I16G,I16H,I16I,I16J,I16K,I16L,I16M,I16N
373 INTEGER SBUFSPM,SBUFRECVM,SBUFSPO,SPORBY,N_OUTP_DATA,LEN_H3DTITLE,N_H3D_PART_LIST
374 my_real cdg(3),xmin,ymin,zmin,xmax,
ymax,zmax, scale
375 INTEGER JJ, SUBG,IR,IS,IT,INTER_INPUT,INTERSKID,NI,ITYSKID,INTERFRIC
376 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SHELL_ID,SHELL_ID_P,
377 . shell_ity,shell_ity_p,oned_id,oned_id_p,
378 . oned_ity,oned_ity_p,solid_id,solid_id_p,
379 . solid_ity,solid_ity_p,is_writen_shell,
380 . is_writen_shell_p,is_writen_oned,
381 . is_writen_oned_p,is_writen_node,
382 . is_writen_node_p,node_id,node_id_p,
383 . is_writen_solid,is_writen_solid_p,
384 . sph_id,sph_id_p,is_writen_sph,is_writen_sph_p,
385 . quad_id,quad_id_p,is_writen_quad
386 . skin_id_p,is_writen_skin,is_writen_skin_p,
388 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IS_WRITEN_NODE_FVM,NODE_ID_FVM
389 INTEGER INFO1,INFO2,IS_CORNER_DATA, COMPID_RBODIES, COMPID_RBE2S, COMPID_RBE3S, MAX_PART_ID
390 INTEGER ERROR_LOAD,NUMNOD_H3DPART
392 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
417 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
432 my_real,
DIMENSION(:),
ALLOCATABLE :: x_p,d_p
433 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAB_P
434 INTEGER :: IAD_H3DPART,IAD_P,NUMNODG0,IP0 ,NIXSKIN
435 INTEGER :: NUMNOD_P(NSPMD)
436 INTEGER MAX_NOD_ID,MAX_NCORN
437 REAL(KIND=4),
DIMENSION(:),
ALLOCATABLE :: SHELL_STACK
438 REAL(KIND=4),
DIMENSION(:),
ALLOCATABLE :: SHELL_STACK_P
439 INTEGER,
DIMENSION(NSPMD) :: GATHER_SIZE
440 INTEGER,
DIMENSION(NSPMD) :: TMP_OFFSETS
441 INTEGER,
DIMENSION(NSPMD+1) :: SH_TRIA_SPMD_OFFSETS
442 my_real,
DIMENSION(:),
ALLOCATABLE :: NODAL_SCALAR,NODAL_SCALAR_P,
443 . NODAL_VECTOR,NODAL_VECTOR_P,
444 . NODAL_TENSOR,NODAL_TENSOR_P,
445 . ONED_SCALAR,ONED_SCALAR_P,
446 . ONED_VECTOR,ONED_VECTOR_P,
447 . ONED_TENSOR,ONED_TENSOR_P,
448 . ONED_TORSOR,ONED_TORSOR_P,
449 . SHELL_SCALAR_P,SHELL_SCALAR,
450 . SHELL_VECTOR,SHELL_VECTOR_P,
451 . SHELL_TENSOR,SHELL_TENSOR_P,
452 . SOLID_SCALAR,SOLID_SCALAR_P
458 . skin_tensor,skin_tensor_p,
459 . sph_scalar,sph_scalar_p,
460 . sph_tensor,sph_tensor_p,
461 . quad_scalar,quad_scalar_p,
462 . quad_vector,quad_vector_p,
463 . quad_tensor,quad_tensor_p,nodal_scalar_fvm,
465 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD,TAGNOD_P,
466 . ITAB_P_PART,ITABM1_P
467 my_real XWL(NRWALL) ,YWL(NRWALL) , ZWL(NRWALL), V1(NRWALL), (NRWALL), V3(NRWALL),
468 . VV1(NRWALL), VV2(NRWALL), VV3(NRWALL), XL(NRWALL), XN(NRWALL), YN(NRWALL),
470 LOGICAL IS_FILE_EXISTS
471 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_CHILD,SUB_IAD,SUB_TITLE
472 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_NCHILD
473 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_LEVEL
474 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_ID
475 INTEGER (KIND=8) :: H3DTOTALSIZE8
476 INTEGER :: LEN_TMP_NAME,LEN_RADVERS,OBJECT_ID, NPOLH, NPOLHG, NPOLH_ANIM, NPOLH_ANIM_G,
478 INTEGER :: AIRBAGS_TOTAL_FVM_IN_H3D_G
479 CHARACTER(len=2148) :: TMP_NAME
481 TYPE(
fvbag_data),
DIMENSION(:),
ALLOCATABLE :: FVDATA_P
482 my_real,
DIMENSION(:),
ALLOCATABLE :: fvdata_1d_array,fvdata_1d_array_p
504 TYPE(USER_NOD_ID_) :: USER_NOD_ID
506 INTEGER :: MAX_SHELL_STACKSIZE
507 INTEGER :: SHELL_STACKSIZE
508 INTEGER :: SHELL_STACKSIZE_P0
513 max_shell_stacksize = numelc + numeltg
514 CALL startime(timers,macro_timer_genh3d)
516 user_nod_id%INPUT_MAX=0
517 user_nod_id%RWALL_SHIFT=0
518 user_nod_id%RWALL_LEN=0
519 user_nod_id%FVMBAG_SHIFT=0
520 user_nod_id%FVMBAG_LEN=0
522 ndma2 = numnod*(
min(1,anim_n(1)+outp_n(1)+h3d_data%N_SCAL_DT)
523 . +
min(1,anim_n(2)+outp_n(2)+h3d_data%N_SCAL_DMAS)
524 . +
min(1,anim_n(12)+outp_n(3)+h3d_data%N_SCAL_DINER))
525 nsensor = sensors%NSENSOR
527 ALLOCATE(sub_nchild(nsubs))
528 ALLOCATE(sub_level(nsubs))
529 ALLOCATE(sub_id(nsubs))
533 i16a=i161+lnopt1*nrbody0
534 i16b=i16a+lnopt1*naccelm
535 i16c=i16b+lnopt1*nvolu
536 i16d=i16c+lnopt1*(ninter+nintsub)
537 i16e=i16d+lnopt1*nrwall
539 i16g=i16f+lnopt1*njoint
540 i16h=i16g+lnopt1*nsect
541 i16i=i16h+lnopt1*nlink
542 i16j=i16i+lnopt1*(numskw+1+numfram+1)
543 i16k=i16j+lnopt1*nfxbody
544 i16l=i16k+lnopt1*nflow
545 i16m=i16l+lnopt1*nrbe2
546 i16n=i16m+lnopt1*nrbe3
553 h3d_data%IH3D_RUN = h3d_data%IH3D_RUN + 1
564 ALLOCATE(x_p(8*numnodg0))
565 ALLOCATE(itab_p(numnodg0))
567 CALL my_alloc( ixtg_p ,nixtg,numeltgg*ip0)
568 CALL my_alloc( ixs_p ,nixs,(numelsg-numels10g-numels16g-numels20g)*ip0)
569 CALL my_alloc( ixp_p ,nixp,numelpg*ip0)
570 CALL my_alloc( ixr_p ,nixr,numelrg*ip0
571 CALL my_alloc( kxsp_p ,nisp,numsphg*ip0)
572 CALL my_alloc( ixt_p ,nixt,numeltrg*ip0)
573 CALL my_alloc( ixc_p ,nixc,numelcg*ip0)
574 CALL my_alloc( ixs10_p ,11,numels10g*ip0)
575 CALL my_alloc( ixs16_p ,17,numels16g*ip0)
576 CALL my_alloc( ixs20_p ,21,numels20g*ip0)
577 ALLOCATE( ipartc_p(numelcg
578 ALLOCATE( iparttg_p(numeltgg*ip0))
579 ALLOCATE( ipartq_p(numelqg*ip0))
580 ALLOCATE( iparts_p((numelsg-numels10g-numels16g-numels20g)*ip0))
581 ALLOCATE( ipartr_p(numelrg*ip0))
582 ALLOCATE( ipartp_p(numelpg*ip0))
583 ALLOCATE( ipartt_p(numeltrg*ip0
584 ALLOCATE( ipartsp_p(numsphg*ip0))
585 ALLOCATE( iparts10_p(numels10g*ip0))
586 ALLOCATE( iparts16_p(numels16g*ip0))
587 ALLOCATE( iparts20_p(numels20g*ip0))
588 CALL my_alloc( ixq_p ,nixq,numelqg*ip0)
589 CALL my_alloc( ixc_tmp ,nixc,numelc)
590 CALL my_alloc( ixtg_tmp ,nixtg,numeltg)
591 CALL my_alloc( ixr_tmp ,nixr,numelr)
592 CALL my_alloc( ixp_tmp ,nixp,numelp)
593 CALL my_alloc( kxsp_tmp ,nisp,numsph)
594 CALL my_alloc( ixt_tmp ,nixt,numelt)
595 CALL my_alloc( ixs10_tmp ,11,numels10)
596 CALL my_alloc( ixs16_tmp ,17,numels16)
597 CALL my_alloc( ixs20_tmp ,21,numels20)
598 CALL my_alloc( ixq_tmp ,nixq,numelq)
599 CALL my_alloc( ixskin_tmp ,nixskin,numskin)
600 CALL my_alloc( ixskin_p ,nixskin,numsking*ip0)
601 ALLOCATE( ipartskin_p(numsking*ip0))
603 ALLOCATE(d_p(numnodg0*8))
606 CALL startime(timers,macro_timer_spmdh3d)
608 CALL stoptime(timers,macro_timer_spmdh3d)
619 max_part_id =
max(max_part_id,ipart(4,i))
621 IF(h3d_data%RBODY_SINGLE == 1)compid_rbodies = max_part_id + 1
622 IF(h3d_data%RBE2_SINGLE == 1)compid_rbe2s = max_part_id + 2
623 IF(h3d_data%RBE3_SINGLE == 1)compid_rbe3s = max_part_id + 3
628 filnam=rootnam(1:rootlen)//
'.h3d'
636 IF ((h3d_data%IH3D == 1 .AND. irun == 1)
637 . .OR.( h3d_data%IH3D_RUN == 1 .AND. irun > 1))
THEN
642 all_sub_childs = all_sub_childs + subset(j)%NCHILD
643 sub_id(j) = subset(j)%ID
644 sub_nchild(j) = subset(j)%NCHILD
645 sub_level(j) = subset(j)%LEVEL
648 ALLOCATE(sub_child(all_sub_childs))
649 sub_child(1:all_sub_childs) = 0
650 ALLOCATE(sub_iad(nsubs))
652 ALLOCATE(sub_title(nsubs*ltitr))
653 sub_title(1:nsubs*ltitr) = 0
656 DO i=1,subset(j)%NCHILD
658 sub_child(k) = subset(j)%CHILD(i)
664 CALL fretitl(subset(j)%TITLE,sub_title(ltitr * (j-1)+1),ltitr)
667 ALLOCATE(sub_child(0))
669 ALLOCATE(sub_title(0))
673 IF (h3d_data%IH3D == 1 .AND. irun == 1)
THEN
680 IF(error_load == 1)
THEN
681 CALL ancmsg(msgid=274,anmode=aninfo)
689 WRITE(radvers,
'(A,A)')
'Radioss ',vers
690 len_radvers = len_trim(radvers)
692 CALL startime(timers,macro_timer_libh3d)
693 CALL c_h3d_open_file(tmp_name,len_tmp_name,h3d_data%PERCENTAGE_ERROR,h3d_data%COMP_LEVEL,
694 . radvers,len_radvers,fac_mass,fac_length,fac_time)
696 . h3d_data%PARTS(1)%PART,
697 . nrbody, nrwall, nom_opt, lnopt1, i16d, npby, nnpby,
698 . sub_nchild, nsubs, nrbe2, nrbe3, i16l, i16m, n2d ,irbe2,
699 . nrbe2l,sub_id,sub_child,sub_level,sub_iad,sub_title,irbe3,
700 . nrbe3l,compid_rbodies,compid_rbe2s,compid_rbe3s)
701 CALL stoptime(timers,macro_timer_libh3d)
705 ELSEIF( h3d_data%IH3D_RUN == 1 .AND. irun > 1)
THEN
711 IF(error_load == 1)
THEN
712 CALL ancmsg(msgid=274,anmode=aninfo)
719 INQUIRE( file=tmp_name(1:len_tmp_name), exist=is_file_exists )
720 IF (is_file_exists)
THEN
721 CALL startime(timers,macro_timer_libh3d)
724 CALL stoptime(timers,macro_timer_libh3d)
729 WRITE(ch_h3d,
'(I4.4)')irun
730 filnam=rootnam(1:rootlen)//
'_'//ch_h3d//
'.h3d'
737 WRITE(radvers,
'(A,A)')
'Radioss ',vers
738 len_radvers = len_trim(radvers)
740 CALL startime(timers,macro_timer_libh3d)
741 CALL c_h3d_open_file(tmp_name,len_tmp_name,h3d_data%PERCENTAGE_ERROR,h3d_data%COMP_LEVEL,
742 . radvers,len_radvers,fac_mass,fac_length,fac_time)
744 . nrbody, nrwall, nom_opt, lnopt1, i16d, npby, nnpby,
745 . sub_nchild, nsubs, nrbe2g, nrbe3g, i16e, i16f, n2d ,irbe2,
746 . nrbe2l,sub_id,sub_child,sub_level,sub_iad,sub_title,irbe3,
747 . nrbe3l,compid_rbodies,compid_rbe2s,compid_rbe3s)
748 CALL stoptime(timers,macro_timer_libh3d)
757 CALL startime(timers,macro_timer_spmdh3d)
760 CALL stoptime(timers,macro_timer_spmdh3d)
770 ALLOCATE(tagnod_p(numnodg))
772 ALLOCATE(tagnod_p(1))
775 IF(h3d_data%IPART_SELECT == 1)
THEN
776 ALLOCATE(tagnod(numnod))
781 IF (h3d_data%PARTS(1)%PART(ipartsp(i)) == 1)
THEN
782 IF(kxsp(2,i) > 0 )tagnod(kxsp(2,i)) = 1
787 IF (h3d_data%PARTS(1)%PART(ipartr(i)) == 1)
THEN
789 IF(ixr(j,i) > 0 )tagnod(ixr(j,i)) = 1
795 IF (h3d_data%PARTS(1)%PART(ipartp(i)) == 1)
THEN
797 IF(ixp(j,i) > 0 )tagnod(ixp(j,i)) = 1
803 IF (h3d_data%PARTS(1)%PART(ipartt(i)) == 1)
THEN
805 IF(ixt(j,i) > 0 )tagnod(ixt(j,i)) = 1
811 IF(npby(1,i) > 0 ) tagnod(npby(1,i)) = 1
813 IF(lpby(npby(11,i)+j) > 0) tagnod(lpby(npby(11,i)+j)) = 1
818 IF (h3d_data%PARTS(1)%PART(ipartc(i)) == 1)
THEN
820 IF(ixc(j,i) > 0 )tagnod(ixc(j,i
826 IF (h3d_data%PARTS(1)%PART(iparttg(i)) == 1)
THEN
828 tagnod(ixtg(j,i)) = 1
834 IF (h3d_data%PARTS(1)%PART(iparts(i)) == 1)
THEN
836 IF(ixs(j,i) > 0 )tagnod(ixs(j,i)) = 1
842 IF (h3d_data%PARTS(1)%PART(ipartq(i)) == 1)
THEN
844 IF(ixq(j,i) > 0 )tagnod(ixq(j,i)) = 1
852 CALL startime(timers,macro_timer_spmdh3d)
854 CALL stoptime(timers,macro_timer_spmdh3d)
857 numnod_h3dpart = numnod_h3dpart + numnod_p(i)
862 ALLOCATE(itab_p_part(numnod_h3dpart))
863 ALLOCATE(itabm1_p(2*numnodg))
866 CALL startime(timers,macro_timer_spmdh3d)
869 CALL stoptime(timers,macro_timer_spmdh3d)
872 DO i=1,numnod_h3dpart
873 IF(itab_p_part(i) /= 0)
THEN
874 IF(sysfus2(itab_p_part(i),itabm1_p,numnodg) /= 0)
THEN
875 tagnod_p(sysfus2(itab_p_part(i),itabm1_p,numnodg)) = 1
882 tagnod_p(i) = tagnod(i)
885 DEALLOCATE(itab_p_part)
887 ELSE IF(ispmd == 0)
THEN
897 IF(nspmd > 1 .AND. ispmd==0)
THEN
899 max_nod_id =
max(max_nod_id,itab_p(i))
901 ELSEIF(nspmd == 1)
THEN
904 max_nod_id =
max(max_nod_id,itab(i))
907 user_nod_id%INPUT_MAX = max_nod_id
910 IF(nspmd > 1 .AND. ispmd==0 .AND. h3d_data%IH3D == 1 )
THEN
911 CALL startime(timers,macro_timer_libh3d)
913 CALL stoptime(timers,macro_timer_libh3d)
914 ELSEIF(ispmd==0 .AND. h3d_data%IH3D == 1)
THEN
915 CALL startime(timers,macro_timer_libh3d)
917 CALL stoptime(timers,macro_timer_libh3d)
922 airbags_total_fvm_in_h3d_g = 0
924 user_nod_id%FVMBAG_SHIFT = max_nod_id
925 user_nod_id%FVMBAG_LEN = 0
930 if (ispmd == 0)
ALLOCATE (fvdata_p(
nfvbag))
931 airbags_total_fvm_in_h3d_g = 0
935 if ( (
fvspmd(j)%PMAIN-1 == 0) .and. (ispmd == 0))
then
938 npolh_anim_g =
fvdata(j)%NPOLH_ANIM
942 if (
fvspmd(j)%PMAIN-1 == ispmd)
then
944 fvm_globals(1) =
fvdata(j)%NPOLH
945 fvm_globals(2) =
fvdata(j)%NPOLH_ANIM
948 call spmd_send(fvm_globals,3,it_spmd(1),25001)
952 call spmd_recv(fvm_globals,3,it_spmd(
fvspmd(j)%PMAIN),25001)
953 npolhg = fvm_globals(1)
954 npolh_anim_g = fvm_globals(2)
955 airbags_total_fvm_in_h3d_g = fvm_globals(3)
959 airbags_total_fvm_in_h3d_g = 0
965 ALLOCATE (fvdata_p(j)%CENTROID_POLH(3,npolhg))
966 ALLOCATE (fvdata_p(j)%QPOLH(3,npolhg))
967 ALLOCATE (fvdata_p(j)%PPOLH(npolhg))
968 ALLOCATE (fvdata_p(j)%SSPPOLH(npolhg))
969 ALLOCATE (fvdata_p(j)%DTPOLH(npolhg))
970 ALLOCATE (fvdata_p(j)%MPOLH(npolhg))
971 ALLOCATE (fvdata_p(j)%RPOLH(npolhg))
972 ALLOCATE (fvdata_p(j)%TPOLH(npolhg))
973 fvdata_p(j)%NPOLH = npolhg
974 fvdata_p(j)%NPOLH_ANIM = npolh_anim_g
977 if ( (
fvspmd(j)%PMAIN-1 == 0) .and. (ispmd == 0))
then
979 fvdata_p(j)%CENTROID_POLH(1,1:npolh) =
fvdata(j)%CENTROID_POLH(1,1:npolh)
980 fvdata_p(j)%CENTROID_POLH(2,1:npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
981 fvdata_p(j)%CENTROID_POLH(3,1:npolh) =
fvdata(j)%CENTROID_POLH(3,1:npolh)
982 fvdata_p(j)%QPOLH(1,1:npolh) =
fvdata(j)%QPOLH(1,1:npolh)
983 fvdata_p(j)%QPOLH(2,1:npolh)
984 fvdata_p(j)%QPOLH(3,1:npolh) =
fvdata(j)%QPOLH(3,1:npolh)
985 fvdata_p(j)%PPOLH(1:npolh) =
fvdata(j)%PPOLH(1:npolh)
986 fvdata_p(j)%SSPPOLH(1:npolh) =
fvdata(j)%SSPPOLH(1:npolh)
988 fvdata_p(j)%MPOLH(1:npolh) =
fvdata(j)%MPOLH(1:npolh)
989 fvdata_p(j)%RPOLH(1:npolh) =
fvdata(j)%RPOLH(1:npolh)
990 fvdata_p(j)%TPOLH(1:npolh) =
fvdata(j)%TPOLH(1:npolh)
992 if (ispmd ==
fvspmd(j)%PMAIN-1)
then
993 ALLOCATE(fvdata_1d_array(12*npolh))
994 fvdata_1d_array(00*npolh+1:01*npolh) =
fvdata(j)%CENTROID_POLH(1,1:npolh)
995 fvdata_1d_array(01*npolh+1:02*npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
996 fvdata_1d_array(02*npolh+1:03*npolh) =
fvdata(j)%CENTROID_POLH(3,1:npolh)
997 fvdata_1d_array(03*npolh+1:04*npolh) =
fvdata(j)%QPOLH(1,1:npolh)
998 fvdata_1d_array(04*npolh+1:05*npolh) =
fvdata(j)%QPOLH(2,1:npolh)
999 fvdata_1d_array(05*npolh+1:06*npolh) =
fvdata(j)%QPOLH(3,1:npolh)
1000 fvdata_1d_array(06*npolh+1:07*npolh) =
fvdata(j)%PPOLH(1:npolh)
1001 fvdata_1d_array(07*npolh+1:08*npolh) =
fvdata(j)%SSPPOLH(1:npolh)
1002 fvdata_1d_array(08*npolh+1:09*npolh) =
fvdata(j)%DTPOLH(1:npolh)
1003 fvdata_1d_array(09*npolh+1:10*npolh) =
fvdata(j)%MPOLH(1:npolh)
1004 fvdata_1d_array(10*npolh+1:11*npolh) =
fvdata(j)%RPOLH(1:npolh)
1005 fvdata_1d_array(11*npolh+1:12*npolh) =
fvdata(j)%TPOLH(1:npolh)
1007 call spmd_send(fvdata_1d_array,12*npolh,it_spmd(1),25000)
1008 DEALLOCATE(fvdata_1d_array)
1012 ALLOCATE(fvdata_1d_array(12*npolhg))
1013 call spmd_recv(fvdata_1d_array,12*npolhg,it_spmd(
fvspmd(j)%PMAIN),25000)
1015 fvdata_p(j)%CENTROID_POLH(1,1:npolhg) = fvdata_1d_array(00*npolhg+1:01*npolhg)
1016 fvdata_p(j)%CENTROID_POLH(2,1:npolhg) = fvdata_1d_array(01*npolhg+1:02*npolhg)
1017 fvdata_p(j)%CENTROID_POLH(3,1:npolhg) = fvdata_1d_array(02*npolhg+1:03*npolhg)
1018 fvdata_p(j)%QPOLH(1,1:npolhg) = fvdata_1d_array(03*npolhg+1:04*npolhg)
1019 fvdata_p(j)%QPOLH(2,1:npolhg) = fvdata_1d_array(04*npolhg+1:05*npolhg)
1020 fvdata_p(j)%QPOLH(3,1:npolhg) = fvdata_1d_array(05*npolhg+1:06*npolhg)
1021 fvdata_p(j)%PPOLH(1:npolhg) = fvdata_1d_array(06*npolhg+1:07*npolhg)
1022 fvdata_p(j)%SSPPOLH(1:npolhg) = fvdata_1d_array(07*npolhg+1:08*npolhg)
1023 fvdata_p(j)%DTPOLH(1:npolhg) = fvdata_1d_array(08*npolhg+1:09*npolhg)
1024 fvdata_p(j)%MPOLH(1:npolhg)
1025 fvdata_p(j)%RPOLH(1:npolhg) = fvdata_1d_array(10*npolhg+1:11*npolhg)
1026 fvdata_p(j)%TPOLH(1:npolhg) = fvdata_1d_array(11*npolhg+1:12*npolhg)
1027 user_nod_id%FVMBAG_LEN
1028 DEALLOCATE(fvdata_1d_array)
1039 ALLOCATE (fvdata_p(
nfvbag))
1042 npolh_anim =
fvdata(j)%NPOLH
1044 ALLOCATE (fvdata_p(j
1045 ALLOCATE (fvdata_p(j)%QPOLH(3,npolh))
1046 ALLOCATE (fvdata_p(j)%PPOLH(npolh))
1047 ALLOCATE (fvdata_p(j)%SSPPOLH(npolh))
1048 ALLOCATE (fvdata_p(j)%DTPOLH(npolh))
1049 ALLOCATE (fvdata_p(j)%MPOLH(npolh))
1050 ALLOCATE (fvdata_p(j)%RPOLH(npolh))
1051 ALLOCATE (fvdata_p(j)%TPOLH(npolh))
1053 fvdata_p(j)%NPOLH = npolh
1054 fvdata_p(j)%NPOLH_ANIM = npolh_anim
1055 fvdata_p(j)%CENTROID_POLH(1,1:npolh
1056 fvdata_p(j)%CENTROID_POLH(2,1:npolh) =
fvdata(j)%CENTROID_POLH(2,1:npolh)
1058 fvdata_p(j)%QPOLH(1,1:npolh) =
fvdata(j)%QPOLH(1,1:npolh)
1060 fvdata_p(j)%QPOLH(3,1:npolh) =
fvdata(j)%QPOLH(3,1:npolh)
1061 fvdata_p(j)%PPOLH(1:npolh) =
fvdata(j)%PPOLH(1:npolh)
1062 fvdata_p(j)%SSPPOLH(1:npolh) =
fvdata(j)%SSPPOLH(1:npolh)
1063 fvdata_p(j)%DTPOLH(1:npolh) =
fvdata(j)%DTPOLH(1:npolh)
1064 fvdata_p(j)%MPOLH(1:npolh) =
fvdata(j)%MPOLH(1:npolh)
1065 fvdata_p(j)%RPOLH(1:npolh) =
fvdata(j)%RPOLH(1:npolh)
1066 fvdata_p(j)%TPOLH(1:npolh) =
fvdata(j)%TPOLH(1:npolh)
1067 user_nod_id%FVMBAG_LEN = user_nod_id%FVMBAG_LEN + npolh
1072 max_nod_id = max_nod_id + user_nod_id%FVMBAG_LEN
1074 IF(
nfvbag > 0 .AND. ispmd==0 .AND. h3d_data%IH3D == 1)
THEN
1075 CALL startime(timers,macro_timer_libh3d)
1077 CALL stoptime(timers,macro_timer_libh3d)
1084 IF(h3d_data%IH3D == 1)
THEN
1090 kxsp_tmp(3,i) = itab(kxsp(3,i))
1092 kxsp_tmp(j,i) = kxsp(j,i)
1096 CALL startime(timers,macro_timer_spmdh3d
1098 CALL stoptime(timers,macro_timer_spmdh3d)
1103 kxsp_p(j,i) = kxsp(j,i)
1105 kxsp_p(3,i) = itab(kxsp(3,i))
1107 kxsp_p(j,i) = kxsp(j,i)
1114 ipartsp_p(1:numsphg)=0
1116 CALL startime(timers,macro_timer_spmdh3d)
1118 CALL stoptime(timers,macro_timer_spmdh3d
1121 ipartsp_p(i) = ipartsp(i)
1126 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1127 CALL startime(timers,macro_timer_libh3d)
1128 CALL c_h3d_create_sph(itab_p,numnodg,kxsp_p,nisp,numsphg,ipartsp_p,ipart,lipart1,x,h3d_data%PARTS(1)%PART)
1129 CALL stoptime(timers,macro_timer_libh3d)
1137 IF(h3d_data%IH3D == 1)
THEN
1140 ixr_tmp(1,i) = ixr(1,i)
1142 IF (ixr(j,i) /= 0 )ixr_tmp(j,i) = itab(ixr(j,i))
1144 ixr_tmp(4:nixr,i) = ixr(4:nixr,i)
1147 CALL startime(timers,macro_timer_spmdh3d)
1149 CALL stoptime(timers,macro_timer_spmdh3d)
1153 ixr_p(1,i) = ixr(1,i)
1155 IF (ixr(j,i) /= 0 ) ixr_p(j,i) = itab(ixr(j,i))
1157 ixr_p(4:nixr,i) = ixr(4:nixr,i)
1162 CALL startime(timers,macro_timer_spmdh3d)
1164 CALL stoptime(timers,macro_timer_spmdh3d)
1167 ipartr_p(i) = ipartr(i)
1172 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1173 CALL startime(timers,macro_timer_libh3d)
1174 CALL c_h3d_create_springs(itab,numnod,ixr_p,nixr,numelrg,ipartr_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1175 CALL stoptime(timers,macro_timer_libh3d)
1181 IF(h3d_data%IH3D == 1)
THEN
1184 ixp_tmp(1,i) = ixp(1,i)
1186 ixp_tmp(j,i) = itab(ixp(j,i))
1188 ixp_tmp(4:nixp,i) = ixp(4:nixp,i)
1191 CALL startime(timers,macro_timer_spmdh3d)
1193 CALL stoptime(timers,macro_timer_spmdh3d)
1197 ixp_p(1,i) = ixp(1,i)
1199 ixp_p(j,i) = itab(ixp(j,i))
1201 ixp_p(4:nixp,i) = ixp(4:nixp,i)
1205 CALL startime(timers,macro_timer_spmdh3d)
1207 CALL stoptime(timers,macro_timer_spmdh3d)
1210 ipartp_p(i) = ipartp(i)
1216 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1217 CALL startime(timers,macro_timer_libh3d)
1218 CALL c_h3d_create_beams(itab,numnod,ixp_p,nixp,numelpg,ipartp_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1219 CALL stoptime(timers,macro_timer_libh3d)
1225 IF(h3d_data%IH3D == 1)
THEN
1228 ixt_tmp(1,i) = ixt(1,i)
1230 ixt_tmp(j,i) = itab(ixt(j,i))
1232 ixt_tmp(4:nixt,i) = ixt(4:nixt,i)
1235 CALL startime(timers,macro_timer_spmdh3d)
1237 CALL stoptime(timers,macro_timer_spmdh3d)
1241 ixt_p(1,i) = ixt(1,i)
1243 ixt_p(j,i) = itab(ixt(j,i))
1245 ixt_p(4:nixt,i) = ixt(4:nixt,i)
1249 CALL startime(timers,macro_timer_spmdh3d)
1251 CALL stoptime(timers,macro_timer_spmdh3d)
1254 ipartt_p(i) = ipartt(i)
1260 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1261 CALL startime(timers,macro_timer_libh3d)
1262 CALL c_h3d_create_truss(itab,numnod,ixt_p,nixt,numeltrg,ipartt_p,ipart,lipart1,h3d_data%PARTS(1)%PART)
1263 CALL stoptime(timers,macro_timer_libh3d)
1270 IF(nspmd > 1 .AND. h3d_data%IH3D == 1)
THEN
1273 .
CALL drbycnt(nerby,npby,fr_rby2)
1276 .
CALL drbe2cnt(nerbe2,irbe2,lrbe2,weight)
1279 .
CALL drbe3cnt(nerbe3,irbe3,lrbe3,weight)
1287 sbufspm = sbufspm + iad_rby2(1,i)
1288 sbufrecvm = sbufrecvm + iad_rby2(2,i)+1
1290 sbufspm = sbufspm + 2*nrbykin
1291 sbufrecvm = sbufrecvm + 2*nrbykin*nspmd
1294 IF ((ispmd+1)==abs(fr_rby2(3,i)))
1295 . sbufspo = sbufspo + fr_rby2(2,i)
1297 sbufspo = sbufspo + nrbykin*2
1299 sporby = nerby+nrbykin*2
1305 . sbufspm,sbufrecvm,sbufspo,sporby,
1306 . nodglob,weight,itab,compid_rbodies)
1309 . nerbe2t,itab,compid_rbe2s)
1312 . nerbe3t,itab,compid_rbe3s)
1315 IF(nspmd == 1 .AND. ispmd==0 .AND. h3d_data%IH3D == 1)
THEN
1316 CALL startime(timers,macro_timer_libh3d)
1318 CALL c_h3d_create_rbe2(itab,numnod,irbe2,nrbe2l,lrbe2,nrbe2,compid_rbe2s,compid_rbe2s)
1319 CALL c_h3d_create_rbe3(itab,numnod,irbe3,nrbe3l,lrbe3,nrbe3,compid_rbe3s,compid_rbe3s)
1320 CALL stoptime(timers,macro_timer_libh3d)
1328 IF(h3d_data%IH3D == 1)
THEN
1329 IF(nspmd > 1 .AND. h3d_data%IH3D == 1)
THEN
1331 ixc_tmp(1,i) = ixc(1,i)
1333 ixc_tmp(j,i) = itab(ixc(j,i))
1335 ixc_tmp(6:nixc,i) = ixc(6:nixc,i)
1338 CALL startime(timers,macro_timer_spmdh3d)
1340 CALL stoptime(timers,macro_timer_spmdh3d)
1343 ixtg_tmp(1,i) = ixtg(1,i)
1345 ixtg_tmp(j,i) = itab(ixtg(j,i))
1347 ixtg_tmp(5:nixtg,i) = ixtg(5:nixtg,i)
1350 CALL startime(timers,macro_timer_spmdh3d)
1352 CALL stoptime(timers,macro_timer_spmdh3d)
1356 ixc_p(1,i) = ixc(1,i)
1358 ixc_p(j,i) = itab(ixc(j,i))
1360 ixc_p(6:nixc,i) = ixc(6:nixc,i)
1364 ixtg_p(1,i) = ixtg(1,i)
1366 ixtg_p(j,i) = itab(ixtg(j,i))
1368 ixtg_p(5:nixtg,i) = ixtg(5:nixtg,i)
1373 CALL startime(timers,macro_timer_spmdh3d)
1375 CALL stoptime(timers,macro_timer_spmdh3d)
1376 CALL startime(timers,macro_timer_spmdh3d)
1378 CALL stoptime(timers,macro_timer_spmdh3d)
1381 ipartc_p(i) = ipartc(i)
1384 iparttg_p(i) = iparttg(i)
1391 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1392 CALL startime(timers,macro_timer_libh3d)
1394 . h3d_data%PARTS(1)%PART)
1395 CALL c_h3d_create_sh3ns(itab_p,numnodg,ixtg_p,nixtg,numeltgg,iparttg_p,ipart,lipart1,
1396 . h3d_data%PARTS(1)%PART)
1397 CALL stoptime(timers,macro_timer_libh3d)
1404 max_nod_id = user_nod_id%FVMBAG_SHIFT + user_nod_id%FVMBAG_LEN
1405 user_nod_id%RWALL_SHIFT = max_nod_id
1407 IF(h3d_data%IH3D == 1 .AND. nrwall>0)
THEN
1409 CALL scanor(x,d,cdg,xmin,ymin,zmin,xmax,
ymax,zmax,scale,
1414 2 nstrf,rwbuf,nprw ,x,xmin,
1415 3 ymin,zmin,xmax,
ymax,zmax,
1416 4 fr_sec,fr_wall,weight,itab,
1417 5 xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3, xl, xn, yn, zn )
1421 CALL startime(timers,macro_timer_libh3d)
1423 . xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3, xl, xn, yn, zn, user_nod_id%RWALL_LEN )
1424 CALL stoptime(timers,macro_timer_libh3d)
1425 max_nod_id = max_nod_id + user_nod_id%RWALL_LEN
1434 IF(h3d_data%IH3D == 1)
THEN
1437 ALLOCATE(ixs_tmp(nixs,numels8))
1440 ixs_tmp(1,i) = ixs(1,i)
1442 ixs_tmp(j,i) = itab(ixs(j,i))
1444 ixs_tmp(10:nixs,i) = ixs(10:nixs,i)
1448 ixs10_tmp(1,i) = itab(ixs(2,numels8+i))
1449 ixs10_tmp(2,i) = itab(ixs(4,numels8+i))
1450 ixs10_tmp(3,i) = itab(ixs(7,numels8+i))
1451 ixs10_tmp(4,i) = itab(ixs(6,numels8+i))
1453 IF (ixs10(j,i)>0)
THEN
1454 ixs10_tmp(4+j,i) = itab(ixs10(j,i))
1456 ixs10_tmp(4+j,i) = 0
1459 ixs10_tmp(11,i) = ixs(nixs,numels8+i)
1464 ixs16_tmp(1,i) = itab(ixs(2,numels8+numels10+numels20+i))
1465 ixs16_tmp(2,i) = itab(ixs(3,numels8+numels10+numels20+i))
1466 ixs16_tmp(3,i) = itab(ixs(4,numels8+numels10+numels20+i))
1467 ixs16_tmp(4,i) = itab(ixs(5,numels8+numels10+numels20+i))
1468 ixs16_tmp(5,i) = itab(ixs(6,numels8+numels10+numels20+i))
1469 ixs16_tmp(6,i) = itab(ixs(7,numels8+numels10+numels20+i))
1470 ixs16_tmp(7,i) = itab(ixs(8,numels8+numels10+numels20+i))
1471 ixs16_tmp(8,i) = itab(ixs(9,numels8+numels10+numels20+i))
1473 ixs16_tmp(8+j,i) = itab(ixs16(j,i))
1475 ixs16_tmp(17,i) = ixs
1480 ixs20_tmp(1,i) = itab(ixs(2,numels8+numels10+i))
1481 ixs20_tmp(2,i) = itab(ixs(3,numels8+numels10+i))
1482 ixs20_tmp(3,i) = itab(ixs(4,numels8+numels10+i))
1483 ixs20_tmp(4,i) = itab(ixs(5,numels8+numels10+i))
1484 ixs20_tmp(5,i) = itab(ixs(6,numels8+numels10+i))
1485 ixs20_tmp(6,i) = itab(ixs(7,numels8+numels10+i))
1486 ixs20_tmp(7,i) = itab(ixs(8,numels8+numels10+i))
1487 ixs20_tmp(8,i) = itab(ixs(9,numels8+numels10+i))
1489 ixs20_tmp(8+j,i) = itab(ixs20(j,i))
1491 ixs20_tmp(21,i) = ixs(nixs,numels8+numels10+i)
1494 CALL startime(timers,macro_timer_spmdh3d)
1495 CALL spmd_h3d_gather_i(ixs_tmp,nixs*numels8,ixs_p,nixs*(numelsg-numels10g-numels16g-numels20g))
1499 CALL stoptime(timers,macro_timer_spmdh3d)
1504 ixs_p(1,i) = ixs(1,i)
1506 ixs_p(j,i) = itab(ixs(j,i))
1508 ixs_p(10:nixs,i) = ixs(10:nixs,i)
1512 ixs10_p(1,i) = itab(ixs(2,numels8+i))
1513 ixs10_p(2,i) = itab(ixs(4,numels8+i))
1514 ixs10_p(3,i) = itab(ixs(7,numels8+i))
1515 ixs10_p(4,i) = itab(ixs(6,numels8+i))
1517 ixs10_p(4+j,i) = itab(ixs10(j,i))
1519 ixs10_p(11,i) = ixs(nixs,numels8+i)
1523 ixs16_p(1,i) = itab(ixs(2,numels8+numels10+numels20+i))
1524 ixs16_p(2,i) = itab(ixs(3,numels8+numels10+numels20+i))
1525 ixs16_p(3,i) = itab(ixs(4,numels8+numels10+numels20+i))
1526 ixs16_p(4,i) = itab(ixs(5,numels8+numels10+numels20+i))
1527 ixs16_p(5,i) = itab(ixs(6,numels8+numels10+numels20+i))
1528 ixs16_p(6,i) = itab(ixs(7,numels8+numels10+numels20+i))
1529 ixs16_p(7,i) = itab(ixs(8,numels8+numels10+numels20+i))
1530 ixs16_p(8,i) = itab(ixs(9,numels8+numels10+numels20+i))
1532 ixs16_p(8+j,i) = ixs16(j,i)
1534 ixs16_p(17,i) = ixs(nixs,numels8+numels10+numels20+i)
1538 ixs20_p(1,i) = itab(ixs(2,numels8+numels10+i))
1539 ixs20_p(2,i) = itab(ixs(3,numels8+numels10+i))
1540 ixs20_p(3,i) = itab(ixs(4,numels8+numels10+i))
1541 ixs20_p(4,i) = itab(ixs(5,numels8+numels10+i))
1542 ixs20_p(5,i) = itab(ixs(6,numels8+numels10+i))
1543 ixs20_p(6,i) = itab(ixs(7,numels8+numels10+i))
1544 ixs20_p(7,i) = itab(ixs(8,numels8+numels10+i))
1545 ixs20_p(8,i) = itab(ixs(9,numels8+numels10+i))
1547 ixs20_p(8+j,i) = itab(ixs20(j,i))
1549 ixs20_p(21,i) = ixs(nixs,numels8+numels10+i)
1553 CALL startime(timers,macro_timer_spmdh3d)
1554 CALL spmd_h3d_gather_i(iparts,numels8,iparts_p,numelsg-numels10g-numels16g-numels20g)
1556 CALL spmd_h3d_gather_i(iparts(numels8+numels10+1),numels20,iparts20_p,numels20g)
1557 CALL spmd_h3d_gather_i(iparts(numels8+numels10+numels20+1),numels16,iparts16_p,numels16g)
1558 CALL stoptime(timers,macro_timer_spmdh3d)
1561 iparts_p(i) = iparts(i)
1564 iparts10_p(i) = iparts(i+numels8)
1567 iparts20_p(i) = iparts(i+numels8+numels10)
1570 iparts16_p(i) = iparts(i+numels8+numels10+numels20)
1576 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1577 CALL startime(timers,macro_timer_libh3d)
1579 . h3d_data%PARTS(1)%PART,numels10g,ixs10_p,iparts10_p,numels16g,ixs16_p
1580 . iparts16_p,numels20g,ixs20_p,iparts20_p)
1581 CALL stoptime(timers,macro_timer_libh3d)
1588 IF(h3d_data%IH3D == 1)
THEN
1591 ixq_tmp(1,i) = ixq(1,i)
1593 ixq_tmp(j,i) = itab(ixq(j,i))
1595 ixq_tmp(6:nixq,i) = ixq(6:nixq,i)
1597 CALL startime(timers,macro_timer_spmdh3d)
1599 CALL stoptime(timers,macro_timer_spmdh3d)
1602 ixq_p(1,i) = ixq(1,i)
1604 ixq_p(j,i) = itab(ixq(j,i))
1606 ixq_p(6:nixq,i) = ixq(6:nixq,i)
1610 CALL startime(timers,macro_timer_spmdh3d)
1612 CALL stoptime(timers,macro_timer_spmdh3d)
1615 ipartq_p(i) = ipartq(i)
1621 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1622 CALL startime(timers,macro_timer_libh3d)
1624 . ixq_p,nixq,numelqg,ipartq_p)
1625 CALL stoptime(timers,macro_timer_libh3d)
1632 ALLOCATE(nodal_ipart(numnod),imapskp(
numskinp0))
1634 . ixc, ixtg, ixs,ixs10,ixs16,ixs20,
1638 IF(h3d_data%IH3D == 1 .AND. numsking>0 )
THEN
1642 . itab ,ixskin_tmp ,tag_skins6,
1643 . ibcl,iloadp,lloadp,nodal_ipart,imapskp,loads,pblast)
1647 CALL startime(timers,macro_timer_spmdh3d)
1649 CALL stoptime(timers,macro_timer_spmdh3d)
1651 ixskin_p(1:nixskin,1:numskin) = ixskin_tmp(1:nixskin,1:numskin)
1658 ipartskin_p(i) = ixskin_p(1,i)
1659 ixskin_p(nixskin,i) = i
1661 CALL startime(timers,macro_timer_libh3d)
1664 . ixskin_p,nixskin,numsking,ipartskin_p)
1665 CALL stoptime(timers,macro_timer_libh3d)
1672 IF(ispmd==0.AND. h3d_data%IH3D == 1)
THEN
1673 CALL startime(timers,macro_timer_libh3d)
1675 CALL stoptime(timers,macro_timer_libh3d)
1681 IF(ispmd==0.AND. ( h3d_data%IH3D_RUN == 1))
THEN
1682 CALL startime(timers,macro_timer_libh3d)
1689 CALL stoptime(timers,macro_timer_libh3d)
1699 CALL scanor(x,d,cdg,xmin,ymin,zmin,xmax,
ymax,zmax,scale,
1704 2 nstrf,rwbuf,nprw ,d,xmin,
1705 3 ymin,zmin,xmax,
ymax,zmax,
1706 4 fr_sec,fr_wall,weight,itab,
1707 5 xwl ,ywl , zwl, v1, v2, v3, vv1, vv2, vv3)
1712 IF (h3d_data%N_TITLE /= 0)
THEN
1713 DO i=1,h3d_data%N_TITLE
1714 IF(h3d_data%ITITLE(i) == h3d_data%IH3D)
THEN
1715 h3dtitle = h3d_data%TITLE(i)
1716 len_h3dtitle = len_trim(h3d_data%TITLE(i))
1721 IF(nspmd > 1 .AND. ispmd==0)
THEN
1722 CALL startime(timers,macro_timer_libh3d)
1723 CALL c_h3d_update_nodes(h3dtitle,len_h3dtitle,tt,h3d_data%IH3D,
1724 . itab_p,numnodg,d_p, nrwall, user_nod_id%RWALL_SHIFT,
1725 . xwl ,ywl , zwl, v1, v2,
1726 . v3, vv1, vv2, vv3,kxsp_p,
1727 . nisp,numsphg,tagnod_p,nprw)
1728 CALL stoptime(timers,macro_timer_libh3d)
1729 ELSEIF(ispmd==0 )
THEN
1730 CALL startime(timers,macro_timer_libh3d)
1731 CALL c_h3d_update_nodes(h3dtitle,len_h3dtitle,tt,h3d_data%IH3D,
1732 . itab,numnod,d, nrwall, user_nod_id%RWALL_SHIFT,
1733 . xwl ,ywl , zwl, v1, v2,
1734 . v3, vv1, vv2, vv3,kxsp_p,
1735 . nisp,numsphg,tagnod_p,nprw)
1736 CALL stoptime(timers,macro_timer_libh3d)
1741 IF(
nfvbag > 0 .AND. ispmd==0)
THEN
1742 CALL startime(timers,macro_timer_libh3d)
1745 CALL stoptime(timers,macro_timer_libh3d)
1753 ALLOCATE(nodal_scalar(numnod))
1754 ALLOCATE(nodal_vector(3*numnod))
1755 ALLOCATE(nodal_tensor(6*numnod))
1756 ALLOCATE(node_id(numnod))
1757 ALLOCATE(is_writen_node(numnod))
1758 is_writen_node(1:numnod) = 0
1761 ALLOCATE(nodal_scalar_fvm(airbags_total_fvm_in_h3d_g))
1762 ALLOCATE(nodal_vector_fvm(3*airbags_total_fvm_in_h3d_g))
1763 ALLOCATE(node_id_fvm(airbags_total_fvm_in_h3d_g))
1764 ALLOCATE(is_writen_node_fvm(airbags_total_fvm_in_h3d_g))
1765 is_writen_node_fvm(1:airbags_total_fvm_in_h3d_g) = 0
1767 ALLOCATE(nodal_scalar_fvm(1))
1768 ALLOCATE(nodal_vector_fvm(3*1))
1769 ALLOCATE(node_id_fvm(1))
1770 ALLOCATE(is_writen_node_fvm(1))
1771 is_writen_node_fvm(1:1) = 0
1775 IF (ispmd == 0 )
THEN
1776 ALLOCATE(is_writen_node_p(numnodg))
1777 ALLOCATE(nodal_scalar_p(numnodg))
1778 ALLOCATE(nodal_vector_p(3*numnodg))
1779 ALLOCATE(nodal_tensor_p(6*numnodg))
1780 ALLOCATE(node_id_p(numnodg))
1781 is_writen_node_p(1:numnodg) = 0
1783 ALLOCATE(is_writen_node_p(1))
1784 ALLOCATE(nodal_scalar_p(1))
1785 ALLOCATE(nodal_vector_p(1))
1786 ALLOCATE(nodal_tensor_p(1))
1787 ALLOCATE(node_id_p(1))
1788 is_writen_node_p(1) = 0
1792 ALLOCATE(oned_scalar(numelr+numelp+numelt))
1793 ALLOCATE(oned_vector(3*(numelr+numelp+numelt)))
1794 ALLOCATE(oned_tensor(6*(numelr+numelp+numelt)))
1795 ALLOCATE(oned_torsor(9*(numelr+numelp+numelt)))
1797 ALLOCATE(oned_ity(numelrg+numelpg+numeltrg))
1798 ALLOCATE(is_writen_oned(numelrg+numelpg+numeltrg))
1799 oned_id(1:numelr+numelp+numelt) = 0
1800 oned_ity(1:numelr+numelp+numelt) = 0
1801 is_writen_oned(1:numelr+numelp+numelt) = 0
1803 IF (ispmd == 0 )
THEN
1804 ALLOCATE(oned_scalar_p(numelrg+numelpg+numeltrg))
1805 ALLOCATE(oned_vector_p(3*(numelrg+numelpg+numeltrg)))
1806 ALLOCATE(oned_tensor_p(6*(numelrg+numelpg+numeltrg)))
1807 ALLOCATE(oned_torsor_p(9*(numelrg+numelpg+numeltrg)))
1808 ALLOCATE(oned_id_p(numelrg+numelpg+numeltrg))
1809 ALLOCATE(oned_ity_p(numelrg+numelpg+numeltrg))
1810 ALLOCATE(is_writen_oned_p(numelrg+numelpg+numeltrg))
1811 is_writen_oned_p(1:numelrg+numelpg+numeltrg) = 0
1813 ALLOCATE(oned_scalar_p(1))
1814 ALLOCATE(oned_vector_p(1))
1815 ALLOCATE(oned_tensor_p(1))
1816 ALLOCATE(oned_torsor_p(1))
1817 ALLOCATE(oned_id_p(1))
1818 ALLOCATE(oned_ity_p(1))
1819 ALLOCATE(is_writen_oned_p(1))
1820 is_writen_oned_p(1) = 0
1824 ALLOCATE(shell_scalar(numelc+numeltg))
1825 ALLOCATE(shell_stack(max_shell_stacksize))
1826 ALLOCATE(shell_stack_p(numelcg+numeltgg))
1827 ALLOCATE(shell_vector(3*(numelc+numeltg)))
1828 ALLOCATE(shell_tensor(3*(numelc+numeltg)))
1829 ALLOCATE(shell_id(numelc+numeltg))
1830 ALLOCATE(shell_ity(numelc+numeltg))
1831 ALLOCATE(is_writen_shell(numelc+numeltg))
1832 shell_id(1:numelc+numeltg) = 0
1833 shell_ity(1:numelc+numeltg) = 0
1834 is_writen_shell(1:numelc+numeltg) = 0
1836 IF (ispmd == 0 )
THEN
1837 ALLOCATE(shell_scalar_p(numelcg+numeltgg))
1838 ALLOCATE(shell_vector_p(3*(numelcg+numeltgg)))
1839 ALLOCATE(shell_tensor_p(3*(numelcg+numeltgg)))
1840 ALLOCATE(shell_id_p(numelcg+numeltgg))
1841 ALLOCATE(shell_ity_p(numelcg+numeltgg))
1842 ALLOCATE(is_writen_shell_p(numelcg+numeltgg))
1843 is_writen_shell_p(1:numelcg+numeltgg) = 0
1845 ALLOCATE(shell_scalar_p(1))
1846 ALLOCATE(shell_vector_p(1))
1847 ALLOCATE(shell_tensor_p(1))
1848 ALLOCATE(shell_id_p(1))
1849 ALLOCATE(shell_ity_p(1))
1850 ALLOCATE(is_writen_shell_p(1))
1851 is_writen_shell_p(1) = 0
1856 ALLOCATE(solid_scalar(numels))
1857 ALLOCATE(solid_vector(3*numels))
1858 ALLOCATE(solid_tensor(6*numels))
1859 ALLOCATE(solid_tensor_corner(6*numels*max_ncorn))
1860 ALLOCATE(solid_id(numels))
1861 ALLOCATE(isolnod(numels))
1862 ALLOCATE(solid_ity(numels))
1863 ALLOCATE(is_writen_solid(numels))
1864 solid_id(1:numels) = 0
1865 isolnod(1:numels) = 0
1866 solid_ity(1:numels) = 0
1867 is_writen_solid(1:numels) = 0
1869 IF (ispmd == 0 )
THEN
1870 ALLOCATE(solid_scalar_p(numelsg))
1871 ALLOCATE(solid_vector_p(3*numelsg))
1872 ALLOCATE(solid_tensor_p(6*numelsg))
1873 ALLOCATE(solid_tensor_corner_p(6*numelsg*max_ncorn))
1874 ALLOCATE(solid_id_p(numelsg))
1875 ALLOCATE(solid_ity_p(numelsg))
1876 ALLOCATE(isolnod_p(numelsg))
1877 ALLOCATE(is_writen_solid_p(numelsg))
1878 is_writen_solid_p(1:numelsg) = 0
1880 ALLOCATE(solid_scalar_p(1))
1881 ALLOCATE(solid_vector_p(1))
1882 ALLOCATE(solid_tensor_p(1))
1883 ALLOCATE(solid_tensor_corner_p(1))
1884 ALLOCATE(solid_id_p(1))
1885 ALLOCATE(solid_ity_p(1))
1886 ALLOCATE(isolnod_p(1))
1887 ALLOCATE(is_writen_solid_p(1))
1888 is_writen_solid_p(1) = 0
1892 ALLOCATE(sph_scalar(numsph))
1893 ALLOCATE(sph_tensor(6*numsph))
1894 ALLOCATE(sph_id(numsph))
1895 ALLOCATE(is_writen_sph(numsph))
1896 sph_id(1:numsph) = 0
1897 is_writen_sph(1:numsph) = 0
1899 IF (ispmd == 0 )
THEN
1900 ALLOCATE(sph_scalar_p(numsphg))
1901 ALLOCATE(sph_tensor_p(6*numsphg))
1902 ALLOCATE(sph_id_p(numsphg))
1903 ALLOCATE(is_writen_sph_p(numsphg))
1904 is_writen_sph_p(1:numsphg) = 0
1906 ALLOCATE(sph_scalar_p(1))
1907 ALLOCATE(sph_tensor_p(1))
1908 ALLOCATE(sph_id_p(1))
1909 ALLOCATE(is_writen_sph_p(1))
1910 is_writen_sph_p(1) = 0
1914 ALLOCATE(quad_scalar(numelq))
1915 ALLOCATE(quad_vector(3*numelq))
1916 ALLOCATE(quad_tensor(6*numelq))
1917 ALLOCATE(quad_id(numelq
1918 ALLOCATE(is_writen_quad(numelq))
1919 quad_id(1:numelq) = 0
1920 is_writen_quad(1:numelq) = 0
1922 IF (ispmd == 0 )
THEN
1923 ALLOCATE(quad_scalar_p(numelqg))
1924 ALLOCATE(quad_vector_p(3*numelqg))
1925 ALLOCATE(quad_tensor_p(6*numelqg))
1926 ALLOCATE(quad_id_p(numelqg
1927 ALLOCATE(is_writen_quad_p(numelqg))
1928 is_writen_quad_p(1:numelqg) = 0
1930 ALLOCATE(quad_scalar_p(1))
1931 ALLOCATE(quad_vector_p(1))
1932 ALLOCATE(quad_tensor_p(1))
1933 ALLOCATE(quad_id_p(1))
1934 ALLOCATE(is_writen_quad_p(1))
1935 is_writen_quad_p(1) = 0
1938 ALLOCATE(skin_tensor(3*numskin))
1939 ALLOCATE(skin_vector(3*numskin))
1940 ALLOCATE(skin_scalar(numskin))
1941 ALLOCATE(is_writen_skin(numskin))
1942 is_writen_skin(1:numskin) = 0
1944 IF (ispmd == 0 )
THEN
1945 ALLOCATE(skin_tensor_p(3*numsking))
1946 ALLOCATE(skin_vector_p(3*numsking))
1947 ALLOCATE(skin_scalar_p(numsking))
1948 ALLOCATE(skin_id_p(numsking))
1949 ALLOCATE(is_writen_skin_p(numsking))
1950 is_writen_skin_p(1:numsking) = 0
1952 ALLOCATE(skin_tensor_p(1))
1953 ALLOCATE(skin_vector_p(1))
1954 ALLOCATE(skin_scalar_p(1))
1955 ALLOCATE(skin_id_p(1))
1956 ALLOCATE(is_writen_skin_p(1))
1957 is_writen_skin_p(1) = 0
1966 . elbuf_tab ,iparg ,ixc, ixtg,numelc,shell_scalar, shell_id, shell_ity,
1967 . ipart, ipartc ,iparttg)
1969 IF (nspmd > 1 )
THEN
1970 CALL startime(timers,macro_timer_spmdh3d)
1973 CALL spmd_h3d_gather_r(shell_scalar,numelc+numeltg,shell_scalar_p,numelcg+numeltgg)
1978 IF (ispmd == 0)
THEN
1979 sh_tria_spmd_offsets(1) = 0
1981 sh_tria_spmd_offsets(i) = sh_tria_spmd_offsets(i-1) + tmp_offsets(i-1)
1985 CALL stoptime(timers,macro_timer_spmdh3d)
1987 shell_id_p(1:numelc+numeltg) = shell_id(1:numelc+numeltg)
1988 shell_ity_p(1:numelc+numeltg) = shell_ity(1:numelc+numeltg)
1989 shell_scalar_p(1:numelc+numeltg) = shell_scalar(1:numelc+numeltg)
1993 CALL startime(timers,macro_timer_libh3d)
1995 . nixc,numelcg,ipartc,ixtg,nixtg,
1996 . numeltgg,iparttg,shell_scalar_p,shell_id_p,
1997 . h3d_data%N_OUTP_H3D+3,shell_ity_p,numels,
1998 . numelq,numelt,numelp,numelr)
1999 CALL stoptime(timers,macro_timer_libh3d)
2003 . elbuf_tab ,iparg ,ixs ,solid_scalar, solid_id, solid_ity, isolnod)
2005 IF (nspmd > 1 )
THEN
2006 CALL startime(timers,macro_timer_spmdh3d)
2011 CALL stoptime(timers,macro_timer_spmdh3d)
2013 solid_id_p(1:numels) = solid_id(1:numels)
2014 solid_ity_p(1:numels) = solid_ity(1:numels)
2015 solid_scalar_p(1:numels) = solid_scalar(1:numels)
2016 isolnod_p(1:numels) = isolnod(1:numels)
2020 CALL startime(timers,macro_timer_libh3d)
2022 . nixs,numelsg,iparts,solid_scalar_p,solid_id_p,
2023 . h3d_data%N_OUTP_H3D+4,solid_ity_p,
2024 . numelq,numelt,numelp,numelr)
2025 CALL stoptime(timers,macro_timer_libh3d)
2030 . elbuf_tab ,iparg ,ixt, ixp, ixr ,oned_scalar, oned_id, oned_ity,
2031 . ipart , ipartt ,ipartp ,ipartr)
2033 IF (nspmd > 1 )
THEN
2034 CALL startime(timers,macro_timer_spmdh3d)
2035 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2036 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2037 CALL spmd_h3d_gather_r(oned_scalar,numelt+numelp+numelr,oned_scalar_p,numeltrg+numelpg+numelrg)
2038 CALL stoptime(timers,macro_timer_spmdh3d)
2040 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2041 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2042 oned_scalar_p(1:numelt+numelp+numelr) = oned_scalar(1:numelt+numelp+numelr)
2046 CALL startime(timers,macro_timer_libh3d)
2048 . nixt,numeltrg,ipartt,ixp_p,nixp,
2049 . numelpg,ipartp,ixr_p,nixr,numelrg,
2050 . ipartr,oned_scalar_p,oned_id_p,h3d_data%N_OUTP_H3D+5,oned_ity_p)
2051 CALL stoptime(timers,macro_timer_libh3d)
2056 . elbuf_tab ,iparg ,kxsp ,sph_scalar, sph_id)
2058 IF (nspmd > 1 )
THEN
2059 CALL startime(timers,macro_timer_spmdh3d)
2062 CALL stoptime(timers,macro_timer_spmdh3d)
2064 sph_id_p(1:numsph) = sph_id(1:numsph)
2065 sph_scalar_p(1:numsph) = sph_scalar(1:numsph)
2069 CALL startime(timers,macro_timer_libh3d)
2071 . h3d_data%N_OUTP_H3D+6)
2072 CALL stoptime(timers,macro_timer_libh3d)
2077 . elbuf_tab ,iparg ,ixq,quad_scalar, quad_id,
2080 IF (nspmd > 1 )
THEN
2081 CALL startime(timers,macro_timer_spmdh3d)
2084 CALL stoptime(timers,macro_timer_spmdh3d)
2086 quad_id_p(1:numelq) = quad_id(1:numelq)
2087 quad_scalar_p(1:numelq) = quad_scalar(1:numelq)
2091 CALL startime(timers,macro_timer_libh3d)
2093 . nixq,numelqg,ipartq,quad_scalar_p,quad_id_p,
2094 . h3d_data%N_OUTP_H3D+7)
2095 CALL stoptime(timers,macro_timer_libh3d)
2098 CALL h3d_skin_off(elbuf_tab,iparg,ixs,ixs10,tag_skins6,skin_scalar)
2099 IF (nspmd > 1 )
THEN
2100 CALL startime(timers,macro_timer_spmdh3d)
2102 CALL stoptime(timers,macro_timer_spmdh3d)
2104 skin_scalar_p(1:numskin) = skin_scalar(1:numskin)
2111 CALL startime(timers,macro_timer_libh3d)
2113 . h3d_data%N_OUTP_H3D+8,numsking)
2114 CALL stoptime(timers,macro_timer_libh3d)
2120 DO i = 1,h3d_data%N_OUTP_H3D
2124 IF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .AND.
2125 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1)
THEN
2127 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2128 inter_input = h3d_data%OUTPUT_LIST(i)%INTER
2129 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2130 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2131 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2132 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2133 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2135 IF(keyword ==
'SKID_LINE')
THEN
2137 IF(ni == inter_input )
THEN
2138 interskid = h3d_data%N_SKID_INTER (ni)
2139 ityskid = ipari(7,ni)
2145 IF(keyword ==
'CSE_FRIC')
THEN
2147 IF(ni == inter_input )
THEN
2148 interfric = h3d_data%N_CSE_FRIC_INTER (ni)
2158 . elbuf_tab ,nodal_scalar ,ifunc ,iparg ,geo ,
2159 . mas ,pm ,anin ,itab ,node_id ,
2160 . info1 ,info2 ,is_writen_node ,h3d_data%OUTPUT_LIST(i)%PART ,ipartc ,
2161 . iparttg ,ixc ,ixtg ,temp ,iflow ,
2162 . rflow ,ixs ,ixq ,nv46 ,monvol ,
2163 . volmon ,ale_connect ,diag_sms ,ms ,pdama2 ,
2164 . x ,stifr ,stifn ,keyword ,h3d_data ,
2165 . npby ,rby ,interskid ,h3d_data%N_SCAL_SKID ,pskids ,
2166 . nodglob ,ityskid ,ipartsp ,ipartr ,ipartp ,
2167 . ipartt ,iparts ,ipartq ,kxsp ,ixr ,
2168 . ixp ,ixt ,n_h3d_part_list,interfric ,csefric ,
2169 . csefricg ,csefric_stamp ,csefricg_stamp ,nodal_scalar_fvm ,airbags_total_fvm_in_h3d_g,
2170 . is_writen_node_fvm,ispmd ,fvdata_p ,user_nod_id%FVMBAG_SHIFT ,multi_fvm ,
2171 . glob_therm%ITHERM_FE,
nfvbag)
2174 IF (nspmd > 1 )
THEN
2175 CALL startime(timers,macro_timer_spmdh3d)
2177 IF(keyword ==
'SKID_LINE')
THEN
2179 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2180 IF(ityskid== 21)
THEN
2182 . interskid,h3d_data%N_SCAL_SKID)
2186 ELSEIF(keyword ==
'CSE_FRIC'.AND.interfric > 0)
THEN
2188 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2193 nodal_scalar_p(1:numnodg) =csefric_stamp(interfric-
ninefric,1:numnodg)
2196 ELSEIF((keyword ==
'CSE_FRIC'.AND.interfric == 0).OR.keyword ==
'CSE_FRICG')
THEN
2198 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2199 IF(nintstamp==0)
THEN
2204 nodal_scalar_p(1:numnodg) =nodal_scalar_p(1:numnodg) + csefricg_stamp(1:numnodg)
2212 CALL stoptime(timers,macro_timer_spmdh3d)
2214 node_id_p(1:numnod) = node_id(1:numnod)
2215 is_writen_node_p(1:numnod) = is_writen_node(1:numnod)
2216 nodal_scalar_p(1:numnod) = nodal_scalar(1:numnod)
2219 ! nodal scalar
for /node entities
2221 CALL startime(timers,macro_timer_libh3d)
2224 CALL stoptime(timers,macro_timer_libh3d)
2230 IF(airbags_total_fvm_in_h3d_g > 0)
THEN
2231 DO j=1,airbags_total_fvm_in_h3d_g
2232 node_id_fvm(j) = user_nod_id%FVMBAG_SHIFT + j
2234 CALL startime(timers,macro_timer_libh3d)
2236 . n_outp_data,is_writen_node_fvm)
2237 CALL stoptime(timers,macro_timer_libh3d)
2244 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 1 .AND.
2245 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2)
THEN
2247 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2248 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2249 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2250 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2251 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2252 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2258 . elbuf_tab ,nodal_vector , ifunc ,iparg ,geo ,
2259 . mas ,pm , anin ,itab ,node_id ,
2260 . info1 ,info2 , is_writen_node,h3d_data%OUTPUT_LIST(i)%PART,
2262 . iparttg ,ixc , ixtg ,temp ,iflow ,
2264 . diag_sms ,ms , pdama2 ,x ,volmon ,
2267 . fncont ,fncontg , ftcont ,ftcontg ,fncont2 ,
2268 . dr ,dxancg , fanreac ,fcluster ,mcluster ,
2270 . ipari ,igrnod , weight ,nodglob ,fcont_max ,
2271 . fncontp2 ,ftcontp2 , ar
2272 . ipartp ,ipartt , iparts ,ipartq ,kxsp
2275 . is_writen_node_fvm,airbags_total_fvm_in_h3d_g,smonvol ,svolmon ,ispmd ,
2276 . fvdata_p ,user_nod_id%FVMBAG_SHIFT ,w ,sw ,x_c )
2279 IF (nspmd > 1 )
THEN
2280 IF(keyword ==
'CONT'.OR.keyword ==
'PCONT/NORMAL'.OR.keyword ==
'PCONT/TANGENT'.OR.keyword ==
'FEXT'
2281 . .OR.(keyword ==
'CONT2'.OR.keyword ==
'PCONT2/NORMAL'.OR.keyword ==
'PCONT2/TANGENT')
2282 . .OR.(keyword ==
'CONT2/MOMENT'))
THEN
2283 CALL startime(timers,macro_timer_spmdh3d)
2285 CALL spmd_outpitab(is_writen_node,weight,nodglob,is_writen_node_p)
2286 IF(nintstamp==0.OR.keyword ==
'CONT2'.OR.keyword ==
'PCONT2/NORMAL'.OR.keyword ==
'PCONT2/NORMAL'
2287 . .OR.keyword ==
'PCONT2/TANGENT'.OR.keyword ==
'FEXT')
THEN
2289 ELSEIF(keyword ==
'CONT')
THEN
2291 ELSEIF(keyword ==
'PCONT/NORMAL')
THEN
2293 ELSEIF(keyword ==
'PCONT/TANGENT')
THEN
2295 ELSEIF(keyword ==
'CONT2/MOMENT')
THEN
2298 CALL stoptime(timers,macro_timer_spmdh3d)
2300 ELSEIF(nintstamp/=0.AND.((keyword ==
'CONT/TMAX''MAXPCONT/NORMAL') .OR.
2301 . (keyword ==
'MAXPCONT/TANGENT')))
THEN
2302 IF(keyword ==
'CONT/TMAX')
THEN
2304 nodal_vector_p(1:3*numnodg) =fcont_max(1:3*numnodg)
2306 ELSEIF(keyword ==
'MAXPCONT/NORMAL')
THEN
2308 nodal_vector_p(1:3*numnodg) =fncont_max(1:3*numnodg)
2310 ELSEIF(keyword ==
'MAXPCONT/TANGENT'THEN
2312 nodal_vector_p(1:3*numnodg) =ftcont_max(1:3*numnodg)
2317 CALL startime(timers,macro_timer_spmdh3d)
2321 CALL stoptime(timers,macro_timer_spmdh3d)
2326 node_id_p(1:numnod) = node_id(1:numnod)
2328 nodal_vector_p(1:3*numnod) =
2334 CALL startime(timers,macro_timer_libh3d)
2336 . n_outp_data,is_writen_node_p)
2337 CALL stoptime(timers,macro_timer_libh3d)
2342 IF(ispmd == 0 .AND. airbags_total_fvm_in_h3d_g > 0)
THEN
2344 DO j=1,airbags_total_fvm_in_h3d_g
2345 node_id_fvm(j) = user_nod_id%FVMBAG_SHIFT + j
2349 . n_outp_data,is_writen_node_fvm)
2350 CALL stoptime(timers,macro_timer_libh3d)
2357 ELSEIF(h3d_data%OUTPUT_LIST
2358 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3)
THEN
2360 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2361 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2362 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2363 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2364 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2365 n_h3d_part_list = h3d_data%OUTPUT_LIST(i)%N_H3D_PART_LIST
2371 . elbuf_tab, nodal_tensor ,ifunc ,iparg,geo ,mas ,pm ,
2373 . is_writen_node,h3d_data%OUTPUT_LIST(i
2374 . ixc, ixtg,temp,iflow,rflow,ixs,ixq,nv46,monvol ,volmon, diag_sms
2375 . pdama2,x, stifr, stifn, a, d, v, cont, fcontg, fint, fext,keyword,
2376 . bufmat ,ixs10 ,ixs16 ,ixs20 ,ixt ,
2377 . ixp ,ixr ,iad_elem ,fr_elem ,weight ,
2378 . ipartsp ,ipartr ,ipartp ,ipartt ,iparts ,
2379 . ipartq ,kxsp ,n_h3d_part_list)
2382 IF (nspmd > 1 )
THEN
2383 CALL startime(timers,macro_timer_spmdh3d)
2387 CALL stoptime(timers,macro_timer_spmdh3d)
2389 node_id_p(1:numnod) = node_id(1:numnod)
2390 is_writen_node_p(1:numnod) = is_writen_node(1:numnod)
2391 nodal_tensor_p(1:6*numnod) = nodal_tensor(1:6*numnod)
2395 CALL startime(timers,macro_timer_libh3d)
2397 . n_outp_data,is_writen_node_p)
2398 CALL stoptime(timers,macro_timer_libh3d)
2404 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND.
2405 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. (numeltrg
THEN
2407 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2408 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2409 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2410 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2411 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2412 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2417 sz_anin = sanin - ndma2
2418 CALL h3d_oned_scalar(elbuf_tab ,iparg ,geo , ixt,
2419 . ixp ,ixr ,pm , anin
2420 . oned_scalar ,oned_id
2422 . keyword, x , d ,ipt,
2423 . numelp, numelt, numelr,nixt,nixp,
2424 . nixr, ngroup, anim_fe, mx_ani, nparg,
2425 . npropm, npropg, nummat, numgeo
2426 . sz_anin, numelpg, numelrg, numeltrg, npart)
2429 IF (nspmd > 1 )
THEN
2430 CALL startime(timers,macro_timer_spmdh3d)
2431 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2432 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2433 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2434 CALL spmd_h3d_gather_r(oned_scalar,numelt+numelp+numelr,oned_scalar_p,numeltrg+numelpg+numelrg)
2435 CALL stoptime(timers,macro_timer_spmdh3d)
2437 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2438 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2439 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2440 oned_scalar_p(1:numelt+numelp+numelr) = oned_scalar(1:numelt+numelp+numelr)
2444 CALL startime(timers,macro_timer_libh3d)
2446 . n_outp_data,oned_ity_p,is_writen_oned_p)
2447 CALL stoptime(timers,macro_timer_libh3d)
2453 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2454 . h3d_data%OUTPUT_LIST
THEN
2456 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2457 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2458 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2459 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2460 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2466 . ixt ,ixp ,ixr ,pm ,
2467 . anin(ndma2+1),oned_vector,
2468 . oned_id ,oned_ity,info1 ,info2 , is_writen_oned ,
2469 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,
2470 . keyword , x , d ,tors )
2473 IF (nspmd > 1 )
THEN
2474 CALL startime(timers,macro_timer_spmdh3d)
2475 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2476CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2477 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2479 CALL stoptime(timers,macro_timer_spmdh3d)
2481 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2482 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2483 is_writen_oned_p(1:numelt+numelp+numelr
2484 oned_vector_p(1:3*(numelt
2488 CALL startime(timers,macro_timer_libh3d)
2490 . n_outp_data,oned_ity_p,is_writen_oned_p)
2491 CALL stoptime(timers,macro_timer_libh3d)
2497 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2498 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2500 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2501 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2502 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2503 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2504 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2505 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2511 . ixt ,ixp ,ixr ,pm ,
2512 . anin(ndma2+1),oned_tensor,
2513 . oned_id ,oned_ity,info1 ,info2 , is_writen_oned ,
2514 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,
2517 IF (nspmd > 1 )
THEN
2518 CALL startime(timers,macro_timer_spmdh3d)
2519 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2520 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2521 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2522 CALL spmd_h3d_gather_r(oned_tensor,6*(numelt+numelp+numelr),oned_tensor_p,6*(numeltrg+numelpg+numelrg))
2523 CALL stoptime(timers,macro_timer_spmdh3d)
2525 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2526 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2527 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2528 oned_tensor_p(1:6*(numelt
2532 CALL startime(timers,macro_timer_libh3d)
2534 . n_outp_data,oned_ity_p,is_writen_oned_p)
2535 CALL stoptime(timers,macro_timer_libh3d)
2541 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 4 .AND.
2542 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 4 .AND. (numeltrg+numelpg+numelrg) > 0)
THEN
2544 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2545 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2546 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2547 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2548 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2554 . ixr ,tors ,oned_torsor,oned_id ,
2555 . oned_ity,info1 ,info2 , is_writen_oned,
2556 . ipartt ,ipartp,ipartr,h3d_data%OUTPUT_LIST(i)%PART,keyword)
2559 IF (nspmd > 1 )
THEN
2560 CALL startime(timers,macro_timer_spmdh3d)
2561 CALL spmd_h3d_gather_i(oned_id,numelt+numelp+numelr,oned_id_p,numeltrg+numelpg+numelrg)
2562 CALL spmd_h3d_gather_i(oned_ity,numelt+numelp+numelr,oned_ity_p,numeltrg+numelpg+numelrg)
2563 CALL spmd_h3d_gather_i(is_writen_oned,numelt+numelp+numelr,is_writen_oned_p,numeltrg+numelpg+numelrg)
2564 CALL spmd_h3d_gather_r(oned_torsor,9*(numelt+numelp+numelr),oned_torsor_p,9*(numeltrg+numelpg+numelrg))
2567 oned_id_p(1:numelt+numelp+numelr) = oned_id(1:numelt+numelp+numelr)
2568 oned_ity_p(1:numelt+numelp+numelr) = oned_ity(1:numelt+numelp+numelr)
2569 is_writen_oned_p(1:numelt+numelp+numelr) = is_writen_oned(1:numelt+numelp+numelr)
2570 oned_torsor_p(1:9*(numelt+numelp+numelr)) = oned_torsor(1:9*(numelt+numelp+numelr))
2574 CALL startime(timers,macro_timer_libh3d)
2576 . n_outp_data,oned_ity_p,is_writen_oned_p)
2577 CALL stoptime(timers,macro_timer_libh3d)
2582 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND.
2583 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. (numelcg+numeltgg) > 0)
THEN
2585 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2586 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2587 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2588 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2589 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2590 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2591 gauss = h3d_data%OUTPUT_LIST(i)%GAUSS
2592 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2593 idmds = h3d_data%OUTPUT_LIST(i)%IDMDS
2594 imdsvar = h3d_data%OUTPUT_LIST(i)%IMDSVAR
2595 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2596 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2597 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2598 mode = h3d_data%OUTPUT_LIST(i)%MODE
2605 . elbuf_tab ,shell_stack ,iparg ,geo ,
2606 . ixc ,ixtg ,pm ,bufmat ,
2608 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2609 . x ,v ,w ,ale_connect,
2610 . nercvois ,nesdvois ,lercvois ,lesdvois ,
2611 . stack ,shell_id ,shell_ity ,
2612 . is_writen_shell,ipartc ,iparttg ,layer ,ipt ,
2613 . id_ply ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,glob_therm%ITHERM,
2614 . d ,multi_fvm ,idmds ,imdsvar ,mds_matid ,
2615 . object_id ,mode ,mat_param ,h3d_data%LIGHT,max_shell_stacksize,
2621 is_writen_shell_p(1:shell_stacksize) = is_writen_shell(1:shell_stacksize)
2622 shell_stack_p(1:shell_stacksize) = shell_stack(1:shell_stacksize)
2623 shell_stacksize_p0 = shell_stacksize
2625 shell_stacksize_p0 = 1
2627 IF (nspmd > 1 )
THEN
2628 CALL startime(timers,macro_timer_spmdh3d)
2635 CALL h3d_gather_id_val(is_writen_shell,shell_stack,shell_stacksize,
2636 * is_writen_shell_p,shell_stack_p,numelcg+numeltgg,
2637 * shell_stacksize_p0,gather_size,sh_tria_spmd_offsets,nspmd,ispmd,it_spmd)
2639 CALL stoptime(timers,macro_timer_spmdh3d)
2644 CALL startime(timers,macro_timer_libh3d)
2646 . nixc,numelcg,ipartc,ixtg,nixtg,
2647 . numeltgg,iparttg,shell_stack_p,shell_id_p,
2648 . n_outp_data,shell_ity_p,numels,
2649 . numelq,numelt,numelp,numelr,is_writen_shell_p,
2650 . shell_stacksize_p0)
2651 CALL stoptime(timers,macro_timer_libh3d)
2657 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 2 .AND.
2658 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. (numelcg+numeltgg) > 0)
THEN
2660 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2661 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2662 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2663 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2664 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2665 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2666 gauss = h3d_data%OUTPUT_LIST(i)%GAUSS
2667 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2668 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2669 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2675 . elbuf_tab ,shell_vector ,ifunc ,iparg,geo ,
2676 . ixq ,ixc ,ixtg ,pm ,
2678 . nbf_l ,eani ,anin(ndma2+1) ,nbpart ,iadg ,
2679 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2681 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
2682 . stack ,shell_id ,shell_ity ,info1 ,info2 ,
2683 . is_writen_shell,ipartc ,iparttg ,layer ,ipt ,
2684 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,
2687 IF (nspmd > 1 )
THEN
2688 CALL startime(timers,macro_timer_spmdh3d)
2689 CALL spmd_h3d_gather_i(is_writen_shell,numelc+numeltg,is_writen_shell_p,numelcg+numeltgg)
2690 CALL spmd_h3d_gather_r(shell_vector,3*(numelc+numeltg),shell_vector_p,3*(numelcg+numeltgg))
2691 CALL stoptime(timers,macro_timer_spmdh3d)
2693 is_writen_shell_p(1:numelc+numeltg) = is_writen_shell(1:numelc+numeltg)
2694 shell_vector_p(1:3*(numelc+numeltg)) = shell_vector(1:3*(numelc+numeltg))
2699 CALL startime(timers,macro_timer_libh3d)
2701 . nixc,numelcg,ipartc,ixtg,nixtg,
2702 . numeltgg,iparttg,shell_vector_p,shell_id_p,
2703 . n_outp_data,shell_ity_p,numels,
2704 . numelq,numelt,numelp,numelr,is_writen_shell_p)
2705 CALL stoptime(timers,macro_timer_libh3d)
2711 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE ==
2712 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. (numelcg+numeltgg) > 0)
THEN
2714 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2715 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2716 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2717 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2718 ipt = h3d_data%OUTPUT_LIST(i)%IPT
2719 id_ply = h3d_data%OUTPUT_LIST(i)%PLY
2720 gauss = h3d_data%OUTPUT_LIST(i)%GAUSS
2721 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2722 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2723 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2724 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2726 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2727 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2728 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2729 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2736 . nbf_l ,nbpart,iadg ,x ,ixc ,
2737 . igeo ,ixtg ,ipm ,stack ,shell_id ,shell_ity
2738 . info2 ,is_writen_shell ,ipartc ,iparttg ,layer ,ipt ,
2739 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART ,keyword,d ,
2740 . object_id ,bufmat ,mat_param,geo ,drape_sh4n, drape_sh3n, drapeg)
2743 IF (nspmd > 1 )
THEN
2744 CALL startime(timers,macro_timer_spmdh3d)
2745 CALL spmd_h3d_gather_i(is_writen_shell,numelc+numeltg,is_writen_shell_p,numelcg+numeltgg)
2746 CALL spmd_h3d_gather_r(shell_tensor,3*(numelc+numeltg),shell_tensor_p,3*(numelcg+numeltgg))
2747 CALL stoptime(timers,macro_timer_spmdh3d)
2749 is_writen_shell_p(1:numelc+numeltg) = is_writen_shell(1:numelc+numeltg)
2750 shell_tensor_p(1:3*(numelc+numeltg)) = shell_tensor(1:3*(numelc+numeltg))
2754 CALL startime(timers,macro_timer_libh3d)
2756 . nixc,numelcg,ipartc,ixtg,nixtg
2757 . numeltgg,iparttg,shell_tensor_p,shell_id_p,
2760 CALL stoptime(timers,macro_timer_libh3d)
2767 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2768 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numelsg > 0)
THEN
2770 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2771 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2772 info2 = h3d_data%OUTPUT_LIST
2773 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2774 ir = h3d_data%OUTPUT_LIST(i)%IR
2775 is = h3d_data%OUTPUT_LIST
2776 it = h3d_data%OUTPUT_LIST(i)%IT
2777 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2778 idmds = h3d_data%OUTPUT_LIST(i)%IDMDS
2779 imdsvar = h3d_data%OUTPUT_LIST(i)%IMDSVAR
2780 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2781 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2782 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2783 mode = h3d_data%OUTPUT_LIST(i)%MODE
2791 . x ,v ,w ,ale_connect,
2792 . nercvois,nesdvois, lercvois,lesdvois,
2793 . solid_id ,solid_ity ,iparts ,layer ,
2794 . ir ,is ,it ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,
2795 . is_writen_solid,info1,keyword ,glob_therm%ITHERM,
fani_cell ,
2796 . multi_fvm, idmds ,imdsvar ,
2797 . object_id ,mat_param ,mode )
2799 IF (nspmd > 1 )
THEN
2800 CALL startime(timers,macro_timer_spmdh3d)
2803 CALL stoptime(timers,macro_timer_spmdh3d)
2805 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2806 solid_scalar_p(1:numels) = solid_scalar(1:numels)
2810 CALL startime(timers,macro_timer_libh3d)
2812 . nixs,numelsg,iparts,solid_scalar_p,solid_id_p,
2813 . n_outp_data,solid_ity_p,
2814 . numelq,numelt,numelp,numelr,is_writen_solid_p)
2815 CALL stoptime(timers,macro_timer_libh3d)
2821 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2822 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numelsg > 0)
THEN
2824 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2825 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2826 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2827 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2828 ir = h3d_data%OUTPUT_LIST(i)%IR
2829 is = h3d_data%OUTPUT_LIST(i)%IS
2830 it = h3d_data%OUTPUT_LIST(i)%IT
2831 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2832 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2833 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2837 . elbuf_tab ,solid_vector ,ifunc ,iparg,geo ,
2838 . ixq ,ixs ,ixtg ,pm ,
2840 . nbf_l ,eani ,anin(ndma2+1) ,nbpart ,iadg ,
2841 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2843 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
2844 . stack ,solid_id ,solid_ity ,iparts ,layer ,
2845 . ir ,is ,it ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,
2846 . is_writen_solid,info1,keyword ,
fani_cell ,
2847 . h3d_data, multi_fvm)
2849 IF (nspmd > 1 )
THEN
2850 CALL startime(timers,macro_timer_spmdh3d)
2853 CALL stoptime(timers,macro_timer_spmdh3d)
2855 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2856 solid_vector_p(1:3*numels) = solid_vector(1:3*numels)
2860 CALL startime(timers,macro_timer_libh3d)
2862 . nixs,numelsg,iparts,solid_vector_p
2863 . n_outp_data,solid_ity_p,
2864 . numelq,numelt,numelp,numelr,is_writen_solid_p)
2865 CALL stoptime(timers,macro_timer_libh3d)
2871 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 3.AND.
2872 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numelsg > 0)
THEN
2874 ifunc = h3d_data%OUTPUT_LIST(i)%ID
2875 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
2876 info2 = h3d_data%OUTPUT_LIST(i)%INFO2
2877 layer = h3d_data%OUTPUT_LIST(i)%LAYER
2878 ir = h3d_data%OUTPUT_LIST(i)%IR
2879 is = h3d_data%OUTPUT_LIST(i)%IS
2880 it = h3d_data%OUTPUT_LIST(i)%IT
2881 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2882 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2883 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2884 is_corner_data = h3d_data%OUTPUT_LIST(i)%IS_CORNER_DATA
2888 . elbuf_tab,solid_tensor, iparg ,ifunc ,ixs ,pm ,
2889 2 el2fa ,nnn ,waft ,tani ,
2890 3 nbpart ,x ,iadg ,ipart ,
2891 4 ipartsp ,iparts ,isph3d ,ipm ,igeo , solid_id ,solid_ity , is_writen_solid,
2892 5 layer , ir ,is ,it ,h3d_data%OUTPUT_LIST(i)%PART,info1 ,keyword ,d ,
2893 6 solid_tensor_corner,is_corner_data , ixs10 ,max_ncorn,object_id)
2895 IF (nspmd > 1 )
THEN
2896 CALL startime(timers,macro_timer_spmdh3d)
2899 IF (is_corner_data == 1)
2900 .
CALL spmd_h3d_gather_r(solid_tensor_corner,6*numels*max_ncorn,solid_tensor_corner_p,6*numelsg*max_ncorn)
2901 CALL stoptime(timers,macro_timer_spmdh3d)
2903 is_writen_solid_p(1:numels) = is_writen_solid(1:numels)
2904 solid_tensor_p(1:6*numels) = solid_tensor(1:6*numels)
2905 IF (is_corner_data == 1)
2906 . solid_tensor_corner_p(1:6*numels*max_ncorn) = solid_tensor_corner(1:6*numels*max_ncorn)
2910 CALL startime(timers,macro_timer_libh3d)
2912 . nixs,numelsg,iparts,solid_tensor_p,solid_id_p,
2913 . n_outp_data,solid_ity_p,
2914 . numelq,numelt,numelp,numelr,is_writen_solid_p,
2915 3 solid_tensor_corner_p,is_corner_data,isolnod_p,max_ncorn)
2916 CALL stoptime(timers,macro_timer_libh3d)
2922 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST
2923 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numsphg > 0)
THEN
2925 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
2926 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2927 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2928 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
2932 . elbuf_tab ,sph_scalar,ifunc ,iparg ,
2935 . sph_id ,ipartsp ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,
2936 . is_writen_sph,keyword,spbuf, object_id )
2939 IF (nspmd > 1 )
THEN
2940 CALL startime(timers,macro_timer_spmdh3d)
2944 CALL stoptime(timers,macro_timer_spmdh3d)
2946 sph_id_p(1:numsph) = sph_id(1:numsph)
2947 is_writen_sph_p(1:numsph) = is_writen_sph(1:numsph)
2948 sph_scalar_p(1:numsph) = sph_scalar(1:numsph)
2952 CALL startime(timers,macro_timer_libh3d)
2954 . nisp,numsphg,iparts,sph_scalar_p,sph_id_p,
2956 . numelq,numelt,numelp,numelr,is_writen_sph_p)
2957 CALL stoptime(timers,macro_timer_libh3d)
2963 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 5.AND.
2964 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numsphg > 0)
THEN
2966 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
2967 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
2971 . elbuf_tab,sph_tensor, iparg ,ifunc ,kxsp ,pm ,
2972 2 el2fa ,nnn ,waft ,tani ,
2973 3 nbpart ,x ,iadg ,ipart ,
2974 4 ipartsp ,isph3d ,ipm ,igeo , sph_id , is_writen_sph,
2975 5 h3d_data%OUTPUT_LIST(i)%PART,keyword )
2977 IF (nspmd > 1 )
THEN
2978 CALL startime(timers,macro_timer_spmdh3d)
2982 CALL stoptime(timers,macro_timer_spmdh3d)
2984 sph_id_p(1:numsph) = sph_id(1:numsph)
2985 is_writen_sph_p(1:numsph) = is_writen_sph(1:numsph)
2986 sph_tensor_p(1:6*numsph) = sph_tensor(1:6*numsph)
2990 CALL startime(timers,macro_timer_libh3d)
2992 . n_outp_data,is_writen_sph_p)
2993 CALL stoptime(timers,macro_timer_libh3d)
2999 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3000 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numelqg > 0)
THEN
3002 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3003 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3004 ir = h3d_data%OUTPUT_LIST(i)%IR
3005 is = h3d_data%OUTPUT_LIST(i)%IS
3006 it = h3d_data%OUTPUT_LIST(i)%IT
3007 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3008 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3009 object_id = h3d_data%OUTPUT_LIST(i)%OBJECT_ID
3017 . elbuf_tab ,quad_scalar ,iparg,
3021 . x ,v ,w ,ale_connect,
3022 . nercvois ,nesdvois ,lercvois
3024 . is_writen_quad,ipartq ,layer , npart,
3025 . iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,glob_therm%ITHERM,
3026 . bufmat ,multi_fvm ,ir ,is ,it ,
3027 . object_id ,mat_param)
3029 IF (nspmd > 1 )
THEN
3030 CALL startime(timers,macro_timer_spmdh3d)
3034 CALL stoptime(timers,macro_timer_spmdh3d)
3036 quad_id_p(1:numelq) = quad_id(1:numelq)
3037 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3038 quad_scalar_p(1:numelq) = quad_scalar(1:numelq)
3043 CALL startime(timers,macro_timer_libh3d)
3045 . nixc,numelc,ipartc,ixtg,nixtg,
3046 . numeltgg,iparttg,quad_scalar_p,quad_id_p,
3047 . n_outp_data,numels,
3048 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3049 CALL stoptime(timers,macro_timer_libh3d)
3055 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3056 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numelqg > 0)
THEN
3058 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3059 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3060 ir = h3d_data%OUTPUT_LIST(i)%IR
3061 is = h3d_data%OUTPUT_LIST(i)%IS
3062 it = h3d_data%OUTPUT_LIST(i)%IT
3063 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3064 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3071 . elbuf_tab ,quad_vector ,ifunc ,iparg,geo ,
3072 . ixq ,ixc ,ixtg ,pm ,
3074 . nbf_l ,eani ,anin(ndma2+1) ,nbpart ,iadg ,
3075 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
3077 . nv46 ,nercvois ,nesdvois ,lercvois ,lesdvois ,
3078 . stack ,quad_id ,info1 ,info2 ,
3079 . is_writen_quad,ipartq ,iparttg ,layer ,ipt ,
3080 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART,keyword,
3081 . bufmat ,multi_fvm ,ir ,is ,it )
3083 IF (nspmd > 1 )
THEN
3084 CALL startime(timers,macro_timer_spmdh3d)
3088 CALL stoptime(timers,macro_timer_spmdh3d)
3090 quad_id_p(1:numelq) = quad_id(1:numelq)
3091 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3092 quad_vector_p(1:3*numelq) = quad_vector(1:3*numelq)
3096 CALL startime(timers,macro_timer_libh3d)
3099 . nixc,numelc,ipartc,ixtg,nixtg,
3100 . numeltgg,iparttg,quad_vector_p,quad_id_p,
3101 . n_outp_data,numels,
3102 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3103 CALL stoptime(timers,macro_timer_libh3d)
3109 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 6 .AND.
3110 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numelqg > 0)
THEN
3112 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3113 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3114 ir = h3d_data%OUTPUT_LIST(i)%IR
3115 is = h3d_data%OUTPUT_LIST(i)%IS
3116 it = h3d_data%OUTPUT_LIST(i)%IT
3117 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3118 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3124 CALL h3d_quad_tensor(elbuf_tab,quad_tensor ,iparg ,ifunc ,invert,nelcut,
3125 . el2fa ,waft ,tani ,iad ,
3126 . nbpart,iadg ,x ,ixq ,
3127 . igeo ,ixtg ,ipm ,stack ,quad_id ,info1,
3128 . info2 ,is_writen_quad ,ipartq ,iparttg ,layer ,ipt ,
3129 . id_ply ,gauss ,iuvar ,h3d_data%OUTPUT_LIST(i)%PART ,keyword ,
3133 IF (nspmd > 1 )
THEN
3134 CALL startime(timers,macro_timer_spmdh3d)
3138 CALL stoptime(timers,macro_timer_spmdh3d)
3140 quad_id_p(1:numelq) = quad_id(1:numelq)
3141 is_writen_quad_p(1:numelq) = is_writen_quad(1:numelq)
3142 quad_tensor_p(1:6*(numelq)) = quad_tensor(1:6*(numelq))
3146 CALL startime(timers,macro_timer_libh3d)
3148 . nixc,numelcg,ipartc,ixtg,nixtg,
3149 . numeltgg,iparttg,quad_tensor_p,quad_id_p,
3150 . n_outp_data,numels,
3151 . numelqg,numelt,numelp,numelr,is_writen_quad_p)
3152 CALL stoptime(timers,macro_timer_libh3d)
3159 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3160 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 1 .AND. numsking > 0)
THEN
3162 ifunc = h3d_data%OUTPUT_LIST(i)%ID
3163 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
3164 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3165 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3168 . elbuf_tab ,skin_scalar ,ifunc ,iparg ,geo ,
3169 . ixs ,ixs10 ,ixs16 , ixs20 ,pm ,
3170 . ipm ,igeo ,x ,v ,w ,
3171 . iparts ,h3d_data%OUTPUT_LIST(i)%PART,
3172 . is_writen_skin,info1,keyword , h3d_data ,
3173 6 iad_elem ,fr_elem , weight ,tag_skins6,
3176 9 nodal_ipart ,imapskp ,loads ,table,iframe,mat_param,d,pblast)
3178 IF (nspmd > 1 )
THEN
3179 CALL startime(timers,macro_timer_spmdh3d)
3182 CALL stoptime(timers,macro_timer_spmdh3d)
3184 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3185 skin_scalar_p(1:numskin) = skin_scalar(1:numskin)
3192 CALL startime(timers,macro_timer_libh3d)
3194 . skin_scalar_p,skin_id_p,n_outp_data,
3195 . numsking,is_writen_skin_p)
3196 CALL stoptime(timers,macro_timer_libh3d)
3202 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3203 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 2 .AND. numsking > 0)
THEN
3206 info1 = h3d_data%OUTPUT_LIST(i)%INFO1
3207 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3209 . is_writen_skin ,h3d_data%OUTPUT_LIST
3210 . ibcl,iloadp,lloadp,fac ,npf,tf ,sensors%SENSOR_TAB,
3211 . tagncont,loadp_hyd_inter,forc,xframe,x ,v
3212 . table,iframe,d,pblast)
3214 IF (nspmd > 1 )
THEN
3215 CALL startime(timers,macro_timer_spmdh3d)
3218 CALL stoptime(timers,macro_timer_spmdh3d
3220 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3221 skin_vector_p(1:3*(numskin)) = skin_vector(1:3*(numskin))
3228 CALL startime(timers,macro_timer_libh3d)
3230 . numsking,skin_vector_p,skin_id_p,
3231 . n_outp_data,is_writen_skin_p)
3232 CALL stoptime(timers,macro_timer_libh3d)
3238 ELSEIF(h3d_data%OUTPUT_LIST(i)%OK /= 0 .AND. h3d_data%OUTPUT_LIST(i)%ETYPE == 7 .AND.
3239 . h3d_data%OUTPUT_LIST(i)%OUTP_TYPE == 3 .AND. numsking > 0)
THEN
3241 n_outp_data = h3d_data%OUTPUT_LIST(i)%N_OUTP
3242 layer = h3d_data%OUTPUT_LIST(i)%LAYER
3243 iuvar = h3d_data%OUTPUT_LIST(i)%IUVAR
3244 keyword = h3d_data%OUTPUT_LIST(i)%KEYWORD
3246 . elbuf_tab,skin_tensor, iparg ,ixs ,x ,pm ,
3247 4 iparts ,ipm ,igeo ,ixs10 ,ixs16 ,ixs20 ,
3248 5 is_writen_skin ,h3d_data%OUTPUT_LIST(i)%PART,info1 ,
3249 6 keyword ,iad_elem ,fr_elem , weight ,tag_skins6)
3251 IF (nspmd > 1 )
THEN
3252 CALL startime(timers,macro_timer_spmdh3d)
3255 CALL stoptime(timers,macro_timer_spmdh3d)
3257 is_writen_skin_p(1:numskin) = is_writen_skin(1:numskin)
3258 skin_tensor_p(1:3*(numskin)) = skin_tensor(1:3*(numskin))
3266 CALL startime(timers,macro_timer_libh3d)
3268 . numsking,skin_tensor_p,skin_id_p,
3269 . n_outp_data,is_writen_skin_p
3270 CALL stoptime(timers,macro_timer_libh3d)
3282 itmp = user_nod_id%FVMBAG_LEN + user_nod_id%RWALL_LEN
3284 IF(itmp >= huge(itmp) - user_nod_id%INPUT_MAX)
THEN
3285 CALL ancmsg(msgid=305,anmode=aninfo)
3293 IF(
ALLOCATED(nodal_scalar_fvm))
DEALLOCATE(nodal_scalar_fvm)
3294 IF(
ALLOCATED(nodal_vector_fvm
DEALLOCATE(nodal_vector_fvm)
3295 IF(
ALLOCATED(node_id_fvm))
DEALLOCATE(node_id_fvm)
3296 IF(
ALLOCATED(is_writen_node_fvm))
DEALLOCATE(is_writen_node_fvm)
3300 IF(
ALLOCATED(fvdata_p))
THEN
3302 IF(
ASSOCIATED(fvdata_p(j)%CENTROID_POLH))
DEALLOCATE (fvdata_p(j)%CENTROID_POLH)
3303 IF(
ASSOCIATED(fvdata_p(j)%PPOLH))
DEALLOCATE (fvdata_p(j)%PPOLH)
3304 IF(
ASSOCIATED(fvdata_p(j)%SSPPOLH))
DEALLOCATE (fvdata_p(j)%SSPPOLH)
3305 IF(
ASSOCIATED(fvdata_p(j)%DTPOLH))
DEALLOCATE (fvdata_p(j)%DTPOLH)
3306 IF(
ASSOCIATED(fvdata_p(j)%QPOLH))
DEALLOCATE (fvdata_p(j)%QPOLH)
3307 IF(
ASSOCIATED(fvdata_p(j)%MPOLH))
DEALLOCATE (fvdata_p(j)%MPOLH)
3308 IF(
ASSOCIATED(fvdata_p(j)%RPOLH))
DEALLOCATE
3309 IF(
ASSOCIATED(fvdata_p(j)%TPOLH))
DEALLOCATE (fvdata_p(j)%TPOLH)
3311 DEALLOCATE(fvdata_p)
3315 DEALLOCATE(nodal_scalar)
3316 DEALLOCATE(nodal_vector)
3318 DEALLOCATE(is_writen_node)
3319 DEALLOCATE(is_writen_node_p)
3321 DEALLOCATE(nodal_scalar_p)
3322 DEALLOCATE(node_id_p)
3324 DEALLOCATE(oned_scalar)
3325 DEALLOCATE(oned_vector)
3326 DEALLOCATE(oned_tensor)
3327 DEALLOCATE(oned_torsor)
3329 DEALLOCATE(oned_ity)
3330 DEALLOCATE(is_writen_oned)
3331 DEALLOCATE(is_writen_oned_p)
3332 DEALLOCATE(oned_ity_p)
3333 DEALLOCATE(oned_id_p)
3334 DEALLOCATE(oned_scalar_p)
3335 DEALLOCATE(oned_vector_p)
3336 DEALLOCATE(oned_tensor_p)
3337 DEALLOCATE(oned_torsor_p)
3339 DEALLOCATE(shell_scalar)
3340 DEALLOCATE(shell_vector)
3341 DEALLOCATE(shell_tensor)
3342 DEALLOCATE(shell_id)
3343 DEALLOCATE(shell_ity)
3344 DEALLOCATE(is_writen_shell)
3345 DEALLOCATE(shell_scalar_p)
3346 DEALLOCATE(is_writen_shell_p)
3347 DEALLOCATE(shell_tensor_p)
3348 DEALLOCATE(shell_id_p)
3349 DEALLOCATE(shell_ity_p)
3351 DEALLOCATE(solid_scalar)
3352 DEALLOCATE(solid_vector)
3353 DEALLOCATE(solid_tensor)
3354 DEALLOCATE(solid_tensor_corner)
3355 DEALLOCATE(solid_id)
3357 DEALLOCATE(solid_ity)
3358 DEALLOCATE(is_writen_solid)
3359 DEALLOCATE(solid_scalar_p)
3360 DEALLOCATE(solid_vector_p)
3361 DEALLOCATE(solid_tensor_p)
3362 DEALLOCATE(solid_tensor_corner_p)
3363 DEALLOCATE(is_writen_solid_p)
3364 DEALLOCATE(solid_id_p)
3365 DEALLOCATE(isolnod_p)
3366 DEALLOCATE(solid_ity_p)
3368 DEALLOCATE(sph_scalar)
3369 DEALLOCATE(sph_tensor)
3371 DEALLOCATE(is_writen_sph)
3372 DEALLOCATE(sph_scalar_p)
3373 DEALLOCATE(sph_tensor_p)
3374 DEALLOCATE(is_writen_sph_p)
3375 DEALLOCATE(sph_id_p)
3377 DEALLOCATE(quad_scalar)
3378 DEALLOCATE(quad_vector)
3379 DEALLOCATE(quad_tensor)
3381 DEALLOCATE(is_writen_quad)
3382 DEALLOCATE(quad_scalar_p)
3383 DEALLOCATE(quad_tensor_p)
3384 DEALLOCATE(is_writen_quad_p)
3385 DEALLOCATE(quad_id_p)
3387 DEALLOCATE(skin_tensor,skin_vector,skin_scalar)
3388 DEALLOCATE(is_writen_skin)
3389 DEALLOCATE(skin_tensor_p,skin_vector_p,skin_scalar_p)
3390 DEALLOCATE(is_writen_skin_p)
3391 DEALLOCATE(skin_id_p)
3392 DEALLOCATE(ixskin_tmp)
3393 DEALLOCATE(ixskin_p)
3394 IF (
numskinp>0)
DEALLOCATE(nodal_ipart,imapskp)
3406 DEALLOCATE( ixs10_p)
3407 DEALLOCATE( ixs16_p)
3408 DEALLOCATE( ixs20_p)
3409 DEALLOCATE( ipartc_p)
3410 DEALLOCATE( iparttg_p)
3411 DEALLOCATE( ipartq_p)
3412 DEALLOCATE( iparts_p)
3413 DEALLOCATE( ipartr_p)
3414 DEALLOCATE( ipartp_p)
3415 DEALLOCATE( ipartt_p)
3416 DEALLOCATE( ipartsp_p)
3417 DEALLOCATE( iparts10_p)
3418 DEALLOCATE( iparts16_p)
3419 DEALLOCATE( iparts20_p)
3421 DEALLOCATE( ixc_tmp)
3422 DEALLOCATE( ixtg_tmp)
3424 DEALLOCATE( ixr_tmp)
3425 DEALLOCATE( ixp_tmp)
3426 DEALLOCATE( kxsp_tmp)
3427 DEALLOCATE( ixt_tmp)
3428 DEALLOCATE( ixs10_tmp)
3429 DEALLOCATE( ixs16_tmp)
3430 DEALLOCATE( ixs20_tmp)
3431 DEALLOCATE( ixq_tmp)
3432 DEALLOCATE( sub_id,sub_level,sub_nchild)
3433 IF(
ALLOCATED(sub_child))
DEALLOCATE( sub_child,sub_iad,sub_title)
3436 IF (
ALLOCATED(nodal_ipart))
DEALLOCATE(nodal_ipart)
3439 IF (
ALLOCATED(tagnod))
DEALLOCATE(tagnod)
3441 DEALLOCATE(tagnod_p)
3446 CALL startime(timers,macro_timer_libh3d)
3447 CALL c_h3d_write_toc()
3448 CALL stoptime(timers,macro_timer_libh3d)
3452 INQUIRE(file=tmp_name(1:len_tmp_name), size=h3dtotalsize8)
3453 h3dtotalsize8 = h3dtotalsize8/(1024*1024)
3454 h3dtotalsize = h3dtotalsize8
3455 WRITE (iout,1000) filnam(1:filen),h3d_data%IH3D,ncycle,tt
3456 WRITE (istdo,1000) filnam
3459 CALL stoptime(timers,macro_timer_genh3d)
3462 1000
FORMAT (4x,
' H3D FILE:',1x,a,
' UPDATED: FRAME=',1x,i5,
' , NC=',1x,i7,
' , TIME=',1x,g11.4)