565 SUBROUTINE resol(TIMERS, ELEMENT, NODES, coupling, AF,IAF,
566 1 ISKWN ,NETH ,IPART ,NOM_OPT,KXX ,IXX ,
567 2 IXTG ,IXS ,IXQ ,IXT ,IXP ,IXR ,
570 5 IBFV ,IDUM ,LAS ,LACCELM,NNLINK ,LNLINK ,
571 6 IPARG ,DD_IAD ,IGRV ,IEXLNK ,
572 7 IPARI ,ICONX ,NPBY ,
573 8 LPBY ,LRIVET ,NSTRF ,LJOINT ,NODPOR ,MONVOL ,
575 A LLINK ,LINALE ,NEFLSW ,NNFLSW ,ICUT ,CLUSTER,
578 D PM ,SKEWS ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
579 E W ,VEUL ,FILL ,DFILL ,ALPH ,WB ,DSAVE ,ASAVE ,
581 F TF ,FORC ,VEL ,FSAV ,FZERO ,XLAS ,ACCELM ,
582 G AGRV ,FR_WAVE,FAILWAVE,PARTS0 ,ELBUF ,SENSORS,
583 H RBY ,RIVET ,SECBUF ,VOLMON ,LAMBDA ,
585 J ,UWA ,VAL2 ,PHI ,SEGVAR ,R ,CRFLSW ,
586 K FLSW ,XCUT ,TANI ,SECFCUM,BUFNOIS,
588 M IFRAME ,KXSP ,IXSP ,NOD2SP ,ISPSYM ,ISPCOND,
589 N XFRAME ,SPBUF ,XSPSYM ,VSPSYM ,PV ,
590 O FSAVD ,IBVEL ,LBVEL ,WASPH ,W16 ,
591 P ISPHIO ,LPRTSPH,LONFSPH ,VSPHIO ,FBVEL ,LAGBUF ,IBCSLAG,
592 Q IACTIV ,DAMPR ,GJBUFI ,GJBUFR , RBMPC , IBMPC ,SPHVELN,
593 T NBRCVOIS,NBSDVOIS,LNRCVOIS,LNSDVOIS,NERCVOIS,NESDVOIS,LERCVOIS,
594 U LESDVOIS,NPSEGCOM,LSEGCOM ,NPORGEO ,
595 V IXTG1 ,NPBYL ,LPBYL ,RBYL ,IGEO ,IPM ,
596 W MADPRT ,MADSH4 ,MADSH3 ,MADSOL ,MADNOD ,MADFAIL ,
597 X IAD_RBY ,FR_RBY ,IAD_RBY2,
598 Y FR_RBY2 ,IAD_I2M ,FR_I2M ,ADDCNI2 ,PROCNI2 ,IADI2 ,FR_MV ,
599 Z IADMV2 ,FR_LL ,FR_RL ,IADCJ ,
601 b IAD_SEC ,IAD_CUT ,FR_CUT ,RG_CUT ,NEWFRONT,FR_MAD ,
602 c FXBIPM ,FXBRPM ,FXBNOD ,FXBMOD ,FXBGLM ,FXBCPM ,FXBCPS ,
603 d FXBLM ,FXBFLS ,FXBDLS ,FXBDEP ,FXBVIT ,FXBACC ,FXBELM ,
604 e FXBSIG ,FXBGRVI ,FXBGRVR ,EIGIPM ,EIGIBUF ,EIGRPM ,
606 g FR_I18 ,GRAPHE ,IFLOW ,RFLOW ,
607 h LGRAV ,DD_R2R ,FASOLFR ,FR_LAGF ,
608 j LLAGF ,ICONTACT,RCONTACT,SH4TREE ,SH3TREE ,
609 k IPADMESH,PADMESH ,MSC ,MSTG ,INC ,INTG ,PTG ,
610 l ISKWP ,NSKWP ,ISENSP ,NSENSP ,IACCP ,NACCP,IPART_STATE,
611 m ACONTACT,PCONTACT,FACTIV
612 p ,SH4TRIM ,SH3TRIM ,MSCND ,INCND ,
613 q IBFFLUX ,FBFFLUX ,RBYM ,IRBYM ,LNRBYM ,ICODRBYM,
614 r IBCV ,FCONV ,IBFTEMP ,FBFTEMP ,IAD_RBYM,FR_RBYM,
615 t WEIGHT_RM,MS_PLY,ZI_PLY,INOD_PXFEM,IEL_PXFEM,IADC_PXFEM,
616 u ADSKY_PXFEM,ICODE_PLY,ICODT_PLY,ISKEW_PLY ,ADMSMS ,
617 v MADCLNOD,NOM_SECT,MCPC ,MCPTG ,DMELC ,DMELTG ,MSSA ,
618 w DMELS ,MSTR ,DMELTR ,MSP ,DMELP ,MSRT ,DMELRT ,
619 x IBCR ,FRADIA ,RES_SMS ,TABLE ,IRBE2 ,LRBE2 ,IAD_RBE2 ,
620 y FR_RBE2 ,PHIE ,MSF ,
621 z PROCNE_PXFEM ,IADSDP_PXFEM,IADRCP_PXFEM,ICFIELD,LCFIELD,CFIELD,
622 1 MSZ2 ,DIAG_SMS,ILOADP ,LLOADP ,LOADP ,
623 2 INOD_CRK,IEL_CRK ,IADC_CRK,ADSKY_CRK,
624 3 CNE_CRK,PROCNE_CRK,IADSDP_CRK,IADRCP_CRK, IBUFSSG_IO,
625 4 IBC_PLY ,DMINT2 ,IBORDNODE,
626 5 ELBUF_TAB,POR ,NODEDGE ,IAD_EDGE,
627 6 FR_EDGE ,FR_NBEDGE,CRKNODIAD,LGAUGE ,GAUGE ,
628 7 IGAUP ,NGAUP ,NODLEVXF,DD_R2R_ELEM,
629 8 NODGLOBXFE,SPH2SOL ,SOL2SPH ,IRST ,
630 9 DMSPH ,WAGAP ,XFEM_TAB,ELCUTC ,NODENR ,
631 A KXFENOD2ELC,ENRTAG,
632 B RTHBU F,KXIG3D ,IXIG3D ,KNOT, WIGE,
634 D CPUTIME_MP_GLOB, CPUTIME_MP ,TAB_UMP,POIN_UMP ,SOL2SPH_TYP,
635 E IRUNN_BIS,ADDCSRECT, IAD_FRNOR,FR_NOR ,PROCNOR,
636 F IAD_FREDG,FR_EDG ,DRAPE_SH4N , DRAPE_SH3N ,TAB_MAT,
637 G NATIV0_SMS,MULTI_FVM,SEGQUADFR,MS_2D ,
638 H H3D_DATA ,SUBSETS,IGRNOD,IGRBRIC,
639 I IGRQUAD,IGRSH4N,IGRSH3N,IGRTRUSS,IGRBEAM,
640 J IGRSPRING,IGRPART,IGRSURF,FORNEQS,
641 K NLOC_DMG ,ISKWP_L,KNOTLOCPC,KNOTLOCEL,PINCH_DATA,TAG_SKINS6, ALE_CONNECTIVITY,
642 L XCELL, XFACE, NE_NERCVOIS, NE_NESDVOIS, NE_LERCVOIS, NE_LESDVOIS,IBCSCYC ,LBCSCYC,
643 M T_MONVOL,ID_GLOBAL_VOIS,FACE_VOIS,DYNAIN_DATA,FCONT_MAX,EBCS_TAB,DIFFUSION,
644 N KLOADPINTER,LOADPINTER,DGAPLOADINT,DRAPEG,USER_WINDOWS,OUTPUT,INTERFACES,
645 O DT ,LOADS , PYTHON, DPL0CLD,VEL0CLD,
646 P NDAMP_VREL,ID_DAMP_VREL,FR_DAMP_VREL,NDAMP_VREL_RBYG,NAMES_AND_TITLES,UNITAB,LIFLOW,LRFLOW ,
647 R GLOB_THERM ,PBLAST,RBE3,RWALL)
714 USE shooting_node_mod
724 USE python_share_memory_mod
725 USE python_register_mod,
ONLY : python_register
726 USE funct_python_update_elements_mod,
ONLY : funct_python_update_elements
727 USE python_call_funct_cload_mod
728 USE python_monvol_mod ,
ONLY : python_monvol
730 USE force_mod ,
ONLY : force
734 USE bcs_mod ,
ONLY : bcs
735 USE inter_sh_offset_mod ,
only:sh_offset_
736 USE offset_nproj_mod,
only : offset_nproj
737 USE get_neighbour_surface_mod ,
only : get_neighbour_surface
738 USE spmd_mod ,
only : spmd_max,spmd_allreduce,spmd_barrier
741 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
742 use init_global_frontier_monvol_mod ,
only : init_global_frontier_monvol
743 use init_monvol_omp_structure_mod ,
only : init_monvol_omp_structure
744 USE inivel_dt2_mod ,
only : inivel_dt2
745 USE inivel_start_mod ,
only : inivel_start
749 USE spmd_xv_inter_type1_mod,
only : spmd_xv_inter_type1
756 use inter_init_component_mod ,
only : inter_init_component
757 use damping_vref_compute_dampa_mod
758 use coupling_adapter_mod
759 use damping_funct_ini_mod ,
only : damping_funct_ini
761 USE bcs_nrf_mod ,
ONLY : bcs_nrf
763 USE rwall_pen_mod,
only : rgwal0_pen
764 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
769#include "implicit_f.inc"
770#include "comlock.inc"
774#include "mvsiz_p.inc"
779#include "com01_c.inc"
780#include "com04_c.inc"
781#include "com06_c.inc"
782#include "com08_c.inc"
783#include "com09_c.inc"
784#include "intstamp_c.inc"
786#include "param_c.inc"
787#include "scr02_c.inc"
788#include "scr03_c.inc"
789#include "scr05_c.inc"
790#include "scr06_c.inc"
791#include "scr07_c.inc"
792#include "scr11_c.inc"
793#include "scr12_c.inc"
794#include "scr14_c.inc"
795#include "scr16_c.inc"
796#include "scr17_c.inc"
797#include "scr18_c.inc"
798#include "scr23_c.inc"
799#include "units_c.inc"
800#include "stati_c.inc"
801#include "statr_c.inc"
802#include "cong2_c.inc"
804#include "parit_c.inc"
805#include "timeri_c.inc"
806#include "couple_c.inc"
807#include "rad2r_c.inc"
808#include "chara_c.inc"
809#include "lagmult.inc"
811#include "impl1_c.inc"
815#include "remesh_c.inc"
816#include "com_xfem1.inc"
817#include "tabsiz_c.inc"
819#include "filescount_c.inc"
820#include "inter22.inc"
821#include "userlib.inc"
822#include "drape_c.inc"
824 COMMON /vglob/dmas,diner
830 INTEGER ISKWN(LISKN,*), NETH(*),
831 . ipart(*),nom_opt(lnopt1,*),ixs(*),
832 . ixq(nixq,*), ixt(nixt,*), ixp(nixp,*),
833 . ixr(nixr,*),ixtg(nixtg,*), ixtg1(4,*),
834 . ifill(numnod,*), ims(*), npc(*), ibcl(*), ibfv(*),
835 . idum(*), las(*),iparg(nparg,*),
836 . iconx(*), npby(nnpby,*),
838 . lrivet(*), nstrf(*), ljoint(*), ilink(*),
839 . llink(*), linale(*), neflsw(*), nnflsw(*),
840 . nodpor(*),icut(*) , inoise(*),monvol(*),
841 . laccelm(3,*),dd_iad(nspmd+1,*),
842 . iad_rby(*),fr_rby(*),nnlink(10,*),lnlink(*),
844 . kxx(nixx,*),ixx(*),iexlnk(nr2r,*),
845 . iframe(liskn,*),kxsp(nisp,*),ixsp(*),nod2sp(*),
846 . ispcond(nispcond,*),ispsym(nspcond,*),ibvel(nbvelp,*),lbvel(*),
847 . isphio(nisphio,*),lprtsph(*),lonfsph(*),lagbuf(*),ibcslag(*),
848 . iactiv(*),gjbufi(lkjni,*) ,ibmpc(*),npbyl(nnpby,*), lpbyl(*),
849 . nbrcvois(*),nbsdvois(*),lnrcvois(*),lnsdvois(*),
850 . nercvois(*),nesdvois(*),lercvois(*),lesdvois(*), nporgeo(*),
851 . npsegcom(*), lsegcom(*), igeo(npropgi,*),
852 . ipm(npropmi,*),madprt(*), madsh4(*), madsh3(*), madsol(*),
853 . madnod(*),madfail(*),
855 . fr_rby2(*),iad_i2m(*),fr_i2m(*),addcni2(*),procni2(*),iadi2(*),
856 . fr_mv(*), iadmv2(*), fr_ll(*), fr_rl(*),
857 . iadcj(*), fr_cj(*),
858 . fr_sec(*), iad_sec(4,*),
860 . fr_mad(5,*), lnodpor(*), fr_i18(*),
861 . fxbipm(nbipm,*),fxbnod(*),fxbelm(*), fxbgrvi(*),
862 . eigipm(neipm,*), eigibuf(*), iflow(*), fasolfr(*),
863 . dd_r2r(nspmd+1,*), lgrav(*), fr_lagf(3,*), llagf(*),
864 . icontact(*), sh4tree(*), sh3tree(*), ipadmesh(*),
865 . iskwp(*), nskwp(*), isensp(2,*), nsensp(*), iaccp(*), naccp(*),
866 . ipart_state(*),sh4trim(*), sh3trim(*),irbym(*) ,lnrbym(*),
867 . icodrbym(*),iad_rbym(*),
868 . fr_rbym(*),nom_sect(*), ibcr(*),irbe2(*),lrbe2(*),
869 . iad_rbe2(*),fr_rbe2(*),iadsdp_pxfem(*),
870 . iadrcp_pxfem(*),icfield(*),lcfield(*),iloadp(*),lloadp(*),
872 . adsky_crk(*),procne_crk(*),cne_crk(*),ibordnode(*),
873 . nodedge(*),iad_edge(*),fr_edge(*),fr_nbedge(*),
874 . crknodiad(*), lgauge(3,*), igaup(*), ngaup(*),nodlevxf(*),
875 . nodglobxfe(*),elcutc(2,*),nodenr(*),kxfenod2elc(*),
876 . enrtag(numnod,*),kxig3d(*),ixig3d(*),
877 . nativ0_sms(*), segquadfr(*),
878 . kloadpinter(ninter+1) ,loadpinter(ninter*nloadp_hyd)
879 INTEGER IDATA(*), IBFTEMP(*), IBCV(*), IBFFLUX(*), WEIGHT_RM(*),
880 . ICODT_PLY(*), ISKEW_PLY(*),INOD_PXFEM(*),IEL_PXFEM(*),
881 . IADC_PXFEM(*),ADSKY_PXFEM(*),ICODE_PLY(*),MADCLNOD(*),
883 . IBUFSSG_IO(*),IBC_PLY(*),DD_R2R_ELEM(*),
884 . SPH2SOL(*), SOL2SPH(2,*), IRST(3,*), (*),IRUNN_BIS,
885 . ADDCSRECT(*), (*), FR_NOR(*), PROCNOR(*),
886 . IAD_FREDG(*), FR_EDG(*),TAG_SKINS6(*),IBCSCYC(*),LBCSCYC(*)
887 integer :: IPARI(NPARI,ninter)
888 INTEGER,
DIMENSION(NUMSKW),
INTENT(IN) :: ISKWP_L
889 INTEGER,
DIMENSION(*),
INTENT(in) :: ID_GLOBAL_VOIS,FACE_VOIS
892 . PM(NPROPM,*),GEO(NPROPG,*),
893 . BUFMAT(*) ,W(3,*) ,VEUL(*),FILL(NUMNOD,*),DFILL(NUMNOD,*),
894 . ALPH(*) ,WB(3,*) ,TF(*) ,FORC(*) ,VEL(*),
895 . FSAV(NTHVKI,*) ,FZERO(3,*),XLAS(*) ,ELBUF(*) ,
896 . RBY(NRBY,*),RIVET(*),WA(*),
897 . FV(*) ,VAL2(*) ,(*),
898 . R(3,*) ,CRFLSW(*),FLSW(*),
900 . DSAVE(3,*),ASAVE(3,*),XCUT(*) ,BUFNOIS(*),
901 . ACCELM(LLACCELM,*),
902 . TANI(*),VOLMON(*),EANI(*),AGRV(*), THKE(*), BUFSF(*),AF(*),
903 . SECBUF(*),SECFCUM(7,NUMNOD,NSECT),LAMBDA(*),
904 . FR_WAVE(*),PARTS0(*),BUFGEO(*),
905 . SPBUF(NSPBUF,*),XFRAME(NXFRAME,*),
906 . wasph(*),w16(*),vsphio(*),fbvel(*),dampr(nrdamp,*),
907 . rdata(*),pv(*),fsavd(nthvki,*),gjbufr(lkjnr,*),rbmpc(*),
908 . sphveln(*),rbyl(nrby,*), msnf(*),
909 . fxbrpm(*), fxbmod(*), fxbglm(*), fxbcpm(*), fxbcps(*),
910 . fxblm(*), fxbfls(*), fxbdls(*), fxbdep(*), fxbvit(*),
911 . fxbacc(*), fxbsig(*), fxbgrvr(*), eigrpm(nerpm,*),
912 . dmsph(*),knot(*),wige(*),ms_2d(*),
913 . knotlocpc(*),knotlocel(*),xcell(*),xface(*),fcont_max(3,*)
915 . rflow(*), rcontact(*),
916 . padmesh(*), msc(*), mstg(*), inc(*) , intg(*), ptg(3,*),
917 . acontact(*), pcontact(*), factiv(*),
918 . mscnd(*), incnd(*), rbym(*), fbfflux(*),
919 . fconv(*), fbftemp(*), ms_ply(*), zi_ply(*), admsms(*),
920 . mcpc(*), mcptg(*), dmelc(*), dmeltg(*), mssa(*), dmels(*),
921 . mstr(*), dmeltr(*), msp(*), dmelp(*), msrt(*), dmelrt(*),
922 . fradia(*), res_sms(*), phie(*),msf(*),
923 . cfield(*),msz2(*), diag_sms(*),loadp(*), dmint2(*),por(*),
924 . gauge(llgauge,*),wagap(2,*),rthbuf(*),forneqs(3,*),
925 . dpl0cld(*),vel0cld(*)
926 my_real ,
INTENT(IN) :: dgaploadint(ninter*nloadp_hyd)
927 TYPE(timer_) :: TIMERS
928 TYPE(connectivity_),
INTENT(INOUT) :: ELEMENT
929 TYPE(NODAL_ARRAYS_)
INTENT(INOUT)
930TYPE (CLUSTER_) ,
DIMENSION(*) :: CLUSTER
931 TYPE(PRGRAPH) :: GRAPHE(*)
932 TYPE(TTABLE) :: TABLE(*)
933 TYPE(ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
934 TYPE(ELBUF_STRUCT_),
DIMENSION(:),
ALLOCATABLE :: ELBUF_IMP
935 TYPE(ELBUF_STRUCT_),
DIMENSION(NGROUP,NXEL) :: XFEM_TAB
937 my_real,
DIMENSION(:) ,
POINTER :: BUF
938 END
TYPE SPSYM_STRUCT
939 TYPE (SPSYM_STRUCT) :: XSPSYM,VSPSYM,WSMCOMP
940 TYPE (STACK_PLY) :: STACK
941 TYPE (MPI_MIN_REAL_STRUCT) :: MPI_BUF
942 TYPE(UNIT_TYPE_) :: UNITAB
945 TYPE(coupling_type),
intent(inout) :: coupling
948 INTEGER,
DIMENSION(NUMMAT) :: POIN_UMP
949 my_real,
DIMENSION(NBR_GPMP,NSPMD+1) :: CPUTIME_MP_GLOB
950 my_real,
DIMENSION(TAILLE) :: CPUTIME_MP
951 INTEGER,
DIMENSION(7,TAILLE) :: TAB_UMP
952 my_real TAB_MAT(NGROUP)
953 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
954 TYPE(H3D_DATABASE) :: H3D_DATA
955 TYPE (FAILWAVE_STR_) :: FAILWAVE
957 TYPE(SUBSET_) ,
DIMENSION(NSUBS) :: SUBSETS
958 TYPE(GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
959 TYPE(GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
960 TYPE(GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD
961 TYPE(
group_) ,
DIMENSION(NGRSHEL) :: IGRSH4N
962 TYPE(GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
963 TYPE(GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS
964 TYPE(GROUP_) ,
DIMENSION(NGRBEAM) :: IGRBEAM
965 TYPE(GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING
966 TYPE(GROUP_) ,
DIMENSION(NGRPART) :: IGRPART
967 TYPE(SURF_) ,
DIMENSION(NSURF) :: IGRSURF
970 TYPE(
pinch) :: PINCH_DATA
972 INTEGER,
INTENT(IN) :: (*), NE_NESDVOIS(*), NE_LERCVOIS(*), NE_LESDVOIS(*)
973 TYPE(MONVOL_STRUCT_),
DIMENSION(NVOLU),
INTENT(INOUT) :: T_MONVOL
974 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE) , DRAPE_SH3N(NUMELTG_DRAPE)
975 TYPE(DRAPEG_) :: DRAPEG
976 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
977 TYPE(t_ebcs_tab) ,
INTENT(INOUT) :: EBCS_TAB
978 TYPE(T_DIFFUSION) ,
INTENT(INOUT) :: DIFFUSION
979 TYPE(t_segvar) :: SEGVAR
980 TYPE(inter_struct_type),
DIMENSION(:),
ALLOCATABLE :: INTER_STRUCT
981 TYPE(sorting_comm_type),
DIMENSION(:),
ALLOCATABLE :: SORT_COMM
982 TYPE (LOADS_) ,
INTENT(INOUT) :: LOADS
983 TYPE (DYNAIN_DATABASE),
INTENT(INOUT) :: DYNAIN_DATA
984 TYPE(USER_WINDOWS_),
INTENT(INOUT) :: USER_WINDOWS
985 TYPE(OUTPUT_),
INTENT(INOUT) :: OUTPUT
986 TYPE (INTERFACES_) ,
INTENT(INOUT) ::
987 TYPE (DT_) ,
INTENT(INOUT) :: DT
988 TYPE(MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
989 TYPE(PYTHON_) ,
INTENT(INOUT) :: PYTHON
990 TYPE(NAMES_AND_TITLES_),
INTENT(INOUT) :: NAMES_AND_TITLES
991 type (glob_therm_) ,
intent(inout) :: glob_therm
992 type (PBLAST_) ,
intent(inout) :: PBLAST
993 type (rbe3_) ,
intent(inout) :: RBE3
994 type (rwall_) ,
intent(inout) :: RWALL
996 INTEGER ,
INTENT(IN) :: NDAMP_VREL,NDAMP_VREL_RBYG
997 INTEGER ,
INTENT(IN) :: ID_DAMP_VREL(NDAMP_VREL),FR_DAMP_VREL(NSPMD+2,NDAMP_VREL)
998 TYPE(SKEW_),
INTENT(INOUT) :: SKEWS
999 INTEGER,
INTENT(IN) :: LIFLOW
1000 INTEGER,
INTENT(IN) :: LRFLOW
1005 CHARACTER FILNAM*100
1006 INTEGER NODFT, NODLT, I,J, N,
1007 . K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K, ISK, KK1,
1008 . n0, n1, n2, nn, nnod, nsensor,
1009 . isync, two_ints(2),
1010 . neltst,ityptst,nwaft, nbncl, nbikl,
1011 . nbnodl, nbnodlr,greftsk,greltsk,
1012 . istop, nfia, nfea, nfoa, ndma, ndin,
1013 . nfnca, nftca,ndma2, nfnca2, nftca2,
1014 . l1,l2,l3,ll1,ll2,ll3,nft2,lisendp_pxfem,
1015 . lirecvp_pxfem,ndama2,flg_kj2,ncont,bid,k12,ivad,iad_grel,
1016 . flg_kj2_raz,i_exch_flg_raz
1017 INTEGER :: LISENDP_CRK,LIRECVP_CRK
1018 INTEGER :: I13A,I13B,I13C,I13D,I13E,I13F,I13G,I13H,
1019 INTEGER :: I15A,I15B,I15C,I15D,I15E,I15F,I15G,I15H,I15I,I15J,I15K
1020 INTEGER :: I15ATH,I35ATH
1021 INTEGER :: I87A,I87B,I87C,I87D,I87E,I87F,I87G,I87H,I87I,I87J,I87K,
1022 . i87l,i87m,i87n,imsch,iad1b,iad1,iad2,i2msch, ismsch, onofp
1023 INTEGER CPLXIT, ADRNOD, ONOF, , ICH,IFLGADM, MADENDREQUEST
1025 INTEGER , DIM6, DIM_EXCH
1028 . rdum1,maduf,rbuf(10)
1029 INTEGER LLT1,IWIOUT,IWIOUT_RESULT
1030 INTEGER KSPH1,KSPH21,KSPH22,KSPH23,
1031 . kspactiv,ksp2sort,neltsa,ityptsa,idtnod
1034 INTEGER NBINTC, LENR, LENS, LENI, SIZI, ISIZXV ,ILENXV
1036 . islen7, irlen7, islen11, irlen11, lisendp, lirecvp,
1037 . islen17, irlen17,irlen7t,islen7t,lindidel,lbufidel
1038 . islen20, irlen20, islen20t, irlen20t, nbint20,
1039 . islen20e, irlen20e,lag_sec,lens1,lenr1,int18kine,
1040 . nrbykin_l, int24use, neleml,i24maxnsne,int24e2euse,nhier_rby
1041 INTEGER :: INT7ITIED
1042 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
1043 . isendto,ircvfrom,fr_nbcc,fr_nbcci2,fr_nbcc1
1044 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
1045 . intlist,niskyfi,isendp,irecvp, irbkin_l,
1046 . ipartl, niskyfie, tagel,
1047 . isendp_pxfem,irecvp_pxfem,count_remslv,count_remslve,
1049 INTEGER,
DIMENSION(:),
ALLOCATABLE,
TARGET :: CNEL,ADDCNEL,ADDTMPL
1050 INTEGER,
DIMENSION(:),
ALLOCATABLE
1052 INTEGER NSPHACTG,SPH_IORD1
1053 INTEGER,
DIMENSION(1),
TARGET :: IMP_DUM
1055 my_real,
DIMENSION(:),
ALLOCATABLE :: dretri, xsec,qfricint,icodr0,icodt0,
1056 . stifn_tmp,stifr_tmp
1057 SAVE isendto, ircvfrom, intlist, fr_nbcc, niskyfi, fr_nbcci2,
1058 . nbintc, i2size, islen7 ,irlen7 ,islen11 ,irlen11,
1059 . ilenxv, isizxv, islen17, irlen17,irlen7t,islen7t,
1060 . islen20, irlen20, islen20t, irlen20t, nbint20, niskyfie,
1061 . islen20e, irlen20e, nrbykin_l, irbkin_l, qfricint,
1062 . intlist25,nhier_rby
1063 SAVE dretri, xsec, lisendp, lirecvp, isendp, irecvp,
1064 . cnel, addcnel, addtmpl, ipartl, npartl, lindidel, lbufidel,
1067 . dt2save, mas, bb, wfexc,trest,dtrest,
1068 . dmast, dinert, factb,dampt,
1069 . xsens(12,sensors%NSENSOR),dampa3
1070 my_real fxbmvn(lencp),fxbsv(lenlm),fxbse(15*nfxbody),
1071 . fxbmcd(lenmcd),fxbfp(lenvar),fxbfc(lenlm),fxbefw(nfxbody),
1072 . fxbedp(nfxbody),fxbgrp(lenvar),fxbgrw(nfxbody)
1073 my_real,
DIMENSION(:,:),
ALLOCATABLE :: dxancg
1074 my_real dt2prev, dtmin1_save, target_dt
1075 SAVE imsch, i2msch, ismsch
1077 SAVE nfia, nfea, nfoa, ndma, ndin, ndma2,
1078 . i13a,i13b,i13c,i13d,i13e,i13f,i13g,i13h,i13i,
1079 . i15a,i15b,i15c,i15d,i15e,i15f,i15g,i15h,i15i,i15j,i15k,
1080 . i87a,i87b,i87c,i87d,i87e,i87f,i87g,i87h,i87i,i87j,i87k,i87l,
1081 . i87m,i87n,i15ath,i35ath,lag_sec,nft2,ndama2
1082 INTEGER NDDL0,NNZK0,,NV46,NUM_IMP(NINTER),NINT7,NT_IMP,
1086INTEGER IER1,NDS,IBUCK,NMRBE2,NTHOLD
1087 SAVE nmrbe2,r2size,nint7
1088 INTEGER,
DIMENSION(:),
POINTER :: NS_IMP,NE_IMP,IND_IMP
1089 TYPE (IMPBUF_STRUCT_),
TARGET :: IMPBUF_TAB
1090 my_real,
DIMENSION(:) ,
POINTER :: FEXT_IMP,R_IMP
1091 my_real TTMP,DMCP(NUMGEO)
1093 INTEGER LWIBEM, LWRBEM, , IERROR2, INTER_ERRORS
1094 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WIBEM
1095 my_real,
DIMENSION(:),
ALLOCATABLE :: WRBEM
1096 SAVE LWIBEM, LWRBEM, WIBEM, WRBEM
1097 INTEGER NKCOND, NDDLG, NRP, NCP, NKCOND_INI, NT_IMP_OLD
1098 INTEGER LWIFLOW, LWRFLOW
1099 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WIFLOW
1100 my_real,
DIMENSION(:),
ALLOCATABLE :: wrflow
1101 SAVE lwiflow, lwrflow, wiflow, wrflow
1103 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CDDLP
1105 TYPE(dmumps_struc) MUMPS_PAR
1109 my_real,
DIMENSION(:,:),
ALLOCATABLE :: madclfrecv,partsav2
1111 INTEGER MADYMO_DEL,MADYMO_DEL_GLOBAL
1112 INTEGER,
DIMENSION(:),
ALLOCATABLE ::MAD_TAG_SOL, MAD_TAG_SH,MAD_TAG_TG,MAD_FAIL_ELEMENTS
1115 INTEGER ITSK, NODFTSK, NODLTSK, NUMNTSK, NDTSK, NDTSKR, IPMTSK,
1116 . partftsk, partltsk, nwaftsk, i16tsk,
1117 . neltstt, ityptstt,igmtsk,ngrouc, ngrounc,
1119 . kindrby(nrbykin), nindex1(ninter), nindex2(ninter),
1120 . nindex3(ninter), nindex4(ninter), kindrbym(nrbym),
1121 . omp_get_thread_num,iadisk,rnum_siz,rns,nindexp,ni,lenc,ithout
1122 integer :: omp_address
1123 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IGROUC
1124 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IGROUNC
1125 EXTERNAL OMP_GET_THREAD_NUM
1126 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IBUFIDEL, INDIDEL,RENUM,,INDSEGLO
1127 my_real DT2TT,D_TSTART,D_TSTOP
1128 my_real XSLV(18,NINTER),XMSR(12,NINTER),
1129 . VSLV(6,NINTER),VMSR(6,NINTER), SIZE_T(NINTER)
1132 INTEGER FR_RBY6(SFR_RBY)
1134 . frl6(15,6,nrlink),fnl6(15,6,nlink),
1135 . frwl6(7,6,nrwall),rbym6(6,6,nrbym),sphg_f6(4,6,nbgauge)
1136 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
1137 my_real frl(4,nrlink), fnl(4,nlink)
1141 INTEGER FR_SMS(NSPMD+1), FR_RMS(NSPMD+1)
1142 INTEGER,
POINTER,
DIMENSION(:) :: PTR_SMS
1144 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKINE
1145 my_real,
DIMENSION(:),
ALLOCATABLE :: stk_sn,stk_sr,fcluster,mcluster
1146 my_real,
DIMENSION(:),
ALLOCATABLE :: noda_fext
1148 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INT18ADD,TAGPENE
1149 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IDAMP_RDOF_TAB
1150 my_real,
DIMENSION(:,:),
ALLOCATABLE :: MTF, CAND_SAV
1151 INTEGER FLG_DTNODAMP,FLG_DAMP_FUNCT
1153 INTEGER IGROUPFLG(2)
1154 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IGROUPC,IGROUPTG,IGROUPS
1157 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar
1158 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar_ale
1159 INTEGER S_SFEM_NODVAR
1162 INTEGER,
DIMENSION(:),
ALLOCATABLE :: UNCOMP_FR,FR_LOC,
1163 * UNCOMP_FRI2M,FR_LOCI2M
1164 INTEGER NB_FR,NB_FRI2M
1167 my_real,
DIMENSION(:),
ALLOCATABLE :: MCP_OFF
1171 INTEGER,
DIMENSION(:),
ALLOCATABLE :: FR_I24
1172 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_I24
1174 . delta_pmax_gap(ninter)
1175 INTEGER DELTA_PMAX_GAP_NODE(NINTER)
1176 INTEGER S_LOADPINTER, NPRESLOAD
1177 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGNCONT
1178 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LOADP_HYD_INTER, LOADP_TAGDEL
1181 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB25_CANDT
1182 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB25_IMPCT
1183 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB25_DST1
1184 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB25_DST2
1185 SAVE nb25_candt,nb25_impct,nb25_dst1,nb25_dst2
1189 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
1190 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_I25
1192 REAL(kind=4), dimension(:,:),
ALLOCATABLE :: fskyn25
1194 my_real maxdgap(ninter)
1195 INTEGER :: FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE
1198 INTEGER IDEL7NOK_R2R,IDEL7NOK_SAV,NUMSPH_GLO_R2R,FLG_SPHINOUT_R2R
1199 INTEGER,
DIMENSION(:),
ALLOCATABLE :: OFF_SPH_R2R
1202 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: ISENSINT
1205 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ICONTACT_OLD
1208 . ,
DIMENSION(:),
ALLOCATABLE :: waspsym
1210 INTEGER LSKYI_SMS_NEW
1211 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: T2MAIN_SMS
1212 my_real,
DIMENSION(:),
ALLOCATABLE :: T2FAC_SMS
1213 my_real,
DIMENSION(:),
ALLOCATABLE :: MSKYI_FI_SMS
1214 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_SMS
1215 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_RMS
1216 my_real,
DIMENSION(:,:),
ALLOCATABLE :: CJWORK
1217 my_real,
DIMENSION(:,:),
ALLOCATABLE :: FREA
1218 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IRWL_WORK
1219 my_real,
DIMENSION(:,:),
ALLOCATABLE :: sms_vfi
1220 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: MW6
1225 LOGICAL :: CHECK_NPOLH
1227 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGTRIMC,TAGTRIMTG
1228 INTEGER :: IFTHE, ICONDN, IDX_FTHE, IDX_CONDN, IDX_PINCH,MSTOP_DT_THERM
1231 my_real,
DIMENSION(:,:),
ALLOCATABLE :: stressmean
1232 my_real,
DIMENSION(:),
ALLOCATABLE :: forneqsky
1233 INTEGER :: NUMSKW_L,NUMSKW_L_SEND,NODFTSK_2,NODLTSK_2
1234 INTEGER,
DIMENSION(NUMSKW) :: ISKWP_L_SEND
1235 INTEGER,
DIMENSION(NSPMD) :: RECVCOUNT
1236 INTEGER,
DIMENSION(NTHREAD) :: NODFT_ASSPAR, NODLT_ASSPAR
1237 INTEGER NODFT_NL,NODLT_NL
1238 REAL(kind=8) :: SECS
1239 REAL(kind=8) :: tt_double
1241 . dtnod_nlocal,t_kin
1242 INTEGER,
DIMENSION(:),
ALLOCATABLE ::IBUFPDEL, NINDEXPDEL
1243 DOUBLE PRECISION :: argin,argout
1244 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE :: RBY6_C
1250 INTEGER SIZE_RBY6_C,FL_VREL
1254 type(viper_coupling_) :: VIPER
1257 INTEGER :: SZ_NPCONT2
1258 my_real,
DIMENSION(:,:),
ALLOCATABLE :: npcont2
1261 my_real,
TARGET,
DIMENSION(:,:),
ALLOCATABLE :: xyz
1262 my_real,
POINTER,
DIMENSION(:,:),
contiguous :: ptrx, ptrx_offset
1265 INTEGER IFLAG, COMPTREAC
1301 INTEGER :: STATE_H3D, STATE_ANIM
1302 LOGICAL :: BOOL_RESTART
1305 TYPE(shooting_node_type) :: SHOOT_STRUCT
1306 INTEGER :: S_ELEM_STATE
1307 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: ELEM_STATE
1308 INTEGER :: SIZE_ADDCNEL
1310 LOGICAL :: GLOBAL_ACTIVE_ALE_ELEMENT
1311 INTEGER :: SIZE_NPBY
1313 LOGICAL :: NEED_COMM_INTER18
1314 INTEGER :: NUMBER_INTER18
1315 INTEGER,
DIMENSION(NINTER) :: INTER18_LIST
1316 TYPE(
array_type),
DIMENSION(:),
ALLOCATABLE :: XCELL_REMOTE
1318 my_real,
DIMENSION(:),
ALLOCATABLE :: fsky_l
1319 LOGICAL,
DIMENSION(NSPMD) :: NEED_COMM_INT25_SOLID_EROSION
1320 INTEGER :: COMM_INT25_SOLID_EROSION
1321 INTEGER :: CHECK_NEIGH_FLAG,CHECK_NEIGH_FLAG_RES
1322 integer,
dimension(nspmd+2) :: frontier_global_mv
1325 INTEGER STOP_OR_ADD_CYCLE
1326 INTEGER,
PARAMETER :: MAXFUNC = 100
1327 integer :: numnod_old,numnodm_old
1328 integer :: new_crack,nsect_offset
1332 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_sh4
1333 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_sh3
1334 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_nod
1335 my_real,
DIMENSION(:),
ALLOCATABLE :: area_nod
1336 my_real,
DIMENSION(:),
ALLOCATABLE :: area_sh4
1337 my_real,
DIMENSION(:),
ALLOCATABLE :: area_sh3
1341 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_sh4
1342 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_sh3
1343 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_nod
1344 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_nod
1345 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_sh4
1346 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_sh3
1348 type(sph_work_) :: SPH_WORK
1349 type (ams_work_) :: ams_work
1351 type(component_),
dimension(:),
allocatable :: component
1355 double precision :: dt2max_coupling
1357 call (rby6,dxancg,nb25_candt,nb25_impct,nb25_dst1,nb25_dst2,igrouc,igrounc,
1358 . interfaces,int18add,idamp_rdof_tab,icontact_old,
1359 . nrbykin,numnod,parasiz,ngroup,ninter,sicontact,nodes,
1360 . isendto,ircvfrom,intlist,intlist25,niskyfi,niskyfie,
1361 . count_remslv,count_remslve,fr_nbcc,fr_nbcci2,
1362 . dretri,xsec,nsect,nspmd,ispmd,ninter25, IRBKIN_L,FR_NBCC1)
1365 interfaces%npari = npari
1366 element%shell%offset = numels + numelq
1367 bool_restart = .true.
1397 flag_slipring_update = 0
1398 flag_retractor_update = 0
1400 IF ((nodadt==1).AND.(idamp_rdof==ndamp .OR. ndamp>0 .OR. istat==3)) flg_dtnodamp = 1
1404 IF(nint(dampr(21,i))==4) flg_damp_funct=1
1407 nsensor = sensors%NSENSOR
1408 temp_siz =
merge(numnod, 0, glob_therm%ITHERM_FE>0)
1410 ALLOCATE(rby6_c(2,6,size_rby6_c))
1411 IF(ispmd==0) lmpc = sum(ibmpc(1:nummpc))
1415 size_npby = snpby/nnpby
1425 lisendp_pxfem = 0 ; lirecvp_pxfem = 0
1426 lisendp_crk = 0 ; lirecvp_crk = 0
1427 pblast%PBLAST_DT%IDT = 0
1429 flg_sphinout_r2r = 0
1430 call resol_alloc_phase2(element
1431 . lisendp_pxfem, lirecvp_pxfem, lisendp_crk, lirecvp_crk,
1432 . isendp_pxfem, irecvp_pxfem, isendp_crk, irecvp_crk, adsky_crk,inod_crk,
1433 . procne_crk,procne_pxfem,adsky_pxfem,inod_pxfem)
1437 call resol_alloc_phase3(nloadp_hyd_inter,nintloadp,nloadp_hyd,iloadp,sizloadp,numnod,
1438 . loadp_hyd_inter,tagncont,ninter,
1439 . s_loadpinter,npresload,loadp_tagdel)
1441 ALLOCATE(interfaces%PARAMETERS%INTAREAN(
merge(numnod, 0, interfaces%PARAMETERS%INTCAREA>0)))
1444 . nloadp_f,pblast,iloadp,sizloadp, cnel, addcnel,size_cnel,size_addcnel,
1446 . numnod,lcnel,numels,numelq,numelc,numelt,numelp,numelr,numeltg,
1447 . npart,partsav2,ipartl,elem_state,s_elem_state)
1451 call resol_alloc_phase5(glob_therm,numnod,ninter,nodadt,nthread,iparit,lsky,lskyi,
1452 . icodt0,icodr0,mcp_off,fthe,fthesky,qfricint,condn,condnsky,
1453 . ftheskyi,condnskyi,icondn,ifthe)
1457 call resol_alloc_phase6(intplyxfem,iplyxfem,nplymax,
ply,
plysky,iparit,nthread,
1458 . nplyxfe,anim_ply,vn_nod,irigid_mat,nrbym,
1459 . vrbym,vrrbym,arbym,arrbym,
plyskyi,lskyi,lskypxfem)
1464 call resol_alloc_phase7(ialelag,numnod,nthread,iparit,lsky,msnf,msf,
1469 CALL resol_alloc_phase8
1472 . acnd,arcnd,stcnd,strcnd,stifr_tmp
1476 call resol_alloc_phase9(anim_ce,numelc,numeltg,numnod,iadmerrt,h3d_data,
1477 . inter_ithknod,err_thk_sh4,err_thk_sh3,thksh4,thksh3,thknod,
1478 . area_sh4,area_sh3,area_nod,thick_sh4,thick_sh3,thick_nod,
1479 . admerr_area_sh4,admerr_area_sh3,admerr_area_nod,
1480 . admerr_thick_sh4,admerr_thick_sh3,admerr_thick_nod)
1490 . x_sms,p_sms,y_sms,z_sms,prec_sms,xmom_sms,prec_sms3,diag_sms3,
1491 . t2main_sms,t2fac_sms,fr_rms,fr_sms,ptr_sms,nspmd,nintstamp,
1494 . npart,numelc,numels,numels10,numelt,numelp,numelr,numeltg,numnod)
1496 IF (ireac == 1 )
THEN
1501 IF (igrelem == 1)
THEN
1504 nelem=numelsg+3*numels16g+numsphg+numelcg+numeltgg+numelqg+numeltg+numelpg+2*numelrg
1511 IF (igrelem == 1 )
THEN
1512 ALLOCATE(
grth(nelem+ngrth+1))
1513 ALLOCATE(
igrth(nelem+1))
1527 IF(nvolu > 0) igroupflg(1) = 1
1529 IF(ipm(2,i)/=19.AND.ipm(2,i)/=58) cycle
1530 IF(ipm(4,i) >= 4) igroupflg(1)=1
1532 IF(igroupflg(1) == 1)
THEN
1533 ALLOCATE(igroupc(numelc))
1534 ALLOCATE(igrouptg(numeltg))
1536 ALLOCATE(igroupc(0))
1537 ALLOCATE(igrouptg(0))
1540 ALLOCATE(igroups(numels))
1553 ALLOCATE(renum(rnum_siz))
1559 nisubmax =
max(nisubmax,ipari(36,i))
1561 ALLOCATE(isensint(nisubmax+1,ninter))
1562 isensint(1:nisubmax+1,1:ninter) = 0
1564 idel7nok_sav=idel7nok
1571 l1 = 1+nixs*numels + nsvois*nixs
1575 ll2 = ll1+6*numels10
1576 ll3 = ll2+12*numels20
1577 IF(nadmesh/=0.AND.idel7ng>=1)
THEN
1578 ALLOCATE(tagtrimc(numelc))
1579 ALLOCATE(tagtrimtg(numeltg))
1581 ALLOCATE(tagtrimc(0))
1582 ALLOCATE(tagtrimtg(0))
1587 IF (nitsche > 0 )
THEN
1590 ALLOCATE(stressmean(6,numels))
1593 IF(iparit /= 0 )
THEN
1594 IF(numels10g ==0)
THEN
1596 ALLOCATE(forneqsky(18*lsky))
1597 forneqsky(1:18*lsky) = zero
1600 ALLOCATE(forneqsky(48*lsky))
1601 forneqsky(1:48*lsky) = zero
1604 ALLOCATE(forneqsky(0))
1606 stressmean(1:6,1:numels)=zero
1608 ALLOCATE(stressmean(0,0))
1609 ALLOCATE( forneqsky(0))
1612 CALL newskw_init(iskwp,numskw_l,nskwp,numskw_l_send,iskwp_l_send,recvcount)
1613 partsav2(1:2,1:npart) = zero
1616 ALLOCATE( inter_struct(ninter) )
1617 ALLOCATE( sort_comm(ninter) )
1624 CALL python_register(python,nodes,numnod,
1625 . ixs, nixs, numels,
1626 . element%SHELL%IXC, nixc, numelc,
1627 . ixp, nixp, numelp,
1628 . ixt, nixt, numelt,
1629 . ixq, nixq, numelq,
1630 . ixtg, nixtg, numeltg,
1631 . ixr, nixr, numelr,
1632 . iparg, ngroup, nparg, mvsiz)
1634 IF(python%NB_FUNCTS > 0)
CALL python_share_memory(python,nodes,numnod,
1635 . ixs, nixs, numels,
1636 . element%SHELL%IXC, nixc, numelc,
1637 . ixp, nixp, numelp,
1638 . ixt, nixt, numelt,
1639 . ixq, nixq, numelq,
1640 . ixtg, nixtg, numeltg,
1641 . ixr, nixr, numelr,
1642 . iparg, ngroup, nparg)
1646 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
1655 CALL python_dummy_active_node(python)
1656 CALL funct_python_update_elements(python, ispmd,
1657 . n2d, ngroup, nixc, nixtg, nixs,nixq,
1658 . numgeo, numelc, numeltg, numels, numelq, nummat, numnod,
1659 . nparg, npropg, npropm, npropmi, npropgi,
1660 . snercvois, snesdvois, slercvois, slesdvois,
1661 . sthke, seani, npart,
1662 . elbuf_tab ,iparg ,geo ,
1663 . element%SHELL%IXC ,ixtg , ixs, ixq, pm ,bufmat ,
1665 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
1666 . nodes ,w ,ale_connectivity,
1667 . nercvois ,nesdvois ,lercvois ,lesdvois,
1668 . m51_n0phas, m51_nvphas, stack ,
1669 . ipart(k3:k4-1),ipart(k1:k2-1),ipart(k8:k9-1), ipart(k2:k3-1),
1671 . mat_elem%MAT_PARAM , output%DATA%FANI_CELL,glob_therm%ITHERM)
1678 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
1691 . ipart(k3),ipart(k8),ipart(k1),ipart(k2),ipart(k4),
1692 . ipart(k5) ,ipart(k6),sensors,tt ,dt2 ,iout, python ,nthread)
1699 need_comm_int25_solid_erosion(1:nspmd) = .false.
1700 comm_int25_solid_erosion = 0
1701 CALL python_begin_openmp(python)
1707 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
1708 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
1713 2 isendto ,ircvfrom ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITABM1 ,
1714 3 ipari ,iparg ,nodes%ITAB ,ixs(l1) ,ixs(l2) ,
1715 4 i13a ,i13b ,i13c ,i13d ,i13e ,
1716 5 i13f ,i13g ,i13h ,i13i ,i15a ,
1717 6 i15b ,i15c ,i15d ,i15e ,i15f ,
1718 7 i15g ,i15h ,i15i ,i87a ,i87b ,
1719 8 i87c ,i87d ,i87e ,i87f ,i87g ,
1720 9 nfia ,nfea ,nfoa ,ndma ,ndma2 ,
1721 a nodftsk ,nodltsk ,ndtsk ,numntsk ,ixs(l3) ,
1722 b ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
1723 c ixr ,ixtg ,element%PON, nodes%IKINE ,
1724 d nodes%A ,nodes%AR ,nodes%V ,nodes%VR ,
1725 e nodes%X ,nodes%D ,nodes%MS ,nodes%IN ,nodes%STIFN ,
1726 f nodes%STIFR ,dmas ,diner ,
1727 g wa ,uwa ,pm ,geo ,
1728 h partsav ,parts0 ,monvol ,
1729 i i87h ,i87i ,i87j ,i87k ,
1731 k secbuf ,secfcum ,nstrf ,igrnod ,iexlnk ,
1733 m ixtg1 ,ibcl ,nodes%VISCN ,dd_r2r ,
1734 o elbuf ,ipart ,madprt ,madsh4 ,
1735 p madsh3 ,madsol ,madnod ,madfail ,igeo ,
1737 r isizxv ,ilenxv ,addcni2 ,procni2 ,iad_i2m ,
1738 s fr_i2m ,fr_nbcci2,i2size ,fr_mad ,lwibem ,
1739 t lwrbem ,fxbfp ,fxbefw ,fxbedp ,fxbgrp ,
1741 v islen7 ,irlen7 ,islen11 ,irlen11 ,
1742 w lwiflow ,lwrflow ,iflow ,addcnel ,cnel ,
1743 x addtmpl ,ipartl ,npartl ,nfnca ,nftca ,
1745 z msc ,inc ,sh3tree ,mstg ,intg ,
1746 a ptg ,fthe ,fthesky
1747 b islen17 ,irlen17 ,irlen7t ,islen7t ,lindidel ,
1748 c lbufidel ,sh4trim ,sh3trim ,mscnd ,incnd ,
1749 d irlen20 ,islen20 ,irlen20t ,islen20t ,nbint20 ,
1750 e irlen20e ,islen20e ,niskyfie ,
1751 f nodes%MCP ,nodes%MS0 ,inod_pxfem,iel_pxfem,iadc_pxfem,
1752 g adsky_pxfem,nodes%ICODT ,nodes%ICODR ,ibfv ,admsms ,
1753 h
nodreac ,igrouc ,ngrouc ,igrounc ,ngrounc ,
1754 i fr_rby ,fr_rby6 ,npby ,
1756 k nelem ,lag_sec ,rwall%NPRW ,diag_sms ,dmelc ,
1757 l dmeltg ,ngrth ,nft2 ,dmels ,dmeltr
1758 m dmelp ,dmelrt ,res_sms ,i87l ,irbe2 ,
1759 n lrbe2 ,nmrbe2 ,iad_rbe2 ,fr_rbe2 ,fr_rbe2m ,
1760 o r2size ,lpby ,procne_pxfem,isendp_pxfem,irecvp_pxfem ,
1761 p iadsdp_pxfem,iadrcp_pxfem,fr_nbcc1,rby ,int18kine ,
1762 q nodes%XDP ,i87m ,inod_crk ,iel_crk ,iadc_crk,
1763 r adsky_crk,procne_crk,isendp_crk,irecvp_crk,
1764 s iadsdp_crk,iadrcp_crk ,int24use,ndama2 ,
1765 t igroupc ,igrouptg ,igroups ,igroupflg ,dmint2 ,irbkin_l ,
1766 u nrbykin_l,kindrby ,elbuf_tab ,sensors ,dd_r2r_elem,
1767 v sdd_r2r_elem,nodes%KINET, nodes%WEIGHT_MD ,dmsph ,ioldsect,lbufseglo,
1768 w interfaces%INTBUF_TAB ,numsph_glo_r2r, flg_sphinout_r2r,i15k,
1769 y condn ,condnsky,kxfenod2elc ,elcutc ,nodedge,
1770 z iad_edge ,crknodiad,fr_edge ,fr_nbedge ,nodlevxf,
1771 x
crkedge ,xfem_tab ,isensint ,nisubmax ,
1772 1 intlist25 ,int24e2euse,tabmp_l ,
1773 2 i87n ,tab_mat,h3d_data,tagtrimc,tagtrimtg ,
1774 3 igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss ,
1775 4 igrbeam ,igrspring,igrpart ,forneqs ,int7itied,
1776 5 fxvel_fgeo,failwave,nloc_dmg,pinch_data ,slloadp,
1777 6 nodes%TAG_S_RBY,nfnca2 ,nftca2 ,nodes%IN0 ,sort_comm,stack,output,
1778 7 thke ,nodes%BOUNDARY_SIZE ,sh_offset_tab,
1779 8 need_comm_int25_solid_erosion,comm_int25_solid_erosion ,
1780 9 iskwn ,iframe ,loads ,glob_therm,pblast,rbe3,nhier_rby)
1783 CALL python_end_openmp(python)
1788 CALL split_asspar4(element%PON%ADSKY,numnod,nthread,nodft_asspar,nodlt_asspar,element%PON%SADSKY)
1790 IF (sh_offset_tab%NNSH_OSET > 0 .AND. impl_s==0)
THEN
1791 ALLOCATE(xyz(3,numnod))
1792 xyz(1:3,1:numnod) = nodes%X(1:3,1:numnod)
1793 CALL offset_nproj(nspmd,numnod,xyz,sh_offset_tab,iparit)
1797 sh_offset_tab%NNSH_OSET = 0
1800 IF (sh_offset_tab%NNSH_OSET > 0)
THEN
1801 CALL assign_ptrx(ptrx,xyz,numnod)
1808 ALLOCATE( xcell_remote(ninter) )
1809 CALL int18_alloc(number_inter18,inter18_list,multi_fvm,ipari,xcell_remote,nspmd)
1811 1 igroups ,iparg ,elbuf_tab,multi_fvm%FORCE_INT ,
1812 2 ptrx , nodes%V , nodes%MS , nodes%KINET ,
1813 3 multi_fvm%X_APPEND,multi_fvm%V_APPEND,multi_fvm%MASS_APPEND,multi_fvm%KINET_APPEND,
1814 4 multi_fvm%FORCE_INT_PON)
1820 global_active_ale_element = .false.
1821 CALL check_ale_comm(iparg,elbuf_tab,global_active_ale_element,glob_therm%ITHERM)
1823 IF(nadmesh/=0.AND.idel7ng>=1) idel7nok = 0
1826 IF (glob_therm%IDT_THERM == 1)
THEN
1827 CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0 ,1 )
1833 call init_global_frontier_monvol(ispmd,nspmd,nvolu,nsurf,monvol,
1834 . nimv,volmon,nrvolu,
1835 . fr_mv,frontier_global_mv, t_monvol,igrsurf )
1837 frontier_global_mv(1:nspmd+2) = 0
1840 call init_monvol_omp_structure(ispmd,nspmd,nvolu,nsurf,monvol,
1842 . fr_mv,t_monvol,igrsurf )
1845 IF (int24use == 1)
THEN
1849 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
1850 * iad_i24 , sfr_i24, idum,i24maxnsne)
1851 ALLOCATE(fr_i24(sfr_i24))
1853 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
1854 * iad_i24 , sfr_i24, fr_i24,i24maxnsne)
1857 * nodes%X,nodes%V,nodes%MS,nodes%ITAB,xyz,numnod,sh_offset_tab%NNSH_OSET)
1860 ALLOCATE(iad_i24(1,1))
1863 CALL init_i25_edge(nledge,ninter,npari,ipari,interfaces%INTBUF_TAB )
1864 IF(ninter25 /= 0)
THEN
1865 ALLOCATE(iad_i25(nbintc+1,nspmd))
1867 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
1868 * iad_i25 , sfr_i25, idum)
1870 ALLOCATE(fr_i25(sfr_i25))
1872 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
1873 * iad_i25 , sfr_i25, fr_i25)
1876 ALLOCATE(iad_i25(1,1))
1878 ALLOCATE(fskyn25(3,nbccnor))
1881 IF ((numsph_glo_r2r>0).AND.(flg_sphinout_r2r==1))
THEN
1882 ALLOCATE(off_sph_r2r(numnod))
1887 IF (glob_therm%NFXTEMP > 0 .AND. glob_therm%ITHERM_FE > 0.AND.tt==zero)
THEN
1888 CALL fixtemp(python,ibftemp ,fbftemp ,nodes%TEMP ,npc ,tf ,
1889 . nsensor ,sensors%SENSOR_TAB,glob_therm,snpc )
1894 IF (anim_v(27)+h3d_data%N_VECT_PCONT2 > 0)
THEN
1896 ALLOCATE(npcont2(3,numnod))
1900 ALLOCATE(npcont2(3,0))
1905 IF(anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
1906 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT >0 .or. vipercoupling)
THEN
1907 ALLOCATE(noda_fext(3*numnod))
1908 noda_fext(1:3*numnod)=zero
1910 ALLOCATE(noda_fext(3))
1916 CALL output_allocate_noda_pext(output%DATA,numnod, numnodg)
1918 IF (anim_v(19) + h3d_data%N_VECT_CLUST_FORCE > 0)
THEN
1919 ALLOCATE(fcluster(3*numnod))
1920 fcluster(1:3*numnod)=zero
1922 ALLOCATE(fcluster(3))
1925 IF (anim_v(20) + h3d_data%N_VECT_CLUST_MOM > 0)
THEN
1926 ALLOCATE(mcluster(3*numnod))
1927 mcluster(1:3*numnod)=0
1929 ALLOCATE(mcluster(3))
1935 CALL init_nodal_state( ipari,shoot_struct,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
1936 . nodes%ITAB,nodes,geo,addcnel,cnel,
1937 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,
1938 . size_addcnel,size_cnel ,
1939 . numelsg,numelqg,numelcg,numeltrg,numelpg,
1940 . numelrg,numeltgg ,ixs(l1))
1942 allocate(component(ninter))
1943 call inter_init_component(ninter,npari,numnod,ispmd,nspmd,ipari,nodes%x,interfaces%intbuf_tab,component)
1946 call allocate_sph_work(sph_work,
1948 * sol2sph_flag, numnod,
1949 * nsphact,numnod,nsphact,
1959 IF (icrack3d > 0 .and. tt == zero)
THEN
1960 CALL inixfem(elbuf_tab ,xfem_tab ,
1961 . iparg ,element%SHELL%IXC ,ixtg ,ngrouc ,igrouc ,
1962 . elcutc ,iadc_crk ,iel_crk ,inod_crk ,adsky_crk ,
1963 . nodes%X ,kxfenod2elc ,nodedge ,crknodiad ,iad_edge ,
1970 ALLOCATE(fthreac(6*cptreac))
1972 ALLOCATE(fthdtm(6*cptreac))
1980 IF(comptreac == 1)
THEN
1981 ALLOCATE(freac(6*numnod))
1982 freac(1:6*numnod)=zero
1989 IF (nthpart > 0)
THEN
1990 ALLOCATE(gresav(npsav*ngpe*nthread))
1998 ALLOCATE(ibufidel(lbufidel),stat=ierror2)
1999 ierror = ierror + ierror2
2000 ALLOCATE(indidel(lindidel),stat=ierror2)
2001 ierror = ierror + ierror2
2002 IF(int24use==1.OR.ninter25/=0)
THEN
2003 ALLOCATE (ibufseglo(lbufseglo),stat=ierror2)
2004 ALLOCATE (indseglo(ninter+1),stat=ierror2)
2007 CALL ancmsg(msgid=158,anmode=aninfo,
2012 ALLOCATE(ibufidel(0) ,stat=ierror2)
2013 ALLOCATE(indidel(0) ,stat=ierror2)
2016 IF(nspmd > 1.AND.pdel
THEN
2017 ALLOCATE(ibufpdel(4*nconld+4*npresload
2018 ALLOCATE(nindexpdel(nconld+npresload),stat=ierr)
2026 IF(nadmesh/=0.AND.idel7ng>=1)
THEN
2028 l1 = 1+nixs*numels + nsvois*nixs
2031 IF((int24use==1.OR.ninter25/=0).AND.idel7nok==1)
THEN
2032 indseglo(2:ninter+1)=0
2035 check_neigh_flag_res = 0
2036 IF (sh_offset_tab%NNSH_OSET > 0)
THEN
2037 CALL assign_ptrx(ptrx,xyz,numnod)
2039 CALL assign_ptrx(ptrx,nodes%X
2043 CALL python_begin_openmp(python)
2049 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
2050 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
2052 omp_address = 1 + itsk * numnod
2054 1 geo ,ixs ,ixs(l1) ,ixs(l1) ,ixs(l3) ,ixq ,
2055 2 element%SHELL%IXC ,ixt ,ixp ,ixr ,ixtg ,
2056 3 nodes%deleted_node,nodftsk ,nodltsk ,iparg ,elbuf ,itsk ,
2057 4 ixtg1 ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITAB ,
2058 5 addcnel ,cnel ,kxsp ,elbuf_tab ,tagel ,iexlnk ,
2059 6 igrnod ,dd_r2r ,dd_r2r_elem,sdd_r2r_elem,idel7nok_sav ,
2060 7 idel7nok_r2r,tagtrimc,tagtrimtg,s_elem_state,elem_state,
2061 8 shoot_struct,shoot_struct%GLOBAL_NB_ELEM_OFF)
2064 CALL check_nodal_state( itsk,nodes%deleted_node,newfront,interfaces%INTBUF_TAB,shoot_struct%SIZE_SEC_NODE,
2065 . shoot_struct%SHIFT_S_NODE,shoot_struct%INTER_SEC_NODE,shoot_struct%SEC_NODE_ID)
2073 . ngroup,nparg,igroups,iparg )
2076 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
2077 2 ixr,geo,ngroup,igroups,iparg )
2087 . interfaces%INTBUF_TAB,newfront,
2089 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2090 . addcnel,cnel,nodes%work_array_node
2099 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
2101 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2102 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
2106 CALL check_edge_state( itsk,shoot_struct%SAVE_M_EDGE_NB,shoot_struct%SAVE_S_EDGE_NB,
2107 . shoot_struct%SAVE_M_EDGE,shoot_struct%SAVE_S_EDGE,
2108 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,newfront,ipari,geo,
2109 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2110 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
2116 IF(int24use>0.OR.ninter25/=0)
THEN
2118 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
2119 . ipari,nodes%BOUNDARY_ADD,shoot_struct )
2121 IF(ninter25/=0.AND.interfaces%PARAMETERS%INT25_EROSION_SOLID > 0)
THEN
2123 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
2124 IF(need_comm_int25_solid_erosion(ispmd+1))
THEN
2125 CALL spmd_allreduce(check_neigh_flag,check_neigh_flag_res,1,spmd_max,comm_int25_solid_erosion)
2126 ELSEIF(nspmd==1)
THEN
2127 check_neigh_flag_res = check_neigh_flag
2129 IF(check_neigh_flag_res > 0 )
THEN
2130 CALL get_neighbour_surface( ispmd,nspmd,ninter25,npari,ninter,
2131 . nbintc,nixs,nixc,nixtg,numnod,
2132 . numels,numelc,numeltg,s_elem_state,
2133 . nbddedgt,nbddedg_max,
2134 . elem_state,ipari,intlist,nodes,
2135 . newfront,ixs,element%SHELL%IXC,ixtg,
2136 . nodes%BOUNDARY_ADD,ptrx,
2137 . interfaces%INTBUF_TAB,interfaces%SPMD_ARRAYS,shoot_struct,
2138 . need_comm_int25_solid_erosion )
2147 1 ipari ,geo ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
2148 2 ixp ,ixr ,ixtg ,nodes%deleted_node,iparg
2149 3 newfront,nodes%work_array_node(omp_address) ,nodes%MS ,nodes%IN ,output%DATA%SCAL_DMAS,nodes%ITAB ,
2150 4 nodes%ITABM1 ,addcnel , cnel ,indidel ,nindex1 ,nindex2 ,
2151 5 nindex3 ,nindex4 ,tagel ,int24use ,ibufseglo ,indseglo,
2152 6 ibufidel ,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD)
2156 CALL python_end_openmp(python)
2163 s_sfem_nodvar = 2*numnod
2167 ALLOCATE(sfem_nodvar(s_sfem_nodvar))
2168 ALLOCATE(sfem_nodvar_ale(s_sfem_nodvar))
2177 IF(idtmins_int /= 0)
THEN
2180 CALL sms_ini_err(rwall%NPRW ,rwall%LPRW ,nodes%KINET )
2184 IF(idtmins /= 0)
THEN
2185 l1 = 1+nixs*numels + nsvois*nixs
2190 nativ_sms(1:numnod) = nativ0_sms(1:numnod)
2196 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2200 1 ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
2201 2 ixr ,ixtg ,ixtg1 ,ixs(l1) ,ixs(l3) ,
2202 3 ixs(l2) ,iparg ,nodes%MS ,nodes%MS0 ,
tagnod_sms,
2203 4 nodes%ICODT ,nodes%ICODR ,nodes%KINET ,
indx1_sms,
2204 5
kad_sms ,ipart(i15a),ipart(i15b),
2205 6 ipart(i15c),ipart(i15d),ipart(i15e),ipart(i15f),ipart(i15g),
2207 8 nodes%WEIGHT ,irbe2 ,rbe3%IRBE3 ,lrbe2 ,rbe3%LRBE3 ,
2208 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY
2213 CALL ancmsg(msgid=19,anmode=aninfo,
2214 . c1=
'(/DT/.../AMS)')
2220 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2225 7
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2226 8 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2227 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,nodes%KINET ,
2229 b
lad_sms ,ipart,igeo ,nodes%WEIGHT ,
2234 CALL ancmsg(msgid=19,anmode=aninfo,
2235 . c1=
'(/DT/.../AMS)')
2241 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2246 7
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2247 8 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2248 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,nodes%KINET ,
2254 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2256 CALL ancmsg(msgid=19,anmode=aninfo,
2257 . c1=
'(/DT/.../AMS)')
2263 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2267 6
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2268 7 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2269 8 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,nodes%KINET ,
2274 c igeo ,nodes%WEIGHT ,
nativ_sms,irbe2 ,lrbe2 ,
2277 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2280 . c1=
'(/DT/.../AMS)')
2283 ALLOCATE(
jsm_sms(nnz_sms),stat=ierror)
2285 CALL ancmsg(msgid=19,anmode=aninfo,
2286 . c1=
'(/DT/.../AMS)')
2292 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2296 6
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2297 7 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart
2298 8 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,nodes%KINET ,
2306 ALLOCATE(ltk_sms(knz_sms),lt_sms(nnz_sms),stat=ierror)
2308 CALL ancmsg(msgid=19,anmode=aninfo,
2309 . c1=
'(/DT/.../AMS)')
2317 CALL ancmsg(msgid=19,anmode=aninfo,
2318 . c1=
'(/DT/.../AMS)')
2327 2 fr_ll ,fr_rl ,nodes%WEIGHT ,nodes%ITAB ,ljoint ,
2328 3 iadcj ,fr_cj ,rwall%NPRW ,rwall%LPRW ,rwall%FR_WALL ,
2329 4
nrwl_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY )
2332 IF(idtmins_int/=0)
THEN
2335 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2340 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2343 ELSEIF(idtmins_int/=0)
THEN
2351 nsmspcg=
min(nsmspcg,numnodg)
2354 1 ilink ,llink ,nnlink
2355 2 fr_ll ,fr_rl ,nodes%WEIGHT ,nodes%ITAB ,ljoint ,
2356 3 iadcj ,fr_cj ,rwall%NPRW ,rwall%LPRW ,rwall%FR_WALL ,
2357 4
nrwl_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY )
2360 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2364 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2373 IF (m_vs_sms>0)
THEN
2375 ALLOCATE(proj_s(numnod,lnzm),proj_t(numnod,lnzm),
2376 . proj_la_1(lnzm),proj_w(3*lnzm),proj_k(lnzm,lnzm))
2380 ALLOCATE(proj_s(0,0),proj_t(0,0),proj_la_1(0),proj_w(0),proj_k(0,0))
2385 IF (idtmins/=0.AND.debug(macro_debug_ams)==1)
THEN
2400 IF(idtmins/=0.AND.iparit==0)
THEN
2401 ALLOCATE(uncomp_fr(numnod))
2402 ALLOCATE(uncomp_fri2m(numnod))
2405 * nodes%BOUNDARY_ADD,nodes%BOUNDARY,nb_fr,uncomp_fr,
2406 * iad_i2m,fr_i2m,nb_fri2m,uncomp_fri2m)
2408 ALLOCATE(fr_loc(nb_fr))
2409 fr_loc(1:nb_fr) = uncomp_fr(1:nb_fr)
2411 ALLOCATE(fr_loci2m(nb_fri2m))
2412 fr_loci2m(1:nb_fri2m) = uncomp_fri2m(1:nb_fri2m)
2415 DEALLOCATE(uncomp_fr)
2416 DEALLOCATE(uncomp_fri2m)
2420 ALLOCATE(fr_loci2m(1))
2429 ALLOCATE(wibem(lwibem), wrbem(lwrbem), stat=ierror)
2431 CALL ancmsg(msgid=160,anmode=aninfo,
2438 ALLOCATE(wiflow(lwiflow), wrflow(lwrflow), stat=ierror)
2440 CALL ancmsg(msgid=160,anmode=aninfo,
2450 ALLOCATE(eminx(
nme17*6))
2458 . iparg , ixs , ixq , element%SHELL%IXC ,
2459 . ixt , ixp , ixr , ixtg , fxbipm(1,n),
2460 . fxbnod(adrnod), onof , wa , onfelt ,elbuf_tab )
2466 IF(mcheck==0) dt2s=0.0
2467 IF(mcheck/=0) dt2save = dt2
2470 nmt0 = rbe3%lrbe3_sz/2
2479 IF (impl_s==1.OR.neig>0)
THEN
2480#if defined(MYREAL8) && !defined(WITHOUT_LINALG)
2481 ALLOCATE (elbuf_imp(ngroup))
2483 IF (imon>0)
CALL startime(timers,34)
2484 IF (imon>0)
CALL startime(timers,31)
2485 l1 = 1+nixs*numels + nsvois*nixs
2489 1 geo ,npby ,lpby ,nodes%ITAB ,
2490 2 ipari ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
2491 4 ixp ,ixr ,ixtg ,ixtg1 ,ixs(l1) ,
2492 5 ixs(l2) ,ixs(l3) ,iparg ,
2493 6 elbuf ,nint7 ,nbintc ,nodes%X ,dmcp ,
2494 7 nodes%BOUNDARY ,nodes%BOUNDARY_ADD ,fr_i2m ,iad_i2m ,
2495 8 rwall%NPRW ,num_imp1 ,num_impl ,monvol ,igrsurf ,
2496 9 fr_mv ,ipm ,igeo ,iad_rby ,
2497 a fr_rby ,sh4tree ,sh3tree ,rbe3%IRBE3 ,rbe3%LRBE3 ,
2498 b rbe3%mpi%FR_RBE3 ,rbe3%mpi%IAD_RBE3 ,irbe2 ,lrbe2 ,ibfv ,
2499 c vel ,elbuf_tab ,iframe ,interfaces%INTBUF_TAB,
2500 d nddl0 ,nnzk0 ,impbuf_tab)
2501 IF (imon>0)
CALL stoptime(timers,31)
2502 IF (imon>0)
CALL stoptime(timers,34)
2504 ns_imp=>impbuf_tab%CAND_N
2505 ne_imp=>impbuf_tab%CAND_E
2506 ind_imp=>impbuf_tab%INDSUBT
2507 fext_imp=>impbuf_tab%AC
2508 r_imp=>impbuf_tab%R_IMP
2509 ALLOCATE(fac_k(0),
ipiv_k(0))
2510 IF (imumpsv >0.OR.(isolv==7.AND.nspmd>1))
THEN
2514 WRITE"Fatal error: MUMPS required"
2518 ALLOCATE(cddlp(nddl0))
2529 1 eigipm , eigrpm , nodes%MS ,nodes%IN , eigibuf ,
2530 2 nodes%X ,ixtg1 ,tf , npc , fr_wave ,
2532 4 nodes%ICODT , nodes%ICODR , nodes%ISKEW ,ibfv , vel ,
2533 4 nodes%V , nodes%A , elbuf , ixs , ixq ,
2534 5 element%SHELL%IXC , ixt , ixp , ixr , ixtg ,
2535 6 pm , geo ,output%DATA%VECT_CONT , icut , skews%SKEW ,
2536 7 xcut ,output%DATA%VECT_FINT, nodes%ITAB ,output%DATA%VECT_FEXT,output%DATA%FOPT,
2537 8 output%DATA%SCAL_DT, lpby , npby , nstrf , rwall%RWBUF ,
2538 9 rwall%NPRW , tani , elbuf_tab ,mat_elem%MAT_PARAM, dd_iad ,
2539 a nodes%BOUNDARY_ADD , nodes%BOUNDARY , nodes%WEIGHT , eani , ipart ,
2540 b rby , nom_opt , igrsurf ,
2541 c bufsf , idata , rdata , bufmat , bufgeo ,
2542 d kxx , ixx , kxsp , ixsp , nod2sp ,
2543 e spbuf , ixs(l1) , ixs(l2) , ixs(l3) , nodes%VR ,
2544 f monvol , volmon , ipm , igeo , iparg ,
2546 h iad_rby2 , rwall%FR_WALL , ipari ,
2547 i interfaces%INTBUF_TAB , nodes%D ,partsav ,
2548 j fsav(1,nfnca+1),fsav(1,nftca+1), nodes%TEMP , thke ,
2549 k err_thk_sh4 , err_thk_sh3 , irbe2 , rbe3%IRBE3 ,lrbe2 ,
2550 l rbe3%LRBE3 , rbe3%FRBE3 ,fr_rbe2 , rbe3%mpi%fr_rbe3 , iad_rbe2,
2551 m nodes%WEIGHT_MD , cluster , fcluster , mcluster , xfem_tab,
2552 o w , nv46 , nercvois , nesdvois,
2554 q
xedge3n ,stack ,sph2sol ,nodes%STIFN ,nodes%STIFR ,
2555 r drape_sh4n , drape_sh3n ,h3d_data ,subsets ,igrnod ,
2556 s fcont_max ,output%DATA%VECT_PCONT2,output%DATA%VECT_PCONT2_2, ale_connectivity ,
2557 t itask ,nddl0 ,nnzk0 ,impbuf_tab , drapeg,
2558 u glob_therm, output ,multi_fvm)
2560 dt2 =
max(em20,tstop-tt)
2587 iad1b = iad1+numnod+1
2591 iad2 = iad1b+numnod+1
2595 IF(scodver>=44.AND.sminver<3)
2596 .
CALL sphres44b(kxsp ,ixsp ,nod2sp ,iparg ,spbuf )
2603 ksph22 =ksph21+16*numsph
2604 ksph23 =ksph22+
min(1,nsphio)*3*numsph
2647 ALLOCATE(mad_tag_sol(numels))
2648 ALLOCATE(mad_tag_sh(numelc))
2649 ALLOCATE(mad_tag_tg(numeltg))
2650 ALLOCATE(mad_fail_elements(nmadsol+nmadsh4+nmadsh3))
2651 mad_tag_sol(1:numels)=0
2652 mad_tag_sh(1:numelc)=0
2653 mad_tag_tg(1:numeltg)=0
2654 mad_fail_elements(1:nmadsol+nmadsh4+nmadsh3) = 0
2656 ALLOCATE(madclfrecv(3,madclnods))
2658 CALL initial_data_exch_madcpl(nodes%X,nodes%A,nodes%V,nodes%MS,madclnod)
2661 CALL dummy_cycle_madcpl(nodes%X,madclnod)
2666 IF(ninter25 /= 0)
THEN
2673 check_npolh = .false.
2682 IF( ninter /= 0 )
THEN
2698 CALL python_update_time(tt,dt2)
2699 CALL python_update_nodal_entities(numnod, nodes, x=nodes%X,a=nodes%A,v=nodes%V,d=nodes%D,dr=nodes%DR,vr=nodes%VR)
2700 CALL python_sync(python%CONTEXT)
2702 IF(python%NB_FUNCTS > 0)
THEN
2706 t_monvol(i)%pressure = volmon(kk1+12)
2707 t_monvol(i)%temperature = volmon(kk1+13)
2708 t_monvol(i)%area = volmon(kk1+18)
2709 t_monvol(i)%volume = volmon(kk1+16)
2713 CALL python_monvol(t_monvol)
2718 IF(coupling%active)
THEN
2720 ALLOCATE(nodes%FORCES(3,numnod))
2722 call coupling_set_interface(coupling, igrnod, ngrnod, igrsurf, nsurf, nodes)
2723 CALL coupling_initialize(coupling,nodes%X,numnod,ispmd,nspmd)
2724 CALL coupling_ongoing(coupling,ongoing)
2728 CALL init_ghost_shells(nodes, element,ispmd,nspmd,nodes%boundary_add,nodes%boundary_size,nodes%boundary)
2733 call viper_coupling_initialize
2734 . nixs, numels, ixs, nixc, numelc,nixtg, numeltg,ixtg,
2735 . istdo, neleml, numelq, numelt, numelp, numelr,
2736 . dtmin, tstop, output%DTANIM, tt, nparg, ngroup, iparg, elbuf_tab,
2737 . tt_double, output%TANIM)
2755 IF (rns > rnum_siz)
THEN
2758 ALLOCATE(renum(rnum_siz))
2764 CALL data_send_madcpl(nodes%X,madclnod,
2765 * madymo_del_global,mad_fail_elements)
2775 IF(imonm > 0)
CALL startime(timers,47)
2777 CALL manctr(output,sensors,h3d_data)
2781 IF(numskw/=0)
CALL newskw(skews%SKEW ,iskwn ,nodes%X ,iskwp_l ,nskwp,
2782 1 numskw_l,numskw_l_send,iskwp_l_send,recvcount,iskwp)
2795 glob_therm%DT_THERM = ep06
2800 IF (imon>0)
CALL startime(timers,timer_integ)
2801 CALL imp_fanie(output ,fext_imp,nfia ,nfea ,nodft ,nodlt,
2803 IF (imon>0)
CALL stoptime(timers,timer_integ)
2808 IF(ncycle==1.AND.interfaces%PARAMETERS%ISTIF_DT>0)
2809 . interfaces%PARAMETERS%DT_STIFINT = dt1
2811 IF(imonm > 0)
CALL stoptime(timers,47)
2819 IF(inter_ithknod/=0)
THEN
2821 thknod(nodft:nodlt)=zero
2824 CALL thickvar(iparg,elbuf_tab,element%SHELL%IXC,ixtg,thksh4,
2825 . thksh3,thknod,thke,sh4tree,sh3tree)
2829 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
2831 + thknod,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
2839 IF(ilag+iale+ieuler/=0)
THEN
2856 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
2857 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk
2859 CALL zero1(nodes%MS(nodftsk),numntsk)
2868 IF(
ALLOCATED(output%DATA%FOPT))
THEN
2869 output%DATA%FOPT = zero
2871 IF(
ALLOCATED(output%DATA%VECT_CONT2))
THEN
2872 output%DATA%VECT_CONT2 = zero
2874 IF(h3d_data%N_VECT_CONT2M==1)
THEN
2889 IF (imon>0)
CALL startime(timers,timer_contsort)
2890 CALL i14ist(ipari,interfaces%INTBUF_TAB,igrsurf,bufsf)
2891 IF (imon>0)
CALL stoptime(timers,timer_contsort)
2902 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2917 IF (iale+ieuler+glob_therm%ITHERM+numsph/=0)
THEN
2918 IF(nbgauge/=0)
CALL agauge0(lgauge,gauge,nodes%X,element%SHELL%IXC,igaup,ngaup)
2922 IF (imon>0)
CALL startime(timers,6)
2923 IF (imonm > 0)
CALL startime(timers,49)
2925 IF(numgeo>0.AND.nodadt==0)
THEN
2927 IF(geo(5,i)>zero.AND.dtfac1(3)*geo(5,i)<dt2t)
THEN
2928 dt2t= dtfac1(3)*geo(5,i)
2937 IF(user_windows%HAS_USER_WINDOW /= 0 )
THEN
2941 1 user_windows ,rad_inputname ,len_rad_inputname,
2942 2 numnod ,ncycle ,nodes%ITAB ,
2943 3 tt ,dt1 ,output%TH%WFEXT ,
2944 4 nodes%D ,nodes%X ,nodes%V ,
2945 5 nodes%VR ,nodes%MS ,nodes%IN ,
2946 6 nodes%STIFN ,nodes%STIFR ,nodes%A ,
2956 IF(nfunct /= 0.AND.iale+ieuler+glob_therm%ITHERM+nebcs>0)
THEN
2957 CALL timfun(python,fv, npc, tf)
2958 IF(ebcs_tab%nebcs_loc/=0)
THEN
2968 CALL stop_sensor(sensors,h3d_data,dynain_data,output)
2974 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 )
THEN
2976 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
2977 nodes%STIFN(i) = nodes%STIFN(i) * nodes%WEIGHT(i)
2980 CALL desacti(ixs ,ixq ,element%SHELL%IXC ,ixp ,ixt ,
2981 . ixr ,ixtg ,iparg ,iactiv ,
2982 . nsensor ,sensors%SENSOR_TAB,element%PON%FSKY ,nodes%X ,elbuf_tab,
2983 . ibcv ,fconv ,ibcr ,fradia ,igroups ,
2984 . factiv ,nodes%TEMP ,nodes%MCP ,pm ,mcp_off ,
2985 . igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss ,
2986 . igrbeam ,igrspring,glob_therm)
2988 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 .AND. iparit == 0)
THEN
2990 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
2994 IF (imonm > 0)
CALL stoptime(timers,49)
2999 IF (nconld/=0 .AND. impl_s/=1)
THEN
3001 IF (imon>0)
CALL startime(timers,timer_kin)
3002 IF (imonm > 0)
CALL startime(timers,41)
3004 1 nibcld ,ibcl ,lfaccld ,forc ,snpc ,
3005 2 npc ,stf ,tf ,nodes%A ,nodes%V ,
3006 3 nodes%X ,skews ,nodes%AR ,
3007 4 nodes%VR ,nsensor ,sensors%SENSOR_TAB ,wfexc ,element%PON%IAD_CONLD ,
3008 5 lsky ,element%PON%FSKY ,noda_fext ,h3d_data ,cptreac ,
3009 6 fthreac ,
nodreac ,output%TH%TH_SURF ,
3010 7 dpl0cld ,vel0cld ,nodes%D ,nodes%DR ,nconld ,
3011 8 numnod ,nfunct ,anim_v ,outp_v ,
3012 9 iparit ,tt ,dt1 ,n2d ,output%TH%WFEXT ,
3013 a impl_s ,python=python, nodes=nodes)
3016 CALL forcepinch(ibcl ,forc ,npc ,tf ,nodes%A ,
3017 2 nodes%V ,nodes%X ,skews%SKEW ,nodes%AR ,nodes%VR ,
3018 3 nsensor,sensors%SENSOR_TAB ,nodes%WEIGHT ,wfexc ,element%PON%IAD_CONLD,
3019 4 element%PON%FSKY , element%PON%FSKY ,noda_fext ,h3d_data,
3020 5 pinch_data%APINCH, pinch_data%VPINCH, python, output%TH%WFEXT)
3023 IF (imonm > 0)
CALL stoptime(timers,41)
3024 IF (imon>0)
CALL stoptime(timers,timer_kin)
3028 IF(nfxvel/=0.AND.impl_s/=1)
THEN
3032 IF(imonm > 0)
CALL startime(timers,44)
3034 CALL forcefingeo(ibfv ,npc ,tf ,nodes%A ,nodes%V ,nodes%X ,
3035 2 vel ,sensors%SENSOR_TAB ,element%PON%FSKY ,noda_fext ,nodes%ITABM1,
3036 3 h3d_data,nsensor,python,output%TH%WFEXT,nodes)
3038 IF(imonm > 0)
CALL stoptime(timers,44)
3046 IF(nloadp_f/=0.AND.impl_s/=1)
THEN
3048 IF (imon>0)
CALL startime(timers,timer_kin)
3049 IF (imonm > 0)
CALL startime(timers,41)
3050 CALL python_begin_openmp
3052 CALL pfluid(iloadp ,loadp ,npc ,tf ,nodes%A ,
3053 2 nodes%V ,nodes%X ,xframe ,nodes%MS ,
3054 3 nsensor ,sensors%SENSOR_TAB,wfexc ,output%TH%WFEXT,element%PON%IAD_LOADP ,
3055 4 element%PON%FSKY , element%PON%FSKY ,lloadp ,noda_fext ,h3d_data ,
3056 5 output%TH%TH_SURF, python)
3058 CALL python_end_openmp(python)
3059 IF (imonm > 0)
CALL stoptime(timers,41)
3060 IF (imon>0)
CALL stoptime(timers,timer_kin)
3067 IF(pblast%NLOADP_B/=0.AND.impl_s/=1)
THEN
3069 IF (imon>0)
CALL startime(timers,timer_kin)
3070 IF (imonm > 0)
CALL startime(timers,41)
3072 1 pblast,iloadp,loadp,nodes%A ,nodes%V ,nodes%X,
3073 2 element%PON%IAD_LOADP ,element%PON%FSKY ,lloadp,noda_fext ,output%DATA%NODA_SURF ,output%DATA%NODA_PEXT,
3074 3 nodes%ITAB,h3d_data, output%TH%TH_SURF ,output%TH%WFEXT)
3075 IF (imonm > 0)
CALL stoptime(timers,41)
3076 IF (imon>0)
CALL stoptime(timers,timer_kin)
3078 IF(pblast%PBLAST_DT%DT<dt2t)
THEN
3080 dt2t = pblast%PBLAST_DT%DT
3082 neltst = pblast%PBLAST_DT%IDT
3083 pblast%PBLAST_DT%DT = ep20
3089 IF (loads%NLOAD_CYL > 0)
THEN
3091 . loads ,table ,sensors%NSENSOR,sensors%SENSOR_TAB
3092 . dt1 ,nodes%X ,nodes%V ,nodes%A ,noda_fext ,
3093 . h3d_data ,cptreac ,fthreac ,
nodreac ,element%PON%FSKY ,output%TH%WFEXT )
3099 IF(bcs%NUM_NRF > 0)
THEN
3100 CALL bcs_nrf(n2d , numnod ,
3101 . nodes%X , nodes%V , nodes%A ,
3102 . nixs , nixtg , nixq ,
3103 . numels , numeltg , numelq ,
3104 . ixs , ixtg , ixq ,
3105 . iparit , lsky , element%PON%FSKY,
3106 . output%TH%WFEXT, noda_fext, dt1 ,
3107 . anim_v , outp_v , h3d_data )
3111 IF( glob_therm%NUMCONV + glob_therm%NUMRADIA > 0 .AND. glob_therm%ITHERM_FE > 0 )
THEN
3121 IF (glob_therm%NUMCONV > 0 .AND. glob_therm%ITHERM_FE > 0)
THEN
3122 IF (imon>0)
CALL startime(timers,timer_kin)
3123 IF (imonm > 0)
CALL startime(timers,41)
3124 CALL convec(ibcv ,fconv ,npc ,tf , nodes%X ,
3125 1 nodes%TEMP ,nsensor,sensors%SENSOR_TAB,fthe, element%PON%IAD_CONV,
3126 2 fthesky, python,glob_therm)
3127 IF (imonm > 0)
CALL stoptime(timers,41)
3128 IF (imon>0)
CALL stoptime(timers,timer_kin)
3133 IF (glob_therm%NUMRADIA > 0 .AND. glob_therm%ITHERM_FE > 0)
THEN
3134 IF (imon>0)
CALL startime(timers,timer_kin)
3135 IF (imonm > 0)
CALL startime(timers,41)
3136 CALL radiation(ibcr, fradia, npc, tf, nodes%X ,
3137 1 nodes%TEMP, nsensor,sensors%SENSOR_TAB, fthe, element%PON%IAD_RADIA,
3138 2 fthesky, python,glob_therm)
3139 IF (imonm > 0)
CALL stoptime(timers,41)
3140 IF (imon>0)
CALL stoptime(timers,timer_kin)
3152 IF (glob_therm%NFXFLUX > 0 .AND. glob_therm%ITHERM_FE > 0)
THEN
3153 IF (imon>0)
CALL startime(timers,timer_kin)
3154 IF (imonm > 0)
CALL startime(timers,41)
3155 CALL fixflux(ibfflux, fbfflux, npc, tf, nodes%X, ixs,
3156 . nsensor,sensors%SENSOR_TAB, fthe, element%PON%IAD_FXFLUX, fthesky, python,
3158 IF (imonm > 0)
CALL stoptime(timers,41)
3159 IF (imon>0)
CALL stoptime(timers,timer_kin)
3163 icontact_old(1:sicontact) = icontact(1:sicontact)
3165 IF (imonm > 0)
CALL startime(timers,50)
3167 nn = numelc+numeltg+ibagsurf
3174 sporo = numelc+numeltg+ibagsurf
3176 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
3177 IF (impl_s > 0 .AND. ismdisp >0)
THEN
3178 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3180 CALL assign_ptrx(ptrx,nodes%X,numnod)
3183 1 monvol ,volmon ,ptrx ,nodes%A ,
3184 2 npc ,tf ,nodes%V ,wa ,
3185 3 fsav(1,n) ,nsensor ,sensors%SENSOR_TAB ,igrsurf ,
3186 4 fr_mv ,element%PON%IAD_MV ,sicontact ,sporo ,
3187 5 element%PON%FSKY,icontact ,wa(n0) ,iparg ,
3188 6 elbuf_tab ,geo ,igeo ,
3189 7 pm ,ipm ,ipart ,ipart(k3) ,
3190 8 ipart(k8) ,igroupc ,igrouptg ,noda_fext ,
3191 9 1 ,h3d_data ,t_monvol ,frontier_global_mv,
3194 IF (imonm > 0)
CALL stoptime(timers,50)
3196 IF (imon>0)
CALL stoptime(timers,6)
3199 CALL flow0(output,iflow, rflow, wiflow, wrflow, nodes%X,
3200 . nodes%V, nodes%A, npc, tf, sensors%SENSOR_TAB,
3201 . nbgauge,lgauge, gauge , nsensor,
3202 . igrv, agrv ,nfunct ,python, output%TH%WFEXT)
3208 IF (imon>0)
CALL startime(timers,13)
3209 IF (imonm > 0)
CALL startime(timers,24)
3211 l1 = 1+nixs*numels + nsvois*nixs
3215 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
3216 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
3217 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
3218 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
3219 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
3220 6 irlen20 ,islen20 ,irlen20t,islen20t,irlen20e,
3221 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse,
3222 8 forneqs ,multi_fvm,interfaces,sh_offset_tab%NNSH_OSET)
3224 IF (imonm > 0)
CALL stoptime(timers,24)
3232 IF (int24use == 1)
THEN
3233 IF (imon>0)
CALL startime(timers,timer_contfor)
3234 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3235 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3236 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,4,
3238 IF (imon>0)
CALL stoptime(timers,timer_contfor)
3244 IF(nsect>0.AND.nspmd>1)
THEN
3245 lsend1 = iad_sec(1,nspmd+1)
3246 lrecv1 = iad_sec(2,nspmd+1)
3247 lsend2 = iad_sec(3,nspmd+1)
3248 lrecv2 = iad_sec(4,nspmd+1)
3249 CALL spmd_exch_sec(nstrf ,nodes%X ,nodes%MS ,nodes%WEIGHT,xsec ,
3250 2 fr_sec,iad_sec,lsend1,lrecv1,lsend2,
3251 3 lrecv2,nodes%WEIGHT_MD)
3256 IF(nintstamp/=0)
THEN
3263 IF(glob_therm%ITHERM == 0)
THEN
3264 l1 = 1+nixs*numels + nsvois*nixs
3265 CALL s4lagsfem(iparg, ixs, nodes%X, nodes%V, elbuf_tab, sfem_nodvar, s_sfem_nodvar,
3266 . nodes%BOUNDARY_ADD, nodes%BOUNDARY, ixs(l1), nodes%XDP, sxdp,
3267 . numnod, nodes%BOUNDARY_SIZE , nspmd, numels, numels8, numels10, nparg, ngroup, iresp)
3276 IF (imon > 0)
CALL startime(timers,timer_contsort)
3284 nativ_sms_siz = numnod
3289 IF(coupling%active .AND. tt > zero) dt2t =
min(dt2t,coupling%DT_LIMIT)
3294 IF (sh_offset_tab%NNSH_OSET > 0)
THEN
3295 CALL assign_ptrx(ptrx,xyz,numnod)
3296 ELSEIF (impl_s > 0 .AND. ismdisp >0)
THEN
3297 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3299 CALL assign_ptrx(ptrx,nodes%X,numnod)
3307 itsk = omp_get_thread_num()
3308 CALL inttri(output ,timers,
3309 1 ipari ,ptrx ,w , inter_errors,
3310 2 nodes%V ,nodes%MS ,nodes%IN ,nodes%BOUNDARY_ADD ,
3311 3 nodes%BOUNDARY ,nodes%VR ,isendto ,ircvfrom ,
3312 4 newfront ,itsk ,wa ,dt2tt ,
3313 5 nodes%ITAB ,neltstt ,ityptstt,nodes%WEIGHT ,
3314 6 intlist ,nbintc ,nodes%KINET ,dretri ,
3315 7 islen7 ,irlen7 ,islen11 ,irlen11 ,
3316 8 nodes%TEMP ,igrbric ,igrsh3n ,eminx ,
3317 9 ixs ,ixs(l3) ,ixs(l2) ,islen17 ,
3318 a irlen17 ,irlen7t ,islen7t ,num_imp1 ,
3319 b ind_imp ,
intstamp,thknod ,irlen20 ,
3320 c islen20 ,irlen20t,islen20t,irlen20e ,
3321 d islen20e ,renum ,nsnfiold,xslv ,
3322 e xmsr ,vslv ,vmsr ,size_t ,
3323 f
nativ_sms ,dxancg ,nodes%IKINE ,diag_sms ,
3324 g count_remslv,count_remslve ,ale_connectivity,
3325 h ixtg ,sensors,delta_pmax_gap,interfaces%INTBUF_TAB,
3326 i delta_pmax_gap_node,iad_frnor,fr_nor,
3327 j nb25_candt,nb25_impct,nb25_dst1,nb25_dst2,intlist25,
3328 k interfaces%SPMD_ARRAYS%IAD_FREDG,interfaces%SPMD_ARRAYS%FR_EDG,nodes%MAIN_PROC,
nativ_sms,i_opt_stok ,
3329 l multi_fvm,iparg ,elbuf_tab, h3d_data, t2main_sms,
3330 m lskyi_sms_new ,forneqs
3331 n t2fac_sms,nodes%ICODT,nodes%ISKEW ,fskyn25 ,addcsrect,procnor,
3332 o inter_struct,sort_comm,rnum_siz,nativ_sms_siz,temp_siz,
3333 p interfaces,glob_therm,component)
3335#include
"lockon.inc"
3341#include "lockoff.inc"
3344 IF(inter_errors > 0)
THEN
3357 IF(
SIZE(interfaces%PON%ADSKYI,1) < numnod+2)
then
3358 deallocate(interfaces%PON%ADSKYI)
3359 allocate(interfaces%PON%ADSKYI(0:numnod+1))
3361 IF ( nisky+lskyi_count > sisky
THEN
3362 CALL reallocate_i_skyline(lskyi_count,1,glob_therm%INTHEAT,glob_therm%nodadt_therm,interfaces%PON)
3368 CALL upgrade_rem_2ry(ipari,count_remslv,count_remslve,glob_therm%nodadt_therm)
3369 count_remslv(1:ninter
3384 IF ((idtmins == 2.OR.idtmins_int/=0).AND.(ninter > 0))
THEN
3386 IF (lskyi_sms_new > lskyi_sms)
THEN
3390 lskyi_sms = nint(lskyi_sms_new*1.2)
3391 ALLOCATE(mskyi_sms(lskyi_sms),
iskyi_sms(lskyi_sms,3),
3392 .
jdii_sms(2*lskyi_sms),lti_sms(2*lskyi_sms),
3396 CALL ancmsg(msgid=19,anmode=aninfo,
3397 . c1=
'LSKYI_SMS RESIZE')
3407 IF(ninter25 /= 0)
THEN
3410 IF (imon>0)
CALL startime(timers,timer_exfor)
3411 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3412 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3413 * iad_i25 ,fr_i25 ,sfr_i25 ,1 )
3414 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3415 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3416 * iad_i25 ,fr_i25 ,sfr_i25 ,2 )
3417 IF (imon>0)
CALL stoptime(timers,timer_exfor)
3427 IF(nadmesh > 0.AND.impl_s==0)
THEN
3428 IF (imon>0)
CALL startime(timers,36)
3434 IF(tt >= tadmesh+dtadmesh)
THEN
3435 tadmesh=tadmesh+dtadmesh
3439 IF(ichkadm/=0 .AND. iadmerrt/=0)
THEN
3442 . element%SHELL%IXC ,ixtg ,nodes%X ,iparg ,elbuf_tab ,
3443 . ipart ,ipart(k3),ipart(k8),err_thk_sh4 ,err_thk_sh3 ,
3444 . nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%WEIGHT ,sh4tree ,sh3tree ,
3445 . admerr_area_sh4, admerr_area_sh3, admerr_area_nod,
3446 . admerr_thick_sh4,admerr_thick_sh3,admerr_thick_nod )
3454 itsk = omp_get_thread_num()
3455 nodftsk = 1+itsk*numnod/ nthread
3456 nodltsk = (itsk+1)*numnod/nthread
3458 CALL admdiv(element%SHELL%IXC ,ipart(k3),ixtg ,ipart(k8),ipart,
3459 . itsk ,icontact ,iparg,nodes%X ,nodes%MS ,
3460 . nodes%IN ,rcontact ,elbuf_tab,nodftsk ,nodltsk,
3461 . igeo ,ipm ,sh4tree,padmesh,msc ,
3462 . inc ,sh3tree ,mstg ,intg ,ptg ,
3463 . acontact,pcontact,err_thk_sh4,err_thk_sh3,mscnd,
3464 . incnd,pm ,nodes%MCP ,mcpc ,mcptg,
3465 . glob_therm%ITHERM_FE)
3470 IF(iadmrule /= 0)
THEN
3472 CALL admregul(element%SHELL%IXC ,ipart(k3),ixtg ,ipart(k8),ipart,
3473 . itsk ,iparg ,nodes%X
3474 . elbuf_tab,nodftsk ,nodltsk,igeo ,ipm ,
3475 . sh4tree,msc ,inc ,sh3tree,mstg ,
3476 . intg ,ptg ,mscnd ,incnd ,pm ,
3477 . nodes%MCP ,mcpc ,mcptg ,glob_therm%ITHERM_FE)
3486 CALL admordr(sh4tree,sh3tree,element%SHELL%IXC,ixtg)
3487 IF(istatcnd /= 0)
CALL cndordr(ipart,ipart(k3),ipart(k8),
3492 1 iparg ,elbuf_tab ,element%PON%FSKY ,element%PON%FSKY ,fthesky,
3493 2 element%PON%IADC,element%PON%IAD_TG,iflgadm,igrouc,ngrouc ,
3494 3 condnsky ,glob_therm%NODADT_THERM)
3498 rcontact(nodftsk:nodltsk
3499 acontact(nodftsk:nodltsk)=ep30
3500 pcontact(nodftsk:nodltsk)=zero
3503 IF (imon>0)
CALL stoptime(timers,36)
3509 IF(anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
3510 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT>0
3511 . .AND.impl_s==0)
THEN
3519!$omp parallel private(itsk,nodftsk,nodltsk)
3520 itsk = omp_get_thread_num()
3521 nodftsk = 1+itsk*numnod/ nthread
3522 nodltsk = (itsk+1)*numnod/nthread
3523 CALL forani1(output,nodes%A ,nfia,nfea,nfoa,nodftsk,nodltsk
3530 need_comm_inter18 = .false.
3532 CALL startime(timers,macro_timer_alemain)
3538 IF(trimat>0)lenqmv =
min(1,trimat)*(numels
3540 IF(n2d /= 0) nv46 = 4
3546 CALL python_begin_openmp(python)
3554 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3555 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3560 IF(iparit == 1) ndtsk = 1
3563 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%V ,
3564 2 nodes%MS ,wa ,elbuf_tab ,bufmat ,partsav(ipmtsk) ,tf,
3565 3 val2 ,veul ,fv ,nodes%STIFN(ndtsk),element%PON%FSKY,eani,
3566 4 phi ,fill ,dfill ,alph ,skews%SKEW ,w,
3567 5 nodes%D ,dsave ,asave ,dt2tt ,dt2save ,xcell,
3568 6 iparg ,npc ,ixs ,ixq, ixtg ,element%PON%IADS,
3569 7 ifill ,nodes%ICODT,nodes%ISKEW ,ims
3570 8 neltstt ,ityptstt ,ipart(k1) ,ipart(k2) ,itsk ,
3571 a nodftsk ,nodltsk ,nbrcvois ,nodes%TEMP ,output%TH%TH_SURF%CHANNELS,
3573 c lesdvois ,isizxv ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,element%PON%FSKYM,msnf ,
3574 d ipari ,segvar ,nodes%ITAB ,iskwn ,diffusion ,iresp,
3575 e volmon ,fsav ,igrsurf ,neltsa ,
3576 f ityptsa ,nodes%WEIGHT ,npsegcom ,lsegcom ,ipm ,igeo,
3577 g nodes%ITABM1 ,lenqmv ,nv46 ,nodes%A ,gresav ,
3579 i dmels ,igaup ,ngaup ,table ,nodes%MS0 ,
3580 j nodes%XDP ,igrnod ,sfem_nodvar_ale ,interfaces%PON%FSKYI,interfaces%PON%ISKY, s_sfem_nodvar,
3581 k interfaces%INTBUF_TAB ,ixt ,igrv ,agrv ,sensors ,
3582 l lgrav ,condnsky ,condn ,ms_2d ,multi_fvm ,igrtruss ,
3583 m igrbric ,nloc_dmg ,id_global_vois,face_vois ,ebcs_tab ,ale_connectivity,
3584 n mat_elem ,h3d_data ,dt ,output ,need_comm_inter18 ,idtmins ,
3585 o idtmin ,maxfunc ,imon_mat ,userl_avail ,
3586 p impl_s ,idyna ,python ,mat_elem%MAT_PARAM,glob_therm)
3589#include "lockon.inc"
3597 IF(idt_int22 /= 0)
THEN
3611#include "lockoff.inc"
3614 CALL python_end_openmp(python)
3616 IF(need_comm_inter18)
THEN
3618 . xcell,multi_fvm,xcell_remote,interfaces%INTBUF_TAB,ale_connectivity)
3621 CALL stoptime(timers,macro_timer_alemain)
3632 IF(
ale%SUB%IALESUB ==2 .AND.
ale%SUB%IFSUB==2)
GOTO 22
3635 IF (imon>0)
CALL startime(timers,6)
3636 IF (imonm > 0)
CALL startime(timers,51)
3641 1 pm ,geo ,nodes%X ,nodes%A ,nodes%AR ,
3642 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,w ,
3643 3 elbuf ,val2 ,veul ,fv ,
3644 4 nodes%STIFN ,nodes%STIFR ,element%PON%FSKY ,tf ,bufmat ,
3645 5 partsav ,output%DATA%FOPT,fsav ,
3647 7 element%PON%IADS ,iparg ,npc ,ixs ,
3648 8 neltst ,ityptst ,ipart ,ipart(k1) ,nodes%ITAB ,
3649 9 interfaces%PON%FSKYI ,bufgeo ,kxx ,ixx ,interfaces%PON%ISKY ,
3650 a ipart(k9) ,gresav ,
grth ,
3651 b
igrth ,elbuf_tab )
3652 IF (imonm > 0)
CALL stoptime(timers,51)
3653 IF (imon>0)
CALL stoptime(timers,6)
3658 CALL python_begin_openmp(python)
3665 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3666 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3674 .
ifoam_cont(nodftsk:nodltsk)= icontact(nodftsk:nodltsk)
3676 icontact(nodftsk:nodltsk)=0
3679 IF(istatcnd /= 0)
THEN
3682 stcnd(ndtsk+n-1) = zero
3685 DO n=nodftsk,nodltsk
3691 IF(intplyxfem > 0)
THEN
3692 DO n=nodftsk,nodltsk
3699 CALL python_end_openmp(python)
3701 IF(anim_ply > 0) vn_nod = zero
3705 IF(nloadp_hyd_inter > 0 )
THEN
3712 itsk = omp_get_thread_num()
3713 nodftsk = 1+itsk*numnod/ nthread
3714 nodltsk = (itsk+1)*numnod/nthread
3715 DO k=1,nloadp_hyd_inter
3716 tagncont(k,nodftsk:nodltsk) = 0
3738 IF (sh_offset_tab%NNSH_OSET > 0)
THEN
3739 CALL assign_ptrx(ptrx,xyz,numnod)
3740 ELSEIF (impl_s > 0 .AND. ismdisp >0)
THEN
3741 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3743 CALL assign_ptrx(ptrx,nodes%X,numnod)
3746 1 ipari ,ptrx ,nodes%A ,
3747 2 nodes%ICODT ,fsav ,wa(1),nodes%V
3748 3 dt2tt ,neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN ,
3749 4 npc ,tf ,interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,
3750 5 output%DATA%VECT_CONT ,nodes%IN ,bufsf ,output%DATA%VECT_PCONT ,nsensor,
3751 6 output%DATA%VECT_PCONT_2 ,icontact ,rcontact ,num_impl(1,1),
3752 7 ns_imp(iadisk),ne_imp(iadisk),nt_imp ,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,
3753 8 h3d_data ,pskids ,tagncont,kloadpinter,loadpinter,
3766 CALL python_begin_openmp(python)
3774 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3775 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3783 IF(istatcnd /= 0 .AND. iparit == 0)
THEN
3785 stcnd(ndtsk+n-1)=-nodes%STIFN (ndtsk+n-1)
3790 iadisk = 1+itsk*nint7
3794 IF(iparit == 1) ndtsk = 1
3797 1 ipari ,nodes%X ,nodes%A(1,ndtsk) ,
3798 2 nodes%ICODT ,fsav ,wa(nwaftsk),nodes%V ,nodes%MS ,
3799 3 dt2tt ,neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN(ndtsk) ,
3800 4 npc ,tf ,interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,
3801 6 output%DATA%VECT_CONT
3802 7 output%DATA%VECT_PCONT_2 ,icontact ,rcontact ,num_impl(1,itsk+1),
3803 8 ns_imp(iadisk),ne_imp(iadisk),nt_imp ,sensors%SENSOR_TAB,interfaces%INTBUF_TAB,
3804 9 h3d_data ,nsensor)
3806#include "lockon.inc"
3812#include "lockoff.inc"
3815 CALL python_end_openmp(python)
3818 CALL re2int5(nt_imp,num_imp,ns_imp,ne_imp,num_impl,ipari,nint7)
3822 IF (imon>0)
CALL stoptime(timers,timer_contsort)
3829 IF (imon>0)
CALL startime(timers,timer_contfor)
3831 l1 = 1+nixs*numels + nsvois*nixs
3839 IF(ninter25 /= 0)
THEN
3840 IF (imon>0)
CALL startime(timers,timer_exfor)
3841 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
3842 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3843 * iad_i25 ,fr_i25 ,sfr_i25 ,3 )
3844 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
3845 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3846 * iad_i25 ,fr_i25 ,sfr_i25 ,4 )
3847 IF (imon>0)
CALL stoptime(timers,timer_exfor)
3856 ntmp = nt_imp5 + nt_imp1
3858 IF (sh_offset_tab%NNSH_OSET > 0)
THEN
3859 CALL assign_ptrx(ptrx,xyz,numnod)
3860 ELSEIF (impl_s > 0 .AND. ismdisp >0)
THEN
3861 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3863 CALL assign_ptrx(ptrx,nodes%X,numnod)
3865 CALL python_begin_openmp(python)
3873 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3874 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3881 iadisk = 1+ntmp+itsk*(nint7-ntmp)
3886 IF(ndtsk>ifthe) idx_fthe = 1
3888 IF(ndtsk>icondn)idx_condn = 1
3890 IF(
npinch == 0 )idx_pinch = 1
3891 IF(iparit == 1) ndtsk = 1
3894 2 nodes%ICODT ,fsav ,nodes%V ,nodes%MS ,dt2tt ,
3895 3 neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN(ndtsk) ,tf ,
3896 4 interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,output%DATA%VECT_CONT,secfcum,
3897 5 itsk+1 ,niskyfi ,nodes%KINET ,newfront ,nstrf ,
3898 6 icontact ,nodes%VISCN(ndtsk),xcell ,
3899 8 num_impl(1,itsk+1),ns_imp(iadisk) ,ne_imp(iadisk) ,ind_imp(iadisk) ,nt_imp ,
3900 9 fr_i18 ,igrbric ,eminx ,
3901 a ixs ,ixs(l3) ,ixs(l2) ,output%DATA%VECT_PCONT ,output%DATA%VECT_PCONT_2 ,
3902 b nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,rcontact ,acontact ,pcontact ,
3903 c nodes%TEMP ,fthe(idx_fthe) ,ftheskyi ,iparg ,nsensor ,
3904 d pm ,
intstamp ,nodes%WEIGHT ,niskyfie ,irlen20 ,
3905 e islen20 ,irlen20t ,islen20t ,irlen20e ,islen20e ,
3907 g fncontg ,ftcontg ,nodes%NODGLOB ,nodes%MS0 ,npc ,
3908 h wa ,sensors%SENSOR_TAB,qfricint ,ncont ,
indexcont ,
3909 i
tagcont ,inod_pxfem ,ms_ply ,wagap ,elbuf_tab ,
3910 j condn(idx_condn) ,condnskyi ,nv46 ,
3911 k sensors%SFSAV ,sensors%FSAV ,glob_therm%NODADT_THERM,glob_therm%THEACCFACT,
3912 l isensint ,nisubmax ,nb25_candt ,nb25_impct ,
3913 m nb25_dst1 ,nb25_dst2 ,ixig3d ,kxig3d ,wige ,
3914 n knot ,igeo ,multi_fvm ,h3d_data ,
3915 p pskids ,t2main_sms ,forneqs ,knotlocpc ,knotlocel ,
3916 q pinch_data%APINCH(1,idx_pinch),pinch_data%STIFPINCH(idx_pinch),t2fac_sms,tagncont ,
3917 r kloadpinter ,loadpinter ,loadp_hyd_inter ,dgaploadint ,s_loadpinter ,
3918 s interfaces ,xcell_remote)
3920 IF(nintstamp/=0.AND.(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0.OR.
3921 . anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT >0))
THEN
3924 DO i=itsk+1,ncont,nthread
3930#include "lockon.inc"
3936#include "lockoff.inc"
3938 IF(istatcnd /= 0 .AND. iparit == 0)
THEN
3940 stcnd(ndtsk+n-1) = stcnd(ndtsk+n-1) + nodes%STIFN (ndtsk+n-1)
3943 IF (iparit == 0 .AND. nspmd > 1 .AND. nthread > 1)
THEN
3945 CALL assparxx(itsk, intlist,nbintc,ipari,glob_therm%NODADT_THERM)
3948 CALL python_end_openmp(python)
3954 IF(impl_s>0)
CALL re2int7(nt_imp,num_imp,ns_imp,ne_imp,
3955 1 ind_imp,num_impl,ipari,nint7 )
3958 CALL stoptime(timers,timer_contfor)
3961 IF (imonm > 0)
CALL startime(timers,21)
3969 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0.AND.
3970 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.
3971 . (tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP) .OR.
3972 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
3973 . .OR.h3d_data%N_VECT_PCONT_MAX >0)
THEN
3975 1 ipari ,intlist ,nbintc ,output%DATA%VECT_PCONT,
3976 2 output%DATA%VECT_PCONT_2
3977 3 irlen20 ,islen20,irlen20t,islen20t,interfaces%INTBUF_TAB ,
3978 4 h3d_data%N_CSE_FRIC_INTER,h3d_data%N_SCAL_CSE_FRIC)
3979 ELSEIF((h3d_data%N_SCAL_CSE_FRIC+output%DATA%NINEFRIC>0.AND.
3980 . ((tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP) .OR.
3981 . h3d_data%MH3D/=0 ))
3982 . .OR.(h3d_data%N_SCAL_CSE_FRIC+output%DATA%NINEFRIC >0.AND.ninter25>0))
THEN
3984 1 ipari ,intlist ,nbintc ,islen7 ,irlen7 ,
3985 2 irlen7t ,islen7t ,irlen20 ,islen20,irlen20t,
3986 3 islen20t ,interfaces%INTBUF_TAB ,h3d_data)
3990 l1 = 1+nixs*numels + nsvois*nixs
3995 1 ipari ,nodes%A ,nodes%STIFN ,nodes%VISCN ,
3996 2 intlist ,nbintc ,nodes%ICODT ,secfcum ,nstrf ,
3997 3 icontact ,output%DATA%VECT_CONT ,islen7 ,irlen7 ,islen11 ,
3998 4 irlen11 ,islen17 ,irlen17,igrbric ,
3999 5 ixs ,ixs(l3) ,fthe ,irlen7t ,
4000 6 islen7t ,irlen20 ,islen20,irlen20t,islen20t,
4001 7 irlen20e ,islen20e,condn ,1, interfaces%INTBUF_TAB ,
4002 8 h3d_data, multi_fvm,tagncont,kloadpinter,loadpinter,
4003 9 loadp_hyd_inter,fsav ,interfaces,glob_therm%NODADT_THERM)
4007 1 ipari ,intlist ,nbintc ,niskyfi ,nodes%ICODT ,
4008 2 secfcum ,nstrf ,icontact ,output%DATA%VECT_CONT ,igrbric ,
4009 3 ixs ,ixs(l3) ,niskyfie ,nbint20 ,1 ,
4010 4 interfaces%INTBUF_TAB,sfskyi ,sisky ,h3d_data ,multi_fvm ,
4011 5 tagncont ,kloadpinter,loadpinter,loadp_hyd_inter,fsav,
4012 6 interfaces,glob_therm)
4014 IF(multi_fvm%IS_INT18_LAW151)
THEN
4021 IF (imon>0)
CALL stoptime(timers,timer_exfor)
4022 IF (imonm > 0)
CALL stoptime(timers,21)
4029 IF (int24use == 1)
THEN
4030 IF (imon>0)
CALL startime(timers,timer_contfor)
4031 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
4032 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
4033 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,1,
4036 IF (imon>0)
CALL stoptime(timers,timer_contfor)
4042 IF(nintstamp /= 0.AND.ftempvar21==1)
THEN
4043 CALL spmd_i21fthecom(ipari ,fthe ,interfaces%INTBUF_TAB,sensors%SENSOR_TAB,niskyfi ,
4044 . ftheskyi,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,condnskyi,nsensor,glob_therm%NODADT_THERM)
4050 IF (ns10e > 0.AND.iparit == 0)
THEN
4058 itsk = omp_get_thread_num()
4059 nodftsk = 1+itsk*numnod/ nthread
4060 nodltsk = (itsk+1)*numnod/nthread
4061 greftsk = 1+itsk*ns10e/ nthread
4062 greltsk = (itsk+1)*ns10e/nthread
4064 2 nodftsk,nodltsk,greftsk,greltsk,itsk ,
4065 3 nodes%STIFN ,stifnd)
4078 IF (imonm > 0)
CALL startime(timers,50)
4080 nn = numelc+numeltg+ibagsurf
4090 CALL fvmesh0(monvol, nodes%X, volmon, ixs)
4092 CALL fvupd0(monvol, nodes%X, nodes%V, volmon, smonvol, svolmon)
4093 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
4094 CALL fvbag0(output, monvol , volmon, nodes%X
4095 . nodes%A , npc, tf, nsensor ,
4096 . fsav(1,n), ifvmesh, icontact_old, lgauge ,
4097 . gauge , igeo, geo, pm , ipm ,
4098 . iparg , igrouptg, igroupc, elbuf_tab , noda_fext,
4099 . 1 , h3d_data, nodes%ITAB, nodes%WEIGHT , output%TH%WFEXT, python)
4102 IF (imonm > 0)
CALL stoptime(timers,50)
4106 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0)
THEN
4136 IF (nslipring + nretractor> 0)
CALL update_slipring(ixr,element%SHELL%IXC,iparg,elbuf_tab,flag_slipring_update,
4137 . flag_retractor_update,nodes%X,npby)
4143 IF (imon>0)
CALL startime(timers,timer_element)
4149 llt1 = i87g+3*numeltg
4150 CALL python_begin_openmp(python)
4158 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4159 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4165 IF(igrelem == 1)iad_grel = k3-k1+1
4167 IF(ndtsk>ifthe)idx_fthe=1
4169 IF(ndtsk>icondn)idx_condn=1
4171 IF(
npinch == 0 )idx_pinch = 1
4172 IF(iparit == 1) ndtsk = 1
4174 ndtskr=ndtsk ;
IF(iroddl == 0)ndtskr=1
4177 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%AR(1,ndtsk) ,
4178 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,nloc_dmg ,
4179 3 wa(nwaftsk) ,nodes%STIFN(ndtsk) ,nodes%STIFR(ndtskr) ,element%PON%FSKY ,
crksky ,
4180 4 tf ,bufmat ,partsav(ipmtsk) ,nodes%D ,mat_elem ,
4181 5 nodes%DR ,eani ,tani ,output%DATA%FOPT ,
4182 6 fsav ,sensors ,skews%SKEW ,failwave ,
4183 7 dt2tt ,thke ,bufgeo ,element%PON%IADC ,element%PON%IAD_TG ,
4184 8 iparg ,npc ,element%SHELL%IXC ,ixtg ,neltstt ,
4185 9 ipari ,ityptstt ,nstrf ,
4186 a ipart ,ipart(k3) ,ipart(k8) ,secfcum ,
4187 b fsavd ,mat_elem%GROUP_PARAM ,
4188 e fzero ,ixtg1 ,element%PON%IAD_TG6 ,igeo ,ipm ,
4189 f madfail ,xsec ,itsk ,nodes%MCP ,
4190 g nodes%TEMP ,fthe(idx_fthe) ,fthesky ,
4192 i iel_pxfem ,iadc_pxfem ,igrouc ,ngrouc ,gresav(igmtsk),
4193 j
grth ,
igrth(iad_grel) ,mstg ,dmeltg ,msc ,
4194 k dmelc ,table ,kxfenod2elc ,ptg ,msz2 ,
4196 m ibordnode ,nodedge ,crknodiad ,elbuf_tab ,
4197 n xfem_tab ,condn(idx_condn),condnsky ,
crkedge ,
4198 o stack ,nodes%ITAB ,glob_therm,
4199 q drape_sh4n ,drape_sh3n ,subsets, nodes%XDP ,pinch_data%VPINCH ,
4200 r pinch_data%APINCH(1,idx_pinch),pinch_data%STIFPINCH(idx_pinch),drapeg ,
4201 s output ,dt ,snpc , stf ,userl_avail ,maxfunc ,
4203#include "lockon.inc"
4209#include "lockoff.inc"
4211 CALL python_end_openmp(python)
4213 IF (imon>0)
CALL stoptime(timers,timer_element)
4224 IF (imon>0)
CALL startime(timers,timer_element)
4225 l1 = 1+nixs*numels + nsvois*nixs
4229 ll2 = ll1+6*numels10
4230 ll3 = ll2+12*numels20
4236 CALL python_begin_openmp(python)
4244 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4245 2 ipmtsk,partftsk ,partltsk ,nwaftsk,igmtsk ,
4247 IF(iparit == 1) ndtsk = 1
4252 i16tsk = 1+itsk*(sw16/nthread)
4254 IF(ndtsk>ifthe) idx_fthe = 1
4256 IF(ndtsk>icondn)idx_condn = 1
4258 ndtskr = ndtsk ;
IF(iroddl == 0)ndtskr = 1
4260 CALL forint(timers, python,
4261 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%AR(1,ndtsk) ,
4262 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,w ,
4263 3 elbuf ,wa(nwaftsk) ,val2 ,veul ,fv ,
4264 4 nodes%STIFN(ndtsk) ,nodes%STIFR(ndtskr) ,element%PON%FSKY ,tf ,bufmat ,
4265 5 partsav(ipmtsk),nodes%D ,nodes%DR ,eani ,elbuf_tab ,
4266 6 tani ,output%DATA%FOPT,fsav ,sensors ,nloc_dmg ,
4267 7 skews%SKEW ,output%DATA%SCAL_SPRING ,dt2tt ,bufgeo ,nodes%ITAB ,
4268 8 element%PON%IADS ,element%PON%IADQ ,element%PON%IAD_TRUSS ,element%PON%IAD_BEAM ,mat_elem ,
4269 9 element%PON%IAD_SPRING ,iparg ,ale_connectivity,npc ,
4270 a ixs ,ixq ,ixt ,ixp ,
4271 b ixr ,neltstt ,ipari ,
4272 c ityptstt ,nstrf ,ipart ,
4273 d ipart(k1) ,ipart(k2) ,ipart(k4) ,ipart(k5) ,
4274 e ipart(k6) ,ipart(k7) ,fr_wave ,rby ,
4275 f secfcum ,agrv ,igrv ,lgrav ,
4277 h ixs(l2) ,element%PON%IADS10 ,element%PON%IADS20 ,ixs(l3) ,element%PON%IADS16 ,
4278 i w16(i16tsk) ,element%PON%FSKYM ,msnf ,igeo ,ipm ,
4279 j xsec ,itsk ,nodes%TEMP ,
4280 k fthe(idx_fthe) ,fthesky ,igrounc ,ngrounc ,
4281 m gresav(igmtsk) ,
grth ,
igrth ,nodes%XDP ,mssa ,
4282 n dmels ,mstr ,dmeltr ,msp ,dmelp ,
4283 o msrt ,dmelrt ,table ,vflow ,aflow ,
4284 p dflow ,wflow ,ffsky ,aflow ,nbsdvois ,
4285 q nercvois ,nesdvois ,lercvois ,lesdvois ,phi ,
4286 r phie ,msf ,nodftsk ,nodltsk ,
4288 t kxig3d ,ixig3d ,knot ,wige ,condn(idx_condn),
4289 u condnsky ,s_sfem_nodvar,
4291 w knotlocpc ,knotlocel ,subsets ,flag_slipring_update, flag_retractor_update ,
4292 y h3d_data ,ifthe ,icondn ,dt ,output,
4293 z sbufmat ,snpc ,stf
4294 . dtmin1 ,idtmin ,iout ,istdo ,idtmins,dtfacs,nsvois,
4295 . iresp ,maxfunc ,userl_avail ,glob_therm,imon_mat,dtmins,sanin,
4298#include "lockon.inc"
4304#include "lockoff.inc"
4306 CALL python_end_openmp(python)
4309 IF (imon>0)
CALL stoptime(timers,timer_element)
4312 IF (imonm > 0)
CALL startime(timers,48)
4313 IF (imonm > 0)
CALL startime(timers,87)
4321 CALL python_begin_openmp(python)
4327 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4328 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4333 1 pm ,geo ,nodes%X ,nodes%V ,nodes%MS ,
4334 2 elbuf_tab,wa ,tf ,bufmat ,partsav ,
4335 3 iparg ,npc ,ipart ,nodes%ITAB ,bufgeo ,
4336 4 xframe ,kxsp ,ixsp ,nod2sp ,ipart(k10),
4337 5 spbuf ,ispcond ,ispsym ,xspsym ,vspsym ,
4338 6 wasph(ksph21) ,lprtsph ,lonfsph ,wasph(ksp2sort) ,
4339 7 isphio ,vsphio ,igrsurf ,nodes%D ,
4340 8 sphveln ,itsk ,nodes%XDP ,ibufssg_io,lgauge ,
4342 a ixs ,element%PON%IADS ,element%PON%ADSKY ,element%PON%FSKYD ,dmsph(ndtsk),
4343 b wasph(kspactiv),icontact_old,off_sph_r2r,wsmcomp,irunn_bis,
4344 c sph_iord1,sph_work,output%TH%WFEXT)
4346 CALL python_end_openmp(python)
4348 IF (imonm > 0)
CALL stoptime(timers,87)
4352 IF (imonm > 0)
CALL startime(timers,88)
4354 CALL python_begin_openmp(python)
4362 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4363 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4371 IF(igrelem == 1)iad_grel = k10-k1+1
4372 IF(iparit == 1) ndtsk = 1
4378 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%V ,
4379 2 nodes%MS ,w ,elbuf_tab ,wa ,fv ,
4380 3 nodes%STIFN(ndtsk) ,tf ,bufmat ,partsav(ipmtsk) ,nloc_dmg
4381 4 fsav ,dt2tt ,element%PON%IADS ,iparg ,npc
4382 5 neltstt ,ityptstt ,ipart ,nodes%ITAB ,interfaces%PON%ISKY ,
4383 6 bufgeo ,interfaces%PON%FSKYI ,xframe ,kxsp ,ixsp ,
4384 7 nod2sp ,ipart(k10) ,spbuf ,ispcond ,ispsym ,
4385 8 xspsym%BUF ,vspsym%BUF ,
4386 9 wasph(ksph21) ,lprtsph ,lonfsph ,wasph(kspactiv) ,isphio ,
4387 a vsphio ,sphveln ,itsk ,ipm ,gresav(igmtsk),
4388 b
grth ,
igrth(iad_grel),table ,lgauge ,gauge ,
4389 c ngrounc ,igrounc ,ixs ,irst ,sol2sph ,
4390 d sph2sol ,element%PON%FSKY ,element%PON%FSKY ,igeo ,nodes%TEMP ,
4391 e fthe ,ftheskyi ,sphg_f6
4392 f mat_elem ,output ,sph_iord1 ,snpc ,stf ,
4393 g sbufmat ,nsvois ,idtmins ,iresp ,maxfunc ,
4394 . imon_mat ,userl_avail ,impl_s ,idyna ,
4395 . dt ,glob_therm ,sph_work ,output%TH%WFEXT ,sensors )
4396#include "lockon.inc"
4402#include "lockoff.inc"
4405 CALL python_end_openmp(python)
4416 IF (imonm > 0)
CALL stoptime(timers,88)
4417 IF (imonm > 0)
CALL stoptime(timers,48)
4424 IF ((sdd_r2r_elem>0).AND.(flg_sphinout_r2r>0))
THEN
4425 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4426 CALL spmd_exch_r2r_sphoff(off_sph_r2r,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4427 CALL spmd_exch_r2r_sph(nodes%X,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4428 CALL spmd_exch_r2r_sph(nodes%D,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4429 CALL spmd_exch_r2r_sph(nodes%V,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4435 IF (imonm > 0)
CALL startime(timers,50)
4437 nn = numelc+numeltg+ibagsurf
4444 sporo = numelc+numeltg+ibagsurf
4446 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
4447 CALL fvbag0(output, monvol, volmon, nodes%X, sensors%SENSOR_TAB, nodes%V,
4448 . nodes%A, npc, tf, nsensor ,
4449 . fsav(1,n), ifvmesh, icontact_old,lgauge,
4450 . gauge , igeo, geo, pm, ipm,
4451 . iparg , igrouptg,igroupc, elbuf_tab, noda_fext,
4452 . 2 , h3d_data,nodes%ITAB, nodes%WEIGHT, output%TH%WFEXT, python)
4453 IF (impl_s > 0 .AND. ismdisp >0)
THEN
4454 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
4456 CALL assign_ptrx(ptrx,nodes%X,numnod)
4459 1 monvol ,volmon ,ptrx ,nodes%A ,
4460 2 npc ,tf ,nodes%V ,wa ,
4461 3 fsav(1,n) ,nsensor ,sensors%SENSOR_TAB ,igrsurf ,
4462 4 fr_mv ,element%PON%IAD_MV ,sicontact ,sporo ,
4463 5 element%PON%FSKY ,icontact ,wa(n0) ,iparg ,
4464 6 elbuf_tab ,geo ,igeo ,
4465 7 pm ,ipm ,ipart ,ipart(k3) ,
4466 8 ipart(k8) ,igroupc ,igrouptg ,noda_fext ,
4467 9 2 ,h3d_data ,t_monvol ,frontier_global_mv,
4471 IF (imonm > 0)
CALL stoptime(timers,50)
4478 IF (ns10e > 0 .AND. iparit==0)
THEN
4482 itsk = omp_get_thread_num()
4483 nodftsk = 1+itsk*numnod/ nthread
4484 nodltsk = (itsk+1)*numnod/nthread
4485 greftsk = 1+itsk*ns10e/ nthread
4486 greltsk = (itsk+1)*ns10e/nthread
4488 2 nodftsk,nodltsk,greftsk,greltsk,itsk ,
4489 3 nodes%STIFN ,stifnd)
4507 IF (imon>0)
CALL startime(timers,timer_exfor)
4508 IF (imonm > 0)
CALL startime(timers,22)
4510 l1 = 1+nixs*numels + nsvois*nixs
4516 1 ipari ,nodes%A ,nodes%STIFN ,nodes%VISCN ,
4517 2 intlist ,nbintc ,nodes%ICODT ,secfcum ,nstrf ,
4518 3 icontact ,output%DATA%VECT_CONT ,islen7 ,irlen7 ,islen11 ,
4519 4 irlen11 ,islen17 ,irlen17 ,igrbric ,
4520 5 ixs ,ixs(l3) ,fthe ,irlen7t ,
4521 6 islen7t ,irlen20 ,islen20 ,irlen20t,islen20t,
4522 7 irlen20e ,islen20e,condn ,2, interfaces%INTBUF_TAB,
4523 8 h3d_data, multi_fvm,tagncont,kloadpinter,loadpinter,
4524 9 loadp_hyd_inter,fsav ,interfaces,glob_therm%nodadt_therm)
4528 1 ipari ,intlist ,nbintc ,niskyfi ,nodes%ICODT ,
4529 2 secfcum ,nstrf ,icontact ,output%DATA%VECT_CONT ,igrbric ,
4530 3 ixs ,ixs(l3) ,niskyfie ,nbint20 ,2 ,
4531 4 interfaces%INTBUF_TAB,sfskyi ,sisky ,h3d_data ,multi_fvm ,
4532 5 tagncont ,kloadpinter,loadpinter,loadp_hyd_inter,fsav,
4533 6 interfaces,glob_therm)
4539 IF (imonm > 0)
CALL stoptime(timers,22)
4546! mpi communication
for nlocal option : parith/off
4547 IF(iparit /= 0.AND.nspmd > 1.AND. nloc_dmg%IMOD > 0)
THEN
4550 IF(nspmd > 1.AND. nintloadp > 0)
THEN
4551 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4556 IF(nloadp_hyd/=0.AND.impl_s/=1)
THEN
4559 IF (imon>0)
CALL startime(timers,timer_kin)
4560 IF (imonm > 0)
CALL startime(timers,41)
4562 2 nodes%A ,nodes%V ,nodes%X ,skews%SKEW ,sensors%SENSOR_TAB,
4563 3 element%PON%IAD_LOADP,element%PON%FSKY ,output%DATA%VECT_FEXT,tagncont ,nsensor ,
4564 4 loadp_hyd_inter,h3d_data , python,
4565 5 npresload ,loadp_tagdel,output%TH%TH_SURF,pblast,output%TH%WFEXT)
4568 IF (imonm > 0)
CALL stoptime(timers,41)
4569 IF (imon>0)
CALL stoptime(timers,timer_kin)
4575 IF(coupling%active)
THEN
4576 nodes%FORCES(1:3,1:numnod) = nodes%A(1:3,1:numnod)
4582 IF(iparit == 0 .AND. nthread > 1)
THEN
4583 IF (imon>0)
CALL startime(timers,timer_asm)
4587 itsk = omp_get_thread_num()
4588 nodftsk = 1+itsk*numnod/ nthread
4590 partftsk = 1+itsk*npsav*npart/nthread
4591 partltsk = (itsk+1)*npsav*npart/nthread
4592 greftsk = 1+itsk*npsav*ngpe/nthread
4593 greltsk = (itsk+1)*npsav*ngpe/nthread
4598 1 nthread ,numnod,nodftsk,nodltsk,iroddl,
4599 2 npart ,partftsk,partltsk ,nodes%A ,nodes%AR ,
4600 3 partsav ,nodes%STIFN ,nodes%STIFR ,nodes%VISCN , fthe ,
4601 4 glob_therm%ITHERM_FE,glob_therm%NODADT_THERM,stcnd ,greftsk,greltsk ,
4602 5 gresav ,ngpe ,nthpart ,ialelag, aflow,
4604 7 pinch_data%APINCH,pinch_data%STIFPINCH)
4609 IF (nloc_dmg%IMOD > 0)
THEN
4610 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
4611 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
4613 . nloc_dmg%POSI,nloc_dmg%L_NLOC,nthread )
4615 IF (nodadt > 0)
THEN
4617 . nloc_dmg%POSI,nloc_dmg%L_NLOC,nthread )
4618 CALL nlocal_dtnoda(nodft_nl,nodlt_nl,nloc_dmg,dtnod_nlocal,dt2t)
4622 IF (imon>0)
CALL stoptime(timers,timer_asm)
4628 IF(numsph /= 0 .AND. nsphsol /= 0 )
THEN
4629 IF (imonm > 0)
CALL startime(timers,48)
4630 IF (imonm > 0)
CALL startime(timers,89)
4631 CALL python_begin_openmp(python)
4634 itsk = omp_get_thread_num()
4635 nodftsk = 1+itsk*numnod/ nthread
4636 nodltsk = (itsk+1)*numnod/nthread
4639 1 nodes%A ,spbuf ,ixs ,kxsp ,ipart(k10),
4640 2 nod2sp ,irst ,ngrounc ,igrounc ,iparg ,
4641 3 nodes%STIFN ,sol2sph,sph2sol ,elbuf_tab,itsk ,
4642 4 nodftsk,nodltsk,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,igeo
4646 CALL python_end_openmp(python)
4648 IF (imonm > 0)
CALL stoptime(timers,89)
4649 IF (imonm > 0)
CALL stoptime(timers,48)
4660 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4661 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4664 CALL zeror(forneqs(1,nodftsk),numntsk)
4670 IF (int24use == 1)
THEN
4672 CALL assign_ptrx(ptrx,xyz,numnod)
4673 ELSEIF (impl_s > 0 .AND. ismdisp >0)
THEN
4674 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
4676 CALL assign_ptrx(ptrx,nodes%X,numnod)
4678 CALL i24nitschfor3 (ipari ,interfaces%INTBUF_TAB,iparit ,stressmean ,
4679 2 intlist ,nbintc ,ptrx,element%PON%IADS,
4680 3 forneqs ,forneqsky ,nodes%ITAB ,ixs ,
4681 4 element%PON%IADS10,element%PON%IADS20 ,element%PON%IADS16,nfacnit )
4689 IF(int18kine== 1)
THEN
4690 ALLOCATE(mtf(14,numnod))
4691 ALLOCATE(cand_sav(8,int18add(ninter+1)-1))
4693 ALLOCATE(tagpene(numnod))
4695 ALLOCATE(tagpene(1))
4698 int18add(ninter+1) = -iabs(int18add(ninter+1))
4699 int18kine=-iabs(int18kine)
4702 IF (imon>0)
CALL startime(timers,timer_exfor)
4704 length = 4 + iroddl*4
4707 IF(
ale%SUB%IFSUBM == 1) length = length + 1
4708 ELSEIF(
ale%SUB%IFSUBM==1)
THEN
4712 IF(glob_therm%ITHERM_FE > 0 )
THEN
4714 IF (glob_therm%NODADT_THERM == 1 ) length = length + 1
4717 IF(ialelag > 0 )
THEN
4721 IF(sol2sph_flag/=0) length = length + 1
4723 IF(nitsche > 0 )
THEN
4728 IF(anim_v(26)+h3d_data%N_VECT_CONT_MAX /=0.AND.nintstamp==0) lenc = 3
4729 IF(h3d_data%N_VECT_PCONT_MAX /=0.AND.nintstamp==0) lenc = lenc+6
4731 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4732 IF(idtmins /= 0)
THEN
4735 1 nodes%A ,nodes%AR ,nodes%STIFN, nodes%STIFR ,nodes%MS ,
4736 2 nodes%BOUNDARY_ADD,nodes%BOUNDARY,msnf ,
ale%SUB%IFSUBM
4737 3 lenr ,fthe , nodes%MCP,fr_loc,nb_fr ,
4738 4 ms_2d ,mcp_off,forneqs ,nfacnit ,
4739 5 lenc ,output%DATA%VECT_CONT ,h3d_data,output%DATA%VECT_PCONT,
4740 6 output%DATA%VECT_PCONT_2 ,glob_therm)
4743 1 nodes%A , nodes%ACC_DP ,nodes%AR ,nodes%STIFN,nodes%STIFR ,nodes%MS ,
4744 2 nodes%BOUNDARY_ADD,nodes%BOUNDARY,msnf ,
ale%SUB%IFSUBM,length ,
4745 3 lenr ,fthe , nodes%MCP, dmsph,condn,
4747 5 forneqs ,nfacnit,lenc ,output%DATA%VECT_CONT ,h3d_data,
4748 6 output%DATA%VECT_PCONT ,output%DATA%VECT_PCONT_2 ,glob_therm)
4753 length = 4 + iroddl*4
4754 IF(
ale%SUB%IFSUBM==1)
THEN
4757 IF(n2d /= 0.AND.
ale%SUB%IFSUBM == 1) length = length + 1
4760 IF (glob_therm%ITHERM_FE > 0 )
THEN
4763 IF (glob_therm%NODADT_THERM == 1 )
THEN
4768 IF(intplyxfem > 0) sizi = sizi + 5
4770 IF(ialelag > 0 )
THEN
4774 lens = fr_nbcc(1,nspmd+1)
4775 lenr = fr_nbcc(2,nspmd+1)
4776 leni = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4781 IF(iplyxfem > 0)
THEN
4782 lens1 = fr_nbcc1(1,nspmd+1)
4783 lenr1 = fr_nbcc1(2,nspmd+1)
4786 IF(icrack3d > 0)
THEN
4787 lens1 = fr_nbcc1(1,nspmd+1)
4788 lenr1 = fr_nbcc1(2,nspmd+1)
4791 IF(sol2sph_flag/=0)
THEN
4796 IF(anim_v(26)+h3d_data%N_VECT_CONT_MAX /=0.AND.nintstamp==0) lenc = 3*leni
4797 IF(h3d_data%N_VECT_PCONT_MAX /=0.AND.nintstamp==0) lenc = lenc+6*leni
4800 1 nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,element%PON%ADSKY ,element%PON%PROCNE ,fr_nbcc ,
4801 2 length ,lenr ,lens ,element%PON%FSKY ,element%PON%FSKY ,
4802 3 element%PON%FSKYM ,
ale%SUB%IFSUBM ,sizi ,leni ,element%PON%IADSDP ,
4803 4 element%PON%IADRCP ,element%PON%ISENDP ,element%PON%IRECVP ,ffsky ,procne_pxfem,
4804 5 fr_nbcc1 ,iadsdp_pxfem,iadrcp_pxfem ,isendp_pxfem,
4805 6 irecvp_pxfem,lenr1 ,lens1 ,iadsdp_crk,iadrcp_crk ,
4806 7 isendp_crk ,irecvp_crk,element%PON%FSKYD ,crknodiad ,
crksky ,
4807 8 forneqsky ,nfacnit ,lenc , output%DATA%VECT_CONT ,h3d_data ,
4808 9 output%DATA%VECT_PCONT,output%DATA%VECT_PCONT_2 ,glob_therm)
4811 IF (imon>0)
CALL stoptime(timers,timer_exfor)
4819 IF (imon>0)
CALL startime(timers,timer_asm)
4826 IF(iparit==1)
ALLOCATE( fsky_l(nisky) )
4828 CALL python_begin_openmp(python)
4831 itsk = omp_get_thread_num()
4833 nodftsk = 1+itsk*numnod/ nthread
4834 nodltsk = (itsk+1)*numnod/nthread
4835 partftsk = 1+itsk*npsav*npart/nthread
4836 partltsk = (itsk+1)*npsav*npart/nthread
4837 greftsk = 1+itsk*npsav*ngpe/nthread
4838 greltsk = (itsk+1)*npsav*ngpe/nthread
4839 nodftsk_2 = nodft_asspar(itsk+1)
4840 nodltsk_2 = nodlt_asspar(itsk+1)
4848 2 element%PON%FSKY ,element%PON%FSKY ,element%PON%ADSKY ,element%PON%FSKYM ,
4849 3 msnf ,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,fthe ,
4850 4 fthesky,ftheskyi,nodftsk,nodltsk ,interfaces%PON%ADSKYI,
4851 5 partsav,partftsk ,partltsk ,itsk ,greftsk ,
4852 6 greltsk ,gresav ,aflow ,ffsky ,msf ,
4853 7 adsky_pxfem, inod_pxfem ,element%PON%FSKYD ,
4854 8 dmsph ,condn ,condnsky ,condnskyi,
4856 a stifnd ,forneqs ,forneqsky ,nfacnit,nodftsk_2,
4857 b nodltsk_2,fsky_l,glob_therm)
4861 IF (nloc_dmg%IMOD>0)
THEN
4862 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
4863 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
4864 CALL asspar_sub(nloc_dmg%FNL(:,1) ,nloc_dmg%FSKY,nloc_dmg%ADDCNE,nodft_nl ,
4865 . nodlt_nl ,nloc_dmg%POSI ,nloc_dmg%NNOD, nloc_dmg%L_NLOC)
4867 IF (nodadt > 0)
THEN
4868 CALL asspar_sub(nloc_dmg%STIFNL(:,1),nloc_dmg%STSKY,nloc_dmg%ADDCNE,nodft_nl,
4869 . nodlt_nl,nloc_dmg%POSI,nloc_dmg%NNOD,nloc_dmg%L_NLOC)
4870 CALL nlocal_dtnoda(nodft_nl,nodlt_nl,nloc_dmg,dtnod_nlocal,dt2t)
4876 IF(icrack3d > 0)
THEN
4881 . adsky_crk,inod_crk ,
crksky ,nodftsk ,nodltsk ,
4882 . nodenr ,nodlevxf ,nodes%ITAB )
4884 ELSEIF(iparit==2)
THEN
4889 CALL ancmsg(msgid=165,anmode=aninfo)
4896 2 nodes%A ,nodes%AR ,itsk ,nodftsk ,
4897 3 nodltsk ,nodes%STIFN ,nodes%STIFR ,nodes%ITAB ,element%PON%FSKY ,
4898 4 element%PON%FSKY ,interfaces%PON%ISKY ,element%PON%ADSKY ,interfaces%PON%FSKYI ,
4899 5 wa ,partftsk ,partltsk ,partsav ,nodes%MS ,
4900 6 fthe ,fthesky ,ftheskyi ,greftsk ,greltsk ,
4901 7 gresav ,glob_therm%ITHERM_FE ,glob_therm%INTHEAT )
4903 ELSEIF(iparit==3)
THEN
4908 1 nthread ,numnod ,nodftsk ,nodltsk ,iroddl ,
4909 2 npart ,partftsk ,partltsk ,nodes%A ,nodes%AR ,
4910 3 partsav ,nodes%STIFN ,nodes%STIFR ,nodes%A(1,n1) ,nodes%AR(1,n1) ,
4911 4 nodes%STIFN(n1) ,nodes%STIFR(n1) ,nodes%VISCN ,nodes%VISCN(n1),greftsk ,
4912 5 greltsk ,gresav ,ngpe ,nthpart)
4916 IF(kdtint/=0)
CALL modsti(nodftsk,nodltsk,nodes%STIFN,nodes%VISCN,nodes%MS)
4919 CALL python_end_openmp(python)
4921 IF(iparit==1)
DEALLOCATE( fsky_l )
4922 IF (imon>0)
CALL stoptime(timers,timer_asm)
4930 IF( debug(macro_debug_nan)/=0 )
CALL check_nan_acc(ncycle,nodes)
4932 IF (debug(macro_debug_acc)==1.AND.(nloc_dmg%IMOD>0))
THEN
4938 IF ( ncycle>=debstart .AND.
4939 . mod(ncycle-debstart,rstfreq)==0 )
THEN
4941 . nloc_dmg%POSI ,nloc_dmg,siz,nodes%NODGLOB,nodes%ITAB )
4954 CALL python_begin_openmp(python)
4957 itsk = omp_get_thread_num()
4958 nodftsk = 1+itsk*numnod/ nthread
4959 nodltsk = (itsk+1)*numnod/nthread
4960 greftsk = 1+itsk*ns10e/ nthread
4961 greltsk = (itsk+1)*ns10e/nthread
4964 2
itagnd ,nodftsk,nodltsk,greftsk,greltsk,
4965 3 itsk ,nodes%ITAB ,nodes%STIFN, stifnd)
4967 CALL python_end_openmp(python)
4970 IF(sol2sph_flag/=0)
THEN
4974 CALL python_begin_openmp(python)
4976 itsk = omp_get_thread_num()
4977 nodftsk = 1+itsk*numnod/ nthread
4978 nodltsk = (itsk+1)*numnod/nthread
4979 DO i=nodftsk,nodltsk
4980 IF(nodes%MS(i)/=zero)
THEN
4981 IF(nodes%MS(i)-dmsph(i) < em03*nodes%MS(i))
THEN
4984 nodes%MS(i)=
max(zero,nodes%MS(i)-dmsph(i))
4990 CALL python_end_openmp(python)
4997 IF (int24use == 1)
THEN
4998 IF (imon>0)
CALL startime(timers,timer_contfor)
4999 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
5000 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
5001 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,2,
5003 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5009 IF(nbint20>0.AND.nspmd>1)
THEN
5011 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5013 1 interfaces%INTBUF_TAB,ipari,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
5014 2 length ,nbint20,lenr ,intlist ,nbintc )
5019 IF(kcontact/=0.AND.nspmd>1)
THEN
5021 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5023 + ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5028 IF(ialelag > 0.AND.nspmd>1)
THEN
5030 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5037 CALL data_recv_madcpl(nodes%X,nodes%A,nodes%V,nodes%MS,
5038 . output%DATA%VECT_CONT,madclnod,madclfrecv,h3d_data,output%TH%WFEXT)
5042 IF (vipercoupling)
THEN
5044 CALL radiossviper_receiveaccelerations(numnod,nodes%A,noda_fext,viper%ITABM1)
5048 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
GOTO 23
5055 1 geo ,nodpor ,nodes%MS,nodes%X ,nodes%V ,
5056 2 w ,nodes%A ,nodes%AR,skews%SKEW,nodes%WEIGHT,
5062 IF (debug(macro_debug_acc)==1)
THEN
5063 IF (ncycle>=debstart .AND.mod(ncycle-debstart,rstfreq)==0)
THEN
5070 CALL spmd_collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB,siz)
5072 CALL collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB)
5083 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5085 CALL spmd_exch_wave(fr_wave,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5093 itsk = omp_get_thread_num()
5094 nodftsk = 1+itsk*numnod/ nthread
5095 nodltsk = (itsk+1)*numnod/nthread
5096 DO i=nodftsk,nodltsk
5097 fr_wave(i)=abs(fr_wave(i))
5113 IF (imon>0)
CALL startime(timers,timer_contfor)
5114 IF (n2d/=0.AND.idel7==2)
THEN
5116 CALL chkstifn(ipari,nodes%MS,interfaces%INTBUF_TAB)
5117 IF (imon>0)
CALL stoptime(timers,6)
5123 ELSEIF(idel7ng>=1.OR.pdel>0)
THEN
5128 IF (imonm > 0 )
CALL startime(timers,76)
5130 IF (imonm > 0 )
CALL stoptime(timers,76)
5131 idel7nok =
min(1,idel7nok)
5133 idel7nok_sav = idel7nok
5134 IF (r2r_siu==1.AND.idel7ng>=1)
THEN
5136 idel7nok = idel7nok+idel7nok_r2r
5137 idel7nok =
min(1,idel7nok)
5140 IF ((idel7ng>=1.AND.idel7nok==1).OR.(pdel>0.AND.idel7nok==1))
THEN
5144 IF((int24use==1.OR.ninter25/=0).AND.(idel7ng>=1.AND.idel7nok==1))
THEN
5145 indseglo(2:ninter+1)=0
5153 IF (imonm > 0 )
CALL startime(timers,29)
5155 check_neigh_flag_res = 0
5159 CALL python_begin_openmp(python)
5165 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
5166 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
5168 omp_address = 1 + itsk*numnod
5170 IF ((idel7ng>=1.AND.idel7nok==1).OR.(pdel>0.AND.idel7nok==1))
THEN
5172 1 geo ,ixs ,ixs(l1) ,ixs(l1) ,ixs(l3) ,ixq ,
5173 2 element%SHELL%IXC ,ixt ,ixp ,ixr ,ixtg ,
5174 3 nodes%deleted_node,nodftsk ,nodltsk ,iparg ,elbuf ,itsk ,
5175 4 ixtg1 ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITAB ,
5176 5 addcnel ,cnel ,kxsp ,elbuf_tab ,tagel ,iexlnk ,
5177 6 igrnod ,dd_r2r ,dd_r2r_elem,sdd_r2r_elem,idel7nok_sav ,
5178 7 idel7nok_r2r,tagtrimc,tagtrimtg,s_elem_state,elem_state,
5179 8 shoot_struct,shoot_struct%GLOBAL_NB_ELEM_OFF)
5183 . shoot_struct%SHIFT_S_NODE,shoot_struct%INTER_SEC_NODE,shoot_struct%SEC_NODE_ID)
5192 . ngroup,nparg,igroups,iparg )
5194 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
5195 2 ixr,geo,ngroup,igroups,iparg )
5205 . interfaces%INTBUF_TAB,newfront,
5207 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5208 . addcnel,cnel,nodes%work_array_node(omp_address),tagel )
5218 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
5220 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5225 CALL check_edge_state( itsk,shoot_struct%SAVE_M_EDGE_NB,shoot_struct%SAVE_S_EDGE_NB,
5226 . shoot_struct%SAVE_M_EDGE,shoot_struct%SAVE_S_EDGE,
5227 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,newfront,ipari,geo,
5228 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5229 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
5235 IF(int24use>0.OR.ninter25/=0)
THEN
5237 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
5238 . ipari,nodes%BOUNDARY_ADD,shoot_struct )
5240 IF(ninter25/=0.AND.interfaces%PARAMETERS%INT25_EROSION_SOLID > 0)
THEN
5242 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
5243 IF(need_comm_int25_solid_erosion(ispmd+1))
THEN
5244 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
5245 CALL spmd_allreduce(check_neigh_flag,check_neigh_flag_res,1,spmd_max,comm_int25_solid_erosion)
5246 ELSEIF(nspmd==1)
THEN
5247 check_neigh_flag_res = check_neigh_flag
5249 IF(check_neigh_flag_res > 0 )
THEN
5250 CALL get_neighbour_surface( ispmd,nspmd,ninter25,npari,ninter,
5251 . nbintc,nixs,nixc,nixtg,numnod,
5252 . numels,numelc,numeltg,s_elem_state,
5253 . nbddedgt,nbddedg_max,
5254 . elem_state,ipari,intlist,nodes,
5255 . newfront,ixs,element%SHELL%IXC,ixtg,
5256 . nodes%BOUNDARY_ADD,nodes%X,
5257 . interfaces%INTBUF_TAB,interfaces%SPMD_ARRAYS
5258 . need_comm_int25_solid_erosion)
5267 IF (idel7ng>=1.AND.idel7nok==1)
THEN
5269 1 ipari ,geo ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
5270 2 ixp ,ixr ,ixtg ,nodes%deleted_node,iparg ,itsk ,
5271 3 newfront,nodes%work_array_node(omp_address) ,nodes%MS ,nodes%IN ,output%DATA%SCAL_DMAS,nodes%ITAB ,
5272 4 nodes%ITABM1 ,addcnel , cnel ,indidel ,nindex1 ,nindex2 ,
5273 5 nindex3 ,nindex4 ,tagel ,int24use ,ibufseglo ,indseglo,
5274 6 ibufidel ,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD)
5278 IF (pdel>0.AND.idel7nok==1)
THEN
5280 1 ibcl ,ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
5281 2 ixr ,ixtg ,nodes%deleted_node,itsk ,nodes%work_array_node(omp_address),nodes%ITAB ,
5282 3 nodes ,addcnel ,cnel ,tagel ,iparg ,geo ,
5283 4 ibufpdel,nindexpdel,nindexp ,npresload,loadp_tagdel ,
5284 5 iloadp ,lloadp ,nodes%BOUNDARY_ADD)
5289 CALL python_end_openmp(python)
5290 IF (imonm > 0 )
CALL stoptime(timers,29)
5353 IF(idtmins>=1.OR.idtmins_int/=0)
THEN
5359 IF (imonm > 0 )
CALL startime(timers,76)
5361 IF (imonm > 0 )
CALL stoptime(timers,76)
5362 idel7nok =
min(1,idel7nok)
5390 IF (idel7nok > 0 )
THEN
5391 CALL mad_elfail( elbuf_tab,iparg,
5392 * madsol,madsh3,madsh4,
5393 * mad_tag_sol, mad_tag_sh,mad_tag_tg,
5395 * mad_fail_elements)
5399 madymo_del_global = madymo_del
5406 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5416 1 nstrf ,nodes%V,nodes%VR,
5417 2 nodes%A ,nodes%AR ,secbuf,nodes%MS,nodes%IN,
5418 3 nodes%WEIGHT,iad_cut,fr_cut, output%TH%WFEXT)
5422 IF (ncluster > 0)
THEN
5423 CALL clusterf(cluster ,elbuf_tab,nodes%X ,nodes%A ,nodes%AR ,
5424 . skews%SKEW ,ixs ,iparg ,fcluster,mcluster,
5432 IF (nslipring + nretractor + n_anchor_remote > 0)
THEN
5439 IF(ninter /= 0.and.iale+ieuler /= 0.and.
5440 . int18kine == -1)
THEN
5445 CALL python_begin_openmp(python)
5447 itsk = omp_get_thread_num()
5452 CALL i18main_kine_1(output, ipari,interfaces%INTBUF_TAB,nodes%X ,nodes%V ,
5453 2 nodes%A ,nodes%ISKEW ,skews%SKEW ,nodes%ICODT ,wa ,
5454 3 nodes%MS ,nodes%ITAB ,itsk+1 ,nodes%KINET ,nodes%STIFN ,
5455 4 mtf ,cand_sav ,int18add ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,
5456 5 tagpene ,h3d_data ,multi_fvm,ale_connectivity%NE_CONNECT,xcell,xcell_remote)
5458 CALL python_end_openmp(python)
5469 CALL startime(timers,timer_contsort)
5471 IF (imonm > 0)
CALL startime(timers,28)
5475 1 ipari ,nodes%X ,nodes%V ,nodes%A ,
5476 2 nodes%VR ,nodes%AR ,wa ,nodes%MS ,nodes%IN ,nodes%WEIGHT ,
5477 3 nodes%STIFN ,nodes%STIFR ,k ,nodes%ITAB ,fr_i2m ,iad_i2m ,
5478 4 addcni2,procni2,iadi2 ,i2msch ,dmas ,output%DATA%SCAL_DMAS,
5479 5 skews%SKEW ,i2size ,fr_nbcci2,output%DATA%SCAL_DINER ,igeo,bufgeo ,
5480 6 fsav ,npc ,tf ,output%DATA%VECT_CONT2 ,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
5481 7
nativ_sms,dmint2,output%DATA%SCAL_DAMA2,nb_fri2m ,fr_loci2m,
5482 8 dt2t ,neltst ,ityptst ,interfaces%INTBUF_TAB ,nodes%TEMP ,nodes%MCP ,
5483 9 fthe ,condn ,glob_therm,
5484 a h3d_data,t2fac_sms,output%DATA%VECT_PCONT2,npcont2)
5486 IF (imonm > 0)
CALL stoptime(timers,28)
5488 CALL stoptime(timers,timer_contsort)
5492 IF((idtmins/=0.OR.idtmins_int/=0).AND.ncycle==0)ismsch=1
5505 CALL python_begin_openmp(python)
5508 itsk = omp_get_thread_num()
5509 nodftsk = 1+itsk*numnod/ nthread
5510 nodltsk = (itsk+1)*numnod/nthread
5511 greftsk = 1+itsk*ns10e/ nthread
5512 greltsk = (itsk+1)*ns10e/nthread
5515 2
itagnd ,nodftsk,nodltsk,greftsk,greltsk,
5516 3 itsk ,nodes%ITAB ,nodes%STIFN , stifnd
5518 CALL python_end_openmp(python)
5524 IF (ncycle==0.OR.mcheck/=0)
5528 IF(intplyxfem > 0)
THEN
5530 1 ipari ,interfaces%INTBUF_TAB ,wagap,nodes%BOUNDARY_ADD,nodes%BOUNDARY)
5536 IF (nrbe2>0.OR.r2size>0)
THEN
5539 IF (imon>0)
CALL startime(timers,timer_kin)
5540 CALL rbe2t1(irbe2 ,lrbe2 ,nodes%X ,nodes%A ,nodes%AR ,
5541 1 nodes%MS ,nodes%IN ,skews%SKEW ,nodes%WEIGHT ,iad_rbe2,
5542 2 fr_rbe2m,nmrbe2,nodes%STIFN ,nodes%STIFR ,r2size )
5543 IF (imon>0)
CALL stoptime(timers,timer_kin)
5551 IF (imon>0)
CALL startime(timers,timer_kin)
5552 IF (imonm > 0)
CALL startime(timers,45)
5554 CALL rbe3t1(rbe3 ,nodes ,skews%SKEW,
5556 2 output%DATA%SCAL_DINER ,h3d_data , dt1,
5559 IF (imonm > 0)
CALL stoptime(timers,45)
5560 IF (imon>0)
CALL stoptime(timers,timer_kin)
5566 IF(tt==zero.AND.iale+ieuler+glob_therm%ITHERM==0)
THEN
5573 CALL python_begin_openmp(python
5575 itsk = omp_get_thread_num()
5576 nodftsk = 1+itsk*numnod/ nthread
5577 nodltsk = (itsk+1)*numnod/nthread
5578 CALL chkmsin(nodftsk,nodltsk,nodes%ITAB,nodes%MS,nodes%IN,negmas)
5580 CALL python_end_openmp(python)
5582 IF(negmas/=0)
CALL arret(2)
5591 IF(nintstamp/=0)
THEN
5593 . nodes%STIFN ,nodes%STIFR ,nodes%WEIGHT, output%TH%WFEXT)
5600 IF (imon>0)
CALL startime(timers,timer_kin)
5601 IF (imonm > 0)
CALL startime(timers,40)
5608 1 iparg,ipari ,nodes%MS ,nodes%IN ,
5609 2 ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
5610 3 ixr ,skews%SKEW ,nodes%ITAB ,nodes%ITABM1,iskwn,
5611 4 npby ,wa ,lpby ,element%PON%FSKY ,nsensor,
5612 5 rby ,nodes%X ,nodes%V ,nodes%VR ,ixtg ,
5613 6 igrv ,lgrav,sensors%SENSOR_TAB,nodes%A ,nodes%AR ,
5614 7 fsav ,nodes%STIFN ,nodes%STIFR,output%DATA%FOPT,nodes%WEIGHT,
5615 8 dmas ,diner ,bufsf,fr_rby2,partsav ,
5616 9 ipart ,elbuf_tab,icfield,lcfield,nodes%TAG_S_RBY)
5621 CALL python_begin_openmp(python)
5625 1 rby ,nodes%A ,nodes%AR ,nodes%X ,nodes%VR ,
5626 2 fsav ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,output%DATA%FOPT ,
5627 3 lpby ,npby ,nodes%WEIGHT ,nodes%MS ,nodes%V ,
5628 4 igrsurf ,bufsf ,nodes%ICODR ,nodes%ISKEW ,skews%SKEW ,
5629 5 kindrby ,iad_rby ,fr_rby6,rby6 ,irbkin_l ,
5630 6 nrbykin_l ,
nativ_sms ,sensors%SFSAV ,sensors%FSAV ,sensors%STABSEN,
5631 7 sensors%TABSENSOR,
nodreac ,fthreac ,cptreac ,dampr,
5632 8 sdamp ,damp ,ndamp_vrel ,id_damp_vrel ,igrnod ,
5633 9 nodes%TAG_S_RBY ,iparit ,output%TH%WFEXT ,ndamp_vrel_rbyg ,size_rby6_c ,
5637 CALL python_end_openmp(python)
5638 IF (imon>0)
CALL stoptime(timers,timer_kin)
5639 IF (imonm > 0)
CALL stoptime(timers,40)
5649 CALL fxbyfor(output, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm,
5650 . fxbcpm, fxbcps, fxblm , fxbfls, fxbdls,
5651 . fxbdep, fxbvit, fxbacc, nodes%A, nodes%AR,
5652 . nodes%X, fxbmvn, fxbmcd, fxbse, fxbsv,
5653 . fxbelm, fxbsig, elbuf, partsav, elbuf_tab,
5654 . fsav, fxbfp, fxbefw, fxbfc, nodes%D,
5655 . dt2t, ityptst, neltst, fxbgrvi, fxbgrvr,
5656 . igrv, npc, tf , fxbgrp, fxbgrw ,
5657 . iparg , nsensor,sensors%SENSOR_TAB,nodes%BOUNDARY_ADD, nodes%BOUNDARY,
5665 IF (imon>0)
CALL startime(timers,37)
5666 CALL admfor0(element%SHELL%IXC, ipart(k3), ixtg, ipart(k8), ipart,
5667 1 nodes%A , nodes%STIFN , nodes%AR, nodes%STIFR ,nodes%X ,
5668 2 sh4tree,sh3tree,stcnd, fthe,condn,
5669 . glob_therm%NODADT_THERM,glob_therm%ITHERM_FE)
5670 IF (imon>0)
CALL stoptime(timers,37)
5675 IF (irigid_mat > 0)
THEN
5681 CALL python_begin_openmp(python)
5684 1 nodes%A ,nodes%AR ,nodes%X ,nodes%VR ,nodes%IN ,
5685 2 nodes%STIFN ,nodes%STIFR ,irbym ,lnrbym ,rbym ,
5686 3 icodrbym ,nodes%WEIGHT ,nodes%MS ,nodes%V ,fr_rbym ,
5687 4 iad_rbym ,arbym ,vrbym ,arrbym ,vrrbym ,
5691 CALL python_end_openmp(python)
5699 CALL rgwalf(nodes%A ,rwall%RWBUF ,rwall%NPRW ,nodes%MS )
5700 IF (rwall%nrwall_pen>0 .AND. impl_s==0)
THEN
5701 nsect_offset = nsect + nintsub + ninter
5704 1 nodes%X ,nodes%A ,nodes%V ,nodes%MS ,numnod ,
5705 2 fsav(1,ninter+1) ,nthvki ,frwl6 ,nodes%WEIGHT_MD,ncycle ,
5706 3 output%DATA%FOPT(1,1+(nsect+nrbody)),sensors%SFSAV,sensors%FSAV ,sensors%STABSEN ,
5707 4 sensors%TABSENSOR,nsect_offset,nodes%STIFN ,dt1 ,nspmd ,
5708 5 rwall%NRWALL,rwall )
5716 IF( idtmins == 1 .AND.
5717 . (ismsch/=0.OR.ncycle==0.OR.ismsnok/=0.OR.iadmesh/=0))
THEN
5720 ELSEIF(idtmins == 2.OR.idtmins_int/=0)
THEN
5725 IF (imon>0)
CALL startime(timers,39)
5726 IF (imon>0)
CALL startime(timers,75)
5731 l1 = 1+nixs*numels + nsvois*nixs
5739 IF (
ALLOCATED(mskyi_fi_sms))
DEALLOCATE(mskyi_fi_sms)
5740 IF (
ALLOCATED(list_sms))
DEALLOCATE(list_sms)
5741 IF (
ALLOCATED(list_rms))
DEALLOCATE(list_rms)
5742 IF (
ALLOCATED(list_rms))
DEALLOCATE(list_rms)
5743 IF (
ALLOCATED(sms_vfi))
DEALLOCATE(sms_vfi)
5744 CALL my_alloc(mskyi_fi_sms,fr_rms(nspmd+1))
5745 CALL my_alloc(list_sms,fr_sms(nspmd+1))
5746 CALL my_alloc(list_rms,fr_rms(nspmd+1))
5747 CALL my_alloc( sms_vfi,3,fr_rms(nspmd+1)+fr_sms(nspmd+1) )
5749 IF (
ALLOCATED(mw6))
DEALLOCATE(mw6)
5750 if (iparit /=0)
then
5752 CALL my_alloc(mw6,6,sz_mw6)
5755 CALL my_alloc(mw6,6,1)
5757 CALL python_begin_openmp(python)
5759 itsk = omp_get_thread_num()
5760 nodftsk = 1+itsk*numnod/ nthread
5761 nodltsk = (itsk+1)*numnod/nthread
5764 1 itsk ,nodftsk ,nodltsk ,
5765 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
5771 7 ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),ipart(i15e),
5772 8 ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),nodes%BOUNDARY_ADD ,
5774 a
jsm_sms ,dmeltg ,dmelc ,mskyi_sms,
5776 c dmels ,dmeltr ,dmelp ,dmelrt ,igeo ,
5777 d fr_sms ,fr_rms ,elbuf ,ipari ,interfaces%INTBUF_TAB,
5782 i rwall%NPRW ,rwall%LPRW ,rwall%FR_WALL ,
nrwl_sms ,rby ,
5783 j nodes%X ,nodes%A ,nodes%AR ,nodes%IN ,nodes%V ,
5784 k nodes%VR ,irbe2 ,lrbe2 ,rbe3%IRBE3 ,rbe3%LRBE3 ,
5785 l rbe3%mpi%IAD_RBE3 ,rbe3%mpi%FR_RBE3 ,
nativ_sms,t2main_sms,t2fac_sms,
5786 m mskyi_fi_sms, list_sms,list_rms,sz_mw6,mw6)
5789 CALL python_end_openmp(python)
5794 IF (imon>0)
CALL stoptime(timers,39)
5795 IF (imon>0)
CALL stoptime(timers,75)
5804 IF (irad2r /= 0)
THEN
5805 IF (nspmd>1)
CALL spmd_barrier()
5807 1 iexlnk ,igrnod ,nodes%D ,nodes%V ,nodes%VR ,
5808 2 nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,
5809 3 r2r_on ,dd_r2r ,nodes%WEIGHT ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,rby ,
5810 4 nodes%XDP ,nodes%X ,dd_r2r_elem, sdd_r2r_elem,off_sph_r2r,
5811 5 numsph_glo_r2r,nloc_dmg)
5813 IF (flg_sphinout_r2r/=0)
THEN
5815 IF (off_sph_r2r(i)==2)
THEN
5835 IF(nintstamp/=0)
THEN
5837 . ptr_sms ,diag_sms,nodes%MS ,nodes%V ,nodes%STIFN,
5843 IF (flg_damp_funct==1)
THEN
5844 CALL damping_funct_ini(dampr, nrdamp, ndamp, tt,iroddl)
5846 IF (flg_dtnodamp==1)
THEN
5848 IF (idamp_rdof==ndamp)
5849 +
CALL dtnodamp(nodes%ITAB ,nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2t ,
5850 1 nodes%WEIGHT ,igrnod ,dampr ,istop ,
5851 2 idamp_rdof_tab,icontact,element%SHELL%IXC,nodes%X)
5852 IF (ndamp>0 .OR. istat==3)
5853 +
CALL dtnodarayl(nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2t ,
5858 IF (i_exch_flg_raz==0)
THEN
5862 flg_kj2_raz = flg_kj2
5863 IF (nspmd > 1)
call spmd_allreduce(flg_kj2,flg_kj2_raz,1,spmd_sum)
5867 IF (flg_kj2==1)
THEN
5870 ALLOCATE(stk_sn(numnod),stk_sr(numnod))
5871 stk_sn(1:numnod)=nodes%STIFN(1:numnod)
5872 stk_sr(1:numnod)=nodes%STIFR(1:numnod)
5876 1 ipart(k6),igeo,geo,npby,iparg,elbuf_tab,
5877 2 dt2t,neltst,ityptst,nrbody,nodes%ITAB)
5883 IF ((ncycle==0).AND.(idt_percent_addmass > 0).AND.(idtmin(11)==3.OR.idtmin(11)==8))
THEN
5885 . percent_addmass,percent_addmass_old,mass0_start,nodes%WEIGHT_MD,igrnod,
5887 dtmin1(11) =
max(dtmin1(11),target_dt)
5888 ELSEIF ((idt_percent_addmass == 2).AND.(idtmin(11) == 8))
THEN
5890 IF (idt_percent_addmass == 2)
THEN
5892 dtmin1(11) = dt_stop_percent_addmass
5899 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0)
THEN
5914 dtmin1_save = dtmin1(11)
5915 IF(min_tab(2) == 52) dtmin1(11) =
min(dtmin1_save,dt2r,1.1*dt2old)
5919 dtmin1_save = dtmin1(11)
5920 IF(itypts == 52) dtmin1(11) =
min(dtmin1_save,dt2,1.1*dt2old)
5929 IF (glob_therm%IDT_THERM == 1)
THEN
5930 dt2 = glob_therm%DT_THERM
5935 IF((anim_n(18) /= 0 .OR. h3d_data%N_SCAL_STIFR /= 0) .AND. iroddl /= 0)
5936 . stifr_tmp(1:numnod)=nodes%STIFR(1:numnod)
5937 IF(anim_n(19) /= 0 .OR. h3d_data%N_SCAL_STIFN /= 0)
5938 . stifn_tmp(1:numnod)=nodes%STIFN(1:numnod)
5943 CALL python_begin_openmp(python)
5953 itsk = omp_get_thread_num()
5954 nodftsk = 1+itsk*numnod/ nthread
5955 nodltsk = (itsk+1)*numnod/nthread
5962 stcnd(nodftsk:nodltsk)=nodes%STIFN(nodftsk:nodltsk)
5963 strcnd(nodftsk:nodltsk)=nodes%STIFR(nodftsk:nodltsk)
5969 1 nodftsk,nodltsk ,neltstt,ityptstt ,nodes%ITAB ,
5970 2 nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2tt ,
5971 3 dmast,dinert,output%DATA%SCAL_DT,output%DATA%SCAL_DMAS,imsch ,
5972 4 nodes%WEIGHT,nodes%A ,nodes%AR ,igrnod ,glob_therm%nodadt_therm,
5973 5 output%DATA%SCAL_DINER,rbym ,arbym ,arrbym,nodes%WEIGHT_MD,
5974 6 nodes%MCP ,mcp_off,condn ,ale_connectivity%NALE ,h3d_data )
5975 ELSEIF(idtmins/=0)
THEN
5978 2 nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2tt ,
5979 3 dmast,dinert,output%DATA%SCAL_DT,output%DATA%SCAL_DMAS,imsch ,
5980 4 nodes%WEIGHT,nodes%A ,nodes%AR ,igrnod ,
5981 5 output%DATA%SCAL_DINER,rbym ,arbym ,arrbym ,ismsch ,
5986#include "lockon.inc"
5988 diner = diner + dinert
5989 IF (glob_therm%IDT_THERM == 1)
THEN
5994 trest=
max(tstop-tt,zero)
5996 dtrest = trest*(one+em10)
5998 dt2t =
min(dt2tt,dtrest)
6009#include "lockoff.inc"
6012 CALL python_end_openmp(python)
6015 IF ((flg_kj2_raz==1).AND.(i7kglo==0).AND.(idtmins==0).AND.(nodadt==0))
THEN
6016 nodes%STIFN(1:numnod) = em20
6017 IF (iroddl > 0) nodes%STIFR(1:numnod) = em20
6020 dtmin1(11) = dtmin1_save
6026 IF (glob_therm%IDT_THERM == 1)
THEN
6046 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
THEN
6049 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6051 . tstop,iwiout,mstop, ismsch,
6052 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6054 IF(nspmd>1.AND.iwiout>0)
THEN
6061 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
6062 CALL spmd_exch_icodt(nodes%ICODT,nodes%BOUNDARY_ADD,nodes%BOUNDARY,length,lenr)
6071 CALL python_begin_openmp(python)
6077 CALL smp_init(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,partftsk,partltsk,nwaftsk,igmtsk,greftsk,greltsk)
6082 1 ale_connectivity%NALE,nodes%V ,dsave ,nodes%ICODT ,nodes%ISKEW,
6083 2 skews%SKEW ,asave ,nodes%A ,nodes%D ,neltstt,
6084 3 ityptstt ,itsk ,nodftsk ,nodltsk ,dt2save,
6085 4 dt2tt ,neltsa ,ityptsa ,nelts ,
6086 5 nodes%WEIGHT ,element%PON%FSKY ,element%PON%FSKY )
6087#include "lockon.inc"
6093#include "lockoff.inc"
6095 CALL python_end_openmp(python)
6106 IF (imon>0)
CALL startime(timers,6)
6111 IF (imonm > 0)
CALL startime(timers,50)
6113 IF (imonm > 0)
CALL stoptime(timers,50)
6121 IF (imonm > 0)
CALL startime(timers,50)
6122 IF(nspmd>1)
CALL spmd_glob_minv(t_monvol,dt2,itypts,nelts,volmon, fr_mv)
6123 IF(python%NB_FUNCTS > 0)
CALL python_monvol(t_monvol)
6127 IF(ispmd == 0)
CALL mvoludt(monvol,volmon)
6128 IF (imonm > 0)
CALL stoptime(timers,50)
6131 IF (imonm > 0)
CALL startime(timers,52)
6135 IF (dt2>=ep06) dampa3=zero
6142 bb = (
min(dampb,dt1,dt2) + half*(dampa+dampa3)*dt2*dt2)
6144 IF (dt2>=ep06) bb = zero
6145 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6147 bb = one - dampb - dampb
6150 ELSEIF(ndamp>0)
THEN
6157 d_tstop = dampr(18,i)
6159 IF ((tt>=d_tstart).AND.(tt<=d_tstop).AND.(dt2 < ep06))
6160 . bb=
max(bb,(
min(dampb,dt1,dt2)+half*(dampa+dampa3)*dt2*dt2))
6164 IF (flg_dtnodamp==1)
GOTO 600
6166 dampa =
max(dampr(3,i),dampr(5,i),dampr(7,i))
6167 dampa =
max(dampa,dampr(9,i),dampr(11,i),dampr(13,i))
6168 dampb =
max(dampr(4,i),dampr(6,i),dampr(8,i))
6169 dampb =
max(dampb,dampr(10,i),dampr(12,i),dampr(14,i))
6171 fl_vrel = nint(dampr(21,i))
6172 IF (fl_vrel==2)
THEN
6173 call damping_vref_compute_dampa(i,ndamp,nrdamp,dampr,dt1,tt,damp_a)
6174 dampa =
max(damp_a(1),damp_a
6178 d_tstart = dampr(17,i)
6179 d_tstop = dampr(18,i)
6181 IF ((tt>=d_tstart).AND.(tt<=d_tstop).AND.(dt2 < ep06))
THEN
6182 dampt =
min(dt1,dt2)*factb
6183 bb=
max(bb,(
min(dampb,dampt)+half*(dampa+dampa3)*dt2*dt2))
6188 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6189 ELSEIF(istat==3)
THEN
6191 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6195 IF (imonm > 0)
CALL stoptime(timers,52)
6213 IF(mds_avail==1)
THEN
6229 IF (imonm > 0)
CALL startime(timers,53)
6232 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6237 . tstop,iwiout,mstop ,ismsch,
6238 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6255 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
6256 CALL spmd_exch_icodt(nodes%ICODT,nodes%BOUNDARY_ADD,nodes%BOUNDARY,length,lenr)
6261 IF (glob_therm%IDT_THERM == 0) dt2=
min(dt2,1.1*dt2old,dtmx)
6262 IF (impl_s==1)
CALL imp_dt2(dt2)
6264 IF (imonm > 0)
CALL stoptime(timers
6267 IF ( ncycle == 0 .AND. flg_kj2_raz > 0 )
THEN
6270 write(iout,
'(A)')
' '
6271 write(iout,
'(A/)')
' AUTOMATIC STIFFNESS COMPUTATION FOR JOINTS'
6272 write(iout,'(a)
') ' joint
id TYPE knn knr
'
6275 IF (FLG_KJ2 == 1) then
6276 CALL JOINT_BLOCK_STIFFNESS(NODES%ITAB,NODES%MS,NODES%IN,STK_SN,STK_SR,
6277 1 NODES%WEIGHT,IXR,IPART,NODES%X,IPART(K6),
6278 2 IGEO,GEO,NPBY,IPARG,ELBUF_TAB,DMAST,DINERT)
6279 DEALLOCATE(STK_SN,STK_SR)
6282 ! After joint_block_stiffness : Flush .tmp files in *.out for all domains except ispmd=0
6285 IF (ISPMD/=0) CALL SPMD_CHKW(IWIOUT,IOUT)
6286 call spmd_allreduce(IWIOUT,IWIOUT_RESULT,1,SPMD_SUM)
6287 IWIOUT = IWIOUT_RESULT
6288 IF(IWIOUT>0) CALL SPMD_WIOUT(IOUT,IWIOUT)
6292 write(iout,'(a)
') ' '
6299.AND.
IF (IRAD2R /= 0 R2R_ACTIV == 1) THEN
6300 CALL R2R_SENDKINE(IEXLNK,IGRNOD,NODES%MS,NODES%IN)
6301 IF (NSPMD>1) CALL SPMD_BARRIER()
6303 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6304!$OMP PARALLEL PRIVATE(ITSK)
6308 IF (IMONM > 0) CALL STARTIME(TIMERS,54)
6309 IF (NCYCLE == ZERO) TT_DP = TT
6313 IF (IRESP==1) CALL SEND_FBUFDP_C(TT_DP,1)
6314 IF (IRESP/=1) CALL SEND_FBUFDP_C(TT,1)
6315.AND.
IF ((R2R_SIU==1)(IDDOM/=0)) THEN
6316 CALL GET_IBUF_C(R2R_TH_MAIN,10)
6318 CALL SEND_FBUF_C(DT2,1)
6319 CALL SEND_IBUF_C(R2R_MFILR,1)
6320 CALL SEND_IBUF_C(R2R_MSTOP,1)
6321 IF (R2R_MFILR==1) THEN
6322 CALL SEND_FBUF_C(TMAN_R2R,1)
6323 CALL SEND_IBUF_C(R2R_CTR,3)
6325 IF (IRESP==1) CALL GET_FBUFDP_C(TT_DP,1)
6326 IF (IRESP/=1) CALL GET_FBUFDP_C(TT,1)
6327 CALL GET_IBUF_C(MREST,1)
6328 CALL GET_IBUF_C(R2R_MFILR,1)
6329 CALL GET_IBUF_C(R2R_MSTOP,1)
6330 IF (R2R_MFILR==2) THEN
6331 CALL GET_FBUF_C(TMAN_R2R,1)
6332 CALL GET_IBUF_C(R2R_CTR,3)
6334 CALL GET_FBUF_C(DT2,1)
6342 CALL SPMD_RBCAST(RBUF,RBUF,2,1,0,2)
6343 CALL SPMD_IBCAST(MREST,MREST,1,1,0,2)
6344 CALL SPMD_IBCAST(R2R_TH_MAIN,R2R_TH_MAIN,10,1,0,2)
6351.OR.
IF ((R2R_SIU==1)(NSPMD==1)) THEN
6353 CALL GET_IBUF_C(BID,1)
6354 CALL R2R_UNLOCK_THREADS_C(NTHREAD)
6355 ELSEIF (ISPMD==0) THEN
6357 CALL GET_IBUF_C(BID,1)
6358 CALL R2R_UNLOCK_THREADS_C(NTHREAD*NSPMD)
6364 CALL PYTHON_END_OPENMP(PYTHON)
6368 CALL R2R_GETDATA(IEXLNK ,IGRNOD ,NODES%X ,NODES%V ,
6369 . NODES%VR ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
6370 . NODES%XDP ,NODES%D ,R2R_ON ,DD_R2R ,NODES%WEIGHT ,
6371 . NODES%BOUNDARY_ADD,NODES%BOUNDARY ,NODES%STIFN ,NODES%STIFR ,DD_R2R_ELEM ,
6372 . SDD_R2R_ELEM,NLOC_DMG, OUTPUT%TH%WFEXT, OUTPUT%TH%WFEXT_MD)
6374 IF (IMONM > 0) CALL STOPTIME(TIMERS,54)
6384 IF (IMONM > 0) CALL STARTIME(TIMERS,55)
6386 CALL TSTP_EXCH_MADCPL(MADENDREQUEST,MADCLNOD,MADCLFRECV,NODES%V,NODES%A,NODES%MS ,MADYMO_DEL_GLOBAL )
6387 IF (MADENDREQUEST == -1)THEN
6392 IF (IMONM > 0) CALL STOPTIME(TIMERS,55)
6396 IF (ViperCoupling) THEN
6398 CALL RadiossViper_ReceiveSendDT(VIPER%id,TT,DT2)
6401! reducing dt2 due to /INIVEL
6402 IF(LOADS%NINIVELT_G>0) CALL INIVEL_DT2(LOADS%NINIVELT,LOADS%INIVELT,SENSORS,TT , DT2 ,NSPMD)
6404 IF (IMONM > 0) CALL STARTIME(TIMERS,53)
6410 IF(ALE%SUB%IALESUB==0)DT2S=DT2
6412 IF (IRAD2R /= 0) THEN
6414 R2RFX1 = R2RFX1*DT2 + R2RFX2*DT12*DT2
6418.AND.
IF (NCONLD/=0IMPL_S/=1) THEN
6419 OUTPUT%TH%WFEXT = OUTPUT%TH%WFEXT + WFEXC*DT2
6422 IF (IMONM > 0) CALL STOPTIME(TIMERS,53)
6423 IF (IMON>0) CALL STOPTIME(TIMERS,6)
6428 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
6430 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6431!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
6433 ITSK = OMP_GET_THREAD_NUM()
6434 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
6435 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
6441.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
6442 CALL REACTION_FORCES_1(NODFTSK,NODLTSK,NODES%A,NODES%AR,FREAC)
6448 CALL FORANI2(OUTPUT,NODES%A,NODFTSK,NODLTSK,H3D_DATA)
6451 CALL PYTHON_END_OPENMP(PYTHON)
6453 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
6457 IF(IDTMINS == 1)THEN
6460.OR.
ELSEIF(IDTMINS == 2IDTMINS_INT /= 0)THEN
6462 IF (IMON>0) CALL STARTIME(TIMERS,39)
6468 CALL MY_ALLOC(CJWORK,18,NJOINT)
6469 CALL MY_ALLOC(FREA,3,NUMNOD)
6470 CALL MY_ALLOC(IRWL_WORK,SLPRW)
6471 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6472!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
6473 ITSK = OMP_GET_THREAD_NUM()
6474 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
6475 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
6476 CALL SMS_MASS_SCALE_2(TIMERS,PYTHON,
6477 1 ITSK ,NODFTSK ,NODLTSK ,NODII_SMS ,INDX2_SMS ,
6478 2 NODXI_SMS,NODES%MS ,NODES%MS0 ,NODES%A ,NODES%ICODT ,
6479 3 NODES%ICODR ,NODES%ISKEW ,SKEWS%SKEW,JAD_SMS ,JDI_SMS ,
6480 4 LT_SMS ,X_SMS ,P_SMS ,Z_SMS ,Y_SMS ,
6481 5 PREC_SMS ,INDX1_SMS ,DIAG_SMS ,NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,
6482 6 NODES%WEIGHT ,NPBY ,LPBY ,
6483 7 TAGSLV_RBY_SMS,LAD_SMS ,KAD_SMS ,JSM_SMS ,IBFV ,
6484 8 VEL ,NPC ,TF ,NODES%V ,NODES%X ,
6485 9 NODES%D ,SENSORS%SENSOR_TAB,NSENSOR,IFRAME,XFRAME,
6486 A JADI_SMS ,JDII_SMS ,LTI_SMS ,FR_SMS ,FR_RMS ,
6487 B ISKYI_SMS,MSKYI_SMS,RES_SMS ,IGRV ,AGRV ,
6488 C LGRAV ,ILINK ,LLINK ,FR_RL ,FRL6 ,
6489 D NNLINK ,LNLINK ,FR_LL ,FNL6 ,TAG_LNK_SMS,
6490 E NODES%ITAB ,FSAV ,LJOINT ,IADCJ ,FR_CJ ,
6491 F NODES%AR ,NODES%VR ,NODES%IN ,FRL ,FNL ,
6492 G RWALL%NPRW ,RWALL%LPRW ,RWALL%RWBUF ,RWALL%RWSAV ,
6493 H OUTPUT%DATA%FOPT(1,1+(NSECT+NRBODY)),RWALL%FR_WALL ,NRWL_SMS ,
6494 I INTSTAMP ,NODES%KINET ,ELEMENT%SHELL%IXC ,IXTG ,SH4TREE ,
6495 J SH3TREE ,CPTREAC ,NODREAC ,FTHREAC ,
6496 K FRWL6 ,3+IRODDL*3,NODES%TAG_S_RBY,DAMPR , DAMP ,
6497 L IGRNOD ,NODES%DR ,RBY ,TAGMSR_RBY_SMS,
6498 M JSM_SMS ,IRBE2 ,LRBE2 ,IAD_RBE2 ,FR_RBE2M ,
6499 N NMRBE2 ,R2SIZE ,RBE3%IRBE3 ,RBE3%LRBE3 ,RBE3%FRBE3 ,
6500 O RBE3%mpi%IAD_RBE3 ,RBE3%mpi%FR_RBE3,RBE3%mpi%FR_RBE3MP ,RBE3%RRBE3 ,RBE3%RRBE3_PON,
6501 P PREC_SMS3 ,DIAG_SMS3,IAD_RBY ,FR_RBY6 ,RBY6 ,
6502 Q RBE3%irotg_sz ,BETATE ,IBCSCYC ,LBCSCYC,
6503 R MSKYI_FI_SMS, LIST_SMS,LIST_RMS,CJWORK,FREA,
6504 S IRWL_WORK,SMS_VFI,sz_mw6,MW6,OUTPUT%TH%WFEXT,ams_work)
6507 CALL PYTHON_END_OPENMP(PYTHON)
6509 IF (ALLOCATED(CJWORK)) DEALLOCATE(CJWORK)
6510 IF (ALLOCATED(FREA)) DEALLOCATE(FREA)
6511 IF (ALLOCATED(IRWL_WORK)) DEALLOCATE(IRWL_WORK)
6513 IF (IMON>0) CALL STOPTIME(TIMERS,39)
6520 K1=1+LIPART1*(NPART+NTHPART)+2*9*(NPART+NTHPART)
6536 IF (IMPL_S == 1) THEN
6541 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_INTEG)
6543.AND.
IF (IMPL_S==1 INCONV==1) THEN
6544 CALL THBCS_IMP(NODFT,NODLT ,NODES%A,NODES%AR,
6545 & FTHREAC,NODREAC,CPTREAC,FTHDTM,DT3)
6550 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6551!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
6552 ITSK = OMP_GET_THREAD_NUM()
6553 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
6554 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
6556 IF (ILAG+IALE+IEULER/=0) THEN
6561 CALL BMULTN(FILL,DFILL,IMS,NODFTSK,NODLTSK)
6563 CALL IMP_FANII(OUTPUT,NODES%A ,NFIA ,NODFT ,NODLT ,
6565.AND.
IF (IMPDEB==1IMCONV==0) THEN
6566.AND.
IF (NCYCLE>=NDEB0NCYCLE<=NDEB1) THEN
6568 1 OUTPUT ,NODES%A ,NODES%AR ,NFIA ,NFEA ,
6569 2 NODFTSK ,NODLTSK ,H3D_DATA ,IMPBUF_TAB)
6576 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
6578 1 NSTRF,NODES%D,NODES%DR,NODES%V,NODES%VR,FSAV(1,1+NINTER+NRWALL+NRBODY),
6579 2 SECFCUM,NODES%A ,NODES%AR ,SECBUF,NODES%MS ,NODES%IN ,
6580 3 NODES%X ,OUTPUT%DATA%FOPT,NODES%WEIGHT,XSEC ,NODES%BOUNDARY_ADD,NODES%BOUNDARY,
6581 4 RG_CUT ,IAD_CUT ,FR_CUT,NODES%WEIGHT_MD,IOLDSECT,
6582 5 SENSORS%STABSEN,SENSORS%SFSAV,SENSORS%TABSENSOR,SENSORS%FSAV, OUTPUT%TH%WFEXT)
6583 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
6585 ENDIF ! ILAG+IALE+IEULER/=0
6588 CALL PYTHON_END_OPENMP(PYTHON)
6590 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_INTEG)
6592 IF (ILAG+IALE+IEULER/=0)THEN
6593 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
6594 IF(IMONM > 0) CALL STARTIME(TIMERS,40)
6599 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6603 1 RBY ,NODES%X ,NODES%V ,NODES%VR ,SKEWS%SKEW ,FSAV ,
6604 2 LPBY,NPBY,NODES%ISKEW,NODES%ITAB ,NODES%WEIGHT ,NODES%A ,
6605 3 NODES%AR ,NODES%MS ,NODES%IN ,KINDRBY,IRBKIN_L,NRBYKIN_L ,
6606 4 NODES%WEIGHT_MD,MS_2D)
6608 CALL PYTHON_END_OPENMP(PYTHON)
6610 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
6611 IF(IMONM > 0) CALL STOPTIME(TIMERS,40)
6612 ENDIF ! ILAG+IALE+IEULER/=0
6617 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
6618 IF(IMONM > 0) CALL STARTIME(TIMERS,40)
6621 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6623 CALL RBE2COR(IRBE2 ,LRBE2 ,NODES%X ,NODES%V ,NODES%VR ,
6624 2 SKEWS%SKEW ,NODES%ISKEW ,NODES%ITAB ,NODES%WEIGHT,NODES%A ,
6625 3 NODES%AR ,NODES%MS0 ,NODES%IN ,NODES%WEIGHT_MD)
6627 CALL PYTHON_END_OPENMP(PYTHON)
6629 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
6630 IF(IMONM > 0) CALL STOPTIME(TIMERS,40)
6637 IF (NSENSOR > 0) THEN
6638.AND.
IF (NSPMD > 1 SENSORS%STABSEN > 0) THEN
6640 DIM_EXCH = SENSORS%SFSAV
6641 CALL SPMD_EXSUM_FB6(DIM6,DIM_EXCH,SENSORS%FSAV)
6645.AND.
IF (NSENSOR > 0 INCONV == 1) THEN
6646 CALL SENSOR_ENER_SAV(NSENSOR,SENSORS%SENSOR_TAB ,PARTSAV ,PARTSAV2)
6647 ! -------------------------------
6648 ! pre-computation and mpi communication for type 16 sensor
6649 IF (SENSORS%COMM_SENS16%BOOL) THEN
6650 CALL SENSOR_DIST_SURF0(NSENSOR,SENSORS%SENSOR_TAB,NODES%X,
6651 * IGRSURF,SENSORS%COMM_SENS16)
6653 ! -------------------------------
6654 ! pre-computation and mpi communication for type 17 sensor
6655 IF(SENSORS%COMM_SENS17%BOOL) THEN
6656 CALL SENSOR_TEMP0(NSENSOR,SENSORS%SENSOR_TAB,IGRNOD,NODES%TEMP,NODES%WEIGHT,SENSORS%COMM_SENS17,
6657 * SENSORS%SENSOR_STRUCT)
6659 ! -------------------------------
6661 CALL SENSOR_SPMD(SENSORS%SENSOR_TAB,IPARI ,RWALL%NPRW ,ISENSP ,NSENSP ,
6662 . XSENS ,NODES%X ,ACCELM ,IACCP ,NACCP ,
6663 . GAUGE ,IGAUP ,NGAUP ,PARTSAV2,NSENSOR,
6664 . SENSORS%COMM_SENS14,SENSORS%SENSOR_STRUCT)
6667 ! check activation condition of base sensors
6668 CALL SENSOR_BASE(SENSORS ,NSENSOR ,TT ,DT2 ,
6669 . XSENS ,IPARI ,PARTSAV2 ,GAUGE ,FSAV ,
6670 . NODES%X ,NODES%V ,NODES%A ,ACCELM ,RWALL%NPRW ,
6671 . SUBSETS ,IGRSURF ,IGRNOD , PYTHON)
6673 ! check activation condition of logical sensors hierarchy
6674 CALL SENSOR_LOGICAL(SENSORS)
6684 IF (ILAG + IALE + IEULER /= 0) THEN
6686 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_INTEG)
6692 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6693!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
6694 ITSK = OMP_GET_THREAD_NUM()
6695 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
6696 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
6702 CALL BMULTN(FILL,DFILL,IMS,NODFTSK,NODLTSK)
6706 CALL PYTHON_END_OPENMP(PYTHON)
6712.OR.
IF ((NUMSPH/=0)(SOL2SPH_FLAG==1)) THEN
6716 IF (IMONM > 0) CALL STARTIME(TIMERS,48)
6717 IF (IMONM > 0) CALL STARTIME(TIMERS,89)
6719 ALLOCATE(WASPSYM(3*NSPHSYM+1),STAT=IERROR)
6721 CALL ANCMSG(MSGID=19,ANMODE=ANINFO,C1="WASPSYM")
6727 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6728!$OMP PARALLEL PRIVATE(ITSK,IPMTSK)
6729 ITSK = OMP_GET_THREAD_NUM()
6730 IPMTSK = 1 + ITSK*NPSAV*NPART
6733 1 NODES%X ,NODES%V ,NODES%MS ,NODES%A ,SPBUF ,
6734 2 WA ,NODES%ITAB ,KXSP ,IXSP ,NOD2SP ,
6735 3 NODES%D ,ISPSYM ,XSPSYM%BUF ,VSPSYM%BUF ,BUFMAT ,
6736 4 BUFGEO ,NPC ,TF ,PM ,GEO ,
6737 5 ISPCOND ,XFRAME ,WASPSYM,IPART(K10),PARTSAV(IPMTSK),
6738 6 WASPH(KSPH21) ,WSMCOMP%BUF ,WASPH(KSPACTIV) ,IPART,ITSK,
6739 7 SPH2SOL ,SOL2SPH ,IRST ,IXS ,IPARG ,
6740 8 NGROUNC ,IGROUNC ,ELBUF_TAB,NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,
6741 9 IGEO ,SOL2SPH_TYP,SPH_WORK)
6744 CALL PYTHON_END_OPENMP(PYTHON)
6751 IF (IMONM > 0) CALL STOPTIME(TIMERS,48)
6752 IF (IMONM > 0) CALL STOPTIME(TIMERS,89)
6757 IF (IMON>0) CALL STARTIME(TIMERS,6)
6758 IF (IMONM > 0) CALL STARTIME(TIMERS,48)
6759 CALL SPWFVIS(SPBUF,IPART(K10),PARTSAV,IPARG,ELBUF_TAB,
6760 . KXSP ,WASPH(KSPACTIV))
6761 IF (IMONM > 0) CALL STOPTIME(TIMERS,48)
6762 IF (IMON>0) CALL STOPTIME(TIMERS,6)
6768 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6770!$OMP+ PRIVATE(ITSK,NODFTSK,NODLTSK,NUMNTSK,NDTSK,IPMTSK,IGMTSK)
6771!$OMP+ PRIVATE(PARTFTSK,PARTLTSK,NWAFTSK,GREFTSK,GRELTSK)
6775 1 ITSK ,NODFTSK ,NODLTSK ,NUMNTSK,NDTSK ,
6776 2 IPMTSK,PARTFTSK,PARTLTSK,NWAFTSK,IGMTSK ,
6780 2 PARTFTSK,PARTLTSK,PARTSAV,GREFTSK,GRELTSK,GRESAV)
6783 CALL PYTHON_END_OPENMP(PYTHON)
6785.OR.
ENDIF ! (NUMSPH/=0)(SOL2SPH_FLAG==1)
6791.AND.
IF (TT==ZEROIABS(ISIGI)==5) THEN
6793 IF (IMON>0) CALL STARTIME(TIMERS,6)
6794 IF (IMONM > 0) CALL STARTIME(TIMERS,49)
6795 CALL FEQUILIBRE(NODES%A,FZERO,ELEMENT%SHELL%IXC,IXTG)
6796 IF (IMONM > 0) CALL STOPTIME(TIMERS,49)
6797 IF (IMON>0) CALL STOPTIME(TIMERS,6)
6802.AND..AND.
IF(IPARIT == 0NSPMD > 1 NLOC_DMG%IMOD > 0)THEN
6803 CALL SPMD_EXCH_SUB_POFF(NLOC_DMG)
6806 IF(coupling%active) THEN
6807 ! FORCES WAS INITIALIZED TO THE ACCELERTION, BEFORE ASSEMBLY
6808 ! BEFORE THE CALL TO ACCELE, A CONTAINS THE FORCES
6809 ! AFTER THE CALL TO ACCELE, A CONTAINS THE ACCELERATION
6810 !NODES%FORCES(1:3,1:NUMNOD) = nodes%A(1:3,1:NUMNOD) - NODES%FORCES(1:3,1:NUMNOD)
6811 CALL COUPLING_SYNC(coupling,DT2,nodes,COUPLING_FORCES)
6817 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6818!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK,NODFT_NL,NODLT_NL)
6819 ITSK = OMP_GET_THREAD_NUM()
6820 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
6821 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
6827 !-----------------------------
6828 ! FINITE VOLUME METHOD FOR ALE
6829 !-----------------------------
6830 IF(ALEFVM_Param%IEnabled>0)THEN
6831 CALL ALEFVM_ACCELE(NODES%A, NODES%AR, NODFTSK, NODLTSK, ALE_CONNECTIVITY%NALE)
6834 CALL ACCELE(NODES%A ,NODES%AR ,NODES%V ,NODES%MS ,NODES%IN ,
6835 2 ALE%GLOBAL%SNALE ,ALE_CONNECTIVITY%NALE ,MS_2D ,
6839 . CALL PLY_ACCELE(INOD_PXFEM,MS_PLY,ZI_PLY,NODES%MS,
6840 . NODFTSK,NODLTSK,NPLYMAX,NPLYXFE,NUMNOD,MSZ2 )
6843 IF(IALELAG > 0) THEN
6844 CALL FLOW_ACCELE(ALE_CONNECTIVITY%NALE, MSF ,AFLOW ,VFLOW ,
6848 IF (NLOC_DMG%IMOD > 0) THEN
6849 NODFT_NL = 1+ ITSK*NLOC_DMG%NNOD/NTHREAD
6850 NODLT_NL = (ITSK+1)*NLOC_DMG%NNOD/NTHREAD
6851 CALL NLOCAL_ACC(NLOC_DMG, NODFT_NL ,NODLT_NL)
6854 IF (ICRACK3D > 0) THEN
6858 CALL CRK_ACCELE(ADSKY_CRK,INOD_CRK,NODLEVXF ,NODFTSK ,NODLTSK ,
6859 . NODENR ,CRKSKY ,NODES%MS ,NODES%IN ,NODES%ITAB )
6863 CALL CRK_ZERO_FSKY(CRKSKY,ADSKY_CRK,INOD_CRK,NODFTSK,NODLTSK,
6872 1 PINCH_DATA%APINCH, NODES%MS, PINCH_DATA%MSPINCH,
6873 2 PINCH_DATA%STIFPINCH, NODFTSK, NODLTSK,
6879 IF (GLOB_THERM%ITHERM_FE > 0 )
6880 . CALL TEMPUR(NODES%TEMP ,NODES%MCP,FTHE,NODFTSK,NODLTSK,NODES%WEIGHT,MCP_OFF,GLOB_THERM%HEAT_STORED)
6882 CALL PYTHON_END_OPENMP(PYTHON)
6887.AND.
IF(NTSHEGG>0NSPMD > 1)
6888 . CALL SPMD_EXCH_VMAX(IAD_STSH ,FR_STSH ,IAD_RTSH ,FR_RTSH ,ALPHA_DC )
6895 CALL PYTHON_BEGIN_OPENMP(PYTHON)
6897!$OMP+PRIVATE(ITSK,NODFTSK,NODLTSK,GREFTSK,GRELTSK)
6898 ITSK = OMP_GET_THREAD_NUM()
6899 GREFTSK = 1+ITSK*NTSHEG/ NTHREAD
6900 GRELTSK = (ITSK+1)*NTSHEG/NTHREAD
6901 CALL ACCDTDC(GREFTSK,GRELTSK,IENUNL ,ALPHA_DC,NODES%A ,NODES%MS ,NODES%ITAB )
6903 CALL PYTHON_END_OPENMP(PYTHON)
6906.AND.
IF(NTSHEGG>0NSPMD > 1)
6907 . CALL SPMD_EXCH_FA(IAD_STSH ,FR_STSH ,IAD_RTSH ,FR_RTSH ,NODES%A )
6911 IF (DEBUG(MACRO_DEBUG_TEMP)==1) THEN
6912.AND.
IF (NCYCLE>=TDEBSTART
6913 . MOD(NCYCLE-TDEBSTART,TRSTFREQ)==0) THEN
6921 CALL SPMD_COLLECTT(NODES%TEMP,NODES%ITAB,NODES%WEIGHT,NODES%NODGLOB,SIZ)
6923 CALL COLLECTT(NODES%TEMP,NODES%ITAB,NODES%WEIGHT,NODES%NODGLOB)
6932 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_INTEG)
6942 CALL SPMD_GLOB_ISUM9(NSPHACTG,1)
6943 CALL SPMD_IBCAST(NSPHACTG,NSPHACTG,1,1,0,2)
6948 IF (IMON>0) CALL STARTIME(TIMERS,6)
6949 IF (IMONM > 0) CALL STARTIME(TIMERS,48)
6950 IF (IMONM > 0) CALL STARTIME(TIMERS,89)
6952 CALL SPONFV (NODES%X ,NODES%V ,NODES%A ,NODES%D ,NODES%MS ,
6953 2 SPBUF ,NODES%ITAB ,KXSP ,IXSP ,NOD2SP ,
6954 3 NPC ,TF ,ISPHIO ,VSPHIO ,IPART ,
6955 4 IPART(K10),WASPH(KSPACTIV) ,WA,WASPH(KSPH22) ,SPH_WORK, OUTPUT%TH%WFEXT)
6957 IF (IMONM > 0) CALL STOPTIME(TIMERS,89)
6958 IF (IMONM > 0) CALL STOPTIME(TIMERS,48)
6959 IF (IMON>0) CALL STOPTIME(TIMERS,6)
6970.AND.
IF(NSPHIO/=0NSPHACTG/=0)THEN
6972 IF (IMON>0) CALL STARTIME(TIMERS,6)
6973 IF (IMONM > 0) CALL STARTIME(TIMERS,48)
6974 IF (IMONM > 0) CALL STARTIME(TIMERS,89)
6976 CALL SPONFV (NODES%X ,NODES%V ,NODES%A ,NODES%D ,NODES%MS ,
6977 2 SPBUF ,NODES%ITAB ,KXSP ,IXSP ,NOD2SP ,
6978 3 NPC ,TF ,ISPHIO ,VSPHIO ,IPART ,
6979 4 IPART(K10),WASPH(KSPACTIV),WA,WASPH(KSPH22) ,SPH_WORK, OUTPUT%TH%WFEXT)
6981 IF (IMONM > 0) CALL STOPTIME(TIMERS,89)
6982 IF (IMONM > 0) CALL STOPTIME(TIMERS,48)
6983 IF (IMON>0) CALL STOPTIME(TIMERS,6)
6990.AND.
IF ((SDD_R2R_ELEM>0)(NUMSPH_GLO_R2R>0)) THEN
6991 LENR = NODES%BOUNDARY_ADD(1,NSPMD+1)-NODES%BOUNDARY_ADD(1,1)
6992 CALL SPMD_EXCH_R2R_SPH(NODES%A,NODES%BOUNDARY_ADD,NODES%BOUNDARY,DD_R2R,DD_R2R_ELEM,LENR)
6999 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7001.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7003 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7004!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7006 ITSK = OMP_GET_THREAD_NUM()
7007 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7008 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7016 CALL REACTION_FORCES_2(NODFTSK,NODLTSK,NODES%A,NODES%AR,NODES%MS,NODES%IN,FREAC,IFLAG)
7019 CALL PYTHON_END_OPENMP(PYTHON)
7022 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7023 CALL PYTHON_UPDATE_NODAL_ENTITIES(NUMNOD,NODES,A=NODES%A,V=NODES%V,AR=NODES%AR,VR=NODES%VR)
7028.AND..AND.
IF(NGRAV/=0IDTMINS==0IDTMINS_INT==0) THEN
7029 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7030 IF (IMONM > 0) CALL STARTIME(TIMERS,46)
7036 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7037!$OMP PARALLEL PRIVATE(ITSK)
7038 ITSK = OMP_GET_THREAD_NUM()
7039 IF(MULTI_FVM%IS_USED)THEN
7040 CALL GRAVIT_FVM_FEM(
7041 1 IGRV ,AGRV ,NPC ,TF ,NODES%A ,
7042 2 NODES%V ,NODES%X ,SKEWS%SKEW ,NODES%MS ,SENSORS%SENSOR_TAB,
7043 3 NODES%WEIGHT ,LGRAV ,ITSK ,ALE_CONNECTIVITY%NALE,NSENSOR, PYTHON, OUTPUT%TH%WFEXT)
7046 1 IGRV ,AGRV ,NPC ,TF ,NODES%A ,
7047 2 NODES%V ,NODES%X ,SKEWS%SKEW ,NODES%MS ,SENSORS%SENSOR_TAB,
7048 3 NODES%WEIGHT ,LGRAV ,ITSK ,NSENSOR, PYTHON, OUTPUT%TH%WFEXT)
7051 CALL PYTHON_END_OPENMP(PYTHON)
7061 CALL FXGRVCOR(FXBIPM, FXBGRVI, NODES%A, IGRV, AGRV,
7062 . NPC, TF, NODES%MS, NODES%V , SKEWS%SKEW,
7063 . FXBGRW, NODES%BOUNDARY_ADD, NODES%BOUNDARY, OUTPUT%TH%WFEXT, PYTHON)
7065 IF (IMON>0) CALL STOPTIME(TIMERS,46)
7066 IF (IMONM > 0) CALL STOPTIME(TIMERS,TIMER_KIN)
7072 CALL BCSCYC(IBCSCYC,LBCSCYC,SKEWS%SKEW,NODES%X,NODES%V,NODES%A,NODES%ITAB)
7078 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7084 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7085!$OMP PARALLEL PRIVATE(ITSK)
7086 ITSK = OMP_GET_THREAD_NUM()
7087 CALL CFIELD_1(PYTHON,ICFIELD ,CFIELD,NPC ,TF ,NODES%A,
7088 2 NODES%V ,NODES%X ,XFRAME ,NODES%MS,SENSORS%SENSOR_TAB,
7089 3 NODES%WEIGHT,LCFIELD,ITSK ,IFRAME,NSENSOR, OUTPUT%TH%WFEXT)
7091 CALL PYTHON_END_OPENMP(PYTHON)
7093 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
7100 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7102.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7103 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7104!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7106 ITSK = OMP_GET_THREAD_NUM()
7107 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7108 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7116 CALL REACTION_FORCES_2(NODFTSK,NODLTSK,NODES%A,NODES%AR,NODES%MS,NODES%IN,FREAC,IFLAG)
7119 CALL PYTHON_END_OPENMP(PYTHON)
7123 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7133 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7134 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7135!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7136 ITSK = OMP_GET_THREAD_NUM()
7137 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7138 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7139 CALL FORANI3(OUTPUT,NODES%A,NODES%MS,NODFTSK,NODLTSK,H3D_DATA)
7141 CALL PYTHON_END_OPENMP(PYTHON)
7142 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7152.AND.
IF(NINTER/=0IALE/=0)THEN
7155 CALL STARTIME(TIMERS,6)
7156 CALL STARTIME(TIMERS,TIMER_CONTSORT)
7158 CALL INTAL1(OUTPUT,IPARI ,NODES%X ,NODES%V ,
7159 2 NODES%A ,NODES%ISKEW ,SKEWS%SKEW ,NODES%ICODT,WA,
7160 3 NODES%MS ,NODES%ITAB ,FSAV ,INTERFACES%INTBUF_TAB ,
7161 4 OUTPUT%DATA%VECT_CONT ,OUTPUT%DATA%VECT_PCONT ,H3D_DATA )
7163 CALL STOPTIME(TIMERS,TIMER_CONTSORT)
7164 CALL STOPTIME(TIMERS,6)
7168 ! transmit updated values on domain ispmd=0 to other domains (values may be used by parallelized ebcs options)
7169 call spmd_xv_inter_type1(numnod, NODES%BOUNDARY_SIZE, ispmd, nspmd, NODES%BOUNDARY_ADD, NODES%BOUNDARY,
7170 1 nodes%a, nodes%v, ninter, ipari, npari)
7173 IF(IERR == 1)CALL ARRET(2)
7175.and..and.
IF(NINTER /= 0 IALE+IEULER /= 0 INT18KINE == -1)THEN
7179 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7180!$OMP PARALLEL PRIVATE(ITSK)
7181 ITSK = OMP_GET_THREAD_NUM()
7185 CALL I18MAIN_KINE_2(OUTPUT, IPARI,INTERFACES%INTBUF_TAB,NODES%X ,NODES%V ,
7186 2 NODES%A ,NODES%ISKEW,SKEWS%SKEW ,NODES%ICODT,WA,
7187 3 NODES%MS ,NODES%ITAB ,FSAV ,ITSK+1,NODES%KINET,
7188 4 NODES%STIFN,MTF,CAND_SAV,OUTPUT%DATA%VECT_CONT,INT18ADD,
7189 5 NODES%BOUNDARY_ADD,NODES%BOUNDARY,H3D_DATA )
7191 CALL PYTHON_END_OPENMP(PYTHON)
7201 IF(EBCS_TAB%nebcs_loc>0)THEN
7203 CALL STARTIME(TIMERS,6)
7204 CALL STARTIME(TIMERS,TIMER_CONTSORT)
7207 CALL EBCCLAP(NODES%V,NODES%A,FV,EBCS_TAB)
7210 CALL STOPTIME(TIMERS,TIMER_CONTSORT)
7211 CALL STOPTIME(TIMERS,6)
7218 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7219 IF (IMONM > 0) CALL STARTIME(TIMERS,42)
7221 CALL THBCS(NODFT ,NODLT ,NODES%ICODT ,NODES%ICODR,NODES%ISKEW,
7222 2 SKEWS%SKEW ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
7223 3 FTHREAC,NODREAC,CPTREAC)
7229 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7230!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7231 ITSK = OMP_GET_THREAD_NUM()
7232 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7233 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7234 CALL BCS10(NODFTSK,NODLTSK ,NODES%ICODT ,NODES%ICODR,NODES%ISKEW,
7235 2 SKEWS%SKEW ,NODES%A ,NODES%AR ,NODES%MS ,NODES%V ,
7239.AND.
IF(IPLYBCS > 0 IPLYXFEM > 0 )
7240 . CALL PLY_BCS(NODFTSK, NODLTSK,ICODT_PLY,ISKEW_PLY,SKEWS%SKEW,
7241 . INOD_PXFEM,MS_PLY,IBC_PLY)
7243 CALL PYTHON_END_OPENMP(PYTHON)
7246 CALL STOPTIME(TIMERS,42)
7247 CALL STARTIME(TIMERS,43)
7258 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7259!$OMP PARALLEL PRIVATE(ITSK)
7260 ITSK = OMP_GET_THREAD_NUM()
7265 IF(NRLINK>0)CALL RLINK10(
7266 1 NODES%MS ,NODES%IN ,NODES%A ,NODES%AR ,NODES%V ,
7267 2 NODES%VR ,ILINK ,LLINK,SKEWS%SKEW,FR_RL,
7268 3 NODES%WEIGHT,FRL6)
7269 IF(NLINK>0) CALL RLINK11(
7270 1 NODES%MS ,NODES%IN ,NODES%A ,NODES%AR ,NODES%V ,
7271 2 NODES%VR ,NNLINK,LNLINK,SKEWS%SKEW ,FR_LL,
7272 3 NODES%WEIGHT,FNL6 ,NODES%X ,XFRAME)
7278 + NODES%MS ,NODES%IN ,NODES%A ,NODES%AR,NODES%X ,
7279 + LRIVET,RIVET,GEO,NODES%V ,NODES%VR,
7287 CALL CJOINT(NODES%A ,NODES%AR ,NODES%V ,NODES%VR,NODES%X ,
7288 2 FSAV ,LJOINT,NODES%MS,NODES%IN,IADCJ,
7289 3 FR_CJ,TAG_LNK_SMS(NRLINK+NLINK+1),ITSK)
7293 CALL PYTHON_END_OPENMP(PYTHON)
7295 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
7296 IF (IMONM > 0) CALL STOPTIME(TIMERS,43)
7304 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7306!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7307 ITSK = OMP_GET_THREAD_NUM()
7308 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7309 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7313.AND..OR.
IF(TT==ZERO(ISIGI==2ISIGI==4)) THEN
7314#include "vectorize.inc"
7315 DO I=NODFTSK,NODLTSK
7316 FZERO(1,I)=-NODES%A(1,I)
7318 FZERO(2,I)=-NODES%A(2,I)
7320 FZERO(3,I)=-NODES%A(3,I)
7327 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7333.AND..OR..OR.
IF (NS10E>0(IDAMP/=0NDAMP>0ISTAT/=0)) THEN
7334 CALL S10GETVDM(ICNDS10,NODES%V,VND,VMD)
7341 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7343.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7345 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7346!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7348 ITSK = OMP_GET_THREAD_NUM()
7349 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7350 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7358 CALL REACTION_FORCES_2(NODFTSK,NODLTSK,NODES%A,NODES%AR,NODES%MS,NODES%IN,FREAC,IFLAG)
7361 CALL PYTHON_END_OPENMP(PYTHON)
7364 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7366 IF (IMONM > 0) CALL STARTIME(TIMERS,52)
7368 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7369!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7371 ITSK = OMP_GET_THREAD_NUM()
7372 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7373 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7377 CALL DAMPING(NODFTSK,NODLTSK,VMD,NODES%VR,NODES%A ,NODES%AR ,DAMP,NODES%MS,NODES%IN,
7378 . IGRNOD,3+IRODDL*3,ITSK,NODES%WEIGHT,NODES%TAG_S_RBY,OUTPUT%TH%WFEXT)
7380 CALL DAMPING(NODFTSK,NODLTSK,NODES%V ,NODES%VR,NODES%A ,NODES%AR ,DAMP,NODES%MS,NODES%IN,
7381 . IGRNOD,3+IRODDL*3,ITSK,NODES%WEIGHT,NODES%TAG_S_RBY,OUTPUT%TH%WFEXT)
7382 END IF !(NS10E>0) THEN
7388 . 3+IRODDL*3,NODES%V ,
7389 . NODES%VR ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
7390 . DAMPR ,DAMP ,IGRNOD ,NODES%WEIGHT ,NODES%TAG_S_RBY ,OUTPUT%TH%WFEXT)
7399 . NODES%VR ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
7400 . DAMPR ,DAMP ,IGRNOD ,NODES%WEIGHT ,NODES%TAG_S_RBY,
7401 . SKEWS%SKEW ,ICONTACT,IDAMP_RDOF_TAB ,NDAMP_VREL,ID_DAMP_VREL,
7402 . FR_DAMP_VREL,IPARIT,ISPMD,OUTPUT%TH%WFEXT)
7405 . 3+IRODDL*3,NODES%V ,
7406 . NODES%VR ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
7407 . DAMPR ,DAMP ,IGRNOD ,NODES%WEIGHT ,NODES%TAG_S_RBY,
7408 . SKEWS%SKEW ,ICONTACT,IDAMP_RDOF_TAB ,NDAMP_VREL,ID_DAMP_VREL,
7409 . FR_DAMP_VREL,IPARIT,ISPMD,OUTPUT%TH%WFEXT)
7417 CALL PYTHON_END_OPENMP(PYTHON)
7419 IF(IMON>0) CALL STOPTIME(TIMERS,52)
7421 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7423.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7425 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7426!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7428 ITSK = OMP_GET_THREAD_NUM()
7429 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7430 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7438 CALL REACTION_FORCES_2(NODFTSK,NODLTSK,NODES%A,NODES%AR,NODES%MS,NODES%IN,FREAC,IFLAG)
7441 CALL PYTHON_END_OPENMP(PYTHON)
7445 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7451 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7453.AND..OR.
IF(CPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7454 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7455!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7457 ITSK = OMP_GET_THREAD_NUM()
7458 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7459 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7466 CALL REACTION_FORCES_TH(NODFTSK,NODLTSK ,NODES%A ,NODES%AR ,NODES%MS ,
7467 . NODES%IN ,FTHREAC ,IFLAG,NODREAC)
7470 CALL PYTHON_END_OPENMP(PYTHON)
7473 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7483 IF (IMON>0) CALL STARTIME(TIMERS,6)
7484 IF (IMONM > 0) CALL STARTIME(TIMERS,49)
7486 CALL STATIC(VMD ,NODES%VR,NODES%A,NODES%AR,NODES%MS,NODES%IN,IGRNOD,NODES%WEIGHT_MD,OUTPUT%TH%WFEXT)
7488 CALL STATIC(NODES%V,NODES%VR,NODES%A,NODES%AR,NODES%MS,NODES%IN,IGRNOD,NODES%WEIGHT_MD,OUTPUT%TH%WFEXT)
7490 IF (IMONM > 0) CALL STOPTIME(TIMERS,49)
7491 IF (IMON>0) CALL STOPTIME(TIMERS,6)
7502 CALL STARTIME(TIMERS,6)
7503 CALL STARTIME(TIMERS,TIMER_KIN)
7504 IF(IMONM > 0) CALL STARTIME(TIMERS,44)
7506 CALL FIXVEL(IBFV ,NODES%A ,NODES%V ,NPC ,TF ,
7507 2 VEL ,NODES%MS ,NODES%X ,SKEWS%SKEW ,NODES%AR ,
7508 3 NODES%VR ,NODES%IN ,NSENSOR,SENSORS%SENSOR_TAB,
7509 4 NODES%WEIGHT,NODES%D ,RBY ,IFRAME ,
7510 5 XFRAME,NODES%DR ,PTR_SMS, NODES,
7511 6 TT_DOUBLE,NODES%DDP,PYTHON ,OUTPUT%TH%WFEXT)
7513 IF (FXVEL_FGEO ==1) THEN
7514 CALL FIXFINGEO(PYTHON, NODES, IBFV ,NPC ,TF ,
7515 2 VEL ,SENSORS%SENSOR_TAB ,
7516 3 CPTREAC,NODREAC,PTR_SMS,NSENSOR ,
7517 4 FTHREAC, OUTPUT%TH%WFEXT )
7521 IF(IMONM > 0) CALL STOPTIME(TIMERS,44)
7522 CALL STOPTIME(TIMERS,TIMER_KIN)
7523 CALL STOPTIME(TIMERS,6)
7531 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7533.AND..OR.
IF(CPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
7535 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7536!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7538 ITSK = OMP_GET_THREAD_NUM()
7539 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7540 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7547 CALL REACTION_FORCES_TH(NODFTSK,NODLTSK ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,FTHREAC ,IFLAG,NODREAC)
7550 CALL PYTHON_END_OPENMP(PYTHON)
7554 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7560 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7561 IF (IMONM > 0) CALL STARTIME(TIMERS,43)
7563 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7573.AND.
IF(NRWALL>0IDTMINS==1)THEN
7576.AND..OR.
ELSEIF(NRWALL>0(IDTMINS==2IDTMINS_INT/=0))THEN
7578 1 NODES%X ,NODES%A ,NODES%V ,RWALL%RWBUF ,RWALL%LPRW,
7579 2 RWALL%NPRW ,NODES%MS ,FSAV(1,NINTER+1),RWALL%FR_WALL ,
7580 3 OUTPUT%DATA%FOPT(1,1+(NSECT+NRBODY)),
7581 4 RWALL%RWSAV ,NODES%WEIGHT ,FRWL6 ,NODXI_SMS, NODES%WEIGHT_MD,
7582 5 SENSORS%SFSAV,SENSORS%FSAV,SENSORS%STABSEN,SENSORS%TABSENSOR, OUTPUT%TH%WFEXT, OUTPUT%TH%WFEXT_MD)
7585 1 NODES%X ,NODES%A ,NODES%V ,RWALL%RWBUF ,RWALL%LPRW,
7586 2 RWALL%NPRW ,NODES%MS ,FSAV(1,NINTER+1),RWALL%FR_WALL ,
7587 3 OUTPUT%DATA%FOPT(1,1+(NSECT+NRBODY)),
7588 4 RWALL%RWSAV ,NODES%WEIGHT ,FRWL6 ,NATIV_SMS, NODES%WEIGHT_MD,
7589 5 SENSORS%SFSAV,SENSORS%FSAV,SENSORS%STABSEN,SENSORS%TABSENSOR, OUTPUT%TH%WFEXT, OUTPUT%TH%WFEXT_MD)
7593 CALL PYTHON_END_OPENMP(PYTHON)
7595 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
7596 IF (IMONM > 0) CALL STOPTIME(TIMERS,43)
7605.AND.
IF (GLOB_THERM%NFXTEMP > 0 GLOB_THERM%ITHERM_FE > 0) THEN
7607 CALL STARTIME(TIMERS,6)
7608 CALL STARTIME(TIMERS,TIMER_KIN)
7609 IF(IMONM > 0) CALL STARTIME(TIMERS,44)
7611 CALL FIXTEMP(PYTHON,IBFTEMP ,FBFTEMP ,NODES%TEMP ,NPC ,TF ,
7612 1 NSENSOR ,SENSORS%SENSOR_TAB,GLOB_THERM,SNPC)
7614 IF(IMONM > 0) CALL STOPTIME(TIMERS,44)
7615 CALL STOPTIME(TIMERS,TIMER_KIN)
7616 CALL STOPTIME(TIMERS,6)
7621 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
7623 1 NSTRF,NODES%D,NODES%DR,NODES%V,NODES%VR,FSAV(1,1+NINTER+NRWALL+NRBODY),
7624 2 SECFCUM,NODES%A ,NODES%AR ,SECBUF,NODES%MS ,NODES%IN ,
7625 3 NODES%X ,OUTPUT%DATA%FOPT,NODES%WEIGHT,XSEC ,NODES%BOUNDARY_ADD,NODES%BOUNDARY,
7626 4 RG_CUT ,IAD_CUT ,FR_CUT,NODES%WEIGHT_MD,IOLDSECT,
7627 5 SENSORS%STABSEN,SENSORS%SFSAV,SENSORS%TABSENSOR ,SENSORS%FSAV ,OUTPUT%TH%WFEXT )
7628 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
7640 IF (IMON>0) CALL STARTIME(TIMERS,38)
7641 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7642!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7643 ITSK = OMP_GET_THREAD_NUM()
7644 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7645 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7646 CALL CNDINT(ELEMENT%SHELL%IXC, IPART(K3), IXTG, IPART(K8), IPART,
7647 2 ITSK ,NODES%A ,NODES%V ,NODES%AR ,NODES%VR ,
7648 3 NODES%MS ,NODES%IN ,NODFTSK,NODLTSK ,NODES%X ,
7649 4 SH4TREE,SH3TREE ,NODES%ITAB ,NODES%STIFN ,NODES%STIFR ,
7652 CALL PYTHON_END_OPENMP(PYTHON)
7654 IF (IMON>0) CALL STOPTIME(TIMERS,38)
7657 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7658 IF (IMONM > 0) CALL STARTIME(TIMERS,42)
7663 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7664!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
7666 ITSK = OMP_GET_THREAD_NUM()
7667 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
7668 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
7670 CALL BCS10(NODFTSK,NODLTSK ,NODES%ICODT ,NODES%ICODR,NODES%ISKEW,
7671 2 SKEWS%SKEW ,NODES%A ,NODES%AR ,NODES%MS ,NODES%V ,
7675 CALL PYTHON_END_OPENMP(PYTHON)
7677 IF (IMONM > 0) CALL STOPTIME(TIMERS,42)
7678 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
7687 IF (IMON>0) CALL STARTIME(TIMERS,38)
7693 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7694!$OMP PARALLEL PRIVATE(ITSK)
7695 ITSK = OMP_GET_THREAD_NUM()
7697 CALL ADMVIT(ELEMENT%SHELL%IXC, IPART(K3), IXTG, IPART(K8), IPART,
7698 1 ITSK ,NODES%A , NODES%V , NODES%AR , NODES%VR ,
7699 2 SH4TREE,SH3TREE ,NODES%TEMP ,GLOB_THERM%ITHERM_FE)
7702 CALL PYTHON_END_OPENMP(PYTHON)
7704 IF (IMON>0) CALL STOPTIME(TIMERS,38)
7712 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7713 IF(IMONM > 0) CALL STARTIME(TIMERS,40)
7724 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7728 1 RBY ,NODES%X ,NODES%V ,NODES%VR ,SKEWS%SKEW ,
7729 2 FSAV ,LPBY ,NPBY ,NODES%ISKEW,NODES%ITAB ,
7730 3 NODES%WEIGHT ,NODES%A ,NODES%AR ,NODES%MS ,NODES%IN ,
7731 4 KINDRBY,IRBKIN_L,NRBYKIN_L,NODREAC,FTHREAC,
7735 CALL PYTHON_END_OPENMP(PYTHON)
7738 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
7739 IF(IMONM > 0) CALL STOPTIME(TIMERS,40)
7746 IF(IRIGID_MAT > 0 ) THEN
7752 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7755 CALL RMATACCE(RBYM , ARBYM, ARRBYM, VRBYM, VRRBYM ,
7756 1 IRBYM,LNRBYM,NODES%X ,NODES%A ,NODES%AR ,
7757 2 NODES%V ,NODES%VR ,KINDRBYM)
7760 CALL PYTHON_END_OPENMP(PYTHON)
7772 CALL FXBYVIT(output,FXBIPM, FXBNOD, FXBMOD, FXBGLM, FXBLM ,
7773 . FXBMVN, FXBMCD, FXBSE , FXBSV , FXBVIT,
7774 . FXBACC, FXBRPM, NODES%V , NODES%VR , NODES%A ,
7775 . NODES%AR , NODES%MS , NODES%IN , NODES%WEIGHT, FSAV ,
7776 . FXBFC , FXBEDP, NODES%BOUNDARY_ADD, NODES%BOUNDARY)
7782 CALL RBE3V(RBE3,NODES,SKEWS%SKEW )
7789 CALL RBE2V(IRBE2 ,LRBE2 ,NODES%X ,NODES%A ,NODES%AR ,
7790 1 NODES%V ,NODES%VR ,SKEWS%SKEW )
7796 IF (NFLOW>0) CALL FLOW1(IFLOW, RFLOW, NBGAUGE, NODES%A)
7808 CALL STARTIME(TIMERS,TIMER_CONTSORT)
7810 CALL I14WFS(OUTPUT,IPARI,INTERFACES%INTBUF_TAB,IGRSURF,FSAV)
7812 CALL STOPTIME(TIMERS,TIMER_CONTSORT)
7817 IF (NS10E>0) CALL S10CNDI2A(ICNDS10 ,ITAGND ,NODES%A )
7824 CALL STARTIME(TIMERS,6)
7825 CALL STARTIME(TIMERS,TIMER_CONTSORT)
7827 IF (IMONM > 0) CALL STARTIME(TIMERS,28)
7829 CALL INTTI2(IPARI,NODES%X ,NODES%V ,NODES%A ,
7830 2 NODES%VR ,NODES%AR ,K ,NODES%MS ,NODES%IN ,NODES%WEIGHT,WA,SKEWS%SKEW,
7831 3 INTERFACES%INTBUF_TAB)
7833 IF (IMONM > 0) CALL STOPTIME(TIMERS,28)
7835 CALL STOPTIME(TIMERS,TIMER_CONTSORT)
7836 CALL STOPTIME(TIMERS,6)
7844 IF (NSLIPRING + NRETRACTOR > 0) CALL KINE_SEATBELT_VEL(NODES%A,NODES%V,NODES%X,NODES%XDP)
7848 IF (NS10E>0) CALL S10CNDI2A1(ICNDS10 ,ITAGND ,NODES%A )
7850.AND.
IF(NUMFRAM /= 0 N2D == 0)THEN
7854 IF (IMON>0)CALL STARTIME(TIMERS,6)
7855 IF (IMONM > 0) CALL STARTIME(TIMERS,49)
7856 CALL MOVFRA1(XFRAME,IFRAME ,NODES%X, NODES%V ,NODES%A ,NODES%AR)
7857 IF (IMONM > 0) CALL STOPTIME(TIMERS,49)
7858 IF (IMON>0)CALL STOPTIME(TIMERS,6)
7861 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_KIN)
7862 IF (IMONM > 0) CALL STARTIME(TIMERS,40)
7864.AND.
IF(NUMSPH/=0NSPHSOL/=0)THEN
7868 IF (IMONM > 0) CALL STARTIME(TIMERS,48)
7869 IF (IMONM > 0) CALL STARTIME(TIMERS,89)
7875 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7876!$OMP PARALLEL PRIVATE(ITSK)
7877 ITSK = OMP_GET_THREAD_NUM()
7880 1 ITSK ,NODES%V ,NODES%A ,NODES%MS ,PM ,
7881 2 IPART ,IXS ,IPART(K1) ,KXSP ,IPART(K10) ,
7882 3 IRST ,SPBUF ,PARTSAV ,SOL2SPH ,IPARG ,
7883 4 NGROUNC ,IGROUNC ,ELBUF_TAB ,IGEO)
7886 CALL PYTHON_END_OPENMP(PYTHON)
7888 IF (IMONM > 0) CALL STOPTIME(TIMERS,89)
7889 IF (IMONM > 0) CALL STOPTIME(TIMERS,48)
7899 IF (NACCELM > 0) THEN
7900 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7901!$OMP PARALLEL DO PRIVATE(K,N,ISK)
7904 IF(IACCP(K)==ISPMD+1)THEN
7906.AND.
IF(N > 0 N/=2*NUMNODG )THEN
7909 . NODES%A(1,N),ACCELM(1,K),ACCELM(2,K),ACCELM(8,K),ACCELM(14,K),
7910 . ACCELM(20,K),ACCELM(23,K),SKEWS%SKEW(1,ISK))
7915!$OMP END PARALLEL DO
7916 CALL PYTHON_END_OPENMP(PYTHON)
7918 END IF ! Fin NACCELM > 0
7923 IF (NBGAUGE > 0) THEN
7924 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7925!$OMP PARALLEL DO SCHEDULE(DYNAMIC,1) PRIVATE(N)
7927 IF(IGAUP(K)==ISPMD+1)THEN
7931 IF(N < -(NUMELS+NUMELQ+NUMELTG))THEN
7933 . GAUGE(10,K),GAUGE(9,K),GAUGE(14,K),GAUGE(22,K),
7939!$OMP END PARALLEL DO
7940 CALL PYTHON_END_OPENMP(PYTHON)
7942 END IF ! Fin NBGAUGE > 0
7947 IF (NSPHIO > 0) THEN
7948 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7949!$OMP PARALLEL DO SCHEDULE(DYNAMIC,1) PRIVATE(IVAD)
7951 IF (ISPHIO(1,K)>1) THEN
7954 . VSPHIO(IVAD+13),VSPHIO(IVAD+15),VSPHIO(IVAD+18),VSPHIO(IVAD+20),
7955 . VSPHIO(IVAD+16),1)
7959!$OMP END PARALLEL DO
7960 CALL PYTHON_END_OPENMP(PYTHON)
7962 CALL PYTHON_BEGIN_OPENMP(PYTHON)
7966 1 RBY ,NODES%X ,NODES%V ,NODES%VR ,SKEWS%SKEW ,FSAV ,
7967 2 LPBY,NPBY,NODES%ISKEW,NODES%ITAB ,NODES%WEIGHT ,NODES%A ,
7968 3 NODES%AR ,NODES%MS ,NODES%IN ,KINDRBY,IRBKIN_L,NRBYKIN_L,
7969 4 NODES%WEIGHT_MD,MS_2D)
7974 CALL RBE2COR(IRBE2 ,LRBE2 ,NODES%X ,NODES%V ,NODES%VR ,
7975 2 SKEWS%SKEW ,NODES%ISKEW ,NODES%ITAB ,NODES%WEIGHT,NODES%A ,
7976 3 NODES%AR ,NODES%MS0 ,NODES%IN ,NODES%WEIGHT_MD)
7979 CALL PYTHON_END_OPENMP(PYTHON)
7992 IF (NSENSOR> 0 ) THEN
7993.AND.
IF (NSPMD > 1 SENSORS%STABSEN > 0) THEN
7995 DIM_EXCH = SENSORS%SFSAV
7996 CALL SPMD_EXSUM_FB6(DIM6,DIM_EXCH,SENSORS%FSAV)
8000 IF (NSENSOR > 0) THEN
8002 CALL SENSOR_ENER_SAV(NSENSOR,SENSORS%SENSOR_TAB,PARTSAV ,PARTSAV2)
8004 ! pre-computation and mpi communication for type 16 sensor
8005 IF (SENSORS%COMM_SENS16%BOOL) THEN
8006 CALL SENSOR_DIST_SURF0(NSENSOR,SENSORS%SENSOR_TAB,NODES%X,
8007 * IGRSURF,SENSORS%COMM_SENS16)
8010 ! pre-computation and mpi communication for type 17 sensor
8011 IF (SENSORS%COMM_SENS17%BOOL) THEN
8012 CALL SENSOR_TEMP0(NSENSOR,SENSORS%SENSOR_TAB,IGRNOD,NODES%TEMP,NODES%WEIGHT,SENSORS%COMM_SENS17,
8013 * SENSORS%SENSOR_STRUCT)
8017 CALL SENSOR_SPMD(SENSORS%SENSOR_TAB,IPARI ,RWALL%NPRW ,ISENSP ,NSENSP ,
8018 . XSENS ,NODES%X ,ACCELM ,IACCP ,NACCP ,
8019 . GAUGE ,IGAUP ,NGAUP ,PARTSAV2 ,NSENSOR,
8020 . SENSORS%COMM_SENS14,SENSORS%SENSOR_STRUCT )
8023 ! check activation condition of base sensors
8024 CALL SENSOR_BASE(SENSORS ,NSENSOR ,TT ,DT2 ,
8025 . XSENS ,IPARI ,PARTSAV2 ,GAUGE ,FSAV ,
8026 . NODES%X ,NODES%V ,NODES%A ,ACCELM ,RWALL%NPRW ,
8027 . SUBSETS ,IGRSURF ,IGRNOD ,PYTHON)
8029 ! check activation condition of logical sensor hierarchy
8030 CALL SENSOR_LOGICAL(SENSORS)
8035 IF (IMONM > 0) CALL STOPTIME(TIMERS,40)
8036 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_KIN)
8041 IF(LAG_NCF+LAG_NCL>0)THEN
8042 L1 = 1+NIXS*NUMELS + NSVOIS*NIXS
8046.AND.
IF(LAG_SEC == 1 NSPMD == 1)THEN
8051 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8053!$OMP+ PRIVATE(ITSK,NODFTSK,NODLTSK,NUMNTSK,NDTSK,IPMTSK,IGMTSK)
8054!$OMP+ PRIVATE(PARTFTSK,PARTLTSK,NWAFTSK,GREFTSK,GRELTSK)
8058 1 ITSK ,NODFTSK ,NODLTSK ,NUMNTSK,NDTSK ,
8059 2 IPMTSK,PARTFTSK,PARTLTSK,NWAFTSK,IGMTSK ,
8062 CALL LAG_MULT(output,
8063 1 IPARI ,NODES%X ,NODES%A ,
8064 2 WA(NWAFTSK), NODES%V ,NODES%MS ,NODES%IN ,NODES%VR ,
8065 3 ITSK ,WA ,NODES%ITAB ,IXS ,IXS(L2) ,
8066 4 IXS(L3) ,IGRNOD ,OUTPUT%DATA%VECT_CONT,FSAV ,
8067 5 SKEWS%SKEW ,NODES%AR ,LAMBDA ,LAGBUF ,IBCSLAG ,
8068 6 IXS(L1) ,GJBUFI ,GJBUFR ,IBMPC ,RBMPC ,
8069 7 NPBYL ,LPBYL ,IBFV ,VEL ,NPC ,
8070 8 TF ,NEWFRONT ,ICONTACT ,RWALL%RWBUF ,RWALL%LPRW ,
8071 9 RWALL%NPRW ,RBYL ,NODES%D ,NODES%DR ,NODES%KINET ,
8072 A NSENSOR ,SENSORS%SENSOR_TAB,INTERFACES%INTBUF_TAB, H3D_DATA ,IGRBRIC,
8076 CALL PYTHON_END_OPENMP(PYTHON)
8084 NBNCL = FR_LAGF(1,NSPMD+1)
8085 NBIKL = FR_LAGF(2,NSPMD+1)
8086 NBNODL = FR_LAGF(3,NSPMD+1)
8087 NBNODLR= NBNODL*MAX(1,IRODDL)
8089 NBNCL = FR_LAGF(1,ISPMD+1)
8090 NBIKL = FR_LAGF(2,ISPMD+1)
8094 CALL LAG_MULTP(output,
8095 1 IPARI ,NODES%X ,NODES%A ,
8096 2 WA(NWAFTSK), NODES%V ,NODES%MS ,NODES%IN ,NODES%VR ,
8097 3 WA, NODES%ITAB ,IXS ,IXS(L2) ,
8098 4 IXS(L3) ,OUTPUT%DATA%VECT_CONT ,FSAV ,
8099 5 SKEWS%SKEW ,NODES%AR ,LAMBDA ,LAGBUF ,IBCSLAG ,
8100 6 IXS(L1) ,GJBUFI ,GJBUFR ,IBMPC ,RBMPC ,
8101 7 NPBYL ,LPBYL ,IBFV ,VEL ,NPC ,
8102 8 TF ,NEWFRONT ,ICONTACT ,RWALL%RWBUF ,RWALL%LPRW ,
8103 9 RWALL%NPRW ,RBYL ,NODES%D ,NODES%DR ,NODES%KINET ,
8104 A NODES%NODGLOB ,NODES%WEIGHT ,NBNCL ,NBIKL ,NBNODL ,
8105 B NBNODLR ,FR_LAGF ,LLAGF ,NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,
8106 C INTERFACES%INTBUF_TAB ,H3D_DATA, PYTHON, NODES)
8114.AND.
IF (IMPDEB==1IMCONV==0) THEN
8115.AND.
IF (NCYCLE>=NDEB0NCYCLE<=NDEB1) THEN
8116 TTMP=TTMP+OUTPUT%DTANIM
8117.AND.
IF ((IRAD2R==1)(IRESP==1)) THEN
8121 ! double precision accumulation and then cast in simple precision
8122 TT_DOUBLE = TT_DOUBLE + TTMP
8123.OR.
IF (IMPL_S==1NEIG>0) THEN
8127 TT = SNGL(TT_DOUBLE)
8138.OR.
IF( ( ANIM_CE(2156)/=0 H3D_DATA%SH_SCAL_ERR_THK /=0)
8139.AND..AND..OR..OR.
. ((TT>=OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)TT>=TOUTP
8140.AND.
. (MANIM>=4MANIM<=15))) THEN
8145 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8146!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8148 ITSK = OMP_GET_THREAD_NUM()
8149 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8150 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8152 CALL ERR_THK(ELEMENT%SHELL%IXC ,IXTG ,IPARG ,NODES%BOUNDARY_ADD,NODES%BOUNDARY ,
8153 . NODES%WEIGHT ,NODES%X ,ELBUF_TAB,IPART ,IPART(K3) ,
8154 . IPART(K8) ,ITSK ,NODFTSK ,NODLTSK ,ERR_THK_SH4,
8155 . ERR_THK_SH3,SH4TREE,SH3TREE,
8156 . AREA_SH4, AREA_SH3, AREA_NOD,
8157 . THICK_SH4, THICK_SH3, THICK_NOD)
8160 CALL PYTHON_END_OPENMP(PYTHON)
8163 K1=1+LIPART1*(NPART+NTHPART)+2*9*(NPART+NTHPART)
8172 CALL FUNCT_PYTHON_UPDATE_ELEMENTS(PYTHON, ISPMD,
8173 . N2D, NGROUP, NIXC, NIXTG, NIXS,NIXQ,
8174 . NUMGEO, NUMELC, NUMELTG, NUMELS, NUMELQ, NUMMAT, NUMNOD,
8175 . NPARG, NPROPG, NPROPM, NPROPMI, NPROPGI,
8176 . SNERCVOIS, SNESDVOIS, SLERCVOIS, SLESDVOIS,
8177 . STHKE, SEANI, NPART,
8178 . ELBUF_TAB ,IPARG ,GEO ,
8179 . ELEMENT%SHELL%IXC,IXTG, IXS ,IXQ ,PM ,BUFMAT ,
8181 . IPM ,IGEO ,THKE ,ERR_THK_SH4 ,ERR_THK_SH3,
8182 . NODES ,W ,ALE_CONNECTIVITY,
8183 . NERCVOIS ,NESDVOIS ,LERCVOIS ,LESDVOIS,
8184 . M51_N0PHAS, M51_NVPHAS, STACK ,
8185 . IPART(K3:K4-1),IPART(K1:K2-1) ,IPART(K8:K9-1),IPART(K1:K2-1),
8187 . MAT_ELEM%MAT_PARAM, OUTPUT%DATA%FANI_CELL,GLOB_THERM%ITHERM)
8198.OR.
ELSEIF(IDTMINS==2IDTMINS_INT/=0)THEN
8200 IF (IMON>0) CALL STARTIME(TIMERS,39)
8201 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8202!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8204 ITSK = OMP_GET_THREAD_NUM()
8205 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8206 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8208 CALL SMS_ENCIN_2(TIMERS,
8209 1 ITSK ,NODFTSK ,NODLTSK ,NODXI_SMS ,
8210 2 NODES%MS ,JAD_SMS ,JDI_SMS ,LT_SMS ,INDX1_SMS,
8211 3 DIAG_SMS ,NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,NODES%WEIGHT ,NODES%V ,
8212 4 NODES%A ,X_SMS ,Y_SMS ,Z_SMS ,XMOM_SMS ,
8213 5 NODES%ICODT ,NODES%ICODR ,NODES%ISKEW ,SKEWS%SKEW ,IBFV ,
8214 6 VEL ,NPC ,TF ,NODES%X ,NODES%D ,
8215 7 SENSORS ,IFRAME ,XFRAME ,JADI_SMS ,
8216 8 JDII_SMS ,LTI_SMS ,ISKYI_SMS ,MSKYI_SMS ,FR_SMS ,
8217 9 FR_RMS ,NPBY ,TAGSLV_RBY_SMS,INTSTAMP,CPTREAC,
8218 A NODREAC ,FTHREAC ,NODES%AR ,NODES%VR ,
8219 B NODES%DR ,NODES%IN ,RBY ,IRBE2 ,LRBE2 ,
8220 C IAD_RBE2 ,FR_RBE2M ,NMRBE2 ,R2SIZE ,RBE3%IRBE3 ,
8221 D RBE3%LRBE3 ,RBE3%FRBE3 ,RBE3%mpi%IAD_RBE3,RBE3%mpi%FR_RBE3 ,RBE3%mpi%FR_RBE3MP ,
8222 E RBE3%RRBE3 ,RBE3%RRBE3_PON,IAD_RBY ,FR_RBY6 ,RBY6 ,
8223 F LPBY ,TAGMSR_RBY_SMS,RBE3%irotg_sz,NODII_SMS,INDX2_SMS,
8224 G IBCSCYC ,LBCSCYC ,OUTPUT, MSKYI_FI_SMS,LIST_SMS,
8225 H LIST_RMS ,SMS_VFI,sz_mw6,mw6)
8228 CALL PYTHON_END_OPENMP(PYTHON)
8230 IF (IMON>0) CALL STOPTIME(TIMERS,39)
8241.AND.
IF (ICRACK3D > 0 NLEVSET > 0) THEN
8242 CALL XFEOFF(XFEM_TAB ,
8243 . IPARG ,ELEMENT%SHELL%IXC ,NGROUC ,IGROUC ,IEL_CRK ,
8244 . ELCUTC ,IXTG ,IADC_CRK ,NODES%BOUNDARY_ADD,IAD_EDGE ,
8245 . FR_EDGE,FR_NBEDGE,NODES%BOUNDARY ,NXLAYMAX,INOD_CRK ,
8246 . CRKEDGE,XEDGE4N ,XEDGE3N )
8257 IF(ALEFVM_Param%IEnabled>0)THEN
8258 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8260!$OMP+ PRIVATE(ITSK,NODFTSK,NODLTSK,NUMNTSK,NDTSK,IPMTSK,IGMTSK)
8261!$OMP+ PRIVATE(PARTFTSK,PARTLTSK,NWAFTSK,DT2TT,NELTSTT,ITYPTSTT)
8262!$OMP+ PRIVATE(GREFTSK,GRELTSK)
8266 1 ITSK , NODFTSK , NODLTSK , NUMNTSK, NDTSK ,
8267 2 IPMTSK , PARTFTSK, PARTLTSK, NWAFTSK, IGMTSK ,
8272 IF(IPARIT == 1) NDTSK = 1
8274 1 NODES%X , NODES%V ,
8275 2 ELBUF_TAB , NODES%VR ,
8276 3 ALE_CONNECTIVITY , IPARG , IXS ,
8277 4 ALE_CONNECTIVITY%NALE ,
8278 5 ITSK ,NODFTSK , NODLTSK ,IPM , NV46 ,MSNF )
8281 CALL PYTHON_END_OPENMP(PYTHON)
8287 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_IO)
8289.AND..OR.
IF(COMPTREAC/=0(IMPL_S==0 INCONV==1)) THEN
8290 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8291!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8293 ITSK = OMP_GET_THREAD_NUM()
8294 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8295 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8300 CALL REACTION_FORCES_3(NODFTSK,NODLTSK,NODES%A,NODES%AR,NODES%MS,NODES%IN,FREAC)
8303 CALL PYTHON_END_OPENMP(PYTHON)
8306 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_IO)
8312 IF (IMON>0) CALL STARTIME(TIMERS,MACRO_TIMER_GENH3D1)
8313 L1 = 1+NIXS*NUMELS + NSVOIS*NIXS
8316 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8317!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8319 ITSK = OMP_GET_THREAD_NUM()
8323 CALL UPD_TMAX(ELBUF_TAB,IPARG ,GEO ,PM ,
8324 . IXS ,IXS(L1) ,IXS(L3) ,IXS(L2) ,IXQ ,
8325 . ELEMENT%SHELL%IXC ,IXTG ,IXT ,IXP ,IXR ,
8326 . NODES%X ,NODES%D ,NODES%V ,NODES%BOUNDARY_ADD,NODES%BOUNDARY ,
8327 . NODES%WEIGHT ,IPM ,IGEO ,STACK ,ITSK )
8330 CALL PYTHON_END_OPENMP(PYTHON)
8331 IF (IMON>0) CALL STOPTIME(TIMERS,MACRO_TIMER_GENH3D1)
8341 CALL STARTIME(TIMERS,TIMER_IO)
8343 CALL TRACE_IN(5,0,ZERO)
8344 L1 = 1+NIXS*NUMELS + NSVOIS*NIXS
8348.AND.
IF (TT<=TSTOPILASTANIM==3) THEN
8351.AND.
IF (TT<=TSTOPILASTDYNAIN==3) THEN
8354.AND.
IF (TT<=TSTOPILASTH3D==3) THEN
8358.AND..AND.
IF ((TT>OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)ILASTANIM==0) THEN
8360 LASTANIMCYCLE=NCYCLE
8363.AND.
IF (TT>TSTATILASTANIM==0) THEN
8365 LASTSTATCYCLE=NCYCLE
8367.AND.
IF (TT>DYNAIN_DATA%TDYNAINILASTDYNAIN==0) THEN
8371.AND.
IF (TT>H3D_DATA%TH3DILASTH3D==0) THEN
8376 IF(DEBUG(MACRO_DEBUG_CHKSM) >0) THEN
8377 IF(MOD(NCYCLE,DEBUG(MACRO_DEBUG_CHKSM)) == 0 ) THEN
8378 CALL SPMD_FLUSH_ACCEL(NCYCLE, ISPMD, NSPMD, NUMNOD,
8379 . NUMNODG, NUMNODM, NODES%A, NODES%ITAB,
8380 . NODES%WEIGHT, NODES%NODGLOB)
8384 IF(SH_OFFSET_TAB%NNSH_OSET > 0) THEN
8385 CALL ASSIGN_PTRX(PTRX, NODES%X,NUMNOD)
8386 CALL ASSIGN_PTRX(PTRX_OFFSET, XYZ,NUMNOD)
8387.AND.
ELSEIF (IMPL_S > 0 ISMDISP >0) THEN
8388 CALL ASSIGN_PTRX(PTRX, IMPBUF_TAB%X_A,NUMNOD)
8389 CALL ASSIGN_PTRX(PTRX_OFFSET, XYZ ,NUMNOD)
8391 CALL ASSIGN_PTRX(PTRX, NODES%X,NUMNOD)
8392 CALL ASSIGN_PTRX(PTRX_OFFSET, NODES%X,NUMNOD)
8395 CALL SORTIE_MAIN(TIMERS,
8396 1 PM ,NODES%D ,NODES%V ,ALE_CONNECTIVITY ,W ,
8397 2 ELBUF ,IPARG ,IXS ,IXQ ,ELEMENT%SHELL%IXC,
8398 3 IXT ,IXP ,IXR ,IXTG ,WA ,
8399 4 NODES%ITAB ,ptrX ,GEO ,NODES%MS ,NODES%A ,
8400 5 PARTSAV ,ICUT ,XCUT ,
8402 7 NPBY ,NSTRF ,RWALL%RWBUF ,RWALL%NPRW ,EBCS_TAB ,
8403 8 TANI ,INOISE ,BUFNOIS ,RBY ,NEFLSW ,
8404 9 NNFLSW ,CRFLSW ,FLSW ,LOUT ,NODES ,
8405 B FSAV ,SKEWS%SKEW ,ELBUF_TAB ,CLUSTER ,
8406 C NODES%VR ,NODES%IN ,NODES%WEIGHT ,FCLUSTER ,MCLUSTER ,
8407 D DD_IAD ,DMAS ,ACCELM ,GAUGE ,
8408 E IPARI ,EANI ,IPART ,MAT_ELEM%MAT_PARAM ,
8410 G NOM_OPT ,NODES%AR ,IGRSURF ,BUFSF ,IDATA ,
8411 H RDATA ,KXX ,IXX ,BUFMAT ,BUFGEO ,
8412 I KXSP ,IXSP ,NOD2SP ,SPBUF ,NODES%DR,
8413 J FSAVD ,LRIVET ,RIVET ,ISKWN ,IFRAME ,
8414 M XFRAME ,IXS(L1) ,IXS(L2) ,IXS(L3) ,NDMA ,
8415 N MONVOL ,VOLMON ,IPM ,IGEO ,NODES%NODGLOB ,
8416 . NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,
8417 U FR_RBY2 ,IAD_RBY2 ,RWALL%FR_WALL ,FR_SEC ,FXBIPM ,FXBRPM ,
8418 V NDIN ,FXBDEP ,FXBVIT ,FXBACC ,IFLOW ,
8419 W RFLOW ,IPARTL ,NPARTL ,IACCP ,NACCP ,
8420 X FASOLFR ,IPART(I15ATH) ,
8421 Y FR_MV ,IPART_STATE ,SH4TREE ,SH3TREE ,NODES%TEMP ,
8422 Z THKE ,ERR_THK_SH4 ,ERR_THK_SH3,
8423 a INOD_PXFEM ,FTHREAC ,NODREAC ,GRESAV ,
8424 b DIAG_SMS ,SH4TRIM ,SH3TRIM ,XMOM_SMS ,
8425 c IRBE2 ,RBE3%IRBE3 ,LRBE2 ,RBE3%LRBE3 ,FR_RBE2 ,
8426 d RBE3%mpi%FR_RBE3 ,IAD_RBE2 ,DXANCG ,IEL_PXFEM ,ZI_PLY ,
8427 e VFLOW ,FCONTG ,FNCONTG ,FTCONTG ,FREAC ,
8428 f INOD_CRK ,IEL_CRK ,ELCUTC ,IADC_CRK ,
8429 g RES_SMS ,SENSORS ,
8430 h QFRICINT ,IGAUP ,NGAUP ,NODES%WEIGHT_MD ,NCONT ,
8431 i INDEXCONT ,NODGLOBXFE ,NODEDGE ,XFEM_TAB ,
8432 j NV46 ,RTHBUF ,KXIG3D ,IXIG3D ,KNOT ,
8433 k WIGE ,NERCVOIS ,NESDVOIS ,LERCVOIS ,LESDVOIS ,
8434 l CRKEDGE ,STACK ,ISPHIO ,VSPHIO ,NODES%ICODE ,
8435 m INDX_CRK ,XEDGE4N ,XEDGE3N ,SPH2SOL ,STIFN_TMP ,
8436 n STIFR_TMP ,DRAPE_SH4N ,DRAPE_SH3N ,MS_2D ,MULTI_FVM ,
8437 o SEGQUADFR ,H3D_DATA ,NODES%ISKEW ,PSKIDS ,ISKWP ,
8438 p KNOTLOCPC ,KNOTLOCEL ,PINCH_DATA ,TAG_SKINS6 ,IRUNN_BIS ,
8439 q TF ,NPC ,DYNAIN_DATA ,FCONT_MAX ,MDS_MATID ,
8440 r IBCL ,ILOADP ,LLOADP ,
8441 s LOADP ,TAGNCONT ,LOADP_HYD_INTER,FORC ,DRAPEG ,
8442 t USER_WINDOWS ,OUTPUT ,DT ,OUTPUT%TH%TH_SURF%CHANNELS ,
8443 u TABLE ,LOADS ,SFANI ,IPARIT ,ptrX_offset ,
8444 v SZ_NPCONT2 ,NPCONT2 ,GLOB_THERM ,PBLAST ,OUTPUT%TH%WFEXT,
8447.AND..OR..OR.
IF((MSTOP == 1 ICTLSTOP == 0) MSTOP == 2 DT2<=ZERO)THEN
8449 1 NODES%V ,NODES%NODGLOB ,NODES%WEIGHT ,NODES%ITAB ,NODES%MS ,
8450 2 NODES%MS0 ,10 ,PARTSAV ,IPART ,PM ,
8456 IF (ISTAT==3) CALL ENER_W0
8457 IF(coupling%active) CALL COUPLING_ADVANCE(coupling,DT2)
8465 IF (ILASTANIM==1) THEN
8468 IF (ILASTH3D==1) THEN
8471 IF(T1S==TT)NCYCLE=NCYCLE+1
8473.AND.
IF ((IRAD2R==1)(IRESP==1)) THEN
8477 ! double precision accumulation and then cast in simple precision
8478 TT_DOUBLE = TT_DOUBLE + DT2
8479.OR.
IF (IMPL_S==1NEIG>0) THEN
8483 TT = SNGL(TT_DOUBLE)
8490 IF (IMADCPL /= 1) THEN
8491 IF (OUTPUT%DTANIM>ZERO) THEN
8492.AND..OR.
IF((output%NB_ANIM_FRAME >0IANIM < output%NB_ANIM_FRAME)output%NB_ANIM_FRAME ==0) THEN
8493.AND.
IF (TT>TSTOPILASTANIM==0
8494.AND.
. ABS((TT-OUTPUT%TANIM)/OUTPUT%DTANIM)<EM03) THEN
8496 OUTPUT%TANIM=TT-EM10
8499.AND..AND.
IF (TT>TSTOPILASTANIM==0
8500 . (NCYCLE-LASTANIMCYCLE)>=100) THEN
8502 OUTPUT%TANIM=TT-EM10
8507 IF (DTSTAT>ZERO) THEN
8508.AND.
IF (TT>TSTOPILASTANIM==0
8509.AND.
. ABS((TT-TSTAT)/DTSTAT)<EM03) THEN
8513.AND..AND.
IF (TT>TSTOPILASTANIM==0
8514 . (NCYCLE-LASTSTATCYCLE)>=100) THEN
8520 IF (DYNAIN_DATA%DTDYNAIN>ZERO) THEN
8521.AND.
IF (TT>TSTOPILASTDYNAIN==0
8522.AND.
. ABS((TT-DYNAIN_DATA%TDYNAIN)/DYNAIN_DATA%DTDYNAIN)<EM03) THEN
8524 DYNAIN_DATA%TDYNAIN=TT-EM10
8526.AND..AND.
IF (TT>TSTOPILASTDYNAIN==0
8527 . (NCYCLE-LASTDYNCYCLE)>=100) THEN
8529 DYNAIN_DATA%TDYNAIN=TT-EM10
8533 IF (H3D_DATA%DTH3D>ZERO) THEN
8534.AND..OR.
IF((H3D_DATA%NB_H3D_FRAME >0H3D_DATA%IH3D < H3D_DATA%NB_H3D_FRAME)(H3D_DATA%NB_H3D_FRAME ==0)) THEN
8535.AND.
IF (TT>TSTOPILASTH3D==0
8536.AND.
. ABS((TT-H3D_DATA%TH3D)/H3D_DATA%DTH3D)<EM03) THEN
8538 H3D_DATA%TH3D=TT-EM10
8540.AND..AND.
IF (TT>TSTOPILASTH3D==0
8541 . (NCYCLE-LASTH3DCYCLE)>=100) THEN
8543 H3D_DATA%TH3D=TT-EM10
8550 CALL STOPTIME(TIMERS,TIMER_IO)
8553.AND.
IF (IMPDEB==1IMCONV==0) THEN
8554.AND.
IF (NCYCLE>=NDEB0NCYCLE<=NDEB1) THEN
8555.AND.
IF ((IRAD2R==1)(IRESP==1)) THEN
8556 TT_DP=TT_DP-TTMP-DT2
8559 ! double precision accumulation and then cast in simple precision
8560 TT_DOUBLE = TT_DOUBLE - TTMP - DT2
8561.OR.
IF (IMPL_S==1NEIG>0) THEN
8562 TT = TT - TTMP - DT2
8565 TT = SNGL(TT_DOUBLE)
8575 CALL PYTHON_UPDATE_TIME(TT,DT2)
8581 CALL TRACE_IN(3,NCYCLE,ZERO)
8582 IF (IMON>0) CALL STARTIME(TIMERS,34)
8588 IF (IMP_CHK > 0) THEN
8589 CALL IMP_CHKM(TIMERS, PYTHON,
8590 1 NODES%ICODE ,NODES%ISKEW ,ISKWN ,IPART ,IXTG ,IXS ,IXQ ,
8591 2 ELEMENT%SHELL%IXC,IXT ,IXP ,IXR ,IXTG1 ,NODES%ITAB ,NODES%ITABM1,
8592 3 NPC ,IBCL ,IBFV ,SENSORS%SENSOR_TAB,NNLINK ,LNLINK ,IPARG ,IGRV,
8593 4 IPARI ,INTERFACES%INTBUF_TAB,RWALL%NPRW ,ICONX ,NPBY ,LPBY ,LRIVET ,
8594 5 NSTRF ,LJOINT,NODES%ICODT ,NODES%ICODR,INTERFACES%PON%ISKY,ELEMENT%PON%ADSKY,ELEMENT%PON%IAD_CONLD,
8595 6 ILINK ,LLINK ,NODES%WEIGHT,ITASK ,IBVEL ,LBVEL ,FBVEL,
8596 7 NODES%X ,NODES%D ,NODES%V ,NODES%VR ,NODES%DR ,THKE ,DAMP ,NODES%MS,
8597 8 NODES%IN ,PM ,SKEWS%SKEW ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF,
8598 9 TF ,FORC ,VEL ,FSAV ,AGRV ,FR_WAVE,PARTS0 ,
8599 A ELBUF ,RBY ,RIVET ,NODES%BOUNDARY ,NODES%BOUNDARY_ADD ,NSENSOR ,
8600 B WA ,NODES%A ,NODES%AR ,NODES%STIFN ,NODES%STIFR,PARTSAV,ELEMENT%PON%FSKY,
8601 C INTERFACES%PON%FSKYI,IFRAME ,XFRAME ,W16 ,IACTIV ,ELEMENT%PON%FSKYM,IGEO,IPM ,
8602 D OUTPUT%TH%WFEXT ,NODFT ,NODLT ,NT_IMP ,NUM_IMP ,NS_IMP ,NE_IMP,IND_IMP,
8603 L IT ,RWALL%RWBUF ,RWALL%LPRW ,RWALL%FR_WALL ,NBINTC ,INTLIST ,
8604 M OUTPUT%DATA%FOPT(1,1+(NSECT+NRBODY)),RWALL%RWSAV ,FSAVD ,
8605 N DIRUL ,LGRAV ,RBE3%IRBE3 ,RBE3%LRBE3 ,RBE3%FRBE3 ,
8606 O FRWL6 ,IRBE2 ,LRBE2 ,ICFIELD ,LCFIELD ,CFIELD ,ELBUF_TAB,
8607 P NODES%WEIGHT_MD ,STACK,SENSORS%SFSAV ,SENSORS%FSAV,SENSORS%STABSEN ,SENSORS%TABSENSOR ,DRAPE_SH4N ,
8608 Q DRAPE_SH3N ,H3D_DATA ,NDDL0 ,NNZK0 ,IMPBUF_TAB ,CPTREAC,FTHREAC,NODREAC ,
8609 R DRAPEG ,OUTPUT%TH%TH_SURF ,DPL0CLD ,VEL0CLD ,SNPC ,STF , OUTPUT%TH%WFEXT_MD,IGRSURF)
8611.OR..AND.
ELSEIF ((TT<=TSTOP(TT-TSTOP)<EM10)IBUCK==0) THEN
8616 CALL IMP_SOLV(OUTPUT,TIMERS, PYTHON,
8617 1 NODES%ICODE ,NODES%ISKEW ,ISKWN ,IPART ,IXTG ,IXS ,IXQ ,
8618 2 ELEMENT%SHELL%IXC ,IXT ,IXP ,IXR ,IXTG1 ,NODES%ITAB ,NODES%ITABM1 ,
8619 3 NPC ,IBCL ,IBFV ,SENSORS%SENSOR_TAB,NNLINK ,LNLINK ,IPARG ,IGRV ,
8620 4 IPARI ,INTERFACES%INTBUF_TAB,RWALL%NPRW ,ICONX ,NPBY,LPBY ,LRIVET ,
8621 5 NSTRF ,LJOINT ,NODES%ICODT ,NODES%ICODR ,INTERFACES%PON%ISKY ,ELEMENT%PON%ADSKY,ELEMENT%PON%IAD_CONLD,
8622 6 ILINK ,LLINK ,NODES%WEIGHT ,ITASK ,IBVEL ,LBVEL ,FBVEL ,
8623 7 NODES%X ,NODES%D ,NODES%V ,NODES%VR ,NODES%DR ,THKE ,DAMP ,NODES%MS ,
8624 8 NODES%IN ,PM ,SKEWS ,GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
8625 9 TF ,FORC ,VEL ,FSAV ,AGRV ,FR_WAVE,PARTS0 ,
8626 A ELBUF ,RBY ,RIVET,NODES%BOUNDARY,NODES%BOUNDARY_ADD,
8627 B WA ,NODES%A ,NODES%AR ,NODES%STIFN ,NODES%STIFR ,PARTSAV,ELEMENT%PON%FSKY ,
8628 C INTERFACES%PON%FSKYI ,IFRAME ,XFRAME ,W16 ,IACTIV ,ELEMENT%PON%FSKYM ,IGEO ,IPM ,
8629 D OUTPUT%TH%WFEXT ,NODFT ,NODLT ,NT_IMP ,NUM_IMP,NS_IMP ,NE_IMP ,IND_IMP,
8630 L IT ,RWALL%RWBUF ,RWALL%LPRW ,RWALL%FR_WALL,NBINTC ,INTLIST,
8631 M OUTPUT%DATA%FOPT(1,1+(NSECT+NRBODY)) ,RWALL%RWSAV ,FSAVD ,
8632 N GRAPHE , FAC_K ,IPIV_K ,NKCOND,NSENSOR,
8633 O MONVOL ,IGRSURF,FR_MV ,VOLMON ,DIRUL,
8634 P NODES%NODGLOB,MUMPS_PAR,CDDLP ,ISENDTO,IRCVFROM,NEWFRONT,IMSCH ,
8635 Q I2MSCH ,ISIZXV,ILENXV ,ISLEN7 ,IRLEN7 ,ISLEN11,IRLEN11,ISLEN17,
8636 R IRLEN17,IRLEN7T,ISLEN7T,NODES%KINET ,NUM_IMP1,NODES%TEMP ,DT2PREV,WA ,
8637 S LGRAV ,SH4TREE,SH3TREE,IRLEN20,ISLEN20,IRLEN20T,ISLEN20T,
8638 T IRLEN20E,ISLEN20E,RBE3%IRBE3,RBE3%LRBE3 ,RBE3%FRBE3 ,FR_I2M,IAD_I2M,rbe3%mpi%FR_RBE3,
8639 U RBE3%mpi%IAD_RBE3,FRWL6,IRBE2 ,LRBE2,INTBUF_TAB_CP,
8640 W NODES%IKINE ,DIAG_SMS,ICFIELD,LCFIELD,CFIELD,COUNT_REMSLV,
8641 X COUNT_REMSLVE,ELBUF_TAB,ELBUF_IMP,NODES%XDP,NODES%WEIGHT_MD , STACK ,
8642 Y SENSORS%SFSAV,SENSORS%FSAV,SENSORS%STABSEN,SENSORS%TABSENSOR,DRAPE_SH4N , DRAPE_SH3N,
8643 Z H3D_DATA,MULTI_FVM,IGRBRIC,IGRSH4N,IGRSH3N,IGRBEAM,FORNEQS,MAXDGAP,
8644 A NDDL0 ,NNZK0 ,IT_T ,IMPBUF_TAB,CPTREAC,FTHREAC,NODREAC, DRAPEG,
8645 B INTERFACES,OUTPUT%TH%TH_SURF,DPL0CLD,VEL0CLD,SNPC,STF,GLOB_THERM,OUTPUT%TH%WFEXT_MD)
8647 WRITE(6,*) __LINE__,"Fatal error: MUMPS required"
8652 IF (NBUCK>0) IBUCK=1
8653 ELSEIF (IBUCK>0) THEN
8655#if defined(MUMPS5) && defined(DNC)
8656.AND.
IF (IMPL_S > 0 ISMDISP >0) THEN
8657 call assign_ptrX(ptrX,IMPBUF_TAB%X_A,NUMNOD)
8659 call assign_ptrX(ptrX,NODES%X,NUMNOD)
8662 2 PM, GEO, IPM, IGEO, ELBUF,
8663 3 IXS, IXQ, ELEMENT%SHELL%IXC, IXT, IXP,
8664 4 IXR, IXTG, IXTG1, IPARG,
8665 5 TF, NPC, FR_WAVE, W16, BUFMAT,
8666 6 THKE, BUFGEO, NSENSOR, SENSORS%SENSOR_TAB,RBY,
8667 7 SKEWS%SKEW, WA, NODES%ICODT, NODES%ICODR, NODES%ISKEW,
8668 9 IBFV, VEL, LPBY, NPBY, NODES%ITAB,
8669 A NODES%WEIGHT, NODES%MS, NODES%IN, IPARI, INTERFACES%INTBUF_TAB,
8671 E OUTPUT%DATA%VECT_CONT, ICUT, XCUT, OUTPUT%DATA%VECT_FINT, OUTPUT%DATA%VECT_FEXT,
8672 F OUTPUT%DATA%FOPT, OUTPUT%DATA%SCAL_DT, NSTRF, RWALL%RWBUF, RWALL%NPRW,
8673 G TANI, DD_IAD, EANI, IPART,
8674 H NOM_OPT, IGRSURF, BUFSF, IDATA,
8675 I RDATA, KXX, IXX, KXSP, IXSP,
8676 J NOD2SP, SPBUF, IXS(L1), IXS(L2), IXS(L3),
8677 K NODES%VR, MONVOL, VOLMON, NODES%NODGLOB, NODES%BOUNDARY_ADD,
8678 L NODES%BOUNDARY, FR_SEC, FR_RBY2, IAD_RBY2, RWALL%FR_WALL,
8679 M NODES%V, NODES%A, GRAPHE, PARTSAV , XFRAME ,
8681 O FSAV(1,NFNCA+1), FSAV(1,NFTCA+1),NODES%TEMP ,SH4TREE, SH3TREE,
8682 P ERR_THK_SH4, ERR_THK_SH3 , IFRAME ,RWALL%LPRW , ELBUF_TAB,
8683 Q FSAV ,FSAVD , RWALL%RWSAV ,NODES%AR , RBE3%IRBE3 ,
8684 R RBE3%LRBE3 ,RBE3%FRBE3 , FR_I2M ,IAD_I2M , RBE3%mpi%FR_RBE3,
8685 S RBE3%mpi%IAD_RBE3,FRWL6 , IBCL ,FORC , IRBE2 ,
8686 T LRBE2 ,IAD_RBE2 , FR_RBE2 ,NODES%WEIGHT_MD,
8687 U CLUSTER ,FCLUSTER , MCLUSTER ,XFEM_TAB ,
8688 V ALE_CONNECTIVITY ,W , NV46 ,NERCVOIS , NESDVOIS ,
8689 W LERCVOIS ,LESDVOIS ,CRKEDGE ,STACK ,SENSORS%SFSAV ,
8690 X SENSORS%FSAV ,SENSORS%STABSEN,SENSORS%TABSENSOR,INDX_CRK ,XEDGE4N ,
8691 Y XEDGE3N ,SPH2SOL ,STIFN_TMP ,STIFR_TMP , DRAPE_SH4N ,
8692 Z DRAPE_SH3N ,H3D_DATA ,SUBSETS ,IGRNOD , FCONT_MAX,
8693 A OUTPUT%DATA%VECT_PCONT2,OUTPUT%DATA%VECT_PCONT2_2,NDDL0 ,NNZK0 ,IMPBUF_TAB ,
8694 B DRAPEG ,MAT_ELEM%MAT_PARAM ,GLOB_THERM, OUTPUT )
8696 WRITE(6,*) __LINE__,"Fatal error: MUMPS required"
8701.AND.
IF (IDYNA==0ITSK==0) CALL CP_DM(NUMGEO,GEO,IGEO,DMCP,2)
8704 IF (ILASTANIM/=1) THEN
8705.AND.
IF (ILINE/=1ISPMD==0) THEN
8708 WRITE(IOUT,1002)IT_T
8709 WRITE(ISTDO,1002)IT_T
8710 WRITE(IOUT,1003)IT_BCS,IT_PCG
8711 WRITE(ISTDO,1003)IT_BCS,IT_PCG
8713 END IF !(ILASTANIM==2) THEN
8714 TT = MIN(TT,TSTOP+EM10)
8716 ENDIF !IF (IMP_CHK>0)
8717.AND.
IF (TT>TSTOPINCONV==1) THEN
8718 CALL IMP_RESTARCP(NODES%X,NODES%V,NODES%VR,GEO,IGEO,DMCP,IMPBUF_TAB)
8719.AND.
ENDIF !IF (TT>TSTOPINCONV==1)
8722 IF (IMON>0) CALL STOPTIME(TIMERS,34)
8726 ELSEIF(ILAG+IALE+IEULER/=0)THEN
8732 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8743 IF(ISPMD==0) THEN ! int14 processing on p0
8744 CALL SRFVIT(NODES%X,NODES%V,NODES%VR,NODES%A,NODES%AR,
8745 . NPBY ,RBY ,NODES%MS ,NODES%IN ,
8751 CALL PYTHON_END_OPENMP(PYTHON)
8755 IF (NCONLD > 0) THEN
8756 CALL DISP_VEL_SAVED_CLOAD(NODES%V ,NODES%D ,NODES%VR ,NODES%DR ,IBCL ,
8757 . DPL0CLD,VEL0CLD,NIBCLD,NCONLD,IRODDL ,
8763 IF(USER_WINDOWS%HAS_USER_WINDOW /= 0)THEN
8766 USER_WINDOWS%A_SAV(1,I)=NODES%A(1,I)*NODES%MS(I)
8767 USER_WINDOWS%A_SAV(2,I)=NODES%A(2,I)*NODES%MS(I)
8768 USER_WINDOWS%A_SAV(3,I)=NODES%A(3,I)*NODES%MS(I)
8772 USER_WINDOWS%AR_SAV(1,I)=NODES%AR(1,I)*NODES%IN(I)
8773 USER_WINDOWS%AR_SAV(2,I)=NODES%AR(2,I)*NODES%IN(I)
8774 USER_WINDOWS%AR_SAV(3,I)=NODES%AR(3,I)*NODES%IN(I)
8783 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_INTEG)
8789 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8790!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK,NODFT_NL,NODLT_NL)
8791 ITSK = OMP_GET_THREAD_NUM()
8792 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8793 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8798 1 NODES%A , NODES%AR , NODES%V , NODES%VR , FZERO,
8799 2 NODES%ITAB,ALE_CONNECTIVITY%NALE )
8801 IF (NLOC_DMG%IMOD > 0) THEN
8803 NODFT_NL = 1+ ITSK*NLOC_DMG%NNOD/NTHREAD
8804 NODLT_NL = (ITSK+1)*NLOC_DMG%NNOD/NTHREAD
8805 CALL NLOCAL_VEL(NLOC_DMG, NODFT_NL ,NODLT_NL)
8808 IF(IALELAG > 0) THEN
8809 CALL FLOW_VELOCITY(ALE_CONNECTIVITY%NALE,AFLOW ,VFLOW , FZERO ,
8810 2 NODFTSK,NODLTSK ,WFLOW, NODES%V,IFOAM)
8815 1 PINCH_DATA%APINCH, PINCH_DATA%VPINCH,
8816 2 NODFTSK , NODLTSK )
8821 CALL PYTHON_END_OPENMP(PYTHON)
8823! inivel w/ Tstart or sensor
8824 IF (LOADS%NINIVELT > 0) THEN
8826 LENGTH = NUMELS + NSVOIS
8828 LENGTH = NUMELQ + NUMELTG
8831 . NGRNOD, NGRBRIC, NGRQUAD, NGRSH3N,
8832 . IGRNOD, IGRBRIC, IGRQUAD, IGRSH3N,
8833 . NUMSKW, LSKEW, NUMFRAM, SENSORS,
8834 . XFRAME,SKEWS%SKEW, NODES%X, NODES%V,
8835 . NODES%VR, NUMNOD, VFLOW, WFLOW,
8836 . W,MULTI_FVM, IALE , IALELAG,
8837 . TT, IRODDL, LOADS%NINIVELT,LOADS%INIVELT,
8838 . NPARG, NGROUP, LENGTH, IPARG,
8839 . ELBUF_TAB, NODES%MS, NODES%IN, NODES%WEIGHT,
8841 OUTPUT%TH%WFEXT = OUTPUT%TH%WFEXT + T_KIN
8847 IF (NS10E > 0) CALL S10CNDV(ICNDS10,VND ,NODES%V )
8853 IF(IPLYXFEM > 0) THEN
8856 call omp_set_num_threads(NTHREAD)
8857 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8858!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8859 ITSK = OMP_GET_THREAD_NUM()
8860 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8861 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8863 CALL PLY_VELOCITY(NODFTSK,NODLTSK,NPLYMAX,INOD_PXFEM,NUMNOD)
8865 CALL PYTHON_END_OPENMP(PYTHON)
8867 call omp_set_num_threads(NTHREAD)
8870 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_INTEG)
8872 IF(IALE+IEULER==0) THEN
8877 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_INTEG)
8883 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8884!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK,NODFT_NL,NODLT_NL)
8886 ITSK = OMP_GET_THREAD_NUM()
8887 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8888 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8890 CALL DEPLA(NODES%V ,NODES%D ,NODES%X ,NODES%VR ,NODES%DR ,
8891 2 NODES%XDP,NODES%DDP,NUMNOD)
8893 CALL DEPLAFAKEIGE(NODES%X ,NODES%V ,INTERFACES%INTBUF_TAB, KXIG3D,
8894 2 IXIG3D,IGEO, KNOT, WIGE,
8895 3 KNOTLOCPC,KNOTLOCEL)
8898 IF (NLOC_DMG%IMOD > 0) THEN
8900 NODFT_NL = 1+ ITSK*NLOC_DMG%NNOD/NTHREAD
8901 NODLT_NL = (ITSK+1)*NLOC_DMG%NNOD/NTHREAD
8902 CALL NLOCAL_INCR(NLOC_DMG, NODFT_NL,NODLT_NL)
8905 IF(IALELAG > 0) THEN
8906 CALL FLOW_DEPLA(ALE_CONNECTIVITY%NALE, VFLOW ,DFLOW ,
8911 CALL DEPLAPINCH(PINCH_DATA%VPINCH, PINCH_DATA%DPINCH,
8912 2 PINCH_DATA%XPINCH, NODFTSK , NODLTSK)
8916 CALL PYTHON_END_OPENMP(PYTHON)
8918 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_INTEG)
8929 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8930!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8932 ITSK = OMP_GET_THREAD_NUM()
8933 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8934 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8936 1 GEO ,NODES%X ,NODES%D ,NODES%V ,NODES%VR ,
8937 2 W ,WA ,WB ,SKEWS%SKEW ,
8938 3 PM ,XLAS ,NODES%MS ,FSAV ,
8939 4 NODES%A ,TF ,RWALL%RWBUF ,
8941 6 IPARG ,IXS ,IXQ ,NODPOR ,
8942 7 NODES%ISKEW ,NODES%ICODT ,ELBUF_TAB ,
8943 8 NPC ,LINALE ,RWALL%NPRW ,LAS ,
8944 9 IPARI ,NODFTSK ,NODLTSK ,ITSK ,
8945 A NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,NBRCVOIS ,NBSDVOIS ,LNRCVOIS ,
8946 B LNSDVOIS ,NODES%WEIGHT ,ELEMENT%PON%ADSKY,ELEMENT%PON%FSKY,ELEMENT%PON%IADS,
8947 C RWALL%FR_WALL ,NPORGEO ,ELEMENT%PON%PROCNE ,
8948 D FR_NBCC ,ELEMENT%PON%IADQ ,NODES%XDP ,IGRNOD ,
8949 E NODES%DR ,INTERFACES%INTBUF_TAB ,MULTI_FVM ,
8950 F ALE_CONNECTIVITY,NODES%DDP ,NE_NERCVOIS ,NE_NESDVOIS ,
8951 G NE_LERCVOIS ,NE_LESDVOIS ,XCELL ,XFACE , OUTPUT%TH%WFEXT)
8954 CALL PYTHON_END_OPENMP(PYTHON)
8961 IF(IMON>0) CALL STARTIME(TIMERS,TIMER_INTEG)
8967 CALL PYTHON_BEGIN_OPENMP(PYTHON)
8968!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
8970 ITSK = OMP_GET_THREAD_NUM()
8971 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
8972 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
8974 CALL EULDX(NODES%V,NODES%D,NODES%X,NODES%DDP,ALE_CONNECTIVITY%NALE,NODFTSK,NODLTSK)
8977 CALL PYTHON_END_OPENMP(PYTHON)
8979 IF(IMON>0) CALL STOPTIME(TIMERS,TIMER_INTEG)
8982 CALL PYTHON_SYNC(PYTHON%CONTEXT)
8983 CALL PYTHON_UPDATE_NODAL_ENTITIES(NUMNOD,NODES,X=NODES%X, D=NODES%D, DR=NODES%DR)
8984 IF(coupling%active) THEN
8985 DT2MAX_COUPLING = DT2
8986 ! Read and write coupling positions
8987 CALL COUPLING_SYNC(coupling,DT2,NODES,COUPLING_POSITIONS)
8990 IF (ViperCoupling) THEN
8992 CALL RadiossViper_SendXVE(NUMNOD,NELEML,VIPER%NUMELE,NPARG,NGROUP,viper%NUMON,VIPER%ivout,
8993 . NODES%X,NODES%V,VIPER%ITABM1,VIPER%IXEM1,IPARG,ELBUF_TAB)
8994 CALL RadiossViper_SendKill(MSTOP,TSTOP,VIPER%TSTOP)
9000!-------------------------------------------------------------------
9001! offset projection for contact ! add smp // after
9002!----------------------------------
9003 IF (SH_OFFSET_TAB%NNSH_OSET > 0) THEN
9004 XYZ(1:3,1:NUMNOD) = NODES%X(1:3,1:NUMNOD)
9005 CALL offset_nPROJ(NSPMD,NUMNOD,XYZ,SH_OFFSET_TAB,IPARIT)
9011 IF (ICRACK3D > 0) THEN
9012 IF (NLEVSET > 0)THEN
9014 CALL UPXFEM1(XFEM_TAB,
9015 . IPARG ,ELEMENT%SHELL%IXC ,NGROUC ,IGROUC ,IXTG ,
9016 . IADC_CRK ,IEL_CRK ,INOD_CRK ,ELCUTC ,NODEDGE ,
9017 . ENRTAG ,CRKEDGE ,XEDGE4N ,XEDGE3N )
9019 IF (NSPMD > 1) ! exchange ENRTAG
9020 . CALL SPMD_CRK_ADV(NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,INOD_CRK ,ENRTAG)
9026 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9027!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
9028 ITSK = OMP_GET_THREAD_NUM()
9029 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
9030 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
9032 CALL UPENR_CRK(ADSKY_CRK,INOD_CRK ,NODFTSK ,NODLTSK ,
9033 . NODENR ,ENRTAG ,NODLEVXF ,PROCNE_CRK )
9035 CALL PYTHON_END_OPENMP(PYTHON)
9038 CALL UPXFEM_TAGXP(XFEM_TAB,
9039 . IPARG ,ELEMENT%SHELL%IXC ,NGROUC ,IGROUC ,IXTG ,
9040 . IADC_CRK ,IEL_CRK ,INOD_CRK ,ELCUTC ,NODEDGE ,
9041 . ENRTAG ,CRKEDGE ,XEDGE4N ,XEDGE3N ,NODES%ITAB )
9042 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9043!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
9044 ITSK = OMP_GET_THREAD_NUM()
9045 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
9046 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
9048 CALL CRK_VELOCITY(ADSKY_CRK,INOD_CRK ,NODLEVXF ,NODFTSK ,NODLTSK ,
9049 . NODES%X ,NODES%V ,NODES%VR ,NODES%A ,NODES%AR ,
9052 CALL PYTHON_END_OPENMP(PYTHON)
9058 CALL CRK_VELOCITY2(IPARG ,NGROUC ,IGROUC ,ELCUTC ,CRKEDGE ,
9059 . NODEDGE ,ELEMENT%SHELL%IXC ,IXTG ,XEDGE4N ,XEDGE3N ,
9060 . IADC_CRK ,IEL_CRK ,INOD_CRK ,NODES%ITAB )
9065 CALL SPMD_EXCH_CRKVEL(NODES%BOUNDARY_ADD ,NODES%BOUNDARY ,INOD_CRK ,NODES%ITAB ,
9066 . NODES%X ,NODES%V ,NODES%VR )
9072 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9073!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
9074 ITSK = OMP_GET_THREAD_NUM()
9075 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
9076 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
9077 CALL CRK_ZERO_ACCEL(ADSKY_CRK,INOD_CRK ,NODFTSK ,NODLTSK ,NODLEVXF )
9079 CALL PYTHON_END_OPENMP(PYTHON)
9086 CALL UPXFEM2(IPARG ,ELEMENT%SHELL%IXC ,NGROUC ,IGROUC ,IADC_CRK ,
9087 . IEL_CRK ,ELCUTC ,IXTG ,ENRTAG ,INOD_CRK ,
9088 . NODES%BOUNDARY_ADD ,NODES%BOUNDARY,IAD_EDGE,FR_EDGE ,FR_NBEDGE ,
9095 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9096!$OMP PARALLEL PRIVATE(ITSK,NODFTSK,NODLTSK)
9097 ITSK = OMP_GET_THREAD_NUM()
9098 NODFTSK = 1+ITSK*NUMNOD/ NTHREAD
9099 NODLTSK = (ITSK+1)*NUMNOD/NTHREAD
9100 CALL CRK_COORD_INI(ADSKY_CRK,INOD_CRK ,NODFTSK,NODLTSK,NODES%X ,
9103 CALL PYTHON_END_OPENMP(PYTHON)
9112 IF(NINTSTAMP/=0)THEN
9113 CALL INTSTAMP_MOVE(INTSTAMP ,NPC ,TF ,SKEWS%SKEW ,PTR_SMS,
9114 . NODES%V ,NODES%VR ,NODES%MS ,NODES%X ,NODES%D ,
9117 ! --------------------------------
9118 ! velocity update for /INT18 + LAW151
9119 IF( MULTI_FVM%IS_INT18_LAW151 ) THEN
9120.AND.
IF(NSPMD>1 IPARIT/=0) THEN
9121 CALL SPMD_INT18_LAW151_PON( IPARI,ISLEN7,IRLEN7,2,INTERFACES%INTBUF_TAB,
9128 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9129!$OMP PARALLEL PRIVATE(ITSK)
9130 ITSK = OMP_GET_THREAD_NUM()
9131 CALL INT18_LAW151_UPDATE(ITSK ,MULTI_FVM,IGRBRIC ,IPARI,IXS,
9132 1 IGROUPS,IPARG ,ELBUF_TAB,MULTI_FVM%FORCE_INT ,
9133 2 NODES%X, NODES%V, NODES%MS, NODES%KINET ,
9134 3 MULTI_FVM%X_APPEND,MULTI_FVM%V_APPEND,MULTI_FVM%MASS_APPEND,MULTI_FVM%KINET_APPEND)
9136 CALL PYTHON_END_OPENMP(PYTHON)
9139 CALL PYTHON_BEGIN_OPENMP(PYTHON)
9140!$OMP PARALLEL PRIVATE(ITSK)
9141 ITSK = OMP_GET_THREAD_NUM()
9142 CALL MULTI_VELOCITY_BACKUP(ITSK,MULTI_FVM,N2D,NUMELS,NUMELQ,NUMELTG)
9144 CALL PYTHON_END_OPENMP(PYTHON)
9149 IF( MULTI_FVM%IS_USED ) THEN
9150! write *.adb files for FVM solver option
9151 IF (DEBUG(MACRO_DEBUG_ACC)==1) THEN
9157.AND.
IF ( NCYCLE>=DEBSTART MOD(NCYCLE-DEBSTART,RSTFREQ)==0 ) THEN
9158 CALL SPMD_COLLECT_MULTI_FVM(IXS,MULTI_FVM,1)
9161 IF(DEBUG(MACRO_DEBUG_CHKSM) >0) THEN
9162 IF(MOD(NCYCLE,DEBUG(MACRO_DEBUG_CHKSM)) == 0 ) THEN
9163 CALL SPMD_COLLECT_MULTI_FVM(IXS,MULTI_FVM,2)
9172 IF(INTERFACES%PARAMETERS%INTCAREA > 0) THEN
9175 CALL TH_TIME_OUTPUT(ITHOUT, SENSORS,OUTPUT)
9177 CALL INTER_NODAL_AREAS(IXS ,ELEMENT%SHELL%IXC ,IXTG ,FASOLFR ,NODES%X ,
9178 . NODES%BOUNDARY_ADD,NODES%BOUNDARY ,NODES%WEIGHT ,IXQ ,SEGQUADFR ,
9179 . IXS(L1) ,INTERFACES%PARAMETERS%INTAREAN)
9185 IF (INT24USE == 1)THEN
9189 CALL I24E2E_FICTIVE_NODES_UPDATE(INTLIST,NBINTC,IPARI,INTERFACES%INTBUF_TAB,
9190 . NODES%X,NODES%V,NODES%MS,NODES%ITAB,XYZ,NUMNOD,SH_OFFSET_TAB%nnsh_oset)
9195 CALL STARTIME(TIMERS,60)
9197 CALL STOPTIME(TIMERS,60)
9199 IF(IMON>0) CALL STARTIME(TIMERS,13)
9200 IF(ISIZXV>0) CALL SPMD_SD_XV(OUTPUT,
9201 1 NODES%X ,NODES%D ,NODES%V ,NODES%VR ,NODES%MS ,
9202 2 NODES%IN ,NODES%BOUNDARY_ADD,NODES%BOUNDARY,NODES%WEIGHT,IMSCH,
9203 3 W ,ISIZXV ,ILENXV ,NODES%XDP)
9204 IF (IMONM > 0) CALL STARTIME(TIMERS,23)
9205 L1 = 1+NIXS*NUMELS + NSVOIS*NIXS
9209 IF (SH_OFFSET_TAB%NNSH_OSET > 0) THEN
9210 CALL ASSIGN_PTRX(ptrX,XYZ,NUMNOD)
9211.AND.
ELSEIF (IMPL_S > 0 ISMDISP >0) THEN
9212 CALL ASSIGN_PTRX(ptrX,IMPBUF_TAB%X_A,NUMNOD)
9214 CALL ASSIGN_PTRX(ptrX,NODES%X,NUMNOD)
9218 1 IPARI ,ptrX ,NODES%V ,NODES%MS ,
9219 2 IMSCH ,I2MSCH ,DT2PREV ,INTLIST ,NBINTC ,
9220 3 ISLEN7 ,IRLEN7 ,ISLEN11 ,IRLEN11 ,ISLEN17 ,
9221 4 IRLEN17 ,IXS ,IXS(L3) ,NSENSOR ,
9222 5 IGRBRIC ,NODES%TEMP ,1 ,IRLEN7T ,ISLEN7T ,
9223 6 IRLEN20 ,ISLEN20,IRLEN20T,ISLEN20T,IRLEN20E,
9224 7 ISLEN20E,NODES%IKINE ,DIAG_SMS,SENSORS%SENSOR_TAB,INTERFACES%INTBUF_TAB ,INT24E2EUSE,
9225 8 FORNEQS ,MULTI_FVM,INTERFACES,SH_OFFSET_TAB%NNSH_OSET)
9226 IF (IMONM > 0) CALL STOPTIME(TIMERS,23)
9227 IF (IMON>0) CALL STOPTIME(TIMERS,13)
9230 IF (INT24USE == 1)THEN
9231 IF (IMON>0) CALL STARTIME(TIMERS,TIMER_CONTFOR)
9232 CALL SPMD_EXCH_I24(IPARI, INTERFACES%INTBUF_TAB ,NODES%ITAB ,
9233 * NODES%BOUNDARY_ADD, NODES%BOUNDARY ,INTLIST ,NBINTC,
9234 * IAD_I24 ,FR_I24 ,SFR_I24,I24MAXNSNE,3,
9236 IF (IMON>0) CALL STOPTIME(TIMERS,TIMER_CONTFOR)
9239.AND..AND.
IF(NINTSTAMP /= 0FTEMPVAR21==1NSPMD>1) THEN
9240 CALL SPMD_I21TEMPCOM(IPARI,NODES%TEMP,INTERFACES%INTBUF_TAB,NSENSOR,SENSORS%SENSOR_TAB)
9243.AND.
IF(NUMFRAM/=0N2D==0)THEN
9247 IF (IMON>0)CALL STARTIME(TIMERS,6)
9248 IF (IMONM > 0) CALL STARTIME(TIMERS,49)
9250 CALL MOVFRA_IMP(XFRAME ,IFRAME ,NODES%X ,NODES%V ,NODES%A ,
9251 . NODES%VR ,NODES%AR ,NODES%D )
9253 CALL MOVFRA2(XFRAME ,IFRAME ,NODES%X ,NODES%V ,NODES%VR ,
9256 IF (IMONM > 0) CALL STOPTIME(TIMERS,49)
9257 IF (IMON>0) CALL STOPTIME(TIMERS,6)
9260.AND.
IF (GLOB_THERM%IDT_THERM == 1(TSTOP-TT)<=EM20)THEN
9264#if defined(MYREAL8) && !defined(WITHOUT_LINALG)
9268 ! ---------------------------------------------
9270 ! ---------------------------------------------
9276 ! Restart File criteria
9277 STOP_OR_ADD_CYCLE = 0
9278 BOOL_RESTART=.FALSE.
9280 ! End of computation
9281.OR..AND.
IF (((TT>TSTOP)(MSTOP_DT_THERM==1))IMCONV==1) THEN
9282 STOP_OR_ADD_CYCLE = 1 ! check if additional cycle is need with animation
9283 IF (IRAD2R==0) THEN ! No Restart writing at end of Run when Rad2rad is active
9284.OR..OR..AND.
BOOL_RESTART = ((ILASTANIM==0ILASTANIM==1ILASTANIM==3) RESTART_FILE==1) ! Restart writing criteria
9288 ! Restart within Run
9289.AND..AND..AND.
IF (ALE%SUB%IFSUB==0IMCONV==1 RESTART_FILE==1
9290.AND..OR..OR..AND.
. (NCYCLE/NCRST)*NCRST==NCYCLE IRAD2R==0 MREST==1(WMCHECK==1NCYCLE/=1) ) THEN
9291 STOP_OR_ADD_CYCLE = 0
9292 BOOL_RESTART = .TRUE.
9295 IF(WMCHECK==1)THEN ! Checkpoint Restart : write CHECK_DATA File
9297 FILNAM = 'check_data'
9298 OPEN(unit=icheckd,file=filnam,access=
'SEQUENTIAL',form=
'FORMATTED',status=
'UNKNOWN')
9299 WRITE(icheckd, fmt=
'(3A, I1)')
'/RERUN/',rootnam(1:rootlen),
'/',irun
9304 IF (bool_restart)
THEN
9305 IF(imon>0)
CALL startime(timers,timer_io)
9307 IF (glob_therm%IDT_THERM == 1)
CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0, 2)
9309 CALL bcsn(nodes%ICODE,nodes%ICODT,nodes%ICODR,parts0,partsav)
9311 IF (int24use == 1)
THEN
9315 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9316 . xyz,numnod,sh_offset_tab%nnsh_oset)
9322 l1 = 1+nixs*numels + nsvois*nixs
9326 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9327 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9328 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9329 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9330 5 igrbric ,nodes%TEMP ,2 ,irlen7t
9331 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9332 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB
9333 8 forneqs ,multi_fvm,interfaces,sh_offset_tab%NNSH_OSET)
9337 IF (int24use == 1)
THEN
9338 IF (imon>0)
CALL startime(timers,timer_contfor)
9339 CALL spmd_exch_i24(ipari, interfaces%INTBUF_TAB ,nodes%ITAB ,
9340 * nodes%BOUNDARY_ADD, nodes%BOUNDARY ,intlist ,nbintc,
9341 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,3,
9344 CALL spmd_exch_i24(ipari, interfaces%INTBUF_TAB ,nodes%ITAB ,
9345 * nodes%BOUNDARY_ADD, nodes%BOUNDARY ,intlist ,nbintc,
9346 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,4,
9349 IF (imon>0)
CALL stoptime(timers,timer_contfor)
9353 IF(nintstamp /= 0.AND.ftempvar21==1.AND.nspmd>1)
THEN
9354 CALL spmd_i21tempcom(ipari,nodes%TEMP,interfaces%INTBUF_TAB,nsensor,sensors%SENSOR_TAB)
9361 CALL wrrestp(element, nodes, af ,iaf ,ich ,element%PON%ADSKY ,
9362 . elbuf_tab ,xfem_tab ,interfaces%INTBUF_TAB ,multi_fvm ,mat_elem ,
9363 . h3d_data ,interfaces%INTBUF_FRIC_TAB ,subsets ,pinch_data ,ale_connectivity ,
9364 . t_monvol ,sensors , ebcs_tab ,dynain_data ,user_windows ,
9365 . output ,interfaces ,loads ,python ,names_and_titles ,
9366 . eigipm ,eigibuf ,eigrpm ,neipm ,leibuf ,
9367 . nerpm ,iflow ,rflow ,liflow ,lrflow ,
9368 . impbuf_tab ,impl_s ,impl_s0 ,nodes%MCP ,nodes%TEMP ,
9369 . forneqs ,unitab ,stack ,ndrape ,drape_sh3n ,
9370 . drape_sh4n ,drapeg ,restsize ,skews ,glob_therm ,
9371 . pblast ,rbe3 ,rwall )
9374 IF (multirest >0)
THEN
9375 IF (restsize > multirests(irprev))multirests(irprev)=restsize
9377 IF (restsize > restartfilesize) restartfilesize=restsize
9380 IF((iddw/=0).AND.(mstop/=0.OR.tt+dt2>=tstop))
THEN
9383 2 element%SHELL%IXC,ixq,ixt,ixp,ixtg,
9384 3 ixr,ixs,kxig3d,ipm,
9385 4 igeo,geo,poin_ump,cputime_mp,
9386 5 nbr_gpmp,cputime_mp_glob,tab_ump,pm,
9387 6 bufmat,tabmp_l ,tab_mat )
9388 IF(iddwstat/=0)
THEN
9389 CALL printimeg(iparg,pm,ipm,element%SHELL%IXC,ixtg,ixs)
9393 IF(imon>0)
CALL stoptime(timers,timer_io)
9396 IF (stop_or_add_cycle==1)
THEN
9405 IF (ilastanim==2.OR.irad2r==1)
THEN
9411 IF(mstop_dt_therm==0)
THEN
9412 IF (ilastanim==1)
THEN
9414 ELSEIF (ilastanim==0.OR.ilastanim==3)
THEN
9422 IF(mstop_dt_therm==0)
THEN
9423 IF (ilasth3d==1)
THEN
9425 ELSEIF (ilasth3d==0.OR.ilasth3d==3)
THEN
9431 IF( state_anim == 1 .OR. state_h3d == 1 )
THEN
9434 ELSEIF( state_anim == 2 .OR. state_h3d == 2 )
THEN
9444 WRITE(iout,*)
' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9445 WRITE(istdo,*)
' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9447 IF ( istamping == 1)
THEN
9448 WRITE(istdo,
'(A)')
' The run has gone to divergence.'
9449 WRITE(istdo,
'(A)')
' It could be due to a wrong definition of the interfaces between the tools and the blank.'
9450 WRITE(istdo,
'(A)')
' You may need to check if there is enough clearance between the tools,'
9451 WRITE(istdo,
'(A)')
' and that they do not penetrate each other during their travel.'
9452 WRITE(iout,
'(A)')
' The run has gone to divergence.'
9453 WRITE(iout,
'(A)')
' It could be due to a wrong definition of the interfaces between the tools and the blank.'
9454 WRITE(iout,
'(A)')
' You may need to check if there is enough clearance between the tools,'
9455 WRITE(iout,
'(A)')
' and that they do not penetrate each other during their travel.'
9459 IF (int24use == 1)
THEN
9463 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9464 1 xyz,numnod,sh_offset_tab%nnsh_oset)
9468 l1 = 1+nixs*numels + nsvois*nixs
9472 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9473 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9474 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9475 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9476 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
9477 6 irlen20 ,islen20 ,irlen20t,islen20t,irlen20e,
9478 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse ,
9479 8 forneqs ,multi_fvm,interfaces,sh_offset_tab%NNSH_OSET)
9482 IF(coupling%active)
THEN
9483 CALL coupling_ongoing(coupling, ongoing)
9487 CALL coupling_advance(coupling,dt2)
9488 CALL coupling_ongoing(coupling, ongoing)
9490 CALL coupling_finalize(coupling)
9493 IF(
ALLOCATED(isendto))
DEALLOCATE(isendto)
9494 IF(
ALLOCATED(ircvfrom))
DEALLOCATE(ircvfrom)
9495 IF(
ALLOCATED(intlist))
DEALLOCATE(intlist)
9496 IF(
ALLOCATED(intlist25))
DEALLOCATE(intlist25)
9497 IF(
ALLOCATED(niskyfi))
DEALLOCATE(niskyfi)
9498 IF(
ALLOCATED(niskyfie))
DEALLOCATE(niskyfie)
9499 IF(
ALLOCATED(fr_nbcc))
DEALLOCATE(fr_nbcc)
9500 IF(
ALLOCATED(fr_nbcci2))
DEALLOCATE(fr_nbcci2)
9501 IF(
ALLOCATED(dretri))
DEALLOCATE(dretri)
9502 IF(
ALLOCATED(xsec))
DEALLOCATE(xsec)
9503 IF(
ALLOCATED(irbkin_l))
DEALLOCATE(irbkin_l)
9504 IF(
ALLOCATED(icodt0))
DEALLOCATE (icodt0)
9505 IF(
ALLOCATED(icodr0))
DEALLOCATE(icodr0)
9506 IF(
ALLOCATED(element%PON%ISENDP))
DEALLOCATE(element%PON%ISENDP)
9507 IF(
ALLOCATED(element%PON%IRECVP))
DEALLOCATE(element%PON%IRECVP)
9508 IF(
ALLOCATED(irecvp_pxfem))
DEALLOCATE(irecvp_pxfem)
9509 IF(
ALLOCATED(isendp_crk))
DEALLOCATE(isendp_crk)
9510 IF(
ALLOCATED(irecvp_crk))
DEALLOCATE(irecvp_crk
9511 IF(
ALLOCATED(cnel))
DEALLOCATE(cnel)
9512 IF(
ALLOCATED(addcnel))
DEALLOCATE(addcnel)
9513 IF(
ALLOCATED(addtmpl))
DEALLOCATE(addtmpl)
9514 IF(
ALLOCATED(tagel))
DEALLOCATE(tagel)
9515 IF(
ALLOCATED(ibufidel))
DEALLOCATE(ibufidel)
9516 IF(
ALLOCATED(indidel))
DEALLOCATE(indidel)
9517 IF(
ALLOCATED(ipartl))
DEALLOCATE(ipartl)
9518 IF(
ALLOCATED(eminx))
DEALLOCATE(eminx)
9523 IF(idel7ng>=1)
DEALLOCATE(tagtrimc,tagtrimtg)
9525 IF(
ALLOCATED(stifn_tmp))
DEALLOCATE(stifn_tmp)
9526 IF(
ALLOCATED(stifr_tmp))
DEALLOCATE(stifr_tmp)
9527 IF(
ALLOCATED(acnd))
DEALLOCATE(acnd)
9528 IF(
ALLOCATED(arcnd))
DEALLOCATE(arcnd)
9529 IF(
ALLOCATED(stcnd))
DEALLOCATE(stcnd)
9530 IF(
ALLOCATED(strcnd))
DEALLOCATE(strcnd)
9535 IF(
ALLOCATED(fthreac))
DEALLOCATE(fthreac)
9536 IF(
ALLOCATED(fthdtm))
DEALLOCATE(fthdtm)
9537 IF(
ALLOCATED(freac))
DEALLOCATE(freac)
9539 IF(
ALLOCATED(
grth))
DEALLOCATE(
grth)
9541 IF(
ALLOCATED(igroupc))
DEALLOCATE(igroupc)
9542 IF(
ALLOCATED(igrouptg))
DEALLOCATE(igrouptg)
9543 IF(
ALLOCATED(igroups))
DEALLOCATE(igroups)
9544 IF(
ALLOCATED(gresav))
DEALLOCATE(gresav)
9545 IF(
ALLOCATED(sfem_nodvar))
DEALLOCATE(sfem_nodvar)
9546 IF(
ALLOCATED(sfem_nodvar_ale))
DEALLOCATE(sfem_nodvar_ale)
9547 IF(
ALLOCATED(partsav2))
DEALLOCATE(partsav2)
9549 IF(nvolu > 0)
CALL fvstats(monvol)
9551 IF(imonm>0)
CALL printime_interf(interfaces%INTBUF_TAB,ipari,intlist,nbintc,timers%REALTIME(1)*0.01d0)
9552 CALL printime(timers,glob_therm%ITHERM,output)
9563 parallel_section = 0
9571 IF((ncycle/ncrst)*ncrst/=ncycle.AND.
9572 2 mrest/=1.AND.wmcheck/=1.AND.nspmd>1)
THEN
9573 l1 = 1+nixs*numels + nsvois*nixs
9577 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9578 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9579 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9580 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9581 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
9582 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9583 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB,int24e2euse,
9584 8 forneqs ,multi_fvm,interfaces,sh_offset_tab%NNSH_OSET)
9587 IF(
ALLOCATED(isendto))
DEALLOCATE(isendto)
9588 IF(
ALLOCATED(ircvfrom))
DEALLOCATE(ircvfrom)
9589 IF(
ALLOCATED(intlist25))
DEALLOCATE(intlist25)
9590 IF(
ALLOCATED(niskyfi))
DEALLOCATE(niskyfi)
9591 IF(
ALLOCATED(niskyfie))
DEALLOCATE(niskyfie)
9592 IF(
ALLOCATED(fr_nbcc))
DEALLOCATE(fr_nbcc)
9593 IF(
ALLOCATED(fr_nbcci2))
DEALLOCATE(fr_nbcci2)
9594 IF(
ALLOCATED(dretri))
DEALLOCATE(dretri)
9595 IF(
ALLOCATED(xsec))
DEALLOCATE(xsec)
9596 IF(
ALLOCATED(irbkin_l))
DEALLOCATE(irbkin_l)
9597 IF(
ALLOCATED(isendp))
DEALLOCATE(isendp)
9598 IF(
ALLOCATED(element%PON%ISENDP))
DEALLOCATE(element%PON%ISENDP)
9599 IF(
ALLOCATED(element%PON%IRECVP))
DEALLOCATE(element%PON%IRECVP)
9600 IF(
ALLOCATED(irecvp_pxfem))
DEALLOCATE(irecvp_pxfem)
9601 IF(
ALLOCATED(isendp_crk))
DEALLOCATE(isendp_crk)
9602 IF(
ALLOCATED(irecvp_crk))
DEALLOCATE(irecvp_crk)
9604 IF(
ALLOCATED(cnel))
DEALLOCATE
9605 IF(
ALLOCATED(addcnel))
DEALLOCATE(addcnel)
9606 IF(
ALLOCATED(addtmpl))
DEALLOCATE(addtmpl)
9607 IF(
ALLOCATED(tagel))
DEALLOCATE(tagel)
9608 IF(
ALLOCATED(ibufidel))
DEALLOCATE(ibufidel)
9609 IF(
ALLOCATED(indidel))
DEALLOCATE(indidel)
9611 IF(
ALLOCATED(ipartl))
DEALLOCATE(ipartl)
9612 IF(
ALLOCATED(eminx))
DEALLOCATE(eminx)
9617 IF(idel7ng>=1)
DEALLOCATE(tagtrimc,tagtrimtg)
9625 IF(
ALLOCATED(uvarl))
DEALLOCATE (uvarl)
9626 IF(
ALLOCATED(supercellvol_l))
DEALLOCATE (supercellvol_l)
9627 IF(
ALLOCATED(eint_l))
DEALLOCATE (eint_l)
9628 IF(
ALLOCATED(rho_l))
DEALLOCATE (rho_l)
9629 IF(
ALLOCATED(mom_l))
DEALLOCATE (mom_l)
9630 IF(
ALLOCATED(sig_l))
DEALLOCATE (sig_l)
9631 IF(
ALLOCATED(vold_l))
DEALLOCATE (vold_l)
9636 IF(
ALLOCATED(v22max_l))
DEALLOCATE (v22max_l)
9637 IF(
ALLOCATED(dx22min_l))
DEALLOCATE (dx22min_l)
9638 IF(
ALLOCATED(int22_fcell_anim))
DEALLOCATE (int22_fcell_anim)
9649 CALL pblast_deallocate(pblast)
9657 IF (nslipring > 0)
THEN
9663 IF (nretractor > 0)
THEN
9670 DEALLOCATE(
retractor(i)%TABLE(k)%Y%VALUES)
9682 IF (multi_fvm%NS_DIFF)
THEN
9683 CALL diffusion%TERMINATE_DIFFUSION()
9687 IF(nebcs > 0)
CALL segvar%destroy()
9689 IF(
ALLOCATED(stifn_tmp))
DEALLOCATE(stifn_tmp)
9690 IF(
ALLOCATED(stifr_tmp))
DEALLOCATE(stifr_tmp)
9691 IF(
ALLOCATED(acnd))
DEALLOCATE(acnd)
9692 IF(
ALLOCATED(arcnd))
DEALLOCATE(arcnd)
9693 IF(
ALLOCATED(stcnd))
DEALLOCATE(stcnd)
9694 IF(
ALLOCATED(strcnd))
DEALLOCATE(strcnd)
9699 IF(
ALLOCATED(err_thk_sh3))
DEALLOCATE(err_thk_sh3)
9700 IF(
ALLOCATED(err_thk_sh4))
DEALLOCATE(err_thk_sh4)
9706 . x_sms, p_sms,y_sms, z_sms, prec_sms, prec_sms3,
9707 . diag_sms3, lt_sms,
9712 IF(
ALLOCATED(fthreac))
DEALLOCATE(fthreac)
9713 IF(
ALLOCATED(fthdtm))
DEALLOCATE(fthdtm)
9714 IF(
ALLOCATED(freac))
DEALLOCATE(freac)
9716 IF(
ALLOCATED(
grth))
DEALLOCATE(
grth)
9718 IF(
ALLOCATED(gresav))
DEALLOCATE(gresav)
9720 DEALLOCATE(rbe3%RRBE3)
9721 IF (iparit>0)
DEALLOCATE(rbe3%RRBE3_PON)
9723 IF(impl_s>0.OR.neig>0)
THEN
9730 IF(nvolu > 0)
CALL fvstats(monvol)
9732 IF(imonm>0)
CALL printime_interf(interfaces%INTBUF_TAB,ipari,intlist,nbintc,timers%REALTIME(1)*0.01d0)
9733 CALL printime(timers,glob_therm%ITHERM,output)
9737 IF (glob_therm%ITHERM_FE > 0 )
CALL thermbilan(glob_therm)
9740 DEALLOCATE(wibem, wrbem)
9741 IF(glob_therm%ITHERM_FE > 0 )
DEALLOCATE(fthe,fthesky)
9742 IF(glob_therm%INTHEAT > 0 )
DEALLOCATE(ftheskyi)
9743 IF(glob_therm%NODADT_THERM > 0 )
DEALLOCATE(condn,condnsky)
9744 IF(glob_therm%NODADT_THERM > 0.AND.glob_therm%INTHEAT > 0)
DEALLOCATE(condnskyi)
9746 DEALLOCATE(vrbym,vrrbym,arbym,arrbym)
9747 IF(iplyxfem > 0)
THEN
9749 DEALLOCATE(
ply(i)%A)
9750 DEALLOCATE(
ply(i)%V)
9751 DEALLOCATE(
ply(i)%U)
9752 DEALLOCATE(
plysky(i)%FSKY)
9755 IF(intplyxfem > 0)
DEALLOCATE(
plyskyi%FSKYI)
9757 IF(
ALLOCATED(noda_fext))
DEALLOCATE(noda_fext)
9758 CALL output_deallocate_noda_pext(output%DATA
9761 IF(
ALLOCATED(fr_loc))
DEALLOCATE (fr_loc)
9762 IF(
ALLOCATED(fr_loci2m))
DEALLOCATE (fr_loci2m)
9763 IF(
ALLOCATED(icodt0))
DEALLOCATE (icodt0)
9764 IF(
ALLOCATED(icodr0))
DEALLOCATE (icodr0)
9765 IF(
ALLOCATED(isensint))
DEALLOCATE(isensint)
9769 CALL bcs%DEALLOCATE()
9770 IF (
ALLOCATED(rby6))
DEALLOCATE(rby6)
9771 IF (
ALLOCATED(dxancg))
DEALLOCATE(dxancg)
9772 IF (
ALLOCATED(nb25_candt))
DEALLOCATE(nb25_candt)
9773 IF (
ALLOCATED(nb25_impct))
DEALLOCATE(nb25_impct)
9774 IF (
ALLOCATED(nb25_dst1))
DEALLOCATE(nb25_dst1)
9775 IF (
ALLOCATED(nb25_dst2))
DEALLOCATE(nb25_dst2)
9778 IF (
ALLOCATED(sph_work%VOXEL%NNOD))
DEALLOCATE(sph_work%VOXEL%NNOD)
9779 IF (
ALLOCATED(sph_work%VOXEL%DXMIN))
DEALLOCATE(sph_work%VOXEL%DXMIN)
9780 IF (
ALLOCATED(sph_work%VOXEL%DYMIN))
DEALLOCATE(sph_work%VOXEL%DYMIN)
9781 IF (
ALLOCATED(sph_work%VOXEL%DZMIN))
DEALLOCATE(sph_work%VOXEL%DZMIN)
9782 IF (
ALLOCATED(sph_work%VOXEL%DXMAX))
DEALLOCATE(sph_work%VOXEL%DXMAX)
9783 IF (
ALLOCATED(sph_work%VOXEL%DYMAX))
DEALLOCATE(sph_work%VOXEL%DYMAX)
9784 IF (
ALLOCATED(sph_work%VOXEL%DZMAX))
DEALLOCATE(sph_work%VOXEL%DZMAX)
9795 1002
FORMAT(3x,
'* IMPLICIT COMPUTATION TERMINATED WITH ',3x,
9796 .
'TOTAL NONLINEAR ITERATIONS:',i8)
9797 1003
FORMAT(3x,
'* TOTAL NUM.OF MATRIX FACTORIZATION AND PCG ITERATION:'
9800 IF (vipercoupling)
THEN
9802 IF(
ALLOCATED(viper%ITABM1))
DEALLOCATE(viper%ITABM1)
9803 IF(
ALLOCATED(viper%IXEM1))
DEALLOCATE(viper%IXEM1)