648
649
650
651 USE ghost_shells_mod
652 USE connectivity_mod
653 USE nodal_arrays_mod
654 USE detach_node_mod
665 USE rigmat_mod
673 USE imp_intbuf
679 USE intbufdef_mod
688 USE multi_fvm_mod
690 USE pblast_mod
694 USE mat_elem_mod
704 USE sensor_mod
706 USE ebcs_mod
714 USE shooting_node_mod
715 USE loads_mod
719 USE output_mod
720 USE interfaces_mod
723 USE python_funct_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
739 USE skew_mod
740 USE elbufdef_mod
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
746 use glob_therm_mod
747 USE my_alloc_mod
748 USE sph_work_mod
749 USE spmd_xv_inter_type1_mod, only : spmd_xv_inter_type1
750 USE timer_mod
751 USE rbe3_mod
753 USE ams_work_mod
754 USE update_pon_mod
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
760 USE viper_mod
761 USE bcs_nrf_mod , ONLY : bcs_nrf
762 USE rwall_mod
763 USE rwall_pen_mod, only : rgwal0_pen
764 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
765 use resol_alloc_mod
766
767
768
769#include "implicit_f.inc"
770#include "comlock.inc"
771
772
773
774#include "mvsiz_p.inc"
775
776
777
778#include "macro.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"
785#include "sphcom.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"
803#include "task_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"
810#include "warn_c.inc"
811#include "impl1_c.inc"
812#include "fxbcom.inc"
813#include "eigcom.inc"
814#include "spmd_c.inc"
815#include "remesh_c.inc"
816#include "com_xfem1.inc"
817#include "tabsiz_c.inc"
818#include "sms_c.inc"
819#include "filescount_c.inc"
820#include "inter22.inc"
821#include "userlib.inc"
822#include "drape_c.inc"
823
824 COMMON /vglob/dmas,diner
826
827
828
829 INTEGER ITASK
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,*),
837 . LPBY(*),
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(*),
843 . IAF(*),IGRV(*),
844 . KXX(NIXX,*),IXX(*),IEXLNK(NR2R,*),
845 . IFRAME(LISKN,*),KXSP(NISP,*),IXSP(*),NOD2SP(*),
846 . ISPCOND(NISPCOND,*),ISPSYM(NSPCOND,*),IBVEL(NBVELP,*),LBVEL(*),
847 . ISPHIO(,*),LPRTSPH(*),LONFSPH(*),LAGBUF(*),IBCSLAG(*),
848 . (*),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(*),
854 . IAD_RBY2(*),
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,*),
859 . IAD_CUT(NSPMD+2,*), FR_CUT(*), RG_CUT(*), NEWFRONT(*),
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(*),
871 . IADSDP_CRK(*),IADRCP_CRK(*),INOD_CRK(*),IEL_CRK(*),IADC_CRK(*),
872 . ADSKY_CRK(*),PROCNE_CRK(*),CNE_CRK(*),IBORDNODE(*),
873 . (*),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(*),
882 . PROCNE_PXFEM(*),
883 . IBUFSSG_IO(*),IBC_PLY(*),DD_R2R_ELEM(*),
884 . SPH2SOL(*), SOL2SPH(2,*), IRST(3,*), SOL2SPH_TYP(*),IRUNN_BIS,
885 . ADDCSRECT(*), IAD_FRNOR(*), 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
891 . damp(*),
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(*) ,phi(*),
898 . r(3,*) ,crflsw(*),flsw(*),
899 . uwa(*) ,partsav(*) ,
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(), INTENT(INOUT) :: NODES
930 TYPE (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
936 TYPE spsym_struct
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
943 INTEGER MIN_TAB(4)
945 TYPE(coupling_type), intent(inout) :: coupling
946
947
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
953 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
954 TYPE(H3D_DATABASE) :: H3D_DATA
955 TYPE (FAILWAVE_STR_) :: FAILWAVE
956
957 TYPE(SUBSET_) ,DIMENSION(NSUBS) :: SUBSETS
958 TYPE(GROUP_) ,DIMENSION(NGRNOD) :: IGRNOD
959 TYPE(GROUP_) ,DIMENSION(NGRBRIC) :: IGRBRIC
960 TYPE() ,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
968
969 TYPE(NLOCAL_STR_) :: NLOC_DMG
970 TYPE(PINCH) :: PINCH_DATA
971 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
972 INTEGER, INTENT(IN) :: NE_NERCVOIS(*), 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) :: INTERFACES
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
995
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
1001
1002
1003
1004 LOGICAL LOUT
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, ,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,I13I
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, ONFELT, ICH,IFLGADM, MADENDREQUEST
1024 CHARACTER*13 CDUM
1025 INTEGER IDUM1, DIM6, DIM_EXCH
1026
1028 . rdum1,maduf,rbuf(10)
1029 INTEGER LLT1,IWIOUT,IWIOUT_RESULT
1030 INTEGER KSPH1,KSPH21,KSPH22,KSPH23,
1031 . KSPACTIV,KSP2SORT,NELTSA,ITYPTSA,IDTNOD
1032 INTEGER NEGMAS
1033 INTEGER :: LENGTH
1034 INTEGER NBINTC, LENR, LENS, LENI, SIZI, ISIZXV ,ILENXV,
1035 . I2SIZE, LSEND1, LRECV1, LSEND2, LRECV2, NPARTL,
1036 . ISLEN7, IRLEN7, ISLEN11, IRLEN11, LISENDP, LIRECVP,
1037 . ISLEN17, IRLEN17,IRLEN7T,ISLEN7T,LINDIDEL,LBUFIDEL,LBUFSEGLO,
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,,IRECVP, IRBKIN_L,
1046 . IPARTL, NISKYFIE, TAGEL,
1047 . ISENDP_PXFEM,IRECVP_PXFEM,COUNT_REMSLV,COUNT_REMSLVE,
1048 . INTLIST25
1049 INTEGER, DIMENSION(:), ALLOCATABLE, TARGET :: CNEL,ADDCNEL,ADDTMPL
1050 INTEGER, DIMENSION(:),ALLOCATABLE ::
1051 . ISENDP_CRK,IRECVP_CRK
1052 INTEGER NSPHACTG,SPH_IORD1
1053 INTEGER, DIMENSION(1), TARGET :: IMP_DUM
1054
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,
1065 . lbufseglo
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
1076 SAVE dt2prev
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,LENQMV,NV46,NUM_IMP(NINTER),NINT7,NT_IMP,
1083 . NNDL,IT,NMC2,LI13,DIRUL(NFXVEL),NUM_IMP1(NINTER),
1084 . FR_RBE2M(SFR_RBE2),R2SIZE,
1085 . NUM_IMPL(NINTER,NTHREAD), I_OPT_STOK(NINTER),IT_T,NTMP
1086 INTEGER 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
1092 data ttmp /0.0/
1093 INTEGER LWIBEM, LWRBEM, IERROR, 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
1102 INTEGER SIZ, R2R_ON
1103 INTEGER, DIMENSION(:), ALLOCATABLE :: CDDLP
1104#if defined(MUMPS5)
1105 TYPE(DMUMPS_STRUC) MUMPS_PAR
1106#endif
1107 INTEGER IFVMESH
1108
1109 my_real,
DIMENSION(:,:),
ALLOCATABLE :: madclfrecv,partsav2
1110
1111 INTEGER MADYMO_DEL,MADYMO_DEL_GLOBAL
1112 INTEGER, DIMENSION(:), ALLOCATABLE ::MAD_TAG_SOL, MAD_TAG_SH,MAD_TAG_TG,MAD_FAIL_ELEMENTS
1113
1114
1115 INTEGER ITSK, NODFTSK, NODLTSK, NUMNTSK, NDTSK, NDTSKR, IPMTSK,
1116 . PARTFTSK, PARTLTSK, NWAFTSK, I16TSK,
1117 . NELTSTT, ITYPTSTT,IGMTSK,NGROUC, NGROUNC,
1118 . NSNFIOLD(NSPMD),
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,IBUFSEGLO,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)
1130
1131
1132 INTEGER FR_RBY6(SFR_RBY)
1133 double precision
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 :: RBY6
1137 my_real frl(4,nrlink), fnl(4,nlink)
1138 INTEGER NGRTH,NELEM
1139 INTEGER RESTSIZE
1140
1141 INTEGER FR_SMS(NSPMD+1), FR_RMS(NSPMD+1)
1142 INTEGER, POINTER, DIMENSION(:) :: PTR_SMS
1143 INTEGER NMT0
1144 INTEGER, DIMENSION(:), ALLOCATABLE :: IKINE
1145 my_real,
DIMENSION(:),
ALLOCATABLE :: stk_sn,stk_sr,fcluster,mcluster
1146 my_real,
DIMENSION(:),
ALLOCATABLE :: noda_fext
1147 INTEGER LNZM
1148 INTEGER, DIMENSION(:),ALLOCATABLE :: ,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
1155 INTEGER IOLDSECT
1156
1157 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar
1158 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar_ale
1159 INTEGER S_SFEM_NODVAR
1160
1161
1162 INTEGER, DIMENSION(:),ALLOCATABLE :: UNCOMP_FR,FR_LOC,
1163 * UNCOMP_FRI2M,FR_LOCI2M
1164 INTEGER NB_FR,NB_FRI2M
1165
1166
1167 my_real,
DIMENSION(:),
ALLOCATABLE :: mcp_off
1168
1169
1170 INTEGER SFR_I24
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
1179
1180
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
1186
1187
1188 INTEGER SFR_I25
1189 INTEGER, DIMENSION(:), ALLOCATABLE :: FR_I25
1190 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IAD_I25
1191
1192 REAL(kind=4), dimension(:,:), ALLOCATABLE :: fskyn25
1193
1195 INTEGER :: FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE
1196
1197
1198 INTEGER IDEL7NOK_R2R,IDEL7NOK_SAV,NUMSPH_GLO_R2R,FLG_SPHINOUT_R2R
1199 INTEGER, DIMENSION(:),ALLOCATABLE :: OFF_SPH_R2R
1200
1201
1202 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: ISENSINT
1203 INTEGER NISUBMAX
1204
1205 INTEGER, ALLOCATABLE, DIMENSION(:) :: ICONTACT_OLD
1206
1208 . , DIMENSION(:),ALLOCATABLE :: waspsym
1209
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
1221 integer sz_mw6
1222
1223
1224 INTEGER :: NFVBAG0
1225 LOGICAL :: CHECK_NPOLH
1226
1227 INTEGER, DIMENSION(:),ALLOCATABLE :: TAGTRIMC,TAGTRIMTG
1228 INTEGER :: IFTHE, ICONDN, IDX_FTHE, IDX_CONDN, IDX_PINCH,MSTOP_DT_THERM
1229
1230 INTEGER NFACNIT
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
1245
1246
1247 INTEGER FXVEL_FGEO
1248
1249
1250 INTEGER SIZE_RBY6_C,FL_VREL
1252
1253
1254 type(viper_coupling_) :: VIPER
1255
1256
1257 INTEGER :: SZ_NPCONT2
1258 my_real,
DIMENSION(:,:),
ALLOCATABLE :: npcont2
1259
1260
1261 my_real,
TARGET,
DIMENSION(:,:),
ALLOCATABLE :: xyz
1262 my_real,
POINTER,
DIMENSION(:,:),
contiguous :: ptrx, ptrx_offset
1263 TYPE(sh_offset_) :: SH_OFFSET_TAB
1264
1265 INTEGER IFLAG, COMPTREAC
1266
1267
1268
1269
1270! will correspond to the expected velocity
1271
1272
1273
1274
1275
1276
1277
1278
1279! ISKWP < 0 --> the SKEW is local on a processor
1280
1281
1282
1283
1284! number of local SKEW
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301 INTEGER :: STATE_H3D, STATE_ANIM
1302 LOGICAL :: BOOL_RESTART
1303 INTEGER :: NATIV_SMS_SIZ
1304 INTEGER :: TEMP_SIZ
1305 TYPE(shooting_node_type) :: SHOOT_STRUCT
1306 INTEGER :: S_ELEM_STATE
1307 LOGICAL, DIMENSION(:), ALLOCATABLE :: ELEM_STATE
1308 INTEGER :: SIZE_ADDCNEL
1309 INTEGER :: SIZE_CNEL
1310 LOGICAL :: GLOBAL_ACTIVE_ALE_ELEMENT
1311 INTEGER :: SIZE_NPBY
1312
1313 LOGICAL :: NEED_COMM_INTER18
1314 INTEGER :: NUMBER_INTER18
1315 INTEGER, DIMENSION(NINTER) :: INTER18_LIST
1316 TYPE(array_type), DIMENSION(:), ALLOCATABLE :: XCELL_REMOTE
1317
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
1323 integer :: sporo
1324
1325 INTEGER STOP_OR_ADD_CYCLE
1326 INTEGER, PARAMETER :: MAXFUNC = 100
1327 integer :: numnod_old,numnodm_old
1328 integer :: new_crack,nsect_offset
1329
1330
1331
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
1338
1339
1340
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
1347
1348 type(SPH_WORK_) :: SPH_WORK
1349 type (ams_work_) :: ams_work
1350
1351 type(component_), dimension(:), allocatable :: component
1352
1353
1354 logical :: ongoing
1355 double precision :: dt2max_coupling
1356
1357 call resol_alloc_phase1(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)
1363
1364 interfaces%ninter = ninter
1365 interfaces%npari = npari
1366 element%shell%offset = numels + numelq
1367 bool_restart = .true.
1368 lout = ispmd==0
1369 state_h3d = 0
1370 state_anim = 0
1372 idamp_rdof_tab = 0
1373 flg_dtnodamp = 0
1374 flg_kj2 = 0
1375 i_exch_flg_raz = 0
1376 neltst = 0
1377 ityptst = 0
1378 dt2t = 0
1379 mstop_dt_therm = 0
1380
1381 int24use = 0
1382 int24e2euse = 0
1383
1384
1385 cplxit=0
1386 ilastanim=0
1387 ilasth3d=0
1388 ioldsect = -1
1389 ilastdynain=0
1390 nodft = 1
1391 nodlt = numnod
1392 nwaft = 1
1393 iwiout = 0
1394 lmpc = 0
1395 tt_double = tt
1396 lskyi_count = 0
1397 flag_slipring_update = 0
1398 flag_retractor_update = 0
1399 flg_dtnodamp = 0
1400 IF ((nodadt==1).AND.(idamp_rdof==ndamp .OR. ndamp>0 .OR. istat==3)) flg_dtnodamp = 1
1401 flg_damp_funct = 0
1402 IF (ndamp>0) THEN
1403 DO i=1,ndamp
1404 IF(nint(dampr(21,i))==4) flg_damp_funct=1
1405 END DO
1406 END IF
1407 nsensor = sensors%NSENSOR
1408 temp_siz =
merge(numnod, 0, glob_therm%ITHERM_FE>0)
1409 size_rby6_c =
merge(nrbykin, 0, ndamp_vrel_rbyg > 0)
1410 ALLOCATE(rby6_c(2,6,size_rby6_c))
1411 IF(ispmd==0) lmpc = sum(ibmpc(1:nummpc))
1412
1413
1414
1415 size_npby = snpby/nnpby
1416
1417
1418 getunod_nocom=0
1419
1420
1421
1422 imsch = 0
1423 i2msch = 0
1424 dt2prev= zero
1425 lisendp_pxfem = 0 ; lirecvp_pxfem = 0
1426 lisendp_crk = 0 ; lirecvp_crk = 0
1427 pblast%PBLAST_DT%IDT = 0
1428 numsph_glo_r2r = 0
1429 flg_sphinout_r2r = 0
1430 call resol_alloc_phase2(element,nodes,iplyxfem,icrack3d,nspmd,lisendp, lirecvp,
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)
1434
1435
1436
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)
1440
1441 ALLOCATE(interfaces%PARAMETERS%INTAREAN(
merge(numnod, 0, interfaces%PARAMETERS%INTCAREA>0)))
1442
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)
1448
1449
1450
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)
1454
1455
1456
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)
1460
1461
1462
1463
1464 call resol_alloc_phase7(ialelag,numnod,nthread,iparit,lsky,msnf,msf,
1466
1467
1468
1469 CALL resol_alloc_phase8(nadmesh,numelc,numeltg,numnod,levelmax,iparit,istatcnd,anim_n,
1472 . acnd,arcnd,stcnd,strcnd,stifr_tmp,stifn_tmp,nthread)
1473
1474
1475
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)
1481
1482
1483
1484
1485
1486 ismsch =1
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)
1495
1496 IF (ireac == 1 ) THEN
1498 ELSE
1500 ENDIF
1501 IF (igrelem == 1) THEN
1502 ngpe = nthpart
1503 ngrth = nthpart
1504 nelem=numelsg+3*numels16g+numsphg+numelcg+numeltgg+numelqg+numeltg+numelpg+2*numelrg
1505 ELSE
1506 ngpe = 0
1507 ngrth = 0
1508 nelem = 0
1509 ENDIF
1510
1511 IF (igrelem == 1 ) THEN
1512 ALLOCATE(
grth(nelem+ngrth+1))
1513 ALLOCATE(
igrth(nelem+1))
1514 ELSE
1517 ENDIF
1520 dxancg = zero
1521
1522
1523
1524
1525
1526 igroupflg(1:2)=0
1527 IF(nvolu > 0) igroupflg(1) = 1
1528 DO i=1,nummat
1529 IF(ipm(2,i)/=19.AND.ipm(2,i)/=58) cycle
1530 IF(ipm(4,i) >= 4) igroupflg(1)=1
1531 ENDDO
1532 IF(igroupflg(1) == 1) THEN
1533 ALLOCATE(igroupc(numelc))
1534 ALLOCATE(igrouptg(numeltg))
1535 ELSE
1536 ALLOCATE(igroupc(0))
1537 ALLOCATE(igrouptg(0))
1538 ENDIF
1539 igroupflg(2)=1
1540 ALLOCATE(igroups(numels))
1541
1542
1543 fxvel_fgeo = 0
1544
1545
1546
1547
1548 IF (imon>0) THEN
1550 ENDIF
1551
1552 rnum_siz=numnod
1553 ALLOCATE(renum(rnum_siz))
1554
1555
1556
1557 nisubmax = 0
1558 DO i=1,ninter
1559 nisubmax =
max(nisubmax,ipari(36,i))
1560 ENDDO
1561 ALLOCATE(isensint(nisubmax+1,ninter))
1562 isensint(1:nisubmax+1,1:ninter) = 0
1563
1564 idel7nok_sav=idel7nok
1565
1567
1568
1569
1570
1571 l1 = 1+nixs*numels + nsvois*nixs
1572 l2 = l1+6*numels10
1573 l3 = l2+12*numels20
1574 ll1 = 1+8*numels
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))
1580 ELSE
1581 ALLOCATE(tagtrimc(0))
1582 ALLOCATE(tagtrimtg(0))
1583 ENDIF
1584
1585
1586 nfacnit =0
1587 IF (nitsche > 0 ) THEN
1588
1589
1590 ALLOCATE(stressmean(6,numels))
1591
1592
1593 IF(iparit /= 0 ) THEN
1594 IF(numels10g ==0) THEN
1595 nfacnit = 6
1596 ALLOCATE(forneqsky(18*lsky))
1597 forneqsky(1:18*lsky) = zero
1598 ELSE
1599 nfacnit = 16
1600 ALLOCATE(forneqsky(48*lsky))
1601 forneqsky(1:48*lsky) = zero
1602 ENDIF
1603 ELSE
1604 ALLOCATE(forneqsky(0))
1605 ENDIF
1606 stressmean(1:6,1:numels)=zero
1607 ELSE
1608 ALLOCATE(stressmean(0,0))
1609 ALLOCATE( forneqsky(0))
1610 ENDIF
1611
1612 CALL newskw_init(iskwp,numskw_l,nskwp,numskw_l_send,iskwp_l_send,recvcount)
1613 partsav2(1:2,1:npart) = zero
1614
1615
1616 ALLOCATE( inter_struct(ninter) )
1617 ALLOCATE( sort_comm(ninter) )
1619
1620
1621
1622
1623
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)
1633
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)
1643
1644
1645
1646 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
1647 k2=k1+numels
1648 k3=k2+numelq
1649 k4=k3+numelc
1650 k5=k4+numelt
1651 k6=k5+numelp
1652 k7=k6+numelr
1653 k8=k7
1654 k9=k8+numeltg
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 ,
1664 . eani,
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),
1670 . multi_fvm ,
1671 . mat_elem%MAT_PARAM , output%DATA%FANI_CELL,glob_therm%ITHERM)
1672
1673
1674
1675
1676
1677
1678 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
1679 k2=k1+numels
1680 k3=k2+numelq
1681 k4=k3+numelc
1682 k5=k4+numelt
1683 k6=k5+numelp
1684 k7=k6+numelr
1685 k8=k7
1686 k9=k8+numeltg
1687 k10=k9+numelx
1688 k11=k10+numsph
1689 k12=k11+numelig3d
1691 . ipart(k3),ipart(k8),ipart(k1),ipart(k2),ipart(k4),
1692 . ipart(k5) ,ipart(k6),sensors,tt ,dt2 ,iout, python ,nthread)
1693
1694
1695
1696
1697
1698
1699 need_comm_int25_solid_erosion(1:nspmd) = .false.
1700 comm_int25_solid_erosion = 0
1701 CALL python_begin_openmp(python)
1702
1703
1704
1705
1707 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
1708 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
1709 3 greftsk,greltsk)
1710
1712 1 itsk ,fr_nbcc ,
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 ,
1730 j i15j ,kxx ,
1731 k secbuf ,secfcum ,nstrf ,igrnod ,iexlnk ,
1732 l xframe ,
1733 m ixtg1 ,ibcl ,nodes%VISCN ,dd_r2r ,
1734 o elbuf ,ipart ,madprt ,madsh4 ,
1735 p madsh3 ,madsol ,madnod ,madfail ,igeo ,
1736 q intlist ,nbintc ,element%PON%PROCNE ,niskyfi ,nodes%WEIGHT ,
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 ,
1740 u fxbgrw ,ndin ,
1741 v islen7 ,irlen7 ,islen11 ,irlen11 ,
1742 w lwiflow ,lwrflow ,iflow ,addcnel ,cnel ,
1743 x addtmpl ,ipartl ,npartl ,nfnca ,nftca ,
1744 y i15ath ,i35ath ,ipm ,sh4tree ,ipadmesh ,
1745 z msc ,inc ,sh3tree ,mstg ,intg ,
1746 a ptg ,fthe ,fthesky ,ftheskyi ,
nme17 ,
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)
1781
1782
1783 CALL python_end_openmp(python)
1785
1786
1787
1788 CALL split_asspar4(element%PON%ADSKY,numnod,nthread,nodft_asspar,nodlt_asspar,element%PON%SADSKY)
1789
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)
1794 ELSE
1795 ALLOCATE(xyz(3,1))
1796
1797 sh_offset_tab%NNSH_OSET = 0
1798 ENDIF
1799
1800 IF (sh_offset_tab%NNSH_OSET > 0) THEN
1801 CALL assign_ptrx(ptrx,xyz,numnod)
1802 ELSE
1803 CALL assign_ptrx(ptrx,nodes%X,numnod)
1804 ENDIF
1805
1806
1807
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)
1815
1816
1817
1819
1820 global_active_ale_element = .false.
1821 CALL check_ale_comm(iparg,elbuf_tab,global_active_ale_element,glob_therm%ITHERM)
1822
1823 IF(nadmesh/=0.AND.idel7ng>=1) idel7nok = 0
1824
1825
1826 IF (glob_therm%IDT_THERM == 1) THEN
1827 CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0 ,1 )
1828 ENDIF
1829
1830
1831
1832 if(nvolu/=0) then
1833 call init_global_frontier_monvol(ispmd,nspmd,nvolu,nsurf,monvol,
1834 . nimv,volmon,nrvolu,
1835 . fr_mv,frontier_global_mv, t_monvol,igrsurf )
1836 else
1837 frontier_global_mv(1:nspmd+2) = 0
1838 endif
1839
1840 call init_monvol_omp_structure(ispmd,nspmd,nvolu,nsurf,monvol,
1841 . nimv,numnod,
1842 . fr_mv,t_monvol,igrsurf )
1843
1844 i24maxnsne=0
1845 IF (int24use == 1)THEN
1846 ALLOCATE(iad_i24(nbintc+1,nspmd))
1847 sfr_i24=0
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)
1855
1857 * nodes%X,nodes%V,nodes%MS,nodes%ITAB,xyz,numnod,sh_offset_tab%NNSH_OSET)
1858
1859 ELSE
1860 ALLOCATE(iad_i24(1,1))
1861 ENDIF
1862
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)
1869
1870 ALLOCATE(fr_i25(sfr_i25))
1872 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
1873 * iad_i25 , sfr_i25, fr_i25)
1874
1875 ELSE
1876 ALLOCATE(iad_i25(1,1))
1877 ENDIF
1878 ALLOCATE(fskyn25(3,nbccnor))
1879 fskyn25=0.
1880
1881 IF ((numsph_glo_r2r>0).AND.(flg_sphinout_r2r==1)) THEN
1882 ALLOCATE(off_sph_r2r(numnod))
1883 off_sph_r2r(:) = 0
1884 ENDIF
1885
1886
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 )
1890 ENDIF
1891
1892
1893
1894 IF (anim_v(27)+h3d_data%N_VECT_PCONT2 > 0) THEN
1895 sz_npcont2 = numnod
1896 ALLOCATE(npcont2(3,numnod))
1897 npcont2 = zero
1898 ELSE
1899 sz_npcont2 = 0
1900 ALLOCATE(npcont2(3,0))
1901 ENDIF
1902
1903
1904
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
1909 ELSE
1910 ALLOCATE(noda_fext(3))
1911 noda_fext(1:3)=zero
1912 ENDIF
1913
1914
1915
1916 CALL output_allocate_noda_pext(output%DATA,numnod, numnodg)
1917
1918 IF (anim_v(19) + h3d_data%N_VECT_CLUST_FORCE > 0) THEN
1919 ALLOCATE(fcluster(3*numnod))
1920 fcluster(1:3*numnod)=zero
1921 ELSE
1922 ALLOCATE(fcluster(3))
1923 fcluster(1:3)=zero
1924 ENDIF
1925 IF (anim_v(20) + h3d_data%N_VECT_CLUST_MOM > 0) THEN
1926 ALLOCATE(mcluster(3*numnod))
1927 mcluster(1:3*numnod)=0
1928 ELSE
1929 ALLOCATE(mcluster(3))
1930 mcluster(1:3)=0
1931 ENDIF
1932
1933
1934
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))
1941
1942 allocate(component(ninter))
1943 call inter_init_component(ninter,npari,numnod,ispmd,nspmd,ipari,nodes%x,interfaces%intbuf_tab,component)
1944
1945
1946 call allocate_sph_work(sph_work,
1947 * numsph,numsph,
1948 * sol2sph_flag, numnod,
1949 * nsphact,numnod,nsphact,
1950 * numsphg )
1951
1952
1953
1954
1956
1957
1958
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 ,
1966 END IF
1967
1968
1969
1970 ALLOCATE(fthreac(6*cptreac))
1971 IF (impl_s==1) THEN
1972 ALLOCATE(fthdtm(6*cptreac))
1973 ELSE
1974 ALLOCATE(fthdtm(0))
1975 ENDIF
1976
1977
1978 comptreac = 0
1980 IF(comptreac == 1)THEN
1981 ALLOCATE(freac(6*numnod))
1982 freac(1:6*numnod)=zero
1983 ELSE
1984 ALLOCATE(freac(0))
1985 ENDIF
1986
1987 fthreac = zero
1988 fthdtm = zero
1989 IF (nthpart > 0) THEN
1990 ALLOCATE(gresav(npsav*ngpe*nthread))
1991 ELSE
1992 ALLOCATE(gresav(1))
1993 ENDIF
1994 gresav = zero
1995
1996 IF(idel7ng>0)THEN
1997 ierror = 0
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)
2005 ENDIF
2006 IF(ierror/=0)THEN
2007 CALL ancmsg(msgid=158,anmode=aninfo,
2008 . i1=ierror)
2010 ENDIF
2011 ELSE
2012 ALLOCATE(ibufidel(0) ,stat=ierror2)
2013 ALLOCATE(indidel(0) ,stat=ierror2)
2014 END IF
2015
2016 IF(nspmd > 1.AND.pdel > 0) THEN
2017 ALLOCATE(ibufpdel(4*nconld+4*npresload),stat=ierr)
2018 ALLOCATE(nindexpdel(nconld+npresload),stat=ierr)
2019 ENDIF
2020
2021
2022
2023
2024
2025
2026 IF(nadmesh/=0.AND.idel7ng>=1)THEN
2027
2028 l1 = 1+nixs*numels + nsvois*nixs
2029 l2 = l1+6*numels10
2030 l3 = l2+12*numels20
2031 IF((int24use==1.OR.ninter25/=0).AND.idel7nok==1)THEN
2032 indseglo(2:ninter+1)=0
2033 indseglo(1)=1
2034 ENDIF
2035 check_neigh_flag_res = 0
2036 IF (sh_offset_tab%NNSH_OSET > 0) THEN
2037 CALL assign_ptrx(ptrx,xyz,numnod)
2038 ELSE
2039 CALL assign_ptrx(ptrx,nodes%X,numnod)
2040 ENDIF
2041
2042
2043 CALL python_begin_openmp(python)
2044
2045
2046
2047
2049 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
2050 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
2051 3 greftsk,greltsk)
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)
2062
2063
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)
2066
2067
2068
2069
2070 IF(itsk==0) THEN
2072 . ixtg ,
2073 . ngroup,nparg,igroups,iparg )
2074
2076 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
2077 2 ixr,geo,ngroup,igroups,iparg )
2078 ENDIF
2080
2081
2082
2083
2084
2085 IF(nspmd>1) THEN
2087 . interfaces%INTBUF_TAB,newfront,
2088 . ipari,geo,
2089 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2090 . addcnel,cnel,nodes%work_array_node(omp_address),tagel )
2092 ENDIF
2093
2094
2095
2096
2097
2099 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
2100 . ipari,geo,
2101 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2102 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
2103
2104
2105
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 )
2111
2112
2113
2114
2115
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
2122 IF(itsk==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
2128 ENDIF
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 )
2139 ENDIF
2140 ENDIF
2142 ENDIF
2143 ENDIF
2144
2145
2147 1 ipari ,geo ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
2148 2 ixp ,ixr ,ixtg ,nodes%deleted_node,iparg ,itsk ,
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)
2153
2154
2155
2156 CALL python_end_openmp(python)
2158 ENDIF
2159
2160
2161
2162 IF(isfem >= 1) THEN
2163 s_sfem_nodvar = 2*numnod
2164 ELSE
2165 s_sfem_nodvar = 1
2166 ENDIF
2167 ALLOCATE(sfem_nodvar(s_sfem_nodvar))
2168 ALLOCATE(sfem_nodvar_ale(s_sfem_nodvar))
2169
2170
2171
2172
2173
2174
2175
2176
2177 IF(idtmins_int /= 0)THEN
2178
2179
2180 CALL sms_ini_err(rwall%NPRW ,rwall%LPRW ,nodes%KINET )
2181
2182 END IF
2183
2184 IF(idtmins /= 0)THEN
2185 l1 = 1+nixs*numels + nsvois*nixs
2186 l2 = l1+6*numels10
2187 l3 = l2+12*numels20
2188
2189
2190 nativ_sms(1:numnod) = nativ0_sms(1:numnod)
2191
2193
2194 IF(idtmins_int==0)
2196 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2198
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 ,rwall%NPRW ,rwall%LPRW ,ipart ,
2210
2212 IF(ierror/=0) THEN
2213 CALL ancmsg(msgid=19,anmode=aninfo,
2214 . c1='(/DT/.../AMS)')
2216 ENDIF
2217
2218 nsgdone=1
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 ,
2231
2233 IF(ierror/=0) THEN
2234 CALL ancmsg(msgid=19,anmode=aninfo,
2235 . c1='(/DT/.../AMS)')
2237 ENDIF
2238
2239 nsgdone=1
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 ,
2253
2254 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2255 IF(ierror/=0) THEN
2256 CALL ancmsg(msgid=19,anmode=aninfo,
2257 . c1='(/DT/.../AMS)')
2259 ENDIF
2260
2261 nsgdone=1
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 ,
2273 . ipart ,
2274 c igeo ,nodes%WEIGHT ,
nativ_sms,irbe2 ,lrbe2 ,
2277 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2278 IF(ierror/=0) THEN
2279 CALL ancmsg(msgid=19,anmode=aninfo,
2280 . c1='(/DT/.../AMS)')
2282 ENDIF
2283 ALLOCATE(
jsm_sms(nnz_sms),stat=ierror)
2284 IF(ierror/=0) THEN
2285 CALL ancmsg(msgid=19,anmode=aninfo,
2286 . c1='(/DT/.../AMS)')
2288 ENDIF
2289
2290 nsgdone=1
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(i15i),
2298 8 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,nodes%KINET ,
2303
2305
2306 ALLOCATE(ltk_sms(knz_sms),lt_sms(nnz_sms),stat=ierror)
2307 IF(ierror/=0) THEN
2308 CALL ancmsg(msgid=19,anmode=aninfo,
2309 . c1='(/DT/.../AMS)')
2311 ENDIF
2312
2315 . stat=ierror)
2316 IF(ierror/=0) THEN
2317 CALL ancmsg(msgid=19,anmode=aninfo,
2318 . c1='(/DT/.../AMS)')
2320 ENDIF
2321
2322 IF(idtmins==1)THEN
2323
2324 ELSE
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 )
2330 END IF
2331
2332 IF(idtmins_int/=0)THEN
2333
2335 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2337 END IF
2338
2340 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2341 2 nbintc)
2342
2343 ELSEIF(idtmins_int/=0)THEN
2344
2345
2349
2350 nindx1_sms=0
2351 nsmspcg=
min(nsmspcg,numnodg)
2352
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 )
2358
2360 1 nodes%KINET ,rwall%NPRW ,rwall%LPRW ,npby , lpby ,
2362
2364 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2365 2 nbintc)
2366
2367 ELSE
2370 END IF
2371
2372
2373 IF (m_vs_sms>0) THEN
2374 lnzm=m_vs_sms+3
2375 ALLOCATE(proj_s(numnod,lnzm),proj_t(numnod,lnzm),
2376 . proj_la_1(lnzm),proj_w(3*lnzm),proj_k(lnzm,lnzm))
2377 proj_s = zero
2378 ncg_run_sms = 0
2379 ELSE
2380 ALLOCATE(proj_s(0,0),proj_t(0,0),proj_la_1(0),proj_w(0),proj_k(0,0))
2381 END IF
2382
2383
2384
2385 IF (idtmins/=0.AND.debug(macro_debug_ams)==1) THEN
2386 IF(nspmd > 1) THEN
2387 IF (ispmd==0) THEN
2388 siz = numnodg
2389 ELSE
2390 siz = 0
2391 END IF
2393 ELSE
2395 END IF
2396 END IF
2397
2398
2399
2400 IF(idtmins/=0.AND.iparitTHEN
2401 ALLOCATE(uncomp_fr(numnod))
2402 ALLOCATE(uncomp_fri2m(numnod))
2403
2405 * nodes%BOUNDARY_ADD,nodes%BOUNDARY,nb_fr,uncomp_fr,
2406 * iad_i2m,fr_i2m,nb_fri2m,uncomp_fri2m)
2407
2408 ALLOCATE(fr_loc(nb_fr))
2409 fr_loc(1:nb_fr) = uncomp_fr(1:nb_fr)
2410
2411 ALLOCATE(fr_loci2m(nb_fri2m))
2412 fr_loci2m(1:nb_fri2m) = uncomp_fri2m(1:nb_fri2m)
2413
2414
2415 DEALLOCATE(uncomp_fr)
2416 DEALLOCATE(uncomp_fri2m)
2417
2418 ELSE
2419 ALLOCATE(fr_loc(1))
2420 ALLOCATE(fr_loci2m(1))
2421 ENDIF
2422
2423
2424
2425
2426
2427
2428
2429 ALLOCATE(wibem(lwibem), wrbem(lwrbem), stat=ierror)
2430 IF (ierror/=0) THEN
2431 CALL ancmsg(msgid=160,anmode=aninfo,
2432 . i1=ierror)
2434 ENDIF
2435 DO i=1,lwibem
2436 wibem(i)=0
2437 ENDDO
2438 ALLOCATE(wiflow(lwiflow), wrflow(lwrflow), stat=ierror)
2439 IF (ierror/=0) THEN
2440 CALL ancmsg(msgid=160,anmode=aninfo,
2441 . i1=ierror)
2443 ENDIF
2444 DO i=1,lwiflow
2445 wiflow(i)=0
2446 ENDDO
2447
2448
2449
2450 ALLOCATE(eminx(
nme17*6))
2451
2452 IF (nfxbody>0) THEN
2453 DO n=1,nfxbody
2454 adrnod=fxbipm(6,n)
2455 onof=1
2456 onfelt=0
2458 . iparg , ixs , ixq , element%SHELL%IXC ,
2459 . ixt , ixp , ixr , ixtg , fxbipm(1,n),
2460 . fxbnod(adrnod), onof , wa , onfelt ,elbuf_tab )
2461 ENDDO
2462 END IF
2463
2464
2465
2466 IF(mcheck==0) dt2s=0.0
2467 IF(mcheck/=0) dt2save = dt2
2468
2469 IF(nrbe3>0)THEN
2470 nmt0 = rbe3%lrbe3_sz/2
2471 IF (nmt0>0) THEN
2473 END IF
2474 END IF
2475
2476
2477
2478
2479 IF (impl_s==1.OR.neig>0) THEN
2480#if defined(myreal8) &&
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
2486 l2 = l1+6*numels10
2487 l3 = l2+12*numels20
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
2501 IF (imon>0)
CALL stoptime(timers,31)
2502 IF (imon>0)
CALL stoptime(timers,34)
2503
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
2511#if defined(MUMPS5)
2513#else
2514 WRITE(6,*) __line__,"Fatal error: MUMPS required"
2515 CALL flush(6)
2517#endif
2518 ALLOCATE(cddlp(nddl0))
2519 ENDIF
2520 ibuck= ibuckl
2521
2522
2523
2524
2525 IF (neig>0) THEN
2527#ifdef DNC
2528 CALL imp_eigsol(
2529 1 eigipm , eigrpm , nodes%MS ,nodes%IN , eigibuf ,
2530 2 nodes%X ,ixtg1 ,tf , npc , fr_wave ,
2531 3 w16 , wa ,
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 ,
2545 g nodes%NODGLOB , nodes%BOUNDARY_ADD , nodes%BOUNDARY , fr_sec , fr_rby2 ,
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)
2559#endif
2560 dt2 =
max(em20,tstop-tt)
2561 mstop=2
2562 GOTO 300
2563 END IF
2564#endif
2565 ELSE
2566 impl_s0 = 0
2567 imp_dum(1)=0
2568 ns_imp => imp_dum
2569 ne_imp => imp_dum
2570 ind_imp=> imp_dum
2571 num_imp=0
2572 ismdisp=0
2573 END IF
2574
2575
2576
2577
2578
2579
2580 onofp=0
2581 iad1 = 0
2582 iad2 = 0
2583 iad1b= 0
2584 IF (iparit>0) THEN
2585 iad1 = 1
2586 IF(ivector==1)THEN
2587 iad1b = iad1+numnod+1
2588 iad2 = iad1b+numnod
2589 ELSE
2590 iad1b = iad1
2591 iad2 = iad1b+numnod+1
2592 ENDIF
2593 ENDIF
2594 IF(numsph/=0)THEN
2595 IF(scodver>=44.AND.sminver<3)
2596 .
CALL sphres44b(kxsp ,ixsp ,nod2sp ,iparg ,spbuf )
2597 ENDIF
2598
2599
2600
2601 ksph1 =1+3*numsph
2602 ksph21 =numsph+1
2603 ksph22 =ksph21+16*numsph
2604 ksph23 =ksph22+
min(1,nsphio)*3*numsph
2605 kspactiv=1
2606 IF(nsphsol==0)THEN
2607
2608 ksp2sort=1
2609 ELSE
2610
2611 ksp2sort=ksph23
2612 END IF
2613
2614
2615
2616
2637
2638
2639
2640
2641
2642#ifdef DNC
2643 madymo_del_global=0
2644 madymo_del=0
2645 IF(imadcpl==1)THEN
2646
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
2655
2656 ALLOCATE(madclfrecv(3,madclnods))
2657
2658 CALL initial_data_exch_madcpl(nodes%X,nodes%A,nodes%V,nodes%MS,madclnod)
2659
2660
2661 CALL dummy_cycle_madcpl(nodes%X,madclnod)
2662
2663 ENDIF
2664#endif
2665
2666 IF(ninter25 /= 0) THEN
2668 ELSE
2669 ninter25e = 0
2670 ENDIF
2671
2673 check_npolh = .false.
2674 IF(nvolu>0)THEN
2677 ENDIF
2678
2680
2681
2682 IF( ninter /= 0 ) THEN
2683
2685
2687 ENDIF
2688
2689
2690
2696 ENDIF
2697
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)
2701 IF(nvolu > 0)THEN
2702 IF(python%NB_FUNCTS > 0) THEN
2703 k1 = 1
2704 kk1 = 0
2705 DO i=1,nvolu
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)
2710 k1 = k1 + nimv
2711 kk1 = kk1 + nrvolu
2712 END DO
2713 CALL python_monvol(t_monvol)
2714 ENDIF
2715 ENDIF
2716
2717
2718 IF(coupling%active) THEN
2719
2720 ALLOCATE(nodes%FORCES(3,numnod))
2721 nodes%FORCES = zero
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)
2725 ENDIF
2726
2727
2728 CALL init_ghost_shells(nodes, element,ispmd,nspmd,nodes%boundary_add,nodes%boundary_size,nodes%boundary)
2729
2730
2731
2732 IF (vipercoupling) THEN
2733 call viper_coupling_initialize(viper, nodes, element, numnod,
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)
2738 ENDIF
2739
2740
2741
2742
2743 100 CONTINUE
2744
2746
2747
2748
2749
2750
2751
2752
2753 rns = 0
2755 IF (rns > rnum_siz)THEN
2756 DEALLOCATE(renum)
2757 rnum_siz=rns
2758 ALLOCATE(renum(rnum_siz))
2759 ENDIF
2760
2761#ifdef DNC
2762 IF (imadcpl>0)THEN
2763
2764 CALL data_send_madcpl(nodes%X,madclnod,
2765 * madymo_del_global,mad_fail_elements)
2766 ENDIF
2767#endif
2768
2769
2770
2771
2773
2775 IF(imonm > 0)
CALL startime(timers,47)
2776
2777 CALL manctr(output,sensors,h3d_data)
2778
2779
2780
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)
2783
2784 econt=zero
2785 edamp=zero
2786 enint=zero
2787 xmass=zero
2788 xmomt=zero
2789 ymomt=zero
2790 zmomt=zero
2791 wplast=zero
2792
2793 dt1=dt2
2794 dt2=ep06
2795 glob_therm%DT_THERM = ep06
2796 nt_imp=0
2797
2798 IF(impl_s>0) THEN
2799 IF(ncycle>0) THEN
2800 IF (imon>0)
CALL startime(timers,timer_integ)
2801 CALL imp_fanie(output ,fext_imp,nfia ,nfea ,nodft ,nodlt,
2802 . h3d_data )
2803 IF (imon>0)
CALL stoptime(timers,timer_integ)
2804 ENDIF
2805 END IF
2806
2807
2808 IF(ncycle==1.AND.interfaces%PARAMETERS%ISTIF_DT>0)
2809 . interfaces%PARAMETERS%DT_STIFINT = dt1
2810
2811 IF(imonm > 0)
CALL stoptime(timers,47)
2813
2814 imadfsh4=0
2815
2816
2817
2818
2819 IF(inter_ithknod/=0)THEN
2820 nsgdone=1
2821 thknod(nodft:nodlt)=zero
2822
2823
2824 CALL thickvar(iparg,elbuf_tab,element%SHELL%IXC,ixtg,thksh4,
2825 . thksh3,thknod,thke,sh4tree,sh3tree)
2826
2827 IF(nspmd>1) THEN
2828 length = 1
2829 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
2831 + thknod,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
2832 ENDIF
2833 END IF
2834
2835
2836
2837
2838
2839 IF(ilag+iale+ieuler/=0)THEN
2840
2841
2842
2843 isync = 0
2844 IF(n2d/=0) THEN
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2856 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
2857 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
2858 3 greftsk,greltsk)
2859 CALL zero1(nodes%MS(nodftsk),numntsk)
2860
2861
2862 ENDIF
2863 ENDIF
2864
2865
2866
2867
2868 IF(ALLOCATED(output%DATA%FOPT)) THEN
2869 output%DATA%FOPT = zero
2870 ENDIF
2871 IF(ALLOCATED(output%DATA%VECT_CONT2)) THEN
2872 output%DATA%VECT_CONT2 = zero
2873 ENDIF
2874 IF(h3d_data%N_VECT_CONT2M==1)THEN
2875 DO i=1,numnod
2876 mcont2(1,i) = zero
2877 mcont2(2,i) = zero
2878 mcont2(3,i) = zero
2879 ENDDO
2880 ENDIF
2881 ngdone = 1
2882 nsgdone = 1
2883
2884
2885
2886
2887 IF (ispmd==0) THEN
2888 IF (ninter/=0) 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)
2892 ENDIF
2893 ENDIF
2894
2895
2896
2897
2898
2899
2900 dt2t = dt2
2901
2902 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2903 k2=k1+numels
2904 k3=k2+numelq
2905 k4=k3+numelc
2906 k5=k4+numelt
2907 k6=k5+numelp
2908 k7=k6+numelr
2909 k8=k7
2910 k9=k8+numeltg
2911 k10=k9+numelx
2912 k11=k10+numsph
2913 k12=k11+numelig3d
2914
2915
2916
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)
2919 END IF
2920
2921
2922 IF (imon>0)
CALL startime(timers,6)
2923 IF (imonm > 0)
CALL startime(timers,49)
2924
2925 IF(numgeo>0.AND.nodadt==0)THEN
2926 DO i=1,numgeo
2927 IF(geo(5,i)>zero.AND.dtfac1(3)*geo(5,i)<dt2t)THEN
2928 dt2t= dtfac1(3)*geo(5,i)
2929 neltst = 0
2930 ityptst= 3
2931 ENDIF
2932 ENDDO
2933 ENDIF
2934
2935
2936
2937 IF(user_windows%HAS_USER_WINDOW /= 0 ) THEN
2939
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 ,
2947 7 nodes%AR ,dt2)
2948
2950
2951 ENDIF
2952
2953
2954
2955
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
2959 !
2960
2961
2963 ENDIF
2964 ENDIF
2965
2966
2967
2968 CALL stop_sensor(sensors,h3d_data,dynain_data,output)
2969
2970
2971
2972
2973 IF (nactiv>0) THEN
2974 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 ) THEN
2975 DO i = 1,numnod
2976 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
2977 nodes%STIFN(i) = nodes%STIFN(i) * nodes%WEIGHT(i)
2978 ENDDO
2979 ENDIF
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)
2987 ELSE
2988 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 .AND. iparit == 0) THEN
2989 DO i = 1,numnod
2990 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
2991 ENDDO
2992 ENDIF
2993 ENDIF
2994 IF (imonm > 0)
CALL stoptime(timers,49)
2995
2996
2997
2998
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)
3003 CALL force(
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)
3014
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)
3021 ENDIF
3022
3023 IF (imonm > 0)
CALL stoptime(timers,41)
3024 IF (imon>0)
CALL stoptime(timers,timer_kin)
3026 ENDIF
3027
3028 IF(nfxvel/=0.AND.impl_s/=1) THEN
3029 IF(imon>0) THEN
3032 IF(imonm > 0)
CALL startime(timers,44)
3033 ENDIF
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)
3037 IF(imon>0) THEN
3038 IF(imonm > 0)
CALL stoptime(timers,44)
3041 ENDIF
3042 ENDIF
3043
3044
3045
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(python)
3051
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)
3057
3058 CALL python_end_openmp(python)
3059 IF (imonm > 0)
CALL stoptime(timers,41)
3060 IF (imon>0)
CALL stoptime(timers,timer_kin)
3062 ENDIF
3063
3064
3065
3066
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
3079
3080 dt2t = pblast%PBLAST_DT%DT
3081 ityptst = 12
3082 neltst = pblast%PBLAST_DT%IDT
3083 pblast%PBLAST_DT%DT = ep20
3084 ENDIF
3085 ENDIF
3086
3087
3088
3089 IF (loads%NLOAD_CYL > 0) THEN
3091 . loads ,table ,sensors%NSENSOR,sensors%SENSOR_TAB,iframe ,
3092 . dt1 ,nodes%X ,nodes%V ,nodes%A ,noda_fext ,
3093 . h3d_data ,cptreac ,fthreac ,
nodreac ,element%PON%FSKY ,output%TH%WFEXT )
3094 ENDIF
3095
3096
3097
3098
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 )
3108 ENDIF
3109
3110
3111 IF( glob_therm%NUMCONV + glob_therm%NUMRADIA > 0 .AND. glob_therm%ITHERM_FE > 0 )THEN
3112
3113
3114
3115
3116
3117
3118
3119
3120
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)
3129 ENDIF
3130
3131
3132
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)
3141 ENDIF
3142
3143 ENDIF
3144
3145
3146
3147
3148
3149
3150
3151
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,
3157 . glob_therm)
3158 IF (imonm > 0)
CALL stoptime(timers,41)
3159 IF (imon>0)
CALL stoptime(timers,timer_kin)
3160 ENDIF
3161
3162
3163 icontact_old(1:sicontact) = icontact(1:sicontact)
3164 IF(nvolu/=0)THEN
3165 IF (imonm > 0)
CALL startime(timers,50)
3167 nn = numelc+numeltg+ibagsurf
3168 n0 = 1 + 3*nn
3169 IF(intbag/=0)THEN
3170 n1 = n0+ nn
3171 ELSE
3172 n1 = n0
3173 ENDIF
3174 sporo = numelc+numeltg+ibagsurf
3175
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)
3179 ELSE
3180 CALL assign_ptrx(ptrx,nodes%X,numnod)
3181 ENDIF
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,
3192 a output, python )
3194 IF (imonm > 0)
CALL stoptime(timers,50)
3195 ENDIF
3196 IF (imon>0)
CALL stoptime(timers,6)
3197
3198 IF (nflow>0) THEN
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)
3203 ENDIF
3204
3205
3206
3207
3208 IF (imon>0)
CALL startime(timers,13)
3209 IF (imonm > 0)
CALL startime(timers,24)
3210 IF(nspmd>1)THEN
3211 l1 = 1+nixs*numels + nsvois*nixs
3212 l2 = l1+6*numels10
3213 l3 = l2+12*numels20
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)
3223 END IF
3224 IF (imonm > 0)
CALL stoptime(timers,24)
3225 IF (imon>0)
CALL stoptime(timers,13)
3226
3227
3228
3229
3230
3231
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,
3237 * int24e2euse)
3238 IF (imon>0)
CALL stoptime(timers,timer_contfor)
3239 ENDIF
3240
3241
3242
3243
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)
3252 END IF
3253
3254
3255
3256 IF(nintstamp/=0)THEN
3258 END IF
3259
3260
3261
3262 IF(isfem >= 1) 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)
3268 ENDIF
3269 ENDIF
3270
3271
3272
3273
3274 IF(ninter/=0) THEN
3276 IF (imon > 0)
CALL startime(timers,timer_contsort)
3277 l1 = 1+nixs*numels + nsvois*nixs
3278 l2 = l1+6*numels10
3279 l3 = l2+12*numels20
3280 lskyi_count = 0
3281 lskyi_sms_new = 0
3282
3283 IF(idtmins/=0) THEN
3284 nativ_sms_siz = numnod
3285 ELSE
3286 nativ_sms_siz = 0
3287 ENDIF
3288
3289 IF(coupling%active .AND. tt > zero) dt2t =
min(dt2t,coupling%DT_LIMIT)
3290
3291
3292
3293
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)
3298 ELSE
3299 CALL assign_ptrx(ptrx,nodes%X,numnod)
3300 ENDIF
3301 inter_errors = 0
3302
3303!$omp parallel private(itsk,dt2tt,neltstt,ityptstt)
3304 dt2tt = dt2t
3305 neltstt = neltst
3306 ityptstt= ityptst
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 ,int7itied,idel7nok_sav,maxdgap,
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)
3334
3335#include "lockon.inc"
3336 IF(dt2tt<dt2t)THEN
3337 dt2t = dt2tt
3338 neltst = neltstt
3339 ityptst= ityptstt
3340 ENDIF
3341#include "lockoff.inc"
3342
3343
3344 IF(inter_errors > 0) THEN
3345 mstop = 2
3346 ENDIF
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356 IF(iparit >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))
3360 endif
3361 IF ( nisky+lskyi_count > sisky) THEN
3362 CALL reallocate_i_skyline(lskyi_count,1,glob_therm%INTHEAT,glob_therm%nodadt_therm,interfaces%PON)
3363 ENDIF
3364
3365
3366
3367 IF (nspmd >1)THEN
3368 CALL upgrade_rem_2ry(ipari,count_remslv,count_remslve,glob_therm%nodadt_therm)
3369 count_remslv(1:ninter)= 0
3370 count_remslve(1:ninter)= 0
3371 ENDIF
3372
3373 ENDIF
3374
3375 IF (imon > 0)
CALL stoptime(timers,timer_contsort)
3377 ENDIF
3378
3379
3380
3381
3382
3383
3384 IF ((idtmins == 2.OR.idtmins_int/=0).AND.(ninter > 0)) THEN
3385
3386 IF (lskyi_sms_new > lskyi_sms) THEN
3387
3389
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),
3393 . stat=ierror)
3394
3395 IF(ierror/=0) THEN
3396 CALL ancmsg(msgid=19,anmode=aninfo,
3397 . c1='LSKYI_SMS RESIZE')
3399 ENDIF
3400
3401 ENDIF
3402 ENDIF
3403
3404
3405
3406
3407 IF(ninter25 /= 0)THEN
3408
3409 IF(nspmd > 1)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)
3418 END IF
3419
3420 END IF
3421
3422
3423
3424
3425
3426
3427 IF(nadmesh > 0.AND.impl_s==0)THEN
3428 IF (imon>0)
CALL startime(timers,36)
3429
3432 iadmesh=0
3433 ichkadm=0
3434 IF(tt >= tadmesh+dtadmesh)THEN
3435 tadmesh=tadmesh+dtadmesh
3436 ichkadm=1
3437 END IF
3438
3439 IF(ichkadm/=0 .AND. iadmerrt/=0)THEN
3440
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 )
3447 END IF
3448
3449
3450
3451
3452
3453
3454 itsk = omp_get_thread_num()
3455 nodftsk = 1+itsk*numnod/ nthread
3456 nodltsk = (itsk+1)*numnod/nthread
3457
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)
3466 ngdone = 1
3467
3469
3470 IF(iadmrule /= 0)THEN
3471 IF(iadmesh > 0)THEN
3472 CALL admregul(element%SHELL%IXC ,ipart(k3),ixtg ,ipart(k8),ipart,
3473 . itsk ,iparg ,nodes%X ,nodes%MS ,nodes%IN ,
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)
3478
3480
3481 END IF
3482 END IF
3483
3484 IF(iadmesh > 0)THEN
3485 IF(itsk==0) THEN
3486 CALL admordr(sh4tree,sh3tree,element%SHELL%IXC,ixtg)
3487 IF(istatcnd /= 0)
CALL cndordr(ipart,ipart(k3),ipart(k8),
3488 . sh4tree,sh3tree)
3489 END IF
3490 iflgadm=1
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)
3496 ngdone = 1
3497 END IF
3498 rcontact(nodftsk:nodltsk)=ep30
3499 acontact(nodftsk:nodltsk)=ep30
3500 pcontact(nodftsk:nodltsk)=zero
3501
3502
3503 IF (imon>0)
CALL stoptime(timers,36)
3504 END IF
3505
3506
3507
3508
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
3512
3513
3514
3515
3516
3517
3518
3519
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,noda_fext,h3d_data)
3524
3525
3526 ENDIF
3527
3528
3529
3530 need_comm_inter18 = .false.
3531 IF (iale+ieuler+glob_therm%ITHERM/=0.AND.global_active_ale_element) THEN
3532 CALL startime(timers,macro_timer_alemain)
3533
3534
3535
3536
3537 lenqmv = 1
3538 IF(trimat>0)lenqmv =
min(1,trimat)*(numels+numelq)
3539 nv46 = 6
3540 IF(n2d /= 0) nv46 = 4
3542
3543
3544
3545
3546 CALL python_begin_openmp(python)
3547
3548
3549
3550
3551
3552
3554 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3555 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3556 3 greftsk,greltsk)
3557 dt2tt = dt2t
3558 neltstt = neltst
3559 ityptstt = ityptst
3560 IF(iparit == 1) ndtsk = 1
3561
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 ,element%PON%IADQ ,
3570 8 neltstt ,ityptstt ,ipart(k1) ,ipart(k2) ,itsk ,
3571 a nodftsk ,nodltsk ,nbrcvois ,nodes%TEMP ,output%TH%TH_SURF%CHANNELS,
3572 b nbsdvois ,lnrcvois ,lnsdvois ,nercvois ,nesdvois ,lercvois ,
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)
3587
3589#include "lockon.inc"
3590 IF(int22 == 0)THEN
3591 IF(dt2tt<dt2t)THEN
3592 dt2t = dt2tt
3593 ityptst= ityptstt
3594 neltst = neltstt
3595 ENDIF
3596 ELSE
3597 IF(idt_int22 /= 0)THEN
3598
3599 dt2t = dt22_min
3600 ityptst= 10
3601 neltst = 1
3602 ELSE
3603
3604 IF(dt2tt<dt2t)THEN
3605 dt2t = dt2tt
3606 ityptst= ityptstt
3607 neltst = neltstt
3608 ENDIF
3609 ENDIF
3610 ENDIF
3611#include "lockoff.inc"
3612
3613
3614 CALL python_end_openmp(python)
3615
3616 IF(need_comm_inter18) THEN
3618 . xcell,multi_fvm,xcell_remote,interfaces%INTBUF_TAB,ale_connectivity)
3619 ENDIF
3621 CALL stoptime(timers,macro_timer_alemain)
3622 ELSE
3625 t1s=tt
3626 ENDIF
3627
3628
3629
3630
3631
3632 IF(
ale%SUB%IALESUB ==2 .AND.
ale%SUB%IFSUB==2)
GOTO 22
3633 21 CONTINUE
3634
3635 IF (imon>0)
CALL startime(timers,6)
3636 IF (imonm > 0)
CALL startime(timers,51)
3637
3638
3639
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 ,
3646 6 skews%SKEW,dt2t ,
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)
3654
3655
3656
3657
3658 CALL python_begin_openmp(python)
3659
3660!$omp+ private(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,igmtsk)
3661
3662
3663
3665 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3666 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3667 3 greftsk,greltsk)
3668
3669
3670
3671
3672 IF(kcontact/=0)THEN
3673 IF(ialelag >0)
3674 .
ifoam_cont(nodftsk:nodltsk)= icontact(nodftsk:nodltsk)
3675
3676 icontact(nodftsk:nodltsk)=0
3677 END IF
3678
3679 IF(istatcnd /= 0)THEN
3680 IF(iparit==0)THEN
3681 DO n=1,numnod
3682 stcnd(ndtsk+n-1) = zero
3683 END DO
3684 ELSE
3685 DO n=nodftsk,nodltsk
3686 stcnd(n) = zero
3687 END DO
3688 END IF
3689 END IF
3690
3691 IF(intplyxfem > 0) THEN
3692 DO n=nodftsk,nodltsk
3693 wagap(1,n) = zero
3694 wagap(2,n) = zero
3695 END DO
3696 ENDIF
3697
3698
3699 CALL python_end_openmp(python)
3700
3701 IF(anim_ply > 0) vn_nod = zero
3702
3703
3704
3705 IF(nloadp_hyd_inter > 0 )THEN
3706
3707
3708
3709
3710
3711
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
3717 ENDDO
3718
3719
3720
3721 ENDIF
3722
3723
3724
3725 IF(ninter/=0) THEN
3726
3728 IF (imon>0)
CALL startime(timers,timer_contsort)
3729
3730 dt2tt = dt2t
3731 neltstt = neltst
3732 ityptstt= ityptst
3733 IF (impl_s>0) THEN
3734 iadisk = 1
3735 ELSE
3736 iadisk = 1
3737 ENDIF
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)
3742 ELSE
3743 CALL assign_ptrx(ptrx,nodes%X,numnod)
3744 ENDIF
3746 1 ipari ,ptrx ,nodes%A ,
3747 2 nodes%ICODT ,fsav ,wa(1),nodes%V ,nodes%MS ,
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,
3754 9 loadp_hyd_inter)
3755
3756 IF(dt2tt<dt2tTHEN
3757
3758 neltst = neltstt
3759 ityptst= ityptstt
3760 ENDIF
3761
3762
3763
3764
3765
3766 CALL python_begin_openmp(python)
3767
3768
3769
3770
3771
3772
3774 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3775 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3776 3 greftsk,greltsk)
3777
3778 dt2tt = dt2t
3779 neltstt = neltst
3780 ityptstt= ityptst
3781
3782
3783 IF(istatcnd /= 0 .AND. iparit == 0)THEN
3784 DO n=1,numnod
3785 stcnd(ndtsk+n-1)=-nodes%STIFN (ndtsk+n-1)
3786 END DO
3787 END IF
3788
3789 IF (impl_s>0) THEN
3790 iadisk = 1+itsk*nint7
3791 ELSE
3792 iadisk = 1
3793 ENDIF
3794 IF(iparit == 1) ndtsk = 1
3795
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 ,nodes%IN ,igrsurf ,bufsf ,output%DATA%VECT_PCONT ,
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)
3805
3806#include "lockon.inc"
3807 IF(dt2tt<dt2t)THEN
3808 dt2t = dt2tt
3809 neltst = neltstt
3810 ityptst= ityptstt
3811 ENDIF
3812#include "lockoff.inc"
3813
3814
3815 CALL python_end_openmp(python)
3816
3817 IF(impl_s>0) THEN
3819 nt_imp5=nt_imp
3820 END IF
3821
3822 IF (imon>0)
CALL stoptime(timers,timer_contsort)
3824
3825
3826
3827
3829 IF (imon>0)
CALL startime(timers,timer_contfor)
3830
3831 l1 = 1+nixs*numels + nsvois*nixs
3832 l2 = l1+6*numels10
3833 l3 = l2+12*numels20
3834
3835
3836
3837
3838 IF(nspmd > 1)THEN
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)
3848 ENDIF
3849 END IF
3850
3851
3852
3853
3854 ncont = 0
3855 IF (impl_s>0) THEN
3856 ntmp = nt_imp5 + nt_imp1
3857 ENDIF
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)
3862 ELSE
3863 CALL assign_ptrx(ptrx,nodes%X,numnod)
3864 ENDIF
3865 CALL python_begin_openmp(python)
3866
3867
3868
3869
3870
3871
3873 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3874 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3875 3 greftsk,greltsk)
3876 dt2tt = dt2t
3877 neltstt = neltst
3878 ityptstt= ityptst
3879
3880 IF (impl_s>0) THEN
3881 iadisk = 1+ntmp+itsk*(nint7-ntmp)
3882 ELSE
3883 iadisk = 1
3884 ENDIF
3885 idx_fthe = ndtsk
3886 IF(ndtsk>ifthe) idx_fthe = 1
3887 idx_condn = ndtsk
3888 IF(ndtsk>icondn)idx_condn = 1
3889 idx_pinch = ndtsk
3890 IF(
npinch == 0 )idx_pinch = 1
3891 IF(iparit == 1) ndtsk = 1
3893 1 ipari ,ptrx ,nodes%A(1,ndtsk) ,igroups ,ale_connectivity,
3894 2 nodes%ICODT ,fsav ,nodes%V ,nodes%MS ,dt2tt ,
3895 3 neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN(ndtsk)
3896 4 interfaces%PON%FSKYI
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
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)
3919
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
3923 IF(ncont/=0) THEN
3924 DO i=itsk+1,ncont,nthread
3926 ENDDO
3927 ENDIF
3928 ENDIF
3929
3930#include "lockon.inc"
3931 IF(dt2tt<dt2t)THEN
3932 dt2t = dt2tt
3933 neltst = neltstt
3934 ityptst= ityptstt
3935 END IF
3936#include "lockoff.inc"
3937
3938 IF(istatcnd /= 0 .AND. iparit == 0)THEN
3939 DO n=1,numnod
3940 stcnd(ndtsk+n-1) = stcnd(ndtsk+n-1) + nodes%STIFN (ndtsk+n-1)
3941 END DO
3942 ENDIF
3943 IF (iparit == 0 .AND. nspmd > 1 .AND. nthread > 1) THEN
3945 CALL assparxx(itsk, intlist,nbintc,ipari,glob_therm%NODADT_THERM)
3946 ENDIF
3947
3948 CALL python_end_openmp(python)
3949
3950
3951
3952
3953
3954 IF(impl_s>0)
CALL re2int7(nt_imp,num_imp,ns_imp,ne_imp,
3955 1 ind_imp,num_impl,ipari,nint7 )
3956
3957 IF (imon>0) THEN
3958 CALL stoptime(timers,timer_contfor)
3960 ENDIF
3961 IF (imonm > 0)
CALL startime(timers,21)
3962
3963
3964
3965
3966
3967 IF(nspmd>1)THEN
3968
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,islen7 ,irlen7 ,irlen7t ,islen7t ,
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)
3987
3988 END IF
3989
3990 l1 = 1+nixs*numels + nsvois*nixs
3991 l2 = l1+6*numels10
3992 l3 = l2+12*numels20
3993 IF(iparit==0) THEN
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)
4004 ELSE
4005
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)
4013
4014 IF(multi_fvm%IS_INT18_LAW151) THEN
4017 1 multi_fvm )
4018 ENDIF
4019 END IF
4020 ENDIF
4021 IF (imon>0)
CALL stoptime(timers,timer_exfor)
4022 IF (imonm > 0)
CALL stoptime(timers,21)
4023
4025 ENDIF
4026
4027
4028
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,
4034 * int24e2euse )
4035
4036 IF (imon>0)
CALL stoptime(timers,timer_contfor)
4037 ENDIF
4038
4039
4040
4041 IF(nspmd>1)THEN
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)
4045 ENDIF
4046 ENDIF
4047
4048
4049
4050 IF (ns10e > 0.AND.iparit == 0) THEN
4051
4052
4053
4054
4055
4056
4057
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)
4066
4067 END IF
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077 IF(nvolu/=0)THEN
4078 IF (imonm > 0)
CALL startime(timers,50)
4080 nn = numelc+numeltg+ibagsurf
4081 n0 = 1 + 3*nn
4082 IF(intbag/=0)THEN
4083 n1 = n0+ nn
4084 ELSE
4085 n1 = n0
4086 ENDIF
4087
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, sensors%SENSOR_TAB, nodes%V ,
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)
4100
4102 IF (imonm > 0)
CALL stoptime(timers,50)
4103 ENDIF
4104
4105
4106 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0) THEN
4107
4108 dt2r = dt2
4109
4110
4111 min_tab(1) = nelts
4112 min_tab(2) = itypts
4113 min_tab(3) = 0
4114 min_tab(4) = ispmd
4115
4116
4117
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128 ENDIF
4129
4130 t1sh=tt
4131
4132
4133
4134
4135
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)
4138
4139
4140
4141
4143 IF (imon>0)
CALL startime(timers,timer_element)
4144
4145
4146
4147 getunod_nocom=1
4148
4149 llt1 = i87g+3*numeltg
4150 CALL python_begin_openmp(python)
4151
4152
4153
4154
4155
4156
4158 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4159 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4160 3 greftsk,greltsk)
4161 dt2tt = dt2t
4162 neltstt = neltst
4163 ityptstt= ityptst
4164 iad_grel = 1
4165 IF(igrelem == 1)iad_grel = k3-k1+1
4166 idx_fthe = ndtsk
4167 IF(ndtsk>ifthe)idx_fthe=1
4168 idx_condn = ndtsk
4169 IF(ndtsk>icondn)idx_condn=1
4170 idx_pinch = ndtsk
4171 IF(
npinch == 0 )idx_pinch = 1
4172 IF(iparit == 1) ndtsk = 1
4173
4174 ndtskr=ndtsk ; IF(iroddl == 0)ndtskr=1
4175
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 ,
4195 l inod_crk ,iel_crk ,iadc_crk ,elcutc ,nodenr ,
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 ,
4202 s sbufmat )
4203#include "lockon.inc"
4204 IF(dt2tt<dt2t)THEN
4205 dt2t = dt2tt
4206 neltst = neltstt
4207 ityptst= ityptstt
4208 END IF
4209#include "lockoff.inc"
4210
4211 CALL python_end_openmp(python)
4213 IF (imon>0)
CALL stoptime(timers,timer_element)
4214
4215
4216
4217
4218
4219
4220
4221
4222
4225 l1 = 1+nixs*numels + nsvois*nixs
4226 l2 = l1+6*numels10
4227 l3 = l2+12*numels20
4228 ll1 = 1+8*numels
4229 ll2 = ll1+6*numels10
4230 ll3 = ll2+12*numels20
4231
4232
4233
4234
4235
4236 CALL python_begin_openmp(python)
4237
4238
4239
4240
4241
4242
4244 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4245 2 ipmtsk,partftsk ,partltsk ,nwaftsk,igmtsk ,
4246 3 greftsk,greltsk)
4247 IF(iparit == 1) ndtsk = 1
4248
4249 dt2tt = dt2t
4250 neltstt = neltst
4251 ityptstt= ityptst
4252 i16tsk = 1+itsk*(sw16/nthread)
4253 idx_fthe = ndtsk
4254 IF(ndtsk>ifthe) idx_fthe = 1
4255 idx_condn = ndtsk
4256 IF(ndtsk>icondn)idx_condn = 1
4257
4258 ndtskr = ndtsk ; IF(iroddl == 0)ndtskr = 1
4259
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 ,
4276 g ixs(l1) ,
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
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 ,nodadt ,dtfac1,
4294 . dtmin1 ,idtmin ,iout ,istdo ,idtmins,dtfacs,nsvois,
4295 . iresp ,maxfunc ,userl_avail ,glob_therm,imon_mat,dtmins,sanin,
4296 . ngrth ,nelem )
4297
4298#include "lockon.inc"
4299 IF(dt2tt<dt2t)THEN
4300 dt2t = dt2tt
4301 neltst = neltstt
4302 ityptst= ityptstt
4303 END IF
4304#include "lockoff.inc"
4305
4306 CALL python_end_openmp(python)
4308
4309 IF (imon>0)
CALL stoptime(timers,timer_element)
4310
4311 IF(numsphg/=0)THEN
4312 IF (imonm > 0)
CALL startime(timers,48)
4313 IF (imonm > 0)
CALL startime(timers,87)
4315
4316
4317
4318
4319
4320
4321 CALL python_begin_openmp(python)
4322
4323
4324
4325
4327 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4328 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4329 3 greftsk,greltsk)
4330
4331
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 ,
4341 9 gauge ,ngrounc ,igrounc ,sol2sph ,sph2sol ,
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)
4345
4346 CALL python_end_openmp(python)
4347
4348 IF (imonm > 0)
CALL stoptime(timers,87)
4349
4350
4351
4352 IF (imonm > 0)
CALL startime(timers,88)
4353
4354 CALL python_begin_openmp(python)
4355
4356
4357
4358
4359
4360
4362 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4363 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4364 3 greftsk,greltsk)
4365
4366 dt2tt = dt2t
4367 neltstt = neltst
4368 ityptstt= ityptst
4369
4370 iad_grel = 1
4371 IF(igrelem == 1)iad_grel = k10-k1+1
4372 IF(iparit == 1) ndtsk = 1
4373
4374
4375
4376
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
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 ,wsmcomp%BUF ,sol2sph_typ ,
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"
4397 IF(dt2tt<dt2t)THEN
4398 dt2t = dt2tt
4399 neltst = neltstt
4400 ityptst= ityptstt
4401 END IF
4402#include "lockoff.inc"
4403
4404
4405 CALL python_end_openmp(python)
4406
4407
4408 getunod_nocom=0
4409
4410
4411
4412
4413
4414
4416 IF (imonm > 0)
CALL stoptime(timers,88)
4417 IF (imonm > 0)
CALL stoptime(timers,48)
4418 ENDIF
4419
4420
4421
4422
4423 IF (nspmd>1) THEN
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)
4430 ENDIF
4431 ENDIF
4432
4433
4434 IF(nvolu/=0)THEN
4435 IF (imonm > 0)
CALL startime(timers,50)
4437 nn = numelc+numeltg+ibagsurf
4438 n0 = 1 + 3*nn
4439 IF(intbag/=0)THEN
4440 n1 = n0+ nn
4441 ELSE
4442 n1 = n0
4443 ENDIF
4444 sporo = numelc+numeltg
4445
4446 n=1+ninter
4447 CALL fvbag0(output, monvol, volmon, nodes%X, sensors%SENSOR_TAB, nodes%V,
4448 . nodes%A, npc, tf, nsensor ,
4449 . fsav(1,n)
4450 . gauge , igeo, geo, pm, ipm,
4451 . iparg , igrouptg
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)
4455 ELSE
4456 CALL assign_ptrx(ptrx,nodes%X,numnod)
4457 ENDIF
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,
4468 a output, python)
4469
4471 IF (imonm > 0)
CALL stoptime(timers,50)
4472 ENDIF
4473
4474
4475
4476
4477
4478 IF (ns10e > 0 .AND. iparit==0) THEN
4479
4480
4481
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)
4490
4491 END IF
4492
4493
4494
4495
4496
4497
4498
4499
4500 IF(ninter/=0) THEN
4501 IF(nspmd>1)THEN
4502 IF(imonm == 2)THEN
4504 CALL spmd_barrier()
4506 ENDIF
4507 IF (imon>0)
CALL startime(timers,timer_exfor)
4508 IF (imonm > 0)
CALL startime(timers,22)
4509
4510 l1 = 1+nixs*numels + nsvois*nixs
4511 l2 = l1+6*numels10
4512 l3 = l2+12*numels20
4513 IF(iparit==0)THEN
4514
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)
4525 ELSE
4526
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)
4534 END IF
4535
4536
4537 IF (imon>0) THEN
4539 IF (imonm > 0)
CALL stoptime(timers,22)
4540 ENDIF
4541 ENDIF
4542 ENDIF
4543
4544 22 CONTINUE
4545
4546
4547 IF(iparit /= 0.AND.nspmd > 1.AND. nloc_dmg%IMOD > 0)THEN
4549 ENDIF
4550 IF(nspmd > 1.AND. nintloadp > 0)THEN
4551 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4553 ENDIF
4554
4555
4556 IF(nloadp_hyd/=0.AND.impl_s/=1) THEN
4557 noda_fext = zero
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)
4566
4567
4568 IF (imonm > 0)
CALL stoptime(timers,41)
4569 IF (imon>0)
CALL stoptime(timers,timer_kin)
4571 ENDIF
4572
4573
4574
4575 IF(coupling%active) THEN
4576 nodes%FORCES(1:3,1:numnod) = nodes%A(1:3,1:numnod)
4577 ENDIF
4578
4579
4580
4581 dtnod_nlocal = ep20
4582 IF(iparit == 0 .AND. nthreadTHEN
4584
4585
4586
4587 itsk = omp_get_thread_num()
4588 nodftsk = 1+itsk*numnod/ nthread
4589 nodltsk = (itsk+1)*numnod/nthread
4590 partftsk = 1+itsk*npsav*npart/nthread
4591 partltsk = (itsk+1)*npsav*npart/nthread
4592 greftsk = 1+itsk
4593 greltsk = (itsk+1)*npsav*ngpe/nthread
4594
4595
4596
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
4602 5 gresav ,ngpe ,nthpart ,ialelag, aflow,
4603 6 dmsph ,condn ,
4604 7 pinch_data%APINCH,pinch_data%STIFPINCH)
4605
4606
4607
4608
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 )
4614
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)
4619 ENDIF
4620 ENDIF
4621
4622 IF (imon>0)
CALL stoptime(timers,timer_asm)
4623 ENDIF
4624
4625
4626
4627
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)
4632
4633
4634 itsk = omp_get_thread_num()
4635 nodftsk = 1+itsk*numnod/ nthread
4636 nodltsk = (itsk+1)*numnod/nthread
4637
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 ,
4643 5 sol2sph_typ)
4644
4645
4646 CALL python_end_openmp(python)
4647
4648 IF (imonm > 0)
CALL stoptime(timers,89)
4649 IF (imonm > 0)
CALL stoptime(timers,48)
4650 ENDIF
4651
4652
4653
4654 IF(nitsche/=0) THEN
4655
4656
4657
4658
4660 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4661 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4662 3 greftsk,greltsk)
4663
4664 CALL zeror(forneqs(1,nodftsk),numntsk)
4665
4666
4667
4668
4669
4670 IF (int24use == 1)THEN
4671 IF (sh_offset_tab%NNSH_OSET > 0) 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)
4675 ELSE
4676 CALL assign_ptrx(ptrx,nodes%X,numnod)
4677 ENDIF
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 )
4682 ENDIF
4683 ENDIF
4684
4685
4686
4687
4688
4689 IF(int18kine== 1)THEN
4690 ALLOCATE(mtf(14,numnod))
4691 ALLOCATE(cand_sav(8,int18add(ninter+1)-1))
4692 IF (nspmd > 1)THEN
4693 ALLOCATE(tagpene(numnod))
4694 ELSE
4695 ALLOCATE(tagpene(1))
4696 ENDIF
4697 ENDIF
4698 int18add(ninter+1) = -iabs(int18add(ninter+1))
4699 int18kine=-iabs(int18kine)
4700
4701 IF(nspmd>1)THEN
4702 IF (imon>0)
CALL startime(timers,timer_exfor)
4703 IF (iparit==0) THEN
4704 length = 4 + iroddl*4
4705 IF (n2d/=0) THEN
4706 length = length + 1
4707 IF(
ale%SUB%IFSUBM == 1) length = length + 1
4708 ELSEIF(
ale%SUB%IFSUBM==1)
THEN
4709 length = length + 2
4710 ENDIF
4711
4712 IF(glob_therm%ITHERM_FE > 0 )THEN
4713 length = length + 3
4714 IF (glob_therm%NODADT_THERM == 1 ) length = length + 1
4715 ENDIF
4716
4717 IF(ialelag > 0 )THEN
4718 length = length + 4
4719 ENDIF
4720
4721 IF(sol2sph_flag/=0) length = length + 1
4722
4723 IF(nitsche > 0 )THEN
4724 nfacnit = 3
4725 ENDIF
4726
4727 lenc = 0
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
4730
4731 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4732 IF(idtmins /= 0)THEN
4733
4735 1 nodes%A ,nodes%AR ,nodes%STIFN, nodes%STIFR ,nodes%MS ,
4736 2 nodes%BOUNDARY_ADD,nodes%BOUNDARY,msnf ,
ale%SUB%IFSUBM,length ,
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)
4741 ELSE
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,
4746 4 ms_2d,mcp_off,
4747 5 forneqs ,nfacnit,lenc ,output%DATA%VECT_CONT ,h3d_data,
4748 6 output%DATA%VECT_PCONT ,output%DATA%VECT_PCONT_2 ,glob_therm)
4749
4750 ENDIF
4751
4752 ELSE
4753 length = 4 + iroddl*4
4754 IF(
ale%SUB%IFSUBM==1)
THEN
4755 length = length + 1
4756 ENDIF
4757 IF(n2d /= 0.AND.
ale%SUB%IFSUBM == 1) length = length + 1
4758 sizi = nfskyi+1
4759
4760 IF (glob_therm%ITHERM_FE > 0 )THEN
4761 length = length + 1
4762 sizi = sizi + 1
4763 IF (glob_therm%NODADT_THERM == 1 ) THEN
4764 length = length + 1
4765 sizi = sizi + 1
4766 ENDIF
4767 ENDIF
4768 IF(intplyxfem > 0) sizi = sizi + 5
4769
4770 IF(ialelag > 0 )THEN
4771 length = length + 4
4772 ENDIF
4773
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)
4777
4778 lens1 = 0
4779 lenr1 = 0
4780
4781 IF(iplyxfem > 0) THEN
4782 lens1 = fr_nbcc1(1,nspmd+1)
4783 lenr1 = fr_nbcc1(2,nspmd+1)
4784 ENDIF
4785
4786 IF(icrack3d > 0) THEN
4787 lens1 = fr_nbcc1(1,nspmd+1)
4788 lenr1 = fr_nbcc1(2,nspmd+1)
4789 ENDIF
4790
4791 IF(sol2sph_flag/=0)THEN
4792 length = length + 1
4793 ENDIF
4794
4795 lenc = 0
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
4798
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)
4809
4810 ENDIF
4811 IF (imon>0)
CALL stoptime(timers,timer_exfor)
4812 ENDIF
4813
4814
4815
4816
4818
4819 IF (imon>0)
CALL startime(timers,timer_asm)
4820
4822
4823
4824
4825
4826 IF(iparit==1) ALLOCATE( fsky_l(nisky) )
4827 dtnod_nlocal = ep20
4828 CALL python_begin_openmp(python)
4829
4830!$omp+private(itsk,nodftsk,nodltsk,partftsk,partltsk,greftsk,greltsk,nodftsk_2,nodltsk_2,nodft_nl,nodlt_nl)
4831 itsk = omp_get_thread_num()
4832
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)
4841
4842 IF(iparit==1)THEN
4843
4844
4845
4846
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)
4858
4859
4860
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)
4866
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)
4871 ENDIF
4872 ENDIF
4873
4874
4875
4876 IF(icrack3d > 0)THEN
4877
4879
4881 . adsky_crk,inod_crk ,
crksky ,nodftsk ,nodltsk ,
4882 . nodenr ,nodlevxf ,nodes%ITAB )
4883 ENDIF
4884 ELSEIF(iparit==2)THEN
4885
4886 IF(kdtint/=0)THEN
4887
4888
4889 CALL ancmsg(msgid=165,anmode=aninfo)
4890
4891
4893 ENDIF
4894
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 )
4902
4903 ELSEIF(iparit==3)THEN
4904
4905
4906 n1 = 1 + numnod
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)
4913
4914 ENDIF
4915
4916 IF(kdtint/=0)
CALL modsti(nodftsk,nodltsk,nodes%STIFN,nodes%VISCN,nodes%MS)
4917
4918
4919 CALL python_end_openmp(python)
4920
4921 IF(iparit==1) DEALLOCATE( fsky_l )
4922 IF (imon>0)
CALL stoptime(timers,timer_asm)
4924
4925
4926
4927
4928
4929
4930 IF( debug(macro_debug_nan)/=0 )
CALL check_nan_acc(ncycle,nodes)
4931
4932 IF (debug(macro_debug_acc)==1.AND.(nloc_dmg%IMOD>0)) THEN
4933 IF (ispmd==0) THEN
4934 siz = numnodg
4935 ELSE
4936 siz = 0
4937 END IF
4938 IF ( ncycle>=debstart .AND.
4939 . mod(ncycle-debstart,rstfreq)==0 ) THEN
4941 . nloc_dmg%POSI ,nloc_dmg,siz,nodes%NODGLOB,nodes%ITAB )
4942 ENDIF
4943 ENDIF
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953 IF (ns10e > 0) THEN
4954 CALL python_begin_openmp(python)
4955
4956
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)
4966
4967 CALL python_end_openmp(python)
4968 END IF
4969
4970 IF(sol2sph_flag/=0)THEN
4971
4972
4973
4974 CALL python_begin_openmp(python)
4975
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
4982 nodes%MS(i)=zero
4983 ELSE
4984 nodes%MS(i)=
max(zero,nodes%MS(i)-dmsph(i))
4985 END IF
4986 END IF
4987 dmsph(i)=zero
4988 ENDDO
4989
4990 CALL python_end_openmp(python)
4991 ENDIF
4992
4993
4994
4995
4996
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,
5002 * int24e2euse )
5003 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5004 ENDIF
5005
5006
5007
5008
5009 IF(nbint20>0.AND.nspmd>1) THEN
5010 length = 21
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 )
5015 ENDIF
5016
5017
5018
5019 IF(kcontact/=0.AND.nspmd>1) THEN
5020 length = 1
5021 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5023 + ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5024 ENDIF
5025
5026
5027
5028 IF(ialelag > 0.AND.nspmd>1) THEN
5029 length = 1
5030 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5032 ENDIF
5033
5034#ifdef DNC
5035 IF (imadcpl>0)THEN
5036
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)
5039 ENDIF
5040#endif
5041
5042 IF (vipercoupling) THEN
5043
5044 CALL radiossviper_receiveaccelerations(numnod,nodes%A,noda_fext,viper%ITABM1)
5045 endif
5046
5047
5048 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
GOTO 23
5049
5050
5051
5052
5053 IF(numpor>0) THEN
5055 1 geo ,nodpor ,nodes%MS,nodes%X ,nodes%V ,
5056 2 w ,nodes%A ,nodes%AR,skews%SKEW,nodes%WEIGHT,
5057 3 nporgeo)
5058 ENDIF
5059
5060
5061
5062 IF (debug(macro_debug_acc)==1) THEN
5063 IF (ncycle>=debstart .AND.mod(ncycle-debstart,rstfreq)==0) THEN
5064 IF(nspmd > 1) THEN
5065 IF (ispmd==0) THEN
5066 siz = numnodg
5067 ELSE
5068 siz = 0
5069 END IF
5070 CALL spmd_collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB,siz)
5071 ELSE
5072 CALL collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB)
5073 END IF
5074 END IF
5075 END IF
5076
5077
5078
5079
5080 IF (ifrwv > 0) THEN
5081 IF (nspmd > 1) THEN
5082 length = 1
5083 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD
5084
5085 CALL spmd_exch_wave(fr_wave,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5086 END IF
5087
5088
5089
5090
5091
5092
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))
5098 ENDDO
5099
5100
5101
5102 ENDIF
5103
5104
5105
5106
5107
5108
5110
5111
5112
5113 IF (imon>0)
CALL startime(timers,timer_contfor)
5114 IF (n2d/=0.AND.idel7==2) THEN
5115 IF (imon>0)
CALL startime(timers,6)
5116 CALL chkstifn(ipari,nodes%MS,interfaces%INTBUF_TAB)
5117 IF (imon>0)
CALL stoptime(timers,6)
5118
5119
5120
5121
5122
5123 ELSEIF(idel7ng>=1.OR.pdel>0) THEN
5124
5125
5126 IF (nspmd>1.AND.(idel7ng>=1.OR.pdel>0)) THEN
5127
5128 IF (imonm > 0 )
CALL startime(timers,76)
5130 IF (imonm > 0 )
CALL stoptime(timers,76)
5131 idel7nok =
min(1,idel7nok)
5132 ENDIF
5133 idel7nok_sav = idel7nok
5134 IF (r2r_siu==1.AND.idel7ng>=1) THEN
5136 idel7nok = idel7nok+idel7nok_r2r
5137 idel7nok =
min(1,idel7nok)
5138 ENDIF
5139
5140 IF ((idel7ng>=1.AND.idel7nok==1).OR.(pdel>0.AND.idel7nok==1)) THEN
5141 l1 = 1+nixs*numels + nsvois*nixs
5142 l2 = l1+6*numels10
5143 l3 = l2+12*numels20
5144 IF((int24use==1.OR.ninter25/=0).AND.(idel7ng>=1.AND.idel7nok==1))THEN
5145 indseglo(2:ninter+1)=0
5146 indseglo(1)=1
5147 ENDIF
5148
5149
5150
5151
5152
5153 IF (imonm > 0 )
CALL startime(timers,29)
5154 nindexp = 0
5155 check_neigh_flag_res = 0
5156
5157
5158
5159 CALL python_begin_openmp(python)
5160
5161
5162
5163
5165 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
5166 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
5167 3 greftsk,greltsk)
5168 omp_address = 1 + itsk*numnod
5169
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)
5180
5181
5182 CALL check_nodal_state( itsk,nodes%deleted_node,newfront,interfaces%INTBUF_TAB,shoot_struct%SIZE_SEC_NODE,
5183 . shoot_struct%SHIFT_S_NODE,shoot_struct%INTER_SEC_NODE,shoot_struct%SEC_NODE_ID)
5184
5185
5186
5187
5188
5189 IF(itsk==0) THEN
5191 . ixtg ,
5192 . ngroup,nparg,igroups,iparg )
5194 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
5195 2 ixr,geo,ngroup,igroups,iparg )
5196 ENDIF
5198
5199
5200
5201
5202
5203 IF(nspmd>1) THEN
5205 . interfaces%INTBUF_TAB,newfront,
5206 . ipari,geo,
5207 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5208 . addcnel,cnel,nodes%work_array_node(omp_address),tagel )
5210 ENDIF
5211
5212
5213
5214
5215
5216
5218 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
5219 . ipari,geo,
5220 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5221 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
5222
5223
5224
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 )
5230
5231
5232
5233
5234
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
5241 IF(itsk==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
5248 ENDIF
5249 IF(check_neigh_flag_res > 0 ) THEN
5250 CALL get_neighbour_surface
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,shoot_struct,
5258 .
5259 ENDIF
5260 ENDIF
5262 ENDIF
5263 ENDIF
5264
5265 ENDIF
5266
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)
5275
5276 ENDIF
5277
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)
5285
5286 ENDIF
5287
5288
5289 CALL python_end_openmp(python)
5290 IF (imonm > 0 )
CALL stoptime(timers,29)
5292 ENDIF
5293 ENDIF
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353 IF(idtmins>=1.OR.idtmins_int/=0)THEN
5354 IF(mcheck==0)THEN
5355 ismsnok=0
5356 IF(idel7ng==0)THEN
5357 IF (nspmd>1) THEN
5358
5359 IF (imonm > 0 )
CALL startime(timers,76)
5361 IF (imonm > 0 )
CALL stoptime(timers,76)
5362 idel7nok =
min(1,idel7nok)
5363 ENDIF
5364 ENDIF
5365 ismsnok=idel7nok
5366 ELSE
5367 ismsnok=1
5368 END IF
5369 END IF
5370
5371#ifdef DNC
5372 IF(imadcpl /=0)THEN
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387 madymo_del_global=0
5388 madymo_del=0
5389
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,
5394 * madymo_del,
5395 * mad_fail_elements)
5396
5397 ENDIF
5398
5399 madymo_del_global = madymo_del
5400
5402 ENDIF
5403#endif
5404
5405 idel7nok=0
5406 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5407
5408
5409
5410
5411
5412
5413
5414
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)
5419
5420
5421
5422 IF (ncluster > 0) THEN
5423 CALL clusterf(cluster ,elbuf_tab,nodes%X ,nodes%A ,nodes%AR ,
5424 . skews%SKEW ,ixs ,iparg ,fcluster,mcluster,
5425 . h3d_data,geo )
5426 ENDIF
5427
5428
5429
5430
5431
5432 IF (nslipring + nretractor + n_anchor_remote > 0) THEN
5434 ENDIF
5435
5436
5437
5438
5439 IF(ninter /= 0.and.iale+ieuler /= 0.and.
5440 . int18kine == -1)THEN
5441
5442
5443
5444
5445 CALL python_begin_openmp(python)
5446
5447 itsk = omp_get_thread_num()
5448
5449
5451
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)
5457
5458 CALL python_end_openmp(python)
5459 ENDIF
5460
5461
5462
5463
5464
5465
5466 IF(ninter/=0)THEN
5467 IF (imon>0) THEN
5469 CALL startime(timers,timer_contsort)
5470 ENDIF
5471 IF (imonm > 0)
CALL startime(timers,28)
5472
5473 DO k=0,nhin2
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)
5485 ENDDO
5486 IF (imonm > 0)
CALL stoptime(timers,28)
5487 IF (imon>0) THEN
5488 CALL stoptime(timers,timer_contsort)
5490 ENDIF
5491
5492 IF((idtmins/=0.OR.idtmins_int/=0).AND.ncycle==0)ismsch=1
5493
5494 ENDIF
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504 IF (ns10e > 0) THEN
5505 CALL python_begin_openmp(python)
5506
5507
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)
5517
5518 CALL python_end_openmp(python)
5519
5520
5521
5522
5523
5524 IF (ncycle==0.OR.mcheck/=0)
5526 END IF
5527
5528 IF(intplyxfem > 0) THEN
5530 1 ipari ,interfaces%INTBUF_TAB ,wagap,nodes%BOUNDARY_ADD,nodes%BOUNDARY)
5531 ENDIF
5532
5533
5534
5535
5536 IF (nrbe2>0.OR.r2size>0) THEN
5538 IF(itask==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)
5544
5545 END IF
5546 ENDIF
5547
5548
5549
5550 IF (nrbe3>0) THEN
5551 IF (imon>0)
CALL startime(timers,timer_kin)
5552 IF (imonm > 0)
CALL startime(timers,45)
5553
5554 CALL rbe3t1(rbe3 ,nodes ,skews%SKEW,
5555 1 dmas ,output%DATA%SCAL_DMAS ,diner,
5556 2 output%DATA%SCAL_DINER ,h3d_data , dt1,
5557 3 tt ,impl_s )
5558
5559 IF (imonm > 0)
CALL stoptime(timers,45)
5560 IF (imon>0)
CALL stoptime(timers,timer_kin)
5561 ENDIF
5562
5563
5564
5565
5566 IF(tt==zero.AND.iale+ieuler+glob_therm%ITHERM==0)THEN
5567
5568 negmas=0
5569
5570
5571
5572
5573 CALL python_begin_openmp(python)
5574
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)
5579
5580 CALL python_end_openmp(python)
5581
5582 IF(negmas/=0)
CALL arret(2)
5583 ENDIF
5584
5585
5586
5587
5588
5589
5590
5591 IF(nintstamp/=0)THEN
5593 . nodes%STIFN ,nodes%STIFR ,nodes%WEIGHT, output%TH%WFEXT)
5594 END IF
5595
5596
5597
5598
5599 IF(nrbykin>0)THEN
5600 IF (imon>0)
CALL startime(timers,timer_kin)
5601 IF (imonm > 0)
CALL startime(timers,40)
5602
5603
5604
5605
5606
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)
5617
5618
5619
5620
5621 CALL python_begin_openmp(python)
5622
5623
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 ,
5634 a rby6_c,nhier_rby)
5635
5636
5637 CALL python_end_openmp(python)
5638 IF (imon>0)
CALL stoptime(timers,timer_kin)
5639 IF (imonm > 0)
CALL stoptime(timers,40)
5640
5641 ENDIF
5642
5643
5644
5645
5646
5647
5648 IF (nfxbody>0) THEN
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,
5658 . agrv ,python)
5659 END IF
5660
5661
5662
5663
5664 IF(nadmesh/=0)THEN
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)
5671 END IF
5672
5673
5674
5675 IF (irigid_mat > 0) THEN
5676
5677
5678
5679
5680
5681 CALL python_begin_openmp(python)
5682
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 ,
5688 5 kindrbym ,rbym6 )
5689
5690
5691 CALL python_end_openmp(python)
5692
5693 ENDIF
5694
5695
5696
5697
5698 IF (nrwall>0) THEN
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
5702
5703 CALL rgwal0_pen(
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 )
5709
5710 END IF
5711 END IF
5712
5713
5714
5715
5716 IF( idtmins == 1 .AND.
5717 . (ismsch/=0.OR.ncycle==0.OR.ismsnok/=0.OR.iadmesh/=0))THEN
5718
5719
5720 ELSEIF(idtmins == 2.OR.idtmins_int/=0)THEN
5721
5722 nsgdone=1
5723 nrbdone=1
5724
5725 IF (imon>0)
CALL startime(timers,39)
5726 IF (imon>0)
CALL startime(timers,75)
5727
5728
5729
5730
5731 l1 = 1+nixs*numels + nsvois*nixs
5732
5733
5735
5736 IF(nspmd > 1)THEN
5738 END IF
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) )
5748
5749 IF (ALLOCATED(mw6)) DEALLOCATE(mw6)
5750 if (iparit /=0) then
5751 sz_mw6 = 3*numnod
5752 CALL my_alloc(mw6,6,sz_mw6)
5753 else
5754 sz_mw6 = 1
5755 CALL my_alloc(mw6,6,1)
5756 endif
5757 CALL python_begin_openmp(python)
5758
5759 itsk = omp_get_thread_num()
5760 nodftsk = 1+itsk*numnod/ nthread
5761 nodltsk = (itsk+1)*numnod/nthread
5762
5764 1 itsk ,nodftsk ,nodltsk ,
5765 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
5766 3 ixr ,ixtg ,
tagnod_sms,nodes%MS ,nodes%MS0 ,
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,
5775 b
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
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)
5787
5788
5789 CALL python_end_openmp(python)
5790
5792
5793 ismsch=0
5794 IF (imon>0)
CALL stoptime(timers,39)
5795 IF (imon>0)
CALL stoptime(timers,75)
5796
5797 ENDIF
5798
5799
5800
5801
5802
5803
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)
5812
5813 IF (flg_sphinout_r2r/=0) THEN
5814 DO i=1,numnod
5815 IF (off_sph_r2r(i)==2) THEN
5816 off_sph_r2r(i) = 1
5817 ELSE
5818 off_sph_r2r(i) = 0
5819 ENDIF
5820 END DO
5821 ENDIF
5822
5823 ENDIF
5824
5825
5826
5827
5828
5829
5830 23 CONTINUE
5831
5832
5833
5834
5835 IF(nintstamp/=0)THEN
5837 . ptr_sms
5838 . nodes%STIFR )
5839 END IF
5840
5841 imsch=0
5842
5843 IF (flg_damp_functTHEN
5844 CALL damping_funct_ini(dampr, nrdamp, ndamp, tt,iroddl)
5845 ENDIF
5846 IF (flg_dtnodamp==1) THEN
5847
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 ,
5854 1 igrnod ,dampr )
5855 ENDIF
5856
5857
5858 IF (i_exch_flg_raz==0) THEN
5859
5860
5861
5862 flg_kj2_raz = flg_kj2
5863 IF (nspmd > 1) call spmd_allreduce(flg_kj2,flg_kj2_raz,1,spmd_sum)
5864 i_exch_flg_raz = 1
5865 ENDIF
5866
5867 IF (flg_kj2==1) THEN
5868
5869 IF (ncycle==0) 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)
5873 ENDIF
5874
5876 1 ipart(k6),igeo,geo,npby,iparg,elbuf_tab,
5877 2 dt2t,neltst,ityptst,nrbody,nodes%ITAB)
5878 ENDIF
5879
5880
5881
5882
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
5889
5890 IF (idt_percent_addmass == 2) THEN
5891 idtmin(11) = 1
5892 dtmin1(11) = dt_stop_percent_addmass
5893 ENDIF
5894 ENDIF
5895
5896
5897
5898
5899 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0) THEN
5900
5901
5902
5903
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914 dtmin1_save = dtmin1(11)
5915 IF(min_tab(2) == 52) dtmin1(11) =
min(dtmin1_save,dt2r,1.1*dt2old)
5916
5917 ELSE
5918
5919 dtmin1_save = dtmin1(11)
5920 IF(itypts == 52) dtmin1(11) =
min(dtmin1_save,dt2,1.1*dt2old)
5921
5922 ENDIF
5923
5924
5925
5926
5927
5928
5929 IF (glob_therm%IDT_THERM == 1)THEN
5930 dt2 = glob_therm%DT_THERM
5931 dt2t = dt2
5932 ENDIF
5933
5934
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)
5939
5940
5941
5942
5943 CALL python_begin_openmp(python)
5944
5945
5946
5947
5948 dt2tt = dt2t
5949 neltstt = neltst
5950 ityptstt= ityptst
5951 dmast = zero
5952 dinert = zero
5953 itsk = omp_get_thread_num()
5954 nodftsk = 1+itsk*numnod/ nthread
5955 nodltsk = (itsk+1)*numnod/nthread
5956
5957
5958
5959
5960 IF(istatcnd/=0)THEN
5961
5962 stcnd(nodftsk:nodltsk)=nodes%STIFN(nodftsk:nodltsk)
5963 strcnd(nodftsk:nodltsk)=nodes%STIFR(nodftsk:nodltsk)
5964 ENDIF
5965
5966 IF(idtmins==0)THEN
5967
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
5977 1 nodftsk,nodltsk ,neltstt,ityptstt ,nodes%ITAB ,
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 ,
5983 7 h3d_data )
5984 END IF
5985
5986#include "lockon.inc"
5987 dmas = dmas + dmast
5988 diner = diner + dinert
5989 IF (glob_therm%IDT_THERM == 1)THEN
5990 IF(dt2tt<=dt2t)THEN
5991
5992
5993
5994 trest=
max(tstop-tt,zero)
5995
5996 dtrest = trest*(one+em10)
5997
5998 dt2t =
min(dt2tt,dtrest)
5999 neltst = neltstt
6000 ityptst= ityptstt
6001 ENDIF
6002 ELSE
6003 IF(dt2tt<dt2t)THEN
6004 dt2t = dt2tt
6005 neltst = neltstt
6006 ityptst= ityptstt
6007 END IF
6008 ENDIF
6009#include "lockoff.inc"
6010
6011
6012 CALL python_end_openmp(python)
6013
6014
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
6018 ENDIF
6019
6020 dtmin1(11) = dtmin1_save
6021
6022
6023
6024
6025
6026 IF (glob_therm%IDT_THERM == 1)THEN
6027 IF(dt2t<dt2)THEN
6028 nelts = neltst
6029 itypts = ityptst
6030 dt2 = dt2t
6031 ENDIF
6032 ELSE
6033 IF(dt2t<dt2)THEN
6034 nelts = neltst
6035 itypts = ityptst
6036 dt2 = dt2t
6037 ENDIF
6038 ENDIF
6039
6040
6041
6042
6043
6044
6045
6046 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
THEN
6047 IF(nspmd>1) THEN
6048 iwiout = 0
6049 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6051 . tstop,iwiout,mstop, ismsch,
6052 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6053
6054 IF(nspmd>1.AND.iwiout>0) THEN
6056 iwiout = 0
6057 ENDIF
6058
6059 IF(iexicodt>0) THEN
6060 length = 1
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
6063 iexicodt = 0
6064 ENDIF
6065 ENDIF
6066
6067
6068
6069
6070
6071 CALL python_begin_openmp(python)
6072
6073
6074
6075
6076
6077 CALL smp_init(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,partftsk,partltsk,nwaftsk,igmtsk,greftsk,greltsk)
6078 dt2tt = dt2t
6079 neltstt = neltst
6080 ityptstt= ityptst
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"
6088 IF(dt2tt<dt2t)THEN
6089 dt2t = dt2tt
6090 neltst = neltstt
6091 ityptst= ityptstt
6092 END IF
6093#include "lockoff.inc"
6094!$omp END parallel
6095 CALL python_end_openmp(python)
6096
6097
6098
6101
6102
6103
6104 GOTO 21
6105 ENDIF
6106 IF (imon>0)
CALL startime(timers,6)
6107
6108
6109
6110 IF(nrbag > 0)THEN
6111 IF (imonm > 0)
CALL startime(timers,50)
6113 IF (imonm > 0)
CALL stoptime(timers,50)
6114 ENDIF
6115
6116
6117
6118
6119
6120 IF(nvolu > 0)THEN
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)
6124
6125
6126
6127 IF(ispmd == 0)
CALL mvoludt(monvol,volmon)
6128 IF (imonm > 0)
CALL stoptime(timers,50)
6129 ENDIF
6130
6131 IF (imonm > 0)
CALL startime(timers,52)
6132 IF (nodadt==0) THEN
6133 IF (istat==3) THEN
6134 dampa3 = two*betate/(one + betate * dt12)
6135 IF (dt2>=ep06) dampa3=zero
6136 ELSE
6137 dampa3 = zero
6138 END IF
6139
6140 IF(idamp>0)THEN
6141 IF(dampb>=zero)THEN
6142 bb = (
min(dampb,dt1,dt2) + half*(dampa+dampa3)*dt2*dt2)
6143
6144 IF (dt2>=ep06) bb = zero
6145 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6146 ELSE
6147 bb = one - dampb - dampb
6148 dt2 = dt2/sqrt(bb)
6149 ENDIF
6150 ELSEIF(ndamp>0) THEN
6151 IF(nrdamp==4)THEN
6152 bb = zero
6153 DO i=1,ndamp
6154 dampa = dampr(3,i)
6155 dampb = dampr(4,i)
6156 d_tstart = dampr(17,i)
6157 d_tstop = dampr(18,i)
6158
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))
6161 ENDDO
6162 ELSE
6163 bb = zero
6164 IF (flg_dtnodamp==1) GOTO 600
6165 DO i=1,ndamp
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))
6170
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(2),damp_a(3))
6175 dampb = zero
6176 ENDIF
6177 factb = dampr(16,i)
6178 d_tstart = dampr
6179 d_tstop = dampr(18,i)
6180
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))
6184 ENDIF
6185 ENDDO
6186600 CONTINUE
6187 END IF
6188 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6189 ELSEIF(istat==3) THEN
6190 bb = half*dampa3*dt2*dt2
6191 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6192 ENDIF
6193 END IF
6194
6195 IF (imonm > 0)
CALL stoptime(timers,52)
6196
6197
6198
6199
6207 mstop=1
6208 mrest=1
6209 ENDIF
6210 ENDIF
6211
6212#ifdef DNC
6213 IF(mds_avail==1) THEN
6220 mstop=1
6221 mrest=1
6222 ENDIF
6223 ENDIF
6224#endif
6225
6226
6227
6228
6229 IF (imonm > 0)
CALL startime(timers,53)
6230 IF(nspmd>1) THEN
6231 iwiout = 0
6232 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6233 ENDIF
6234
6235 IF(nspmd>1)THEN
6237 . tstop,iwiout,mstop ,ismsch,
6238 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6239
6240
6241
6242
6243 IF(iwiout>0) THEN
6245 iwiout = 0
6246 ENDIF
6247
6248
6249
6250
6252
6253 IF(iexicodt>0) THEN
6254 length = 1
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)
6257 iexicodt = 0
6258 ENDIF
6259 ENDIF
6260
6261 IF (glob_therm%IDT_THERM == 0) dt2=
min(dt2,1.1*dt2old,dtmx)
6262 IF (impl_s==1)
CALL imp_dt2(dt2)
6263
6264 IF (imonm > 0)
CALL stoptime(timers,53)
6265
6266
6267 IF ( ncycle == 0 .AND. flg_kj2_raz > 0 ) THEN
6268
6269 if (ispmd==0)then
6270 write(iout,'(A)') ' '
6271 write(iout,'(A/)') ' AUTOMATIC STIFFNESS COMPUTATION FOR JOINTS'
6272 write(iout,'(A)') ' JOINT ID TYPE KNN KNR'
6273 endif
6274
6275 IF (flg_kj2 == 1) then
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)
6280 ENDIF
6281
6282
6283
6284 iwiout = 0
6285 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6286 call spmd_allreduce(iwiout,iwiout_result,1,spmd_sum)
6287 iwiout = iwiout_result
6289 iwiout = 0
6290
6291 if (ispmd==0)then
6292 write(iout,'(A)') ' '
6293 endif
6294
6295 ENDIF
6296
6297
6298
6299 IF (irad2r /= 0 .AND. r2r_activ == 1) THEN
6301 IF (nspmd>1) CALL spmd_barrier()
6302
6303 CALL python_begin_openmp(python)
6304
6305
6306
6307
6308 IF (imonm > 0)
CALL startime(timers,54)
6309 IF (ncycle == zero) tt_dp = tt
6310
6311 IF(ispmd==0)THEN
6315 IF ((r2r_siu==1).AND.(iddom/=0)) THEN
6317 ENDIF
6321 IF (r2r_mfilr==1) THEN
6324 ENDIF
6330 IF (r2r_mfilr==2) THEN
6333 ENDIF
6335 END IF
6336
6337 IF(nspmd>1)THEN
6338 IF(ispmd==0) THEN
6339 rbuf(1) = tt
6340 rbuf(2) = dt2
6341 END IF
6344 CALL spmd_ibcast(r2r_th_main,r2r_th_main,10,1,0,2)
6345 IF(ispmd/=0) THEN
6346 tt = rbuf(1)
6347 dt2 = rbuf(2)
6348 END IF
6349 END IF
6350
6351 IF ((r2r_siu==1).OR.(nspmd==1)) THEN
6355 ELSEIF (ispmd==0) THEN
6359 ENDIF
6360
6362
6363
6364 CALL python_end_openmp(python)
6365
6366
6367
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)
6373
6374 IF (imonm > 0)
CALL stoptime(timers,54)
6375
6376 ENDIF
6377
6378#ifdef DNC
6379
6380
6381
6382 IF(imadcpl==1)THEN
6383 madendrequest = 0
6384 IF (imonm > 0)
CALL startime(timers,55)
6385
6386 CALL tstp_exch_madcpl(madendrequest,madclnod,madclfrecv,nodes%V,nodes%A,nodes%MS ,madymo_del_global )
6387 IF (madendrequest == -1)THEN
6388 mstop = 2
6390 RETURN
6391 ENDIF
6392 IF (imonm > 0)
CALL stoptime(timers,55)
6393 ENDIF
6394#endif
6395
6396 IF (vipercoupling) THEN
6397
6398 CALL radiossviper_receivesenddt(viper%id,tt,dt2)
6399 ENDIF
6400
6401
6402 IF(loads%NINIVELT_G>0) CALL inivel_dt2(loads%NINIVELT,loads%INIVELT,sensors,tt , dt2 ,nspmd)
6403
6404 IF (imonm > 0)
CALL startime(timers,53)
6405 dt2old=dt2
6406 IF (inconv==1) THEN
6407 dt12=half*(dt1+dt2)
6408 dt3=dt1
6409 ENDIF
6410 IF(
ale%SUB%IALESUB==0)dt2s=dt2
6411
6412 IF (irad2r /= 0) THEN
6413 IF(ispmd==0)THEN
6414 r2rfx1 = r2rfx1*dt2 + r2rfx2*dt12*dt2
6415 ENDIF
6416 ENDIF
6417
6418 IF (nconld/=0.AND.impl_s/=1) THEN
6419 output%TH%WFEXT = output%TH%WFEXT + wfexc*dt2
6420 ENDIF
6421
6422 IF (imonm > 0)
CALL stoptime(timers,53)
6423 IF (imon>0)
CALL stoptime(timers,6)
6424
6425
6426
6427
6428 IF (imon>0)
CALL startime(timers,timer_io)
6429
6430 CALL python_begin_openmp(python)
6431
6432
6433 itsk = omp_get_thread_num()
6434 nodftsk = 1+itsk*numnod/ nthread
6435 nodltsk = (itsk+1)*numnod/nthread
6436
6437
6438
6439
6440
6441 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
6443 END IF
6444
6445
6446
6447
6448 CALL forani2(output,nodes%A,nodftsk,nodltsk,h3d_data)
6449
6450
6451 CALL python_end_openmp(python)
6452
6453 IF (imon>0)
CALL stoptime(timers,timer_io)
6454
6455
6456
6457 IF(idtmins == 1)THEN
6458
6459
6460 ELSEIF(idtmins == 2.OR.idtmins_int /= 0)THEN
6461
6462 IF (imon>0)
CALL startime(timers,39)
6463
6464
6465
6466
6467
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
6473 itsk = omp_get_thread_num()
6474 nodftsk = 1+itsk*numnod/ nthread
6475 nodltsk = (itsk+1)*numnod/nthread
6478 2
nodxi_sms,nodes%MS ,nodes%MS0 ,nodes%A ,nodes%ICODT ,
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 ,
6484 8 vel ,npc ,tf ,nodes%V ,nodes%X ,
6485 9 nodes%D ,sensors%SENSOR_TAB,nsensor,iframe,xframe,
6487 b
iskyi_sms,mskyi_sms,res_sms ,igrv ,agrv ,
6488 c lgrav ,ilink ,llink ,fr_rl ,frl6 ,
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 ,
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)
6505
6506!$omp END parallel
6507 CALL python_end_openmp(python)
6508
6509 IF (ALLOCATED(cjwork)) DEALLOCATE(cjwork)
6510 IF (ALLOCATED(frea)) DEALLOCATE(frea)
6511 IF (ALLOCATED(irwl_work)) DEALLOCATE(irwl_work)
6512
6513 IF (imon>0)
CALL stoptime(timers,39)
6514
6515 ENDIF
6516
6517 idum1=0
6518 rdum1=zero
6519
6520 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
6521 k2=k1+numels
6522 k3=k2+numelq
6523 k4=k3+numelc
6524 k5=k4+numelt
6525 k6=k5+numelp
6526 k7=k6+numelr
6527 k8=k7
6528 k9=k8+numeltg
6529 k10=k9+numelx
6530 k11=k10+numsph
6531
6532
6533
6534
6535
6536 IF (impl_s == 1) THEN
6537 encin = zero
6538 enrot = zero
6539 encin2 = zero
6540 enrot2 = zero
6541 IF (imon>0)
CALL startime(timers,timer_integ)
6542
6543 IF (impl_s==1 .AND. inconv==1) THEN
6544 CALL thbcs_imp(nodft,nodlt ,nodes%A,nodes%AR,
6545 & fthreac,
nodreac,cptreac,fthdtm,dt3)
6546 ENDIF
6547
6548
6549
6550 CALL python_begin_openmp(python)
6551
6552 itsk = omp_get_thread_num()
6553 nodftsk = 1+itsk*numnod/ nthread
6554 nodltsk = (itsk+1)*numnod/nthread
6555
6556 IF (ilag+iale+ieuler/=0) THEN
6557
6558
6559
6560 IF (nmult>0) THEN
6561 CALL bmultn(fill,dfill,ims,nodftsk,nodltsk)
6562 ENDIF
6563 CALL imp_fanii(output,nodes%A ,nfia ,nodft ,nodlt ,
6564 . h3d_data )
6565 IF (impdeb==1.AND.imconv==0) THEN
6566 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
6568 1 output ,nodes%A ,nodes%AR ,nfia ,nfea ,
6569 2 nodftsk ,nodltsk ,h3d_data ,impbuf_tab)
6570 ENDIF
6571 ENDIF
6572
6573
6574
6575 IF (isecut/=0) THEN
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)
6584 ENDIF
6585 ENDIF
6586
6587
6588 CALL python_end_openmp(python)
6589
6590 IF (imon>0)
CALL stoptime(timers,timer_integ)
6591
6592 IF (ilag+iale+ieuler/=0)THEN
6593 IF(imon>0)
CALL startime(timers,timer_kin)
6594 IF(imonm > 0)
CALL startime(timers,40)
6595
6596
6597
6598
6599 CALL python_begin_openmp(python)
6600
6601
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)
6607
6608 CALL python_end_openmp(python)
6609
6610 IF(imon>0)
CALL stoptime(timers,timer_kin)
6611 IF(imonm > 0)
CALL stoptime(timers,40)
6612 ENDIF
6613
6614
6615
6616 IF (nrbe2>0)THEN
6617 IF(imon>0)
CALL startime(timers,timer_kin)
6618 IF(imonm > 0)
CALL startime(timers,40)
6619
6620
6621 CALL python_begin_openmp(python)
6622
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)
6626
6627 CALL python_end_openmp(python)
6628
6629 IF(imon>0)
CALL stoptime(timers,timer_kin)
6630 IF(imonm > 0)
CALL stoptime(timers,40)
6631 ENDIF
6632
6633
6634
6635
6636
6637 IF (nsensor > 0) THEN
6638 IF (nspmd > 1 .AND. sensors%STABSEN > 0) THEN
6639 dim6=12
6640 dim_exch = sensors%SFSAV
6642 ENDIF
6643 ENDIF
6644
6645 IF (nsensor > 0 .AND. inconv == 1) THEN
6647
6648
6649 IF (sensors%COMM_SENS16%BOOL) THEN
6651 * igrsurf,sensors%COMM_SENS16)
6652 ENDIF
6653
6654
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)
6658 ENDIF
6659
6660 IF (nspmd > 1) THEN
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)
6665 ENDIF
6666
6667
6669 . xsens ,ipari ,partsav2 ,gauge ,fsav ,
6670 . nodes%X ,nodes%V ,nodes%A ,accelm ,rwall%NPRW ,
6671 . subsets ,igrsurf ,igrnod , python)
6672
6673
6675
6676 ENDIF
6677
6678 GOTO 111
6679
6680 ENDIF
6681
6682
6683
6684 IF (ilag + iale + ieuler /= 0) THEN
6685
6686 IF (imon>0)
CALL startime(timers,timer_integ)
6687
6688
6689
6690
6691
6692 CALL python_begin_openmp(python)
6693
6694 itsk = omp_get_thread_num()
6695 nodftsk = 1+itsk*numnod/ nthread
6696 nodltsk = (itsk+1)*numnod/nthread
6697
6698
6699
6700
6701 IF(nmult>0) THEN
6702 CALL bmultn(fill,dfill,ims,nodftsk,nodltsk)
6703 ENDIF
6704
6705
6706 CALL python_end_openmp(python)
6707
6708
6709
6710
6711
6712 IF ((numsph/=0).OR.(sol2sph_flag==1)) THEN
6713
6714
6715
6716 IF (imonm > 0)
CALL startime(timers,48)
6717 IF (imonm > 0)
CALL startime(timers,89)
6718
6719 ALLOCATE(waspsym(3*nsphsym+1),stat=ierror)
6720 IF(ierror/=0)THEN
6721 CALL ancmsg(msgid=19,anmode=aninfo,c1=
"WASPSYM")
6723 ENDIF
6724
6725
6726
6727 CALL python_begin_openmp(python)
6728
6729 itsk = omp_get_thread_num()
6730 ipmtsk = 1 + itsk*npsav*npart
6731
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)
6742
6743
6744 CALL python_end_openmp(python)
6745 DEALLOCATE(waspsym)
6746
6747
6748
6749
6750
6751 IF (imonm > 0)
CALL stoptime(timers,48)
6752 IF (imonm > 0)
CALL stoptime(timers,89)
6753
6754
6755
6756
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)
6763
6764
6765
6766
6767
6768 CALL python_begin_openmp(python)
6769
6770
6771
6772
6773
6775 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
6776 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
6777 3 greftsk
6778
6780 2 partftsk,partltsk,partsav,greftsk,greltsk,gresav)
6781
6782
6783 CALL python_end_openmp(python)
6784
6785 ENDIF
6786
6787
6788
6789
6790
6791 IF (tt==zero.AND.iabs(isigi)==5) THEN
6792
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)
6798 ENDIF
6799
6800
6801
6802 IF(iparit == 0.AND.nspmd > 1.AND. nloc_dmg%IMOD > 0)THEN
6804 ENDIF
6805
6806 IF(coupling%active) THEN
6807
6808
6809
6810
6811 CALL coupling_sync(coupling,dt2,nodes,coupling_forces)
6812 ENDIF
6813
6814
6815
6816
6817 CALL python_begin_openmp(python)
6818
6819 itsk = omp_get_thread_num()
6820 nodftsk = 1+itsk*numnod/ nthread
6821 nodltsk = (itsk+1)*numnod/nthread
6822
6823
6824
6825
6826
6827
6828
6829
6831 CALL alefvm_accele(nodes%A, nodes%AR, nodftsk, nodltsk, ale_connectivity%NALE)
6832 ENDIF
6833
6834 CALL accele(nodes%A ,nodes%AR ,nodes%V ,nodes%MS ,nodes%IN ,
6835 2
ale%GLOBAL%SNALE ,ale_connectivity%NALE ,ms_2d ,
6836 3 size_npby,npby )
6837
6838 IF(iplyxfem > 0 )
6839 .
CALL ply_accele(inod_pxfem,ms_ply,zi_ply,nodes%MS,
6840 . nodftsk,nodltsk,nplymax,nplyxfe,numnod,msz2 )
6841
6842
6843 IF(ialelag > 0) THEN
6844 CALL flow_accele(ale_connectivity%NALE, msf ,aflow ,vflow ,
6845 2 nodftsk,nodltsk)
6846 ENDIF
6847
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)
6852 ENDIF
6853
6854 IF (icrack3d > 0) THEN
6855
6857
6858 CALL crk_accele(adsky_crk,inod_crk,nodlevxf ,nodftsk ,nodltsk ,
6859 . nodenr ,
crksky ,nodes%MS ,nodes%IN ,nodes%ITAB )
6860
6862
6864 . nodlevxf)
6865
6867
6868 ENDIF
6869
6872 1 pinch_data%APINCH, nodes%MS
6873 2 pinch_data%STIFPINCH, nodftsk, nodltsk,
6874 3 dt2t, dtfac)
6875 ENDIF
6876
6877
6878
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)
6881
6882 CALL python_end_openmp(python)
6883
6884
6885
6886
6889 IF(ntsheg > 0) THEN
6890
6891
6892
6893
6894
6895 CALL python_begin_openmp(python)
6896
6897
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 )
6902
6903 CALL python_end_openmp(python)
6904 ENDIF
6905
6908
6909
6910
6911 IF (debug(macro_debug_temp)==1) THEN
6912 IF (ncycle>=tdebstart .AND.
6913 . mod(ncycle-tdebstart,trstfreq)==0) THEN
6914
6915 IF(nspmd > 1) THEN
6916 IF (ispmd==0) THEN
6917 siz = numnodg
6918 ELSE
6919 siz = 0
6920 END IF
6921 CALL spmd_collectt(nodes%TEMP,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB,siz)
6922 ELSE
6923 CALL collectt(nodes%TEMP,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB)
6924 END IF
6925 END IF
6926 END IF
6927
6928
6929
6930
6931
6932 IF (imon>0)
CALL stoptime(timers,timer_integ)
6933
6934
6935
6936 IF(nsphio/=0)THEN
6937
6938
6939 nsphactg = nsphact
6940
6941 IF(nspmd>1)THEN
6944 END IF
6945
6946 IF(nsphactg/=0)THEN
6947
6948 IF (imon>0)
CALL startime(timers,6)
6949 IF (imonm > 0)
CALL startime(timers,48)
6950 IF (imonm > 0)
CALL startime(timers,89)
6951
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)
6956
6957 IF (imonm > 0)
CALL stoptime(timers,89)
6958 IF (imonm > 0)
CALL stoptime(timers,48)
6959 IF (imon>0)
CALL stoptime(timers,6)
6960 ENDIF
6961 END IF
6962
6963
6964
6965
6966
6967
6968
6969
6970 IF(nsphio/=0.AND.nsphactg/=0)THEN
6971
6972 IF (imon>0)
CALL startime(timers,6)
6973 IF (imonm > 0)
CALL startime(timers,48)
6974 IF (imonm > 0)
CALL startime(timers,89)
6975
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)
6980
6981 IF (imonm > 0)
CALL stoptime(timers,89)
6982 IF (imonm > 0)
CALL stoptime(timers,48)
6983 IF (imon>0)
CALL stoptime(timers,6)
6984 ENDIF
6985
6986
6987
6988
6989 IF (nspmd>1) THEN
6990 IF ((sdd_r2r_elem>0).AND.(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)
6993 ENDIF
6994 ENDIF
6995
6996
6997
6998
6999 IF (imon>0)
CALL startime(timers,timer_io)
7000
7001 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7002
7003 CALL python_begin_openmp(python)
7004
7005
7006 itsk = omp_get_thread_num()
7007 nodftsk = 1+itsk*numnod/ nthread
7008 nodltsk = (itsk+1)*numnod/nthread
7009
7010
7011
7012
7013
7014
7015 iflag = -1
7016 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7017
7018
7019 CALL python_end_openmp(python)
7020 END IF
7021
7022 IF (imon>0)
CALL stoptime(timers,timer_io)
7023 CALL python_update_nodal_entities(numnod,nodes,a=nodes%A,v=nodes%V,ar
7024
7025
7026
7027
7028 IF(ngrav/=0.AND.idtmins==0.AND.idtmins_int==0) THEN
7029 IF (imon>0)
CALL startime(timers,timer_kin)
7030 IF (imonm > 0)
CALL startime(timers,46)
7031
7032
7033
7034
7035
7036 CALL python_begin_openmp(python)
7037
7038 itsk = omp_get_thread_num()
7039 IF(multi_fvm%IS_USED)THEN
7041 1 igrv
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)
7044 ELSE
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)
7049 ENDIF
7050
7051 CALL python_end_openmp(python)
7052
7053
7054
7055
7056
7057
7058
7059
7060 IF (nfxbody>0) THEN
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)
7064 END IF
7065 IF (imon>0)
CALL stoptime(timers,46)
7066 IF (imonm > 0)
CALL stoptime(timers,timer_kin)
7067 ENDIF
7068
7069
7070
7071 IF(nbcscyc > 0)THEN
7072 CALL bcscyc(ibcscyc,lbcscyc,skews%SKEW,nodes%X,nodes%V,nodes%A,nodes%ITAB)
7073 ENDIF
7074
7075
7076
7077 IF (nloadc>0) THEN
7078 IF (imon>0)
CALL startime(timers,timer_kin)
7079
7080
7081
7082
7083
7084 CALL python_begin_openmp(python)
7085
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)
7090
7091 CALL python_end_openmp(python)
7092
7093 IF (imon>0)
CALL stoptime(timers,timer_kin)
7094 ENDIF
7095
7096
7097
7098
7099
7100 IF (imon>0)
CALL startime(timers,timer_io)
7101
7102 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7103 CALL python_begin_openmp(python)
7104
7105
7106 itsk = omp_get_thread_num()
7107 nodftsk = 1+itsk*numnod/ nthread
7108 nodltsk = (itsk+1)*numnod/nthread
7109
7110
7111
7112
7113
7114
7115 iflag = 1
7116 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7117
7118
7119 CALL python_end_openmp(python)
7120
7121 END IF
7122
7123 IF (imon>0)
CALL stoptime(timers,timer_io)
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133 IF (imon>0)
CALL startime(timers,timer_io)
7134 CALL python_begin_openmp(python)
7135
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)
7140
7141 CALL python_end_openmp(python)
7142 IF (imon>0)
CALL stoptime(timers,timer_io)
7143
7144
7145
7146
7147
7148
7149
7150
7151 ierr=0
7152 IF(ninter/=0.AND.iale/=0)THEN
7153 IF(ispmd==0)THEN
7154 IF (imon>0) THEN
7156 CALL startime(timers,timer_contsort)
7157 ENDIF
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 )
7162 IF (imon>0) THEN
7163 CALL stoptime(timers,timer_contsort)
7165 ENDIF
7166 ENDIF
7167 IF(nspmd > 1)THEN
7168
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)
7171 ENDIF
7172 ENDIF
7173 IF(ierr == 1)
CALL arret(2)
7174
7175 IF(ninter /= 0 .and. iale+ieuler /= 0 .and. int18kine == -1)THEN
7176
7177
7178
7179 CALL python_begin_openmp(python)
7180
7181 itsk = omp_get_thread_num()
7182
7184
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 )
7190
7191 CALL python_end_openmp(python)
7192 ENDIF
7193
7194
7195
7196
7197
7198
7199
7200
7201 IF(ebcs_tab%nebcs_loc>0)THEN
7202 IF (imon>0) THEN
7204 CALL startime(timers,timer_contsort)
7205 END IF
7206 IF(ispmd == 0)THEN
7207 CALL ebcclap(nodes%V,nodes%A,fv,ebcs_tab)
7208 ENDIF
7209 IF (imon>0) THEN
7210 CALL stoptime(timers,timer_contsort)
7212 END IF
7213 ENDIF
7214
7215
7216
7217
7218 IF (imon>0)
CALL startime(timers,timer_kin)
7219 IF (imonm > 0)
CALL startime(timers,42)
7220
7221 CALL thbcs(nodft ,nodlt ,nodes%ICODT ,nodes%ICODR,nodes%ISKEW,
7222 2 skews%SKEW ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
7224
7225
7226
7227
7228
7229 CALL python_begin_openmp(python)
7230
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 ,
7236 3 nodes%VR )
7237
7238
7239 IF(iplybcs > 0 .AND. iplyxfem > 0 )
7240 .
CALL ply_bcs(nodftsk, nodltsk,icodt_ply,iskew_ply,skews%SKEW,
7241 . inod_pxfem,ms_ply,ibc_ply)
7242
7243 CALL python_end_openmp(python)
7244
7245 IF (imonm > 0) THEN
7248 END IF
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258 CALL python_begin_openmp(python)
7259
7260 itsk = omp_get_thread_num()
7261
7262
7263
7264
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)
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)
7273
7274
7275
7276 IF(nrivet>0) THEN
7278 + nodes%MS ,nodes%IN ,nodes%A ,nodes%AR,nodes%X ,
7279 + lrivet,rivet,geo,nodes%V ,nodes%VR,
7280 + itsk )
7281 ENDIF
7282
7283
7284
7285
7286 IF(njoint>0THEN
7287 CALL cjoint(nodes%A ,nodes%AR ,nodes%V ,nodes%VR,nodes%X ,
7288 2 fsav ,ljoint,nodes%MS,nodes%IN,iadcj,
7290 ENDIF
7291
7292
7293 CALL python_end_openmp(python)
7294
7295 IF (imon>0)
CALL stoptime(timers,timer_kin)
7296 IF (imonm > 0)
CALL stoptime(timers,43)
7297 ENDIF
7298
7299
7300
7301
7302
7303
7304 IF (imon>0)
CALL startime(timers,timer_io)
7305
7306
7307 itsk = omp_get_thread_num()
7308 nodftsk = 1+itsk*numnod/ nthread
7309 nodltsk = (itsk+1)*numnod/nthread
7310
7311
7312
7313 IF(tt==zero.AND.(isigi==2.OR.isigi==4)) THEN
7314#include "vectorize.inc"
7315 DO i=nodftsk,nodltsk
7316 fzero(1,i)=-nodes%A(1,i)
7317 nodes%A(1,i)=zero
7318 fzero(2,i)=-nodes%A(2,i)
7319 nodes%A(2,i)=zero
7320 fzero(3,i)=-nodes%A(3,i)
7321 nodes%A(3,i)=zero
7322 ENDDO
7323 ENDIF
7324
7325
7326
7327 IF (imon>0)
CALL stoptime(timers,timer_io)
7328
7329
7330
7331
7332
7333 IF (ns10e>0.AND.(idamp/=0.OR.ndamp>0.OR.istat/=0)) THEN
7335 END IF
7336
7337
7338
7339
7340
7341 IF (imon>0)
CALL startime(timers,timer_io)
7342
7343 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7344
7345 CALL python_begin_openmp(python)
7346
7347
7348 itsk = omp_get_thread_num()
7349 nodftsk = 1+itsk*numnod/ nthread
7350 nodltsk = (itsk+1)*numnod/nthread
7351
7352
7353
7354
7355
7356
7357 iflag = -1
7358 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7359
7360
7361 CALL python_end_openmp(python)
7362 END IF
7363
7364 IF (imon>0)
CALL stoptime(timers,timer_io)
7365
7366 IF (imonm > 0)
CALL startime(timers,52)
7367
7368 CALL python_begin_openmp(python)
7369
7370
7371 itsk = omp_get_thread_num()
7372 nodftsk = 1+itsk*numnod/ nthread
7373 nodltsk = (itsk+1)*numnod/nthread
7374
7375 IF(idamp/=0)THEN
7376 IF (ns10e>0) THEN
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)
7379 ELSE
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
7383 ELSEIF(ndamp>0)THEN
7384 IF(nrdamp==4)THEN
7385
7386
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)
7391
7392
7393 ELSE
7394
7395
7396 IF (ns10e>0) THEN
7398 . 3+iroddl*3,vmd ,
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)
7403 ELSE
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)
7410 END IF
7411
7412
7413 END IF
7414 END IF
7415
7416
7417 CALL python_end_openmp(python)
7418
7419 IF(imon>0)
CALL stoptime(timers,52)
7420
7421 IF (imon>0)
CALL startime(timers,timer_io)
7422
7423 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7424
7425 CALL python_begin_openmp(python)
7426
7427
7428 itsk = omp_get_thread_num()
7429 nodftsk = 1+itsk*numnod/ nthread
7430 nodltsk = (itsk+1)*numnod/nthread
7431
7432
7433
7434
7435
7436
7437 iflag = 1
7438 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7439
7440
7441 CALL python_end_openmp(python)
7442
7443 END IF
7444
7445 IF (imon>0)
CALL stoptime(timers,timer_io)
7446
7447
7448
7449
7450
7451 IF (imon>0)
CALL startime(timers,timer_io)
7452
7453 IF(cptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7454 CALL python_begin_openmp(python)
7455
7456
7457 itsk = omp_get_thread_num()
7458 nodftsk = 1+itsk*numnod/ nthread
7459 nodltsk = (itsk+1)*numnod/nthread
7460
7461
7462
7463
7464
7465 iflag = -1
7467 . nodes%IN ,fthreac ,iflag,
nodreac)
7468
7469
7470 CALL python_end_openmp(python)
7471 END IF
7472
7473 IF (imon>0)
CALL stoptime(timers,timer_io)
7474
7475
7476
7477
7478
7479
7480
7481
7482 IF(istat/=0) THEN
7483 IF (imon>0)
CALL startime(timers,6)
7484 IF (imonm > 0)
CALL startime(timers,49)
7485 IF (ns10e>0) THEN
7486 CALL static(vmd ,nodes%VR,nodes%A,nodes%AR,nodes%MS,nodes%IN,igrnod,nodes%WEIGHT_MD,output%TH%WFEXT)
7487 ELSE
7488 CALL static(nodes%V,nodes%VR,nodes%A,nodes%AR,nodes%MS,nodes%IN,igrnod,nodes%WEIGHT_MD,output%TH%WFEXT)
7489 END IF
7490 IF (imonm > 0)
CALL stoptime(timers,49)
7491 IF (imon>0)
CALL stoptime(timers,6)
7492 ENDIF
7493 encin = zero
7494 enrot = zero
7495 encin2 = zero
7496 enrot2 = zero
7497
7498
7499
7500 IF(nfxvel/=0) THEN
7501 IF(imon>0) THEN
7504 IF(imonm > 0)
CALL startime(timers,44)
7505 ENDIF
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)
7512
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 )
7518 ENDIF
7519
7520 IF(imon>0) THEN
7521 IF(imonm > 0)
CALL stoptime(timers,44)
7524 ENDIF
7525 ENDIF
7526
7527
7528
7529
7530
7531 IF (imon>0)
CALL startime(timers,timer_io)
7532
7533 IF(cptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7534
7535 CALL python_begin_openmp(python)
7536
7537
7538 itsk = omp_get_thread_num()
7539 nodftsk = 1+itsk*numnod/ nthread
7540 nodltsk = (itsk+1)*numnod/nthread
7541
7542
7543
7544
7545
7546 iflag = 1
7548
7549
7550 CALL python_end_openmp(python)
7551
7552 END IF
7553
7554 IF (imon>0)
CALL stoptime(timers,timer_io)
7555
7556
7557
7558
7559
7560 IF (imon>0)
CALL startime(timers,timer_kin)
7561 IF (imonm > 0)
CALL startime(timers,43)
7562
7563 CALL python_begin_openmp(python)
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573 IF(nrwall>0.AND.idtmins==1)THEN
7574
7575
7576 ELSEIF(nrwall>0.AND.(idtmins==2.OR.idtmins_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)
7583 ELSE
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)
7590 ENDIF
7591
7592
7593 CALL python_end_openmp(python)
7594
7595 IF (imon>0)
CALL stoptime(timers,timer_kin)
7596 IF (imonm > 0)
CALL stoptime(timers,43)
7597
7598
7599
7600
7601
7602
7603
7604
7605 IF (glob_therm%NFXTEMP > 0 .AND. glob_therm%ITHERM_FE > 0) THEN
7606 IF (imon>0) THEN
7609 IF(imonm > 0)
CALL startime(timers,44)
7610 ENDIF
7611 CALL fixtemp(python,ibftemp ,fbftemp ,nodes%TEMP ,npc ,tf ,
7612 1 nsensor ,sensors%SENSOR_TAB,glob_therm,snpc)
7613 IF (imon>0) THEN
7614 IF(imonm > 0)
CALL stoptime(timers,44)
7617 ENDIF
7618 ENDIF
7619
7620 IF(isecut/=0)THEN
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)
7629 ENDIF
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639 IF(istatcnd/=0)THEN
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 ,
7650 5 mscnd ,incnd )
7651
7652 CALL python_end_openmp(python)
7653
7654 IF (imon>0)
CALL stoptime(timers,38)
7655
7656
7657 IF (imon>0)
CALL startime(timers,timer_kin)
7658 IF (imonm > 0)
CALL startime(timers,42)
7659
7660
7661
7662
7663 CALL python_begin_openmp(python)
7664
7665
7666 itsk = omp_get_thread_num()
7667 nodftsk = 1+itsk*numnod/ nthread
7668 nodltsk = (itsk+1)*numnod/nthread
7669
7670 CALL bcs10(nodftsk,nodltsk ,nodes%ICODT ,nodes%ICODR,nodes%ISKEW,
7671 2 skews%SKEW ,nodes%A ,nodes%AR ,nodes%MS ,nodes%V ,
7672 3 nodes%VR )
7673
7674
7675 CALL python_end_openmp(python)
7676
7677 IF (imonm > 0)
CALL stoptime(timers,42)
7678 IF (imon>0)
CALL stoptime(timers,timer_kin)
7679 END IF
7680
7681
7682
7683
7684
7685
7686 IF(nadmesh/=0)THEN
7687 IF (imon>0)
CALL startime(timers,38)
7688
7689
7690
7691
7692
7693 CALL python_begin_openmp(python)
7694
7695 itsk = omp_get_thread_num()
7696
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)
7700
7701
7702 CALL python_end_openmp(python)
7703
7704 IF (imon>0)
CALL stoptime(timers,38)
7705 END IF
7706
7707
7708
7709
7710 IF(nrbykin>0)THEN
7711
7712 IF(imon>0)
CALL startime(timers,timer_kin)
7713 IF(imonm > 0)
CALL startime(timers,40)
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724 CALL python_begin_openmp(python)
7725
7726
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,
7732 5 freac ,nhier_rby)
7733
7734
7735 CALL python_end_openmp(python)
7736
7737
7738 IF(imon>0)
CALL stoptime(timers,timer_kin)
7739 IF(imonm > 0)
CALL stoptime(timers,40)
7740
7741 ENDIF
7742
7743
7744
7745
7746 IF(irigid_mat > 0 ) THEN
7747
7748
7749
7750
7751
7752 CALL python_begin_openmp(python)
7753
7754
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)
7758
7759
7760 CALL python_end_openmp(python)
7761
7762 ENDIF
7763
7764
7765
7766
7767
7768
7769
7770
7771 IF (nfxbody>0) THEN
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)
7777 END IF
7778
7779
7780
7781 IF (nrbe3>0) THEN
7782 CALL rbe3v(rbe3,nodes,skews%SKEW )
7783 ENDIF
7784
7785
7786
7787 IF (nrbe2>0) THEN
7788 IF (itask==0) THEN
7789 CALL rbe2v(irbe2 ,lrbe2 ,nodes%X ,nodes%A ,nodes%AR ,
7790 1 nodes%V ,nodes%VR ,skews%SKEW )
7791 ENDIF
7792 ENDIF
7793
7794
7795
7796 IF (nflow>0)
CALL flow1(iflow, rflow, nbgauge, nodes%A)
7797
7798
7799
7800
7801
7802 IF (ispmd==0) THEN
7803
7804
7805
7806 IF(ninter/=0)THEN
7807 IF (imon>0) THEN
7808 CALL startime(timers,timer_contsort)
7809 ENDIF
7810 CALL i14wfs(output,ipari,interfaces%INTBUF_TAB,igrsurf,fsav)
7811 IF (imon>0) THEN
7812 CALL stoptime(timers,timer_contsort)
7813 ENDIF
7814 ENDIF
7815 ENDIF
7816
7818
7819
7820
7821
7822 IF(ninter/=0)THEN
7823 IF (imon>0) THEN
7825 CALL startime(timers,timer_contsort)
7826 ENDIF
7827 IF (imonm > 0)
CALL startime(timers,28)
7828 DO k=nhin2,0,-1
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)
7832 ENDDO
7833 IF (imonm > 0)
CALL stoptime(timers,28)
7834 IF (imon>0) THEN
7835 CALL stoptime(timers,timer_contsort)
7837 ENDIF
7838 ENDIF
7839
7840
7841
7842
7843
7844 IF (nslipring + nretractor > 0)
CALL kine_seatbelt_vel(nodes%A,nodes%V,nodes%X,nodes%XDP)
7845
7846
7847
7849
7850 IF(numfram /= 0 .AND. n2d == 0)THEN
7851
7852
7853
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)
7859 ENDIF
7860
7861 IF (imon>0)
CALL startime(timers,timer_kin)
7862 IF (imonm > 0)
CALL startime(timers,40)
7863
7864 IF(numsph/=0.AND.nsphsol/=0)THEN
7865
7866
7867
7868 IF (imonm > 0)
CALL startime(timers,48)
7869 IF (imonm > 0)
CALL startime(timers,89)
7870
7871
7872
7873
7874
7875 CALL python_begin_openmp(python)
7876
7877 itsk = omp_get_thread_num()
7878
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)
7884
7885
7886 CALL python_end_openmp(python)
7887
7888 IF (imonm > 0)
CALL stoptime(timers,89)
7889 IF (imonm > 0)
CALL stoptime(timers,48)
7890 ENDIF
7891
7892
7893
7894
7895
7896
7897
7898
7899 IF (naccelm > 0) THEN
7900 CALL python_begin_openmp(python)
7901
7902 DO k=1,naccelm
7903
7904 IF(iaccp(k)==ispmd+1)THEN
7905 n = laccelm(1,k)
7906 IF(n > 0 .AND. n/=2*numnodg )THEN
7907 isk= laccelm(3,k)
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))
7911 END IF
7912 END IF
7913 ENDDO
7914
7915
7916 CALL python_end_openmp(python)
7917
7918 END IF
7919
7920
7921
7922
7923 IF (nbgauge > 0) THEN
7924 CALL python_begin_openmp(python)
7925
7926 DO k=1,nbgauge
7927 IF(igaup(k)==ispmd+1)THEN
7928 n = lgauge(1,k)
7929
7930
7931 IF(n < -(numels+numelq+numeltg))THEN
7933 . gauge(10,k),gauge(9,k),gauge(14,k),gauge(22,k),
7934 . gauge(30,k),4)
7935 END IF
7936 END IF
7937 ENDDO
7938
7939
7940 CALL python_end_openmp(python)
7941
7942 END IF
7943
7944
7945
7946
7947 IF (nsphio > 0) THEN
7948 CALL python_begin_openmp(python)
7949
7950 DO k=1,nsphio
7951 IF (isphio(1,k)>1) THEN
7952 ivad = isphio(4,k)
7954 . vsphio(ivad+13),vsphio(ivad+15),vsphio(ivad+18),vsphio(ivad+20),
7955 . vsphio(ivad+16),1)
7956 END IF
7957 ENDDO
7958
7959
7960 CALL python_end_openmp(python)
7961 END IF
7962 CALL python_begin_openmp(python)
7963
7964 IF(nrbykin>0)THEN
7966 1 rby ,nodes%X ,nodes%V ,nodes%VR ,skews%SKEW
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)
7970 ENDIF
7971
7972 IF(nrbe2>0)THEN
7973
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)
7977 ENDIF
7978
7979 CALL python_end_openmp(python)
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992 IF (nsensor> 0 ) THEN
7993 IF (nspmd > 1 .AND. sensors%STABSEN > 0) THEN
7994 dim6=12
7995 dim_exch = sensors%SFSAV
7997 ENDIF
7998 ENDIF
7999
8000 IF (nsensor > 0) THEN
8001
8003
8004
8005 IF (sensors%COMM_SENS16%BOOL) THEN
8007 * igrsurf,sensors%COMM_SENS16)
8008 ENDIF
8009
8010
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)
8014 ENDIF
8015
8016 IF (nspmd > 1) THEN
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 )
8021 ENDIF
8022
8023
8025 . xsens ,ipari ,partsav2 ,gauge ,fsav ,
8026 . nodes%X ,nodes%V ,nodes%A ,accelm ,rwall%NPRW ,
8027 . subsets ,igrsurf ,igrnod ,python)
8028
8029
8031
8032 ENDIF
8033
8034
8035 IF (imonm > 0)
CALL stoptime(timers,40)
8036 IF (imon>0)
CALL stoptime(timers,timer_kin)
8037
8038
8039
8040
8041 IF(lag_ncf+lag_ncl>0)THEN
8042 l1 = 1+nixs*numels + nsvois*nixs
8043 l2 = l1+6*numels10
8044 l3 = l2+12*numels20
8045
8046 IF(lag_sec == 1 .AND. nspmd == 1)THEN
8047
8048
8049
8050
8051 CALL python_begin_openmp(python)
8052!$omp parallel
8053
8054
8055
8056
8058 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
8059 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
8060 3 greftsk,greltsk)
8061
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,
8073 b python,nodes)
8074
8075
8076 CALL python_end_openmp(python)
8077
8078
8079
8080
8081
8082 ELSE
8083 IF(ispmd==0) THEN
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)
8088 ELSE
8089 nbncl = fr_lagf(1,ispmd+1)
8090 nbikl = fr_lagf(2,ispmd+1)
8091 nbnodl=0
8092 nbnodlr=0
8093 END IF
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)
8107 END IF
8108 ENDIF
8109
8110 111 CONTINUE
8111
8112
8113 ntmp = imconv
8114 IF (impdeb==1.AND.imconv==0) THEN
8115 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
8116 ttmp=ttmp+output%DTANIM
8117 IF ((irad2r==1).AND.(iresp==1)) THEN
8118 tt_dp=tt_dp+ttmp
8119 tt = tt_dp
8120 ELSE
8121
8122 tt_double = tt_double + ttmp
8123 IF (impl_s==1.OR.neig>0) THEN
8124 tt = tt + ttmp
8125 ELSE
8126 IF(iresp == 1)THEN
8127 tt = sngl(tt_double)
8128 ELSE
8129 tt = tt_double
8130 ENDIF
8131 ENDIF
8132
8133 ENDIF
8134 ntmp = 1
8135 ENDIF
8136 ENDIF
8137
8138 IF( ( anim_ce(2156)/=0 .OR. h3d_data%SH_SCAL_ERR_THK /=0)
8139 . .AND.((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.
8140 . (manim>=4.AND.manim<=15))) THEN
8141
8142
8143
8144
8145 CALL python_begin_openmp(python)
8146
8147
8148 itsk = omp_get_thread_num()
8149 nodftsk = 1+itsk*numnod/ nthread
8150 nodltsk = (itsk+1)*numnod/nthread
8151
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)
8158
8159
8160 CALL python_end_openmp(python)
8161 END IF
8162
8163 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
8164 k2=k1+numels
8165 k3=k2+numelq
8166 k4=k3+numelc
8167 k5=k4+numelt
8168 k6=k5+numelp
8169 k7=k6+numelr
8170 k8=k7
8171 k9=k8+numeltg
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 ,
8180 . eani,
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),
8186 . multi_fvm ,
8187 . mat_elem%MAT_PARAM, output%DATA%FANI_CELL,glob_therm%ITHERM)
8188
8189
8190
8191
8192
8193
8194 IF(ntmp==1)THEN
8195 IF(idtmins==1)THEN
8196
8197
8198 ELSEIF(idtmins==2.OR.idtmins_int/=0)THEN
8199
8200 IF (imon>0)
CALL startime(timers,39)
8201 CALL python_begin_openmp(python)
8202
8203
8204 itsk = omp_get_thread_num()
8205 nodftsk = 1+itsk*numnod/ nthread
8206 nodltsk = (itsk+1)*numnod/nthread
8207
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 ,
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 ,
8224 g ibcscyc ,lbcscyc ,output, mskyi_fi_sms,list_sms,
8225 h list_rms ,sms_vfi,sz_mw6,mw6)
8226
8227
8228 CALL python_end_openmp(python)
8229
8230 IF (imon>0)
CALL stoptime(timers,39)
8231
8232 END IF
8233 END IF
8234
8235 nisky_sms=0
8236
8237
8238
8239
8240
8241 IF (icrack3d > 0 .AND. nlevset > 0) THEN
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 ,
8247 ENDIF
8248
8249
8250
8251
8252
8253
8254
8255
8256
8258 CALL python_begin_openmp(python)
8259
8260
8261
8262
8263
8264
8266 1 itsk , nodftsk , nodltsk , numntsk, ndtsk ,
8267 2 ipmtsk , partftsk, partltsk, nwaftsk, igmtsk ,
8268 3 greftsk, greltsk)
8269 dt2tt = dt2t
8270 neltstt = neltst
8271 ityptstt = ityptst
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 )
8279
8280
8281 CALL python_end_openmp(python)
8282 ENDIF
8283
8284
8285
8286
8287 IF (imon>0)
CALL startime(timers,timer_io)
8288
8289 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
8290 CALL python_begin_openmp(python)
8291
8292
8293 itsk = omp_get_thread_num()
8294 nodftsk = 1+itsk*numnod/ nthread
8295 nodltsk = (itsk+1)*numnod/nthread
8296
8297
8298
8299
8300 CALL reaction_forces_3(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac)
8301
8302
8303 CALL python_end_openmp(python)
8304 END IF
8305
8306 IF (imon>0)
CALL stoptime(timers,timer_io)
8307
8308
8309
8310 IF(ncycle > 0) THEN
8311
8312 IF (imon>0)
CALL startime(timers,macro_timer_genh3d1)
8313 l1 = 1+nixs*numels + nsvois*nixs
8314 l2 = l1+6*numels10
8315 l3 = l2+12*numels20
8316 CALL python_begin_openmp(python)
8317
8318
8319 itsk = omp_get_thread_num()
8320
8321
8322
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 )
8328
8329!$omp END parallel
8330 CALL python_end_openmp(python)
8331 IF (imon>0)
CALL stoptime(timers,macro_timer_genh3d1)
8332 END IF
8333
8334
8335
8336
8337
8338 IF(ntmp==1)THEN
8339
8340 IF (imon>0) THEN
8342 ENDIF
8344 l1 = 1+nixs*numels + nsvois*nixs
8345 l2 = l1+6*numels10
8346 l3 = l2+12*numels20
8347
8348 IF (tt<=tstop.AND.ilastanim==3) THEN
8349 ilastanim=0
8350 END IF
8351 IF (tt<=tstop.AND.ilastdynain==3) THEN
8352 ilastdynain=0
8353 END IF
8354 IF (tt<=tstop.AND.ilasth3d==3) THEN
8355 ilasth3d=0
8356 END IF
8357
8358 IF ((tt>output%TANIM .AND. tt<=output%TANIM_STOP).AND.ilastanim==0) THEN
8359 ilastanim=3
8360 lastanimcycle=ncycle
8361 END IF
8362
8363 IF (tt>tstat.AND.ilastanim==0) THEN
8364 ilastanim=3
8365 laststatcycle=ncycle
8366 END IF
8367 IF (tt>dynain_data%TDYNAIN.AND.ilastdynain==0) THEN
8368 ilastdynain=3
8369 lastdyncycle=ncycle
8370 END IF
8371 IF (tt>h3d_data%TH3D.AND.ilasth3d==0) THEN
8372 ilasth3d=3
8373 lasth3dcycle=ncycle
8374 END IF
8375
8376 IF(debug(macro_debug_chksm) >0) THEN
8377 IF(mod(ncycle,debug(macro_debug_chksm)) == 0 ) THEN
8379 . numnodg, numnodm, nodes%A, nodes%ITAB,
8380 . nodes%WEIGHT, nodes%NODGLOB)
8381 ENDIF
8382 ENDIF
8383
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 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
8388 CALL assign_ptrx(ptrx, impbuf_tab%X_A,numnod)
8389 CALL assign_ptrx(ptrx_offset, xyz ,numnod)
8390 ELSE
8391 CALL assign_ptrx(ptrx, nodes%X,numnod)
8392 CALL assign_ptrx(ptrx_offset, nodes%X,numnod)
8393 ENDIF
8394
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 ,
8401 6 lpby ,
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 ,
8409 f igrnod ,subsets ,
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 ,
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,
8445 w mass0_start)
8446
8447 IF((mstop == 1 .AND. ictlstop == 0) .OR. mstop == 2 .OR. dt2<=zero)THEN
8449 1 nodes%V ,nodes%NODGLOB ,nodes%WEIGHT ,nodes%ITAB ,nodes%MS ,
8450 2 nodes%MS0 ,10 ,partsav ,ipart ,pm ,
8451 3 igeo )
8452 END IF
8453
8455
8457 IF(coupling%active) CALL coupling_advance(coupling,dt2)
8458
8459
8460
8461
8462
8463
8464
8465 IF (ilastanim==1) THEN
8466 ilastanim=2
8467 END IF
8468 IF (ilasth3d==1) THEN
8469 ilasth3d=2
8470 END IF
8471 IF(t1s==tt)ncycle=ncycle+1
8472
8473 IF ((irad2r==1).AND.(iresp==1)) THEN
8474 tt_dp=tt_dp+dt2
8475 tt=tt_dp
8476 ELSE
8477
8478 tt_double = tt_double + dt2
8479 IF (impl_s==1.OR.neig>0) THEN
8480 tt = tt + dt2
8481 ELSE
8482 IF(iresp == 1)THEN
8483 tt = sngl(tt_double)
8484 ELSE
8485 tt = tt_double
8486 ENDIF
8487 ENDIF
8488 ENDIF
8489
8490 IF (imadcpl /= 1) THEN
8491 IF (output%DTANIM>zero) THEN
8492 IF((output%NB_ANIM_FRAME >0.AND.ianim < output%NB_ANIM_FRAME).OR.output%NB_ANIM_FRAME ==0) THEN
8493 IF (tt>tstop.AND.ilastanim==0
8494 . .AND.abs((tt-output%TANIM)/output%DTANIM)<em03) THEN
8495 ilastanim=1
8496 output%TANIM=tt-em10
8497 END IF
8498
8499 IF (tt>tstop.AND.ilastanim==0.AND.
8500 . (ncycle-lastanimcycle)>=100) THEN
8501 ilastanim=1
8502 output%TANIM=tt-em10
8503 END IF
8504 ENDIF
8505 END IF
8506
8507 IF (dtstat>zero) THEN
8508 IF (tt>tstop.AND.ilastanim==0
8509 . .AND.abs((tt-tstat)/dtstat)<em03) THEN
8510 ilastanim=1
8511 tstat=tt-em10
8512 END IF
8513 IF (tt>tstop.AND.ilastanim==0.AND.
8514 . (ncycle-laststatcycle)>=100) THEN
8515 ilastanim=1
8516 tstat=tt-em10
8517 END IF
8518 END IF
8519
8520 IF (dynain_data%DTDYNAIN>zero) THEN
8521 IF (tt>tstop.AND.ilastdynain==0
8522 . .AND.abs((tt-dynain_data%TDYNAIN)/dynain_data%DTDYNAIN)<em03) THEN
8523 ilastdynain=1
8524 dynain_data%TDYNAIN=tt-em10
8525 END IF
8526 IF (tt>tstop.AND.ilastdynain==0.AND.
8527 . (ncycle-lastdyncycle)>=100) THEN
8528 ilastdynain=1
8529 dynain_data%TDYNAIN=tt-em10
8530 END IF
8531 END IF
8532
8533 IF (h3d_data%DTH3D>zero) THEN
8534 IF((h3d_data%NB_H3D_FRAME >0.AND.h3d_data%IH3D < h3d_data%NB_H3D_FRAME).OR.(h3d_data%NB_H3D_FRAME ==0)) THEN
8535 IF (tt>tstop.AND.ilasth3d==0
8536 . .AND.abs((tt-h3d_data%TH3D)/h3d_data%DTH3D)<em03) THEN
8537 ilasth3d=1
8538 h3d_data%TH3D=tt-em10
8539 END IF
8540 IF (tt>tstop.AND.ilasth3d==0.AND.
8541 . (ncycle-lasth3dcycle)>=100) THEN
8542 ilasth3d=1
8543 h3d_data%TH3D=tt-em10
8544 END IF
8545 ENDIF
8546 END IF
8547 ENDIF
8548
8549 IF (imon>0) THEN
8551 ENDIF
8552 ENDIF
8553 IF (impdeb==1.AND.imconv==0) THEN
8554 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
8555 IF ((irad2r==1).AND.(iresp==1)) THEN
8556 tt_dp=tt_dp-ttmp-dt2
8557 tt=tt_dp
8558 ELSE
8559
8560 tt_double = tt_double - ttmp - dt2
8561 IF (impl_s==1.OR.neig>0) THEN
8562 tt = tt - ttmp - dt2
8563 ELSE
8564 IF(iresp == 1)THEN
8565 tt = sngl(tt_double)
8566 ELSE
8567 tt = tt_double
8568 ENDIF
8569 ENDIF
8570
8571 ENDIF
8572 ENDIF
8573 ENDIF
8574
8575 CALL python_update_time(tt,dt2)
8576
8577
8578
8579
8580 IF (impl_s==1) THEN
8582 IF (imon>0)
CALL startime(timers,34)
8583
8584
8585
8586
8587
8588 IF (imp_chk > 0) THEN
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)
8610 mstop=2
8611 ELSEIF ((tt<=tstop.OR.(tt-tstop)<em10).AND.ibuck==0) THEN
8612
8613
8614
8615#if defined(MUMPS5)
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)
8646#else
8647 WRITE(6,*) __line__,"Fatal error: MUMPS required"
8648 CALL flush(6)
8650#endif
8651
8652 IF (nbuck>0) ibuck=1
8653 ELSEIF (ibuck>0) THEN
8654
8655#if defined(MUMPS5) && defined(DNC)
8656 IF (impl_s > 0 .AND. ismdisp >0) THEN
8657 call assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
8658 ELSE
8659 call assign_ptrx(ptrx,nodes%X,numnod)
8660 ENDIF
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,
8670 b ptrx, itsk ,
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 ,
8680 n dirul,
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 ,
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 )
8695#else
8696 WRITE(6,*) __line__,"Fatal error: MUMPS required"
8697 CALL flush(6)
8699#endif
8700
8701 IF (idyna==0.AND.itsk==0)
CALL cp_dm(numgeo,geo,igeo,dmcp,2)
8702 mstop=2
8703 ELSE
8704 IF (ilastanim/=1) THEN
8705 IF (iline/=1.AND.ispmd==0) THEN
8706 WRITE(iout,*)
8707 WRITE(istdo,*)
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
8712 ENDIF
8713 END IF
8714 tt =
min(tt,tstop+em10)
8715 dt2 = dt2t
8716 ENDIF
8717 IF (tt>tstop.AND.inconv==1) THEN
8718 CALL imp_restarcp(nodes%X,nodes%V,nodes%VR,geo,igeo,dmcp,impbuf_tab)
8719 ENDIF
8720
8722 IF (imon>0)
CALL stoptime(timers,34)
8723
8724
8725
8726 ELSEIF(ilag+iale+ieuler/=0)THEN
8727
8728
8729
8730
8731
8732 CALL python_begin_openmp(python)
8733
8734
8735
8736
8737
8738 IF (nsurf/=0) THEN
8739
8740
8741
8742
8743 IF(ispmd==0) THEN
8744 CALL srfvit(nodes%X,nodes%V,nodes%VR,nodes%A,nodes%AR,
8745 . npby ,rby ,nodes%MS ,nodes%IN ,
8746 . igrsurf ,bufsf)
8747 END IF
8748 ENDIF
8749
8750
8751 CALL python_end_openmp(python)
8752
8753
8754
8755 IF (nconld > 0) THEN
8757 . dpl0cld,vel0cld,nibcld,nconld,iroddl ,
8758 . numnod )
8759 ENDIF
8760
8761
8762
8763 IF(user_windows%HAS_USER_WINDOW /= 0)THEN
8764 IF(ispmd == 0) THEN
8765 DO i=1,numnod
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)
8769 ENDDO
8770 IF(iroddl/=0)THEN
8771 DO i=1,numnod
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)
8775 ENDDO
8776 ENDIF
8777 ENDIF
8778 ENDIF
8779
8780
8781
8782
8783 IF(imon>0)
CALL startime(timers,timer_integ)
8784
8785
8786
8787
8788
8789 CALL python_begin_openmp(python)
8790
8791 itsk = omp_get_thread_num()
8792 nodftsk = 1+itsk*numnod/ nthread
8793 nodltsk = (itsk+1)*numnod/nthread
8794
8795
8796
8798 1 nodes%A , nodes%AR , nodes%V , nodes%VR , fzero,
8799 2 nodes%ITAB,ale_connectivity%NALE )
8800
8801 IF (nloc_dmg%IMOD > 0) THEN
8802
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)
8806 ENDIF
8807
8808 IF(ialelag > 0) THEN
8809 CALL flow_velocity(ale_connectivity%NALE,aflow ,vflow , fzero ,
8810 2 nodftsk,nodltsk ,wflow, nodes%V,
ifoam)
8811 ENDIF
8812
8815 1 pinch_data%APINCH, pinch_data%VPINCH,
8816 2 nodftsk , nodltsk )
8817 ENDIF
8818
8819
8820
8821 CALL python_end_openmp(python)
8822
8823
8824 IF (loads%NINIVELT > 0) THEN
8825 IF (n2d == 0) THEN
8826 length = numels + nsvois
8827 ELSE
8828 length = numelq + numeltg
8829 ENDIF
8830 CALL inivel_start(
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,
8840 . nxframe, t_kin )
8841 output%TH%WFEXT = output%TH%WFEXT + t_kin
8842 END IF
8843
8844
8845
8846
8848
8849
8850
8851
8852
8853 IF(iplyxfem > 0) THEN
8854 nthold= nthread
8855 nthread=1
8856 call omp_set_num_threads(nthread)
8857 CALL python_begin_openmp(python)
8858
8859 itsk = omp_get_thread_num()
8860 nodftsk = 1+itsk*numnod/ nthread
8861 nodltsk = (itsk+1)*numnod/nthread
8862
8863 CALL ply_velocity(nodftsk,nodltsk,nplymax,inod_pxfem,numnod)
8864
8865 CALL python_end_openmp(python)
8866 nthread= nthold
8867 call omp_set_num_threads(nthread)
8868 ENDIF
8869
8870 IF(imon>0)
CALL stoptime(timers,timer_integ)
8871
8872 IF(iale+ieuler==0) THEN
8873
8874
8875
8876
8877 IF(imon>0)
CALL startime(timers,timer_integ)
8878
8879
8880
8881
8882
8883 CALL python_begin_openmp(python)
8884!$omp parallel private(itsk,nodftsk,nodltsk,nodft_nl,nodlt_nl)
8885
8886 itsk = omp_get_thread_num()
8887 nodftsk = 1+itsk*numnod/ nthread
8888 nodltsk = (itsk+1)*numnod/nthread
8889
8890 CALL depla(nodes%V ,nodes%D ,nodes%X ,nodes%VR ,nodes%DR ,
8891 2 nodes%XDP,nodes%DDP,numnod)
8892
8893 CALL deplafakeige(nodes%X ,nodes%V ,interfaces%INTBUF_TAB, kxig3d,
8894 2 ixig3d,igeo, knot, wige,
8895 3 knotlocpc,knotlocel)
8896
8897
8898 IF (nloc_dmg%IMOD > 0) THEN
8899
8900 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
8901 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
8903 ENDIF
8904
8905 IF(ialelag > 0) THEN
8906 CALL flow_depla(ale_connectivity%NALE, vflow ,dflow ,
8907 2 nodftsk,nodltsk)
8908 ENDIF
8909
8911 CALL deplapinch(pinch_data%VPINCH, pinch_data%DPINCH,
8912 2 pinch_data%XPINCH, nodftsk , nodltsk)
8913 ENDIF
8914
8915
8916 CALL python_end_openmp(python)
8917
8918 IF(imon>0)
CALL stoptime(timers,timer_integ)
8919
8920 ELSEIF(iale/=0)THEN
8921
8922
8923
8924
8925
8926
8927
8928
8929 CALL python_begin_openmp(python)
8930
8931
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 ,
8940 5 dt2save ,python ,
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)
8952
8953
8954 CALL python_end_openmp(python)
8955
8956
8957
8958
8959 ELSEIF(ilag==1)THEN
8960
8961 IF(imon>0)
CALL startime(timers,timer_integ)
8962
8963
8964
8965
8966
8967 CALL python_begin_openmp(python)
8968
8969
8970 itsk = omp_get_thread_num()
8971 nodftsk = 1+itsk*numnod/ nthread
8972 nodltsk = (itsk+1)*numnod/nthread
8973
8974 CALL euldx(nodes%V,nodes%D,nodes%X,nodes%DDP,ale_connectivity%NALE,nodftsk,nodltsk)
8975
8976
8977 CALL python_end_openmp(python)
8978
8979 IF(imon>0)
CALL stoptime(timers,timer_integ)
8980 ENDIF
8981 ENDIF
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
8987 CALL coupling_sync(coupling,dt2,nodes,coupling_positions)
8988 ENDIF
8989
8990 IF (vipercoupling) THEN
8991
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)
8995 ENDIF
8996
8997
8998
8999
9000
9001
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)
9006 ENDIF
9007
9008
9009
9010
9011 IF (icrack3d > 0) THEN
9012 IF (nlevset > 0)THEN
9013
9015 . iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,ixtg ,
9016 . iadc_crk ,iel_crk ,inod_crk ,elcutc ,nodedge ,
9018
9019 IF (nspmd > 1)
9020 .
CALL spmd_crk_adv(nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,inod_crk ,enrtag)
9021
9022
9023
9024
9025
9026 CALL python_begin_openmp(python)
9027
9028 itsk = omp_get_thread_num()
9029 nodftsk = 1+itsk*numnod/ nthread
9030 nodltsk = (itsk+1)*numnod/nthread
9031
9032 CALL upenr_crk(adsky_crk,inod_crk ,nodftsk ,nodltsk ,
9033 . nodenr ,enrtag ,nodlevxf ,procne_crk )
9034
9035 CALL python_end_openmp(python)
9036
9037
9039 . iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,ixtg ,
9040 . iadc_crk ,iel_crk ,inod_crk ,elcutc ,nodedge ,
9042 CALL python_begin_openmp(python)
9043
9044 itsk = omp_get_thread_num()
9045 nodftsk = 1+itsk*numnod/ nthread
9046 nodltsk = (itsk+1)*numnod/nthread
9047
9048 CALL crk_velocity(adsky_crk,inod_crk ,nodlevxf ,nodftsk ,nodltsk ,
9049 . nodes%X ,nodes%V ,nodes%VR ,nodes%A ,nodes%AR ,
9050 . nodes%ITAB )
9051
9052 CALL python_end_openmp(python)
9053
9054
9055
9056
9057
9060 . iadc_crk ,iel_crk ,inod_crk ,nodes%ITAB )
9061
9062
9063
9064 IF (nspmd > 1) THEN
9065 CALL spmd_exch_crkvel(nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,inod_crk ,nodes%ITAB ,
9066 . nodes%X ,nodes%V ,nodes%VR )
9067 ENDIF
9068
9069
9070
9071
9072 CALL python_begin_openmp(python)
9073
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 )
9078
9079 CALL python_end_openmp(python)
9080
9081
9082
9083
9084
9085
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 ,
9090 ELSE
9091
9092
9093
9094
9095 CALL python_begin_openmp(python)
9096
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 ,
9101 . nodlevxf )
9102
9103 CALL python_end_openmp(python)
9104 END IF
9105
9106 END IF
9107
9108
9109
9110
9111
9112 IF(nintstamp/=0)THEN
9114 . nodes%V ,nodes%VR ,nodes%MS ,nodes%X ,nodes%D ,
9115 . npby ,rby )
9116 END IF
9117
9118
9119 IF( multi_fvm%IS_INT18_LAW151 ) THEN
9120 IF(nspmd>1.AND. iparit/=0) THEN
9122 1 multi_fvm )
9123 ENDIF
9124
9125
9126
9127
9128 CALL python_begin_openmp(python)
9129
9130 itsk = omp_get_thread_num()
9132 1 igroups,iparg ,elbuf_tab,multi_fvm%FORCE_INT ,
9133 2 nodes%X, nodes%V,
9134 3 multi_fvm%X_APPEND,multi_fvm%V_APPEND,multi_fvm%MASS_APPEND,multi_fvm%KINET_APPEND)
9135
9136 CALL python_end_openmp(python)
9137
9138 ENDIF
9139 CALL python_begin_openmp(python)
9140
9141 itsk = omp_get_thread_num()
9143
9144 CALL python_end_openmp(python)
9145
9146
9147
9148
9149 IF( multi_fvm%IS_USED ) THEN
9150
9151 IF (debug(macro_debug_acc)==1) THEN
9152 IF (ispmd==0) THEN
9153 siz = numelsg
9154 ELSE
9155 siz = 0
9156 END IF
9157 IF ( ncycle>=debstartTHEN
9159 ENDIF
9160 ENDIF
9161 IF(debug(macro_debug_chksm) >0) THEN
9162 IF(mod(ncycle,debug(macro_debug_chksm)) == 0 ) THEN
9164 ENDIF
9165 ENDIF
9166 ENDIF
9167
9168
9169
9170
9171
9172 IF(interfaces%PARAMETERS%INTCAREA > 0) THEN
9173
9174 ithout = 0
9176 IF(ithout > 0) THEN
9178 . nodes%BOUNDARY_ADD,nodes%BOUNDARY ,nodes%WEIGHT ,ixq ,segquadfr ,
9179 . ixs(l1) ,interfaces%PARAMETERS%INTAREAN)
9180 ENDIF
9181
9182 ENDIF
9183
9184
9185 IF (int24use == 1)THEN
9186
9187
9188
9190 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,xyz,numnod,sh_offset_tab%nnsh_oset)
9191 ENDIF
9192
9193 IF (nspmd>1) THEN
9194 IF(imonm == 2)THEN
9196 CALL spmd_barrier()
9198 END IF
9199 IF(imon>0)
CALL startime(timers,13)
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
9206 l2 = l1+6*numels10
9207 l3 = l2+12*numels20
9208
9209 IF (sh_offset_tab%NNSH_OSET > 0) THEN
9210 CALL assign_ptrx(ptrx,xyz,numnod)
9211 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
9212 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
9213 ELSE
9214 CALL assign_ptrx(ptrx,nodes%X,numnod)
9215 ENDIF
9216
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)
9228 ENDIF
9229
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,
9235 * int24e2euse)
9236 IF (imon>0)
CALL stoptime(timers,timer_contfor)
9237 ENDIF
9238
9239 IF(nintstamp /= 0.AND.ftempvar21==1.AND.nspmd>1) THEN
9240 CALL spmd_i21tempcom(ipari,nodes%TEMP,interfaces%INTBUF_TAB,nsensor,sensors%SENSOR_TAB)
9241 ENDIF
9242
9243 IF(numfram/=0.AND.n2d==0)THEN
9244
9245
9246
9248 IF (imonm > 0)
CALL startime(timers,49)
9249 IF (impl_s >0) THEN
9250 CALL movfra_imp(xframe ,iframe ,nodes%X ,nodes%V ,nodes%A ,
9251 . nodes%VR ,nodes%AR ,nodes%D
9252 ELSE
9253 CALL movfra2(xframe ,iframe ,nodes%X ,nodes%V ,nodes%VR ,
9254 . nodes%D )
9255 END IF
9256 IF (imonm > 0)
CALL stoptime(timers,49)
9257 IF (imon>0)
CALL stoptime(timers,6)
9258 ENDIF
9259
9260 IF (glob_therm%IDT_THERM == 1.AND.(tstop-tt)<=em20)THEN
9261 mstop_dt_therm = 1
9262 ENDIF
9263
9264#if defined(MYREAL8) && !defined(WITHOUT_LINALG)
9265 300 CONTINUE
9266#endif
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277 stop_or_add_cycle = 0
9278 bool_restart=.false.
9279
9280
9281 IF (((tt>tstop).OR.(mstop_dt_therm==1)).AND.imconv==1) THEN
9282 stop_or_add_cycle = 1
9283 IF (irad2r==0) THEN
9284 bool_restart = ((ilastanim==0.OR.ilastanim==1.OR.ilastanim==3).AND.
restart_file==1)
9285 ENDIF
9286 ENDIF
9287
9288
9290 . (ncycle/ncrst)*ncrst==ncycle.AND. irad2r==0 .OR.mrest==1.OR.(wmcheck==1.AND.ncycle/=1) ) THEN
9291 stop_or_add_cycle = 0
9292 bool_restart = .true.
9293 ENDIF
9294
9295 IF(wmcheck==1)THEN
9296 IF(ispmd==0)THEN
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
9300 CLOSE(icheckd)
9301 ENDIF
9302 ENDIF
9303
9304 IF (bool_restart) THEN
9305 IF(imon>0)
CALL startime(timers,timer_io)
9306
9307 IF (glob_therm%IDT_THERM == 1)
CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0, 2)
9308
9309 CALL bcsn(nodes%ICODE,nodes%ICODT,nodes%ICODR,parts0,partsav)
9310
9311 IF (int24use == 1)THEN
9312
9313
9315 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9316 . xyz,numnod,sh_offset_tab%nnsh_oset)
9317 ENDIF
9318
9319
9320
9321 IF(nspmd>1)THEN
9322 l1 = 1+nixs*numels + nsvois*nixs
9323 l2 = l1+6*numels10
9324 l3 = l2+12*numels20
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 ,islen7t ,
9331 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9332 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse,
9333 8 forneqs ,multi_fvm,interfaces,sh_offset_tab%NNSH_OSET)
9334 END IF
9335
9336
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,
9342 * int24e2euse)
9343
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,
9347 * int24e2euse)
9348
9349 IF (imon>0)
CALL stoptime(timers,timer_contfor)
9350 ENDIF
9351
9352
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)
9355 ENDIF
9356 ich = 0
9357
9360
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 )
9372
9373
9374 IF (multirest >0)THEN
9375 IF (restsize > multirests(irprev))multirests(irprev)=restsize
9376 ELSE
9377 IF (restsize > restartfilesize) restartfilesize=restsize
9378 ENDIF
9379
9380 IF((iddw/=0).AND.(mstop/=0.OR.tt+dt2>=tstop)) THEN
9382 1 taille,iparg,
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)
9390 ENDIF
9391 ENDIF
9392
9393 IF(imon>0)
CALL stoptime(timers,timer_io)
9394 END IF
9395
9396 IF (stop_or_add_cycle==1) THEN
9397
9398
9399
9400
9401
9402
9403
9404
9405 IF (ilastanim==2.OR.irad2r==1)THEN
9406 mstop=2
9407 GOTO 500
9408 ENDIF
9409
9410 state_anim = 0
9411 IF(mstop_dt_therm==0) THEN
9412 IF (ilastanim==1) THEN
9413 state_anim = 1
9414 ELSEIF (ilastanim==0.OR.ilastanim==3) THEN
9415 state_anim = 2
9416 END IF
9417 ELSE
9418 state_anim = 2
9419 ENDIF
9420
9421 state_h3d = 0
9422 IF(mstop_dt_therm==0) THEN
9423 IF (ilasth3d==1) THEN
9424 state_h3d = 1
9425 ELSEIF (ilasth3d==0.OR.ilasth3d==3) THEN
9426 state_h3d = 2
9427 END IF
9428 ELSE
9429 state_h3d = 2
9430 ENDIF
9431 IF( state_anim == 1 .OR. state_h3d == 1 ) THEN
9433 GOTO 100
9434 ELSEIF( state_anim == 2 .OR. state_h3d == 2 ) THEN
9435 mstop=2
9436 GOTO 500
9437 ENDIF
9438 ENDIF
9439
9440
9441
9442
9443 IF(dt2<=zero) THEN
9444 WRITE(iout,*)' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9445 WRITE(istdo,*)' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9446
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.'
9456 ENDIF
9457
9458
9459 IF (int24use == 1) THEN
9460
9461
9463 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9464 1 xyz,numnod,sh_offset_tab%nnsh_oset)
9465 ENDIF
9466
9467 IF(nspmd>1)THEN
9468 l1 = 1+nixs*numels + nsvois*nixs
9469 l2 = l1+6*numels10
9470 l3 = l2+12*numels20
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)
9480 END IF
9481
9482 IF(coupling%active) THEN
9483 CALL coupling_ongoing(coupling, ongoing)
9484
9485 DO WHILE (ongoing)
9486 dt2 = huge(dt2)
9487 CALL coupling_advance(coupling,dt2)
9488 CALL coupling_ongoing(coupling, ongoing)
9489 END DO
9490 CALL coupling_finalize(coupling)
9491 ENDIF
9492
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
9517 IF(ALLOCATED(ipartl))DEALLOCATE(ipartl)
9518 IF(ALLOCATED(eminx))DEALLOCATE(eminx)
9519 IF(nadmesh/=0)THEN
9523 IF(idel7ng>=1) DEALLOCATE(tagtrimc,tagtrimtg)
9524 END IF
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)
9548 IF(imon>0) THEN
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)
9553 ELSE
9555 ENDIF
9557 RETURN
9558 ENDIF
9559
9560 500 CONTINUE
9561
9562 IF(mstop/=0) THEN
9563 parallel_section = 0
9564
9565 IF (irad2r==1) THEN
9566 DO itsk=1,nthread
9568 END DO
9569 ENDIF
9570
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
9574 l2 = l1+6*numels10
9575 l3 = l2+12*numels20
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)
9585 ENDIF
9586
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)
9603
9604 IF(ALLOCATED(cnel))DEALLOCATE(cnel)
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
9610
9611 IF(ALLOCATED(ipartl))DEALLOCATE(ipartl)
9612 IF(ALLOCATED(eminx))DEALLOCATE(eminx)
9613 IF(nadmesh/=0)THEN
9617 IF(idel7ng>=1) DEALLOCATE(tagtrimc,tagtrimtg)
9618 END IF
9619
9620
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)
9639
9640
9647
9648
9649 CALL pblast_deallocate(pblast)
9650
9651
9655
9656
9657 IF (nslipring > 0) THEN
9658 DO i=1,nslipring
9660 ENDDO
9662 ENDIF
9663 IF (nretractor > 0) THEN
9664 DO i=1,nretractor
9666 DO k=1,2
9668 DEALLOCATE(
retractor(i)%TABLE(k)%X(1)%VALUES)
9670 DEALLOCATE(
retractor(i)%TABLE(k)%Y%VALUES)
9672 ENDIF
9673 ENDDO
9674 ENDDO
9676 ENDIF
9677
9678
9680
9682 IF (multi_fvm%NS_DIFF) THEN
9683 CALL diffusion%TERMINATE_DIFFUSION()
9684 ENDIF
9685
9686
9687 IF(nebcs > 0)CALL segvar%destroy()
9688
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,
9711
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)
9719 IF(nrbe3>0)THEN
9720 DEALLOCATE(rbe3%RRBE3)
9721 IF (iparit>0) DEALLOCATE(rbe3%RRBE3_PON)
9722 END IF
9723 IF(impl_s>0.OR.neig>0)THEN
9725#if defined(MUMPS5)
9727#endif
9728 END IF
9729 IF(imon>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)
9734 ELSE
9736 ENDIF
9737 IF (glob_therm%ITHERM_FE > 0 )
CALL thermbilan(glob_therm)
9739
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)
9745
9746 DEALLOCATE(vrbym,vrrbym,arbym,arrbym)
9747 IF(iplyxfem > 0) THEN
9748 DO i=1,nplymax
9749 DEALLOCATE(
ply(i)%A)
9750 DEALLOCATE(
ply(i)%V)
9751 DEALLOCATE(
ply(i)%U)
9752 DEALLOCATE(
plysky(i)%FSKY)
9753 ENDDO
9754 ENDIF
9755 IF(intplyxfem > 0)
DEALLOCATE(
plyskyi%FSKYI)
9757 IF(ALLOCATED(noda_fext))DEALLOCATE(noda_fext)
9758 CALL output_deallocate_noda_pext(output%DATA)
9759 DEALLOCATE(npcont2)
9760
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)
9766
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)
9776 DEALLOCATE(igrouc)
9777 DEALLOCATE(igrounc)
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)
9785 RETURN
9786 ENDIF
9787
9789
9790
9791
9792
9793 GO TO 100
9794
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:'
9798 . ,2x,i5,2x,i8)
9799
9800 IF (vipercoupling) THEN
9801
9802 IF(ALLOCATED(viper%ITABM1))DEALLOCATE(viper%ITABM1)
9803 IF(ALLOCATED(viper%IXEM1))DEALLOCATE(viper%IXEM1)
9804 CLOSE(viper%id)
9805 ENDIF
9806
9807 RETURN
subroutine accdtdc(eftsk, eltsk, ienunl, alpha_dc, a, ms, itab)
subroutine accel1(a, ff, a2, a1, a0, as, vs, skew)
subroutine accele(a, ar, v, ms, in, size_nale, nale, ms_2d, size_npby, npby)
subroutine crk_accele(addcne_crk, inod_crk, nodlevxf, nodft, nodlt, nodenr, crksky, ms, in, itab)
subroutine accelepinch(apinch, ms, mspinch, stifpinch, nodft, nodlt, dtnod, dtfac)
subroutine admdiv(ixc, ipartc, ixtg, iparttg, ipart, itask, icontact, iparg, x, ms, in, rcontact, elbuf_tab, nodft, nodlt, igeo, ipm, sh4tree, padmesh, msc, inc, sh3tree, mstg, intg, ptg, acontact, pcontact, err_thk_sh4, err_thk_sh3, mscnd, incnd, pm, mcp, mcpc, mcptg, itherm_fe)
subroutine admerr(ixc, ixtg, x, iparg, elbuf_tab, ipart, ipartc, iparttg, err_thk_sh4, err_thk_sh3, iad_elem, fr_elem, weight, sh4tree, sh3tree, area_sh4, area_sh3, area_nod, thick_sh4, thick_sh3, thick_nod)
subroutine admfor0(ixc, ipartc, ixtg, iparttg, ipart, a, stifn, ar, stifr, x, sh4tree, sh3tree, stcont, fthe, condn, nodadt_therm, itherm_fe)
subroutine admgvid(iparg, elbuf_tab, fskyv, fsky, fthesky, iadc, iadtg, iflg, igrouc, ngrouc, condnsky, nodadt_therm)
subroutine admordr(sh4tree, sh3tree, ixc, ixtg)
subroutine admregul(ixc, ipartc, ixtg, iparttg, ipart, itask, iparg, x, ms, in, elbuf_tab, nodft, nodlt, igeo, ipm, sh4tree, msc, inc, sh3tree, mstg, intg, ptg, mscnd, incnd, pm, mcp, mcpc, mcptg, itherm_fe)
subroutine admvit(ixc, ipartc, ixtg, iparttg, ipart, itask, a, v, ar, vr, sh4tree, sh3tree, temp, itherm_fe)
subroutine agauge0(lgauge, gauge, x, ixc, igaup, ngaup)
subroutine alefvm_accele(a, ar, nodft, nodlt, nale)
subroutine alefvm_main(x, v, elbuf_tab, vr, ale_connect, iparg, ixs, nale, itask, nodft, nodlt, ipm, nv46, msnf)
subroutine alemain(timers, pm, geo, x, a, v, ms, wa, elbuf_tab, bufmat, partsav, tf, val2, veul, fv, stifn, fsky, eani, phi, fill, dfill, alph, skew, w, d, dsave, asave, dt2t, dt2save, xcell, iparg, npc, ixs, ixq, ixtg, iads, ifill, icodt, iskew, ims, iadq, neltst, ityptst, iparts, ipartq, itask, nodft, nodlt, nbrcvois, temp, fsavsurf, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, isizxv, iad_elem, fr_elem, fskym, msnf, ipari, segvar, itab, iskwn, diffusion, iresp, volmon, fsav, igrsurf, neltsa, ityptsa, weight, npsegcom, lsegcom, ipm, igeo, itabm1, lenqmv, nv46, aglob, gresav, grth, igrth, lgauge, gauge, mssa, dmels, igaup, ngaup, table, ms0, xdp, igrnod, sfem_nodvar, fskyi, isky, s_sfem_nodvar, intbuf_tab, ixt, igrv, agrav, sensors, lgrav, condnsky, condn, ms_2d, multi_fvm, igrtruss, igrbric, nloc_dmg, id_global_vois, face_vois, ebcs_tab, ale_connectivity, mat_elem, h3d_data, dt, output, need_comm_inter18, idtmins, idtmin, maxfunc, imon_mat, userl_avail, impl_s, idyna, python, matparam, glob_therm)
subroutine alemuscl_deallocate()
subroutine alesub2(nale, v, dsave, icodt, iskew, skew, asave, a, d, neltst, ityptst, itask, nodft, nodlt, dt2save, dt2t, neltsa, ityptsa, nelts, weight, fsky, fskyv)
subroutine alewdx(timers, geo, x, d, v, vr, w, wa, wb, skew, pm, xlas, ms, fsav, a, tf, rwbuf, dt2save, python, iparg, ixs, ixq, nodpor, iskew, icodt, elbuf_tab, npf, linale, nprw, las, ipari, nodft, nodlt, itask, iad_elem, fr_elem, nbrcvois, nbsdvois, lnrcvois, lnsdvois, weight, adsky, fsky, iads, fr_wall, nporgeo, procne, fr_nbcc, iadq, xdp, igrnod, dr, intbuf_tab, multi_fvm, ale_connectivity, ddp, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, xcell, xface, wfext)
subroutine alloc_elbuf_imp(elbuf_tab, elbuf_imp, ngroup, iparg)
subroutine asspar3(a, ar, itask, nodft, nodlt, stifn, stifr, itab, fsky, fskyv, isky, indsky, fskyi, adskyi, partft, partlt, partsav, ms, fthe, fthesky, ftheskyi, greft, grelt, gresav, itherm_fe, intheat)
subroutine asspar4(nodes, fsky, fskyv, adsky, fskym, msnf, isky, fskyi, fthe, fthesky, ftheskyi, nodft, nodlt, adskyi, partsav, partft, partlt, itask, greft, grelt, gresav, af, ffsky, msf, adsky_pxfem, inod_pxfem, fskyd, dmsph, condn, condnsky, condnskyi, ms_2d, icnds10, stifnd, forneqs, forneqsky, nfacnit, nodft_2, nodlt_2, fsky_l, glob_therm)
subroutine asspar5(nthread, numnod, nodft, nodlt, iroddl, npart, partft, partlt, a, ar, partsav, stifn, stifr, i8a, i8ar, i8stifn, i8stifr, viscn, i8viscn, greft, grelt, gresav, ngpe, nthpart)
subroutine asspar(nthread, numnod, nodft, nodlt, iroddl, npart, partft, partlt, a, ar, partsav, stifn, stifr, viscn, fthe, itherm_fe, nodadt_therm, stcnd, greft, grelt, gresav, ngpe, nthpart, ialelag, af, dmsph, condn, apinch, stifpinch)
subroutine asspar_crk(addcne_crk, inod_crk, crksky, nodft, nodlt, nodenr, nodlevxf, itab)
subroutine asspar_sub(a, fsky, addcne, nodft_2, nodlt_2, posi, sizesub, sizea)
subroutine asspar_sub_poff(a, nodft, nodlt, posi, sizea, nthread)
subroutine asspart(partft, partlt, partsav, greft, grelt, gresav)
subroutine assparxx(itsk, intlist, nbintc, ipari, nodadt_therm)
subroutine bcs10(nodft, nodlt, icodt, icodr, iskew, skew, a, ar, ms, v, vr)
subroutine bcscyc(ibcscyc, lbcscyc, skew, x, v, a, itab)
subroutine bcsdtth_copy(icodt, icodr, icodt0, icodr0, iflag)
subroutine bcsn(icode, icodt, icodr, parts0, partsav)
subroutine bmultn(fill, dfill, ims, nodft, nodlt)
subroutine cfield_1(python, icfield, fac, npc, tf, a, v, x, xframe, ms, sensor_tab, weight, ib, itask, iframe, nsensor, wfext)
subroutine check_ale_comm(iparg_l, elbuf_tab, global_active_ale_element, itherm)
subroutine check_edge_state(itask, m_edge_nb, s_edge_nb, m_edge_id, s_edge_id, shift_interface, intbuf_tab, newfront, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem, shoot_struct)
subroutine check_nan_acc(ncycle, nodes)
subroutine check_nodal_state(itask, itag, newfront, intbuf_tab, size_sec_node, shift_s_node, inter_sec_node, sec_node_id)
subroutine check_remote_surface_state(surfarce_nb, surface_id, shift_interface, intbuf_tab, ipari, iad_elem, shoot_struct)
subroutine check_surface_state(itask, surfarce_nb, surface_id, shift_interface, intbuf_tab, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem, shoot_struct)
subroutine chkload(ib, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, itag, itask, itagl, itab, nodes, addcnel, cnel, tagel, iparg, geo, ibufs, nindex, nindg, npresload, loadp_tagdel, iloadp, lloadp, iad_elem)
subroutine chkmsin(nodft, nodlt, itab, ms, in, negmas)
subroutine chkstfn3n(nodes, ipari, geo, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, itag, iparg, itask, newfront, itagl, ms, in, adm, itab, itabm1, addcnel, cnel, ind, nindex1, nindex2, nindex3, nindex4, tagel, int24use, ibufseglo, indseglo, ibufs, intbuf_tab, iad_elem)
subroutine tagoff3n(nodes, geo, ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, ixtg, itag, nodft, nodlt, iparg, ev, itask, ixtg1, iad_elem, fr_elem, itab, addcnel, cnel, kxsp, elbuf_tab, tagel, iexlnk, igrnod, dd_r2r, dd_r2r_elem, sdd_r2r_elem, idel7nok_sav, idel7nok_r2r, tagtrimc, tagtrimtg, s_elem_state, elem_state, shoot_struct, global_nb_elem_off)
subroutine chkstifn(ipari, ms, intbuf_tab)
subroutine cjoint(a, ar, v, vr, x, fsav, ljoint, ms, in, iadcj, fr_cj, tag_lnk_sms, itask)
subroutine clusterf(cluster, elbuf_tab, x, a, ar, skew, ixs, iparg, fcluster, mcluster, h3d_data, geo)
subroutine cndint(ixc, ipartc, ixtg, iparttg, ipart, itask, a, v, ar, vr, ms, in, nodft, nodlt, x, sh4tree, sh3tree, itab, stifn, stifr, mscnd, incnd)
subroutine cndordr(ipart, ipartc, iparttg, sh4tree, sh3tree)
subroutine collect(a, itab, weight, nodglob)
subroutine collectm(nodnx_sms, itab, weight, nodglob)
subroutine collectt(temp, itab, weight, nodglob)
subroutine convec(ibcv, fconv, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
subroutine crk_coord_ini(addcne_crk, inod_crk, nodft, nodlt, x, nodlevxf)
subroutine crk_velocity2(iparg, ngrouc, igrouc, elcutc, crkedge, nodedge, ixc, ixtg, xedge4n, xedge3n, iadc_crk, iel_crk, inod_crk, itab)
subroutine crk_zero_accel(addcne_crk, inod_crk, nodft, nodlt, nodlevxf)
subroutine crk_zero_fsky(crksky, addcne_crk, inod_crk, nodft, nodlt, nodlevxf)
subroutine crk_velocity(addcne_crk, inod_crk, nodlevxf, nodft, nodlt, x, v, vr, a, ar, itab)
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
subroutine damping44(dim, v, vr, a, ar, ms, in, dampr, damp, igrnod, weight, tagslv_rby, wfext)
subroutine damping51(dim, v, vr, a, ar, ms, in, dampr, damp, igrnod, weight, tagslv_rby, skew, icontact, i_damp_rdof_tab, ndamp_vrel, id_damp_vrel, fr_damp_vrel, iparit, ispmd, wfext)
subroutine dealloc_shoot_inter(shoot_struct)
subroutine desacti(ixs, ixq, ixc, ixp, ixt, ixr, ixtg, iparg, iactiv, nsensor, sensor_tab, fsky, x, elbuf_tab, ibcv, fconv, ibcr, fradia, igroups, factiv, temp, mcp, pm, mcp_off, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, glob_therm)
subroutine disp_vel_saved_cload(v, d, vr, dr, ib, dpl0cld, vel0cld, nibcld, nconld, iroddl, numnod)
subroutine depla(v, d, x, vr, dr, xdp, ddp, numnod)
subroutine deplafakeige(x, v, intbuf_tab, kxig3d, ixig3d, igeo, knot, wige, knotlocpc, knotlocel)
subroutine deplapinch(vpinch, dpinch, xpinch, nodft, nodlt)
subroutine dtnoda(nodft, nodlt, neltst, ityptst, itab, ms, in, stifn, stifr, dt2t, dmast, dinert, adt, adm, imsch, weight, a, ar, igrnod, nodadt_therm, adi, rbym, arby, arrby, weight_md, mcp, mcp_off, condn, nale, h3d_data)
subroutine dtnodamp(itab, ms, in, stifn, stifr, dt2t, weight, igrnod, dampr, istop, i_damp_rdof_tab, icontact, ixc, x)
subroutine dtnodams(nodft, nodlt, neltst, ityptst, itab, ms, in, stifn, stifr, dt2t, dmast, dinert, adt, adm, imsch, weight, a, ar, igrnod, adi, rbym, arby, arrby, ismsch, nodnx_sms, diag_sms, npby, tagmsr_rby_sms, h3d_data)
subroutine dtnodarayl(ms, in, stifn, stifr, dt2t, igrnod, dampr)
subroutine ebcclap(v, a, fv, ebcs_tab)
void sav_buf_point(int *buf, int *i)
subroutine sms_ini_err(nprw, lprw, kinet)
subroutine sms_ini_rby(kinet, nprw, lprw, npby, lpby, tagmsr_rby_sms, tagslv_rby_sms)
subroutine sms_ini_int(ipari, intbuf_tab, iad_elem, fr_elem, intlist, nbintc)
subroutine sms_ini_kin_2(ilink, rlink, nnlink, lnlink, tag_lnk_sms, fr_ll, fr_rl, weight, itab, ljoint, iadcj, fr_cj, nprw, lprw, fr_wall, nrwl_sms, iad_elem, fr_elem)
subroutine sms_ini_part(igrpart, tagprt_sms)
subroutine soltosphf(a, spbuf, ixs, kxsp, ipartsp, nod2sp, irst, ngrounc, igrounc, iparg, stifn, sol2sph, sph2sol, elbuf_tab, itask, nodft, nodlt, isky, fskyi, igeo, sol2sph_typ)
subroutine cumultime_mp(taille, iparg, ixc, ixq, ixt, ixp, ixtg, ixr, ixs, kxig3d, ipm, igeo, geo, poin_ump, cputime_mp, nbr_gpmp, cputime_mp_glob, tab_ump, pm, bufmat, tabmp_l, tab_mat)
subroutine printimeg(iparg, pm, ipm, ixc, ixtg, ixs)
subroutine add_elapsed_time_mon_off(t)
subroutine err_thk(ixc, ixtg, iparg, iad_elem, fr_elem, weight, x, elbuf_tab, ipart, ipartc, iparttg, itask, nodft, nodlt, err_thk_sh4, err_thk_sh3, sh4tree, sh3tree, area_sh4, area_sh3, area_nod, thick_sh4, thick_sh3, thick_nod)
subroutine euldx(v, d, x, ddp, nale, nodft, nodlt)
subroutine fail_wind_frwave_init(ngroup)
subroutine fequilibre(a, fzero, ixc, ixtg)
subroutine find_dt_for_targeted_added_mass(ms, stifn, dtsca, igrp_usr, target_dt, percent_addmass, percent_addmass_old, totmas, weight, igrnod, icnds10)
subroutine find_edge_inter(itab, shoot_struct, ixs, ixs10, ixc, ixtg, ixq, ixt, ixp, ixr, geo, ngroup, igroups, iparg)
subroutine find_surface_inter(itab, shoot_struct, ixs, ixs10, ixc, ixtg, ngroup, nparg, igroups, iparg)
subroutine fixfingeo(python, nodes, ibfv, npc, tf, vel, sensor_tab, cptreac, nodreac, nodnx_sms, nsensor, fthreac, wfext)
subroutine fixflux(ibfflux, fbfflux, npc, tf, x, ixs, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
subroutine fixtemp(python, ibft, val, temp, npc, tf, nsensor, sensor_tab, glob_therm, snpc)
subroutine fixvel(ibfv, a, v, npc, tf, vel, ms, x, skew, ar, vr, in, nsensor, sensor_tab, weight, depla, rby, iframe, xframe, dr, nodnx_sms, nodes, tt_double, depla_double, python, wfext)
subroutine flow0(output, iflow, rflow, wiflow, wrflow, x, v, a, npc, tf, sensor_tab, nbgauge, lgauge, gauge, nsensor, igrv, agrv, nfunct, python, wfext)
subroutine flow1(iflow, rflow, nbgauge, a)
subroutine flow_accele(nale, ms, a, v, nodft, nodlt)
subroutine flow_depla(nale, v, d, nodft, nodlt)
subroutine flow_velocity(nale, a, v, fzero, nodft, nodlt, w, vs, ifoam)
subroutine forani1(output, a, nfia, nfea, nfoa, nodft, nodlt, fext, h3d_data)
subroutine forani2(output, a, nodft, nodlt, h3d_data)
subroutine forani3(output, a, ms, nodft, nodlt, h3d_data)
subroutine forcefingeo(ibfv, npc, tf, a, v, x, vel, sensor_tab, fsky, fext, itabm1, h3d_data, nsensor, python, wfext, nodes)
subroutine forcepinch(ib, fac, npc, tf, a, v, x, skew, ar, vr, nsensor, sensor_tab, weight, tfexc, iadc, fsky, fskyv, fext, h3d_data, apinch, vpinch, python, wfext)
subroutine forint(timers, python, pm, geo, x, a, ar, v, vr, ms, in, w, elbuf, wa, val2, veul, fv, stifn, stifr, fsky, tf, bufmat, partsav, d, dr, eani, elbuf_tab, tani, fani, fsav, sensors, nloc_dmg, skew, anin, dt2t, bufgeo, itab, iads, iadq, iadt, iadp, mat_elem, iadr, iparg, ale_connect, npc, ixs, ixq, ixt, ixp, ixr, neltst, ipari, ityptst, nstrf, ipart, iparts, ipartq, ipartt, ipartp, ipartr, ipartur, fr_wave, rby, secfcum, agrav, igrv, lgrav, ixs10, ixs20, iads10, iads20, ixs16, iads16, w16, fskym, msnf, igeo, ipm, xsec, itask, temp, fthe, fthesky, igrounc, ngrounc, gresav, grth, igrth, xdp, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, table, vf, af, df, wf, ffsky, afglob, nbsdvois, nercvois, nesdvois, lercvois, lesdvois, phi1, phi2, msf, nodft, nodlt, flg_kj2, por, icontact, ifoam, sfem_nodvar, kxig3d, ixig3d, knot, wige, condn, condnsky, s_sfem_nodvar, tagprt_sms, itagnd, ms_2d, nale, stressmean, knotlocpc, knotlocel, subset, flag_slipring_update, flag_retractor_update, h3d_data, ifthe, icondn, dt, output, sbufmat, snpc, stf, nodadt, dtfac1, dtmin1, idtmin, iout, istdo, idtmins, dtfacs, nsvois, iresp, maxfunc, userl_avail, glob_therm, imon_mat, dtmins, sanin, ngrth, nelem)
subroutine forintc(timers, pm, geo, x, a, ar, v, vr, ms, in, nloc_dmg, wa, stifn, stifr, fsky, crksky, tf, bufmat, partsav, d, mat_elem, dr, eani, tani, fani, fsav, sensors, skew, failwave, dt2t, thke, bufgeo, iadc, iadtg, iparg, npc, ixc, ixtg, neltst, ipari, ityptst, nstrf, ipart, ipartc, iparttg, secfcum, fsavd, group_param_tab, fzero, ixtg1, iadtg1, igeo, ipm, madfail, xsec, itask, mcp, temp, fthe, fthesky, ms_ply, zi_ply, inod_pxfem, xedge4n, xedge3n, iel_pxfem, iadc_pxfem, igrouc, ngrouc, gresav, grth, igrth, mstg, dmeltg, msc, dmelc, table, knod2elc, ptg, msz2, inod_crk, iel_crk, iadc_crk, elcutc, nodenr, ibordnode, nodedge, crknodiad, elbuf_tab, xfem_tab, condn, condnsky, crkedge, stack, itab, glob_therm, drape_sh4n, drape_sh3n, subset, xdp, vpinch, apinch, stifpinch, drapeg, output, dt, snpc, stf, userl_avail, maxfunc, sbufmat)
subroutine forintp(timers, pm, geo, x, a, v, ms, w, elbuf_tab, wa, fv, stifn, pld, bufmat, partsav, nloc_dmg, fsav, dt2t, iads, iparg, npc, neltst, ityptst, ipart, itab, isky, bufgeo, fskyi, xframe, kxsp, ixsp, nod2sp, ipartsp, spbuf, ispcond, ispsym, xspsym, vspsym, wasph, lprtsph, lonfsph, waspact, isphio, vsphio, sphveln, itask, ipm, gresav, grth, igrth, table, lgauge, gauge, ngrounc, igrounc, ixs, irst, sol2sph, sph2sol, fskyv, fsky, igeo, temp, fthe, ftheskyi, sphg_f6, wsmcomp, sol2sph_typ, mat_elem, output, sph_iord1, snpc, stf, sbufmat, idtmins, nsvois, iresp, maxfunc, imon_mat, userl_avail, impl_s, idyna, dt, glob_therm, sph_work, wfext, sensors)
subroutine forints(pm, geo, x, a, ar, v, vr, ms, in, w, elbuf, val2, veul, fv, stifn, stifr, fsky, tf, bufmat, partsav, fani, fsav, skew, dt2t, iads, iparg, npc, ixs, neltst, ityptst, ipart, iparts, itab, fskyi, bufgeo, kxx, ixx, isky, ipartx, gresav, grth, igrth, elbuf_tab)
subroutine fvbag0(output, monvol, volmon, x, sensor_tab, v, a, npc, tf, nsensor, fsav, ifvmesh, icontact, lgauge, gauge, igeo, geo, pm, ipm, iparg, igrouptg, igroupc, elbuf_tab, fext, flag, h3d_data, itab, weight, wfext, python)
subroutine fvcopy(monvol)
subroutine fv_switch_crit(monvol, check_npolh)
subroutine fvrezone0(monvol, x)
subroutine fvstats(monvol)
subroutine fvupd0(monvol, x, v, volmon, smonvol, svolmon)
subroutine fxbyfor(output, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, a, ar, x, fxbmvn, fxbmcd, fxbse, fxbsv, fxbelm, fxbsig, elbuf, partsav, elbuf_tab, fsav, fxbfp, fxbefw, fxbfc, d, dt2t, ityptst, neltst, fxbgrvi, fxbgrvr, igrv, npc, tf, fxbgrp, fxbgrw, iparg, nsensor, sensor_tab, iad_elem, fr_elem, agrv, python)
subroutine fxbypid(output, iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, fxbipm, fxbnod, onof, itag, onfelt, elbuf_str)
subroutine fxbyvit(output, fxbipm, fxbnod, fxbmod, fxbglm, fxblm, fxbmvn, fxbmcd, fxbse, fxbsv, fxbvit, fxbacc, fxbrpm, v, vr, a, ar, ms, in, weight, fsav, fxbfc, fxbedp, iad_elem, fr_elem)
subroutine fxgrvcor(fxbipm, fxbgrvi, a, igrv, agrv, npc, tf, ms, v, skew, fxbgrw, iad_elem, fr_elem, wfext, python)
subroutine gravit(igrv, agrv, npc, tf, a, v, x, skew, ms, sensor_tab, weight, ib, itask, nsensor, python, wfext)
subroutine gravit_fvm_fem(igrv, agrv, npc, tf, a, v, x, skew, ms, sensor_tab, weight, ib, itask, nale, nsensor, python, wfext)
subroutine i14ist(ipari, intbuf_tab, igrsurf, bufsf)
subroutine i14wfs(output, ipari, intbuf_tab, igrsurf, fsav)
subroutine i18main_kine_2(output, ipari, intbuf_tab, x, v, a, iskew, skew, lcod, wa, ms, itab, fsav, jtask, kinet, stifn, mtf, cand_sav, fcont, int18add, iad_elem, fr_elem, h3d_data)
subroutine i18main_kine_1(output, ipari, intbuf_tab, x, v, a, iskew, skew, lcod, wa, ms, itab, jtask, kinet, stifn, mtf, cand_sav, int18add, iad_elem, fr_elem, tagpene, h3d_data, multi_fvm, ale_ne_connect, xcell, xcell_remote)
subroutine spmd_i24_prepare(mode, ipari, intbuf_tab, iad_elem, fr_elem, intlist, nbintc, iad_i24, sfr_i24, fr_i24, i24maxnsne)
subroutine i24e2e_fictive_nodes_update(intlist, nbintc, ipari, intbuf_tab, x, v, ms, itab, xyz, numnod, nsh_offset)
subroutine i24nitschfor3(ipari, intbuf_tab, iparit, stressmean, intlist, nbintc, x, iads, forneqs, forneqsky, itab, ixs, iads10, iads20, iads16, nfacnit)
subroutine i24pxfem(ipari, intbuf_tab, wagap, iad_elem, fr_elem)
subroutine spmd_i25_prepare(mode, ipari, intbuf_tab, iad_elem, fr_elem, intlist, nbintc, iad_i25, sfr_i25, fr_i25)
subroutine imp_buck(pm, geo, ipm, igeo, elbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, iparg, tf, npc, fr_wave, w16, bufmat, thke, bufgeo, nsensor, sensor_tab, rby, skew, wa, icodt, icodr, iskew, ibfv, vel, lpby, npby, itab, weight, ms, in, ipari, intbuf_tab, x, itask, cont, icut, xcut, fint, fext, fopt, anin, nstrf, rwbuf, nprw, tani, dd_iad, eani, ipart, nom_opt, igrsurf, bufsf, idata, rdata, kxx, ixx, kxsp, ixsp, nod2sp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, v, a, graphe, partsav, xframe, dirul, fncont, ftcont, temp, sh4tree, sh3tree, err_thk_sh4, err_thk_sh3, iframe, lprw, elbuf_tab, fsav, fsavd, rwsav, ar, irbe3, lrbe3, frbe3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, frwl6, ibcl, forc, irbe2, lrbe2, iad_rbe2, fr_rbe2, weight_md, cluster, fcluster, mcluster, xfem_tab, ale_connect, w, nv46, nercvois, nesdvois, lercvois, lesdvois, crkedge, stack, dimfb, fbsav6, stabsen, tabsensor, indx_crk, xedge4n, xedge3n, sph2sol, stifn, stifr, drape_sh4n, drape_sh3n, h3d_data, subset, igrnod, fcont_max, fncontp2, ftcontp2, nddl0, nnzk0, impbuf_tab, drapeg, matparam_tab, glob_therm, output)
subroutine imp_sol_init(geo, npby, lpby, itab, ipari, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, elbuf, nint7, nbintc, x, dmcp, fr_elem, iad_elem, fr_i2m, iad_i2m, nprw, num_imp1, num_impl, monvol, igrsurf, fr_mv, ipm, igeo, iad_rby, fr_rby, sh4tree, sh3tree, irbe3, lrbe3, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, ibfv, vel, elbuf_tab, iframe, intbuf_tab, nddl0, nnzk0, impbuf_tab)
subroutine imp_restarcp(x, v, vr, geo, igeo, dmcp, impbuf_tab)
subroutine imp_solv(output, timers, python, icode, iskew, iskwn, ipart, ixtg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg1, itab, itabm1, npc, ibcl, ibfv, sensor_tab, nnlink, lnlink, iparg, igrv, ipari, intbuf_tab, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, icodt, icodr, isky, adsky, iads_f, ilink, llink, weight, itask, ibvel, lbvel, fbvel, x, d, v, vr, dr, thke, damp, ms, in, pm, skews, geo, eani, bufmat, bufgeo, bufsf, tf, forc, vel, fsav, agrv, fr_wave, parts0, elbuf, rby, rivet, fr_elem, iad_elem, wa, a, ar, stifn, stifr, partsav, fsky, fskyi, iframe, xframe, w16, iactiv, fskym, igeo, ipm, wfext, nodft, nodlt, nint7, num_imp, ns_imp, ne_imp, ind_imp, it, rwbuf, lprw, fr_wall, nbintc, intlist, fopt, rwsav, fsavd, graphe, fac_k, ipiv_k, nkcond, nsensor, monvol, igrsurf, fr_mv, volmon, dirul, nodglob, mumps_par, cddlp, isendto, irecvfrom, newfront, imsch, i2msch, isizxv, ilenxv, islen7, irlen7, islen11, irlen11, islen17, irlen17, irlen7t, islen7t, kinet, num_imp1, temp, dt2prev, waint, lgrav, sh4tree, sh3tree, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, irbe3, lrbe3, frbe3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, frwl6, irbe2, lrbe2, intbuf_tab_c, ikine, diag_sms, icfield, lcfield, cfield, count_remslv, count_remslve, elbuf_tab, elbuf_imp, xdp, weight_md, stack, dimfb, fbsav6, stabsen, tabsensor, drape_sh4n, drape_sh3n, h3d_data, multi_fvm, igrbric, igrsh4n, igrsh3n, igrbeam, forneqs, maxdgap, nddl0, nnzk0, it_t, impbuf_tab, cptreac, fthreac, nodreac, drapeg, interfaces, th_surf, dpl0cld, vel0cld, snpc, stf, glob_therm, wfext_md)
subroutine imp_fanie(output, fext, nfia, nfea, nodft, nodlt, h3d_data)
subroutine imp_fanii(output, fint, nfia, nodft, nodlt, h3d_data)
subroutine imp_fout(output, a, ar, nfia, nfea, nodft, nodlt, h3d_data, impbuf_tab)
subroutine deallocm_imp(mumps_par)
subroutine dealloc_impbuf(impbuf_tab)
subroutine re2int5(nt_imp, numimp, ns_imp, ne_imp, numimpl, ipari, nt_imp0)
subroutine imp_chkm(timers, python, icode, iskew, iskwn, ipart, ixtg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg1, itab, itabm1, npc, ibcl, ibfv, sensor_tab, nnlink, lnlink, iparg, igrv, ipari, intbuf_tab, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, icodt, icodr, isky, adsky, iads_f, ilink, llink, weight, itask, ibvel, lbvel, fbvel, x, d, v, vr, dr, thke, damp, ms, in, pm, skews, geo, eani, bufmat, bufgeo, bufsf, tf, forc, vel, fsav, agrv, fr_wave, parts0, elbuf, rby, rivet, fr_elem, iad_elem, nsensor, wa, a, ar, stifn, stifr, partsav, fsky, fskyi, iframe, xframe, w16, iactiv, fskym, igeo, ipm, wfext, nodft, nodlt, nint7, num_imp, ns_imp, ne_imp, ind_imp, it, rwbuf, lprw, fr_wall, nbintc, intlist, fopt, rwsav, fsavd, dirul, lgrav, irbe3, lrbe3, frbe3, frwl6, irbe2, lrbe2, icfield, lcfield, cfield, elbuf_tab, weight_md, stack, dimfb, fbsav6, stabsen, tabsensor, drape_sh4n, drape_sh3n, h3d_data, nddl0, nnzk0, impbuf_tab, cptreac, fthreac, nodreac, drapeg, th_surf, dpl0cld, vel0cld, snpc, stf, wfext_md, igrsurf)
subroutine re2int7(nt_imp, numimp, ns_imp, ne_imp, ind_imp, numimpl, ipari, nt_imp0)
subroutine spmd_mumps_ini(mumps_par, sym)
subroutine thickvar(elbuf_tab, iparg, thksh4_var, thksh3_var, thknod, ixc, ixtg)
subroutine init_i25_edge(nledge, ninter, npari, ipari, intbuf_tab)
subroutine init_interf_sorting_strategy(intbuf_tab, ninter)
subroutine init_nodal_state(ipari, shoot_struct, intbuf_tab, iad_elem, fr_elem, itab, nodes, geo, addcnel, cnel, ixs, ixc, ixt, ixp, ixr, ixtg, size_addcnel, size_cnel, numelsg, numelqg, numelcg, numeltrg, numelpg, numelrg, numeltgg, ixs10)
subroutine init_trim(ninter)
subroutine inixfem(elbuf_tab, xfem_tab, iparg, ixc, ixtg, ngrouc, igrouc, elcutc, iadc_crk, iel_crk, inod_crk, addcne_crk, x, knod2elc, nodedge, crknodiad, iad_edge, fr_edge, fr_nbedge, nodlevxf, crkedge, xedge4n, xedge3n)
subroutine int18_alloc(number_inter18, inter18_list, multi_fvm, ipari, xcell_remote, nspmd)
subroutine int18_law151_omp_accumulation(multi_fvm)
subroutine int18_law151_update(itask, multi_fvm, igrbric, ipari, ixs, igroups, iparg, elbuf_tab, force_int, x, v, ms, kinet, x_append, v_append, mass_append, kinet_append)
subroutine intal1(output, ipari, x, v, a, iskew, skew, lcod, wa, ms, itab, fsav, intbuf_tab, fcont, fncont, h3d_data)
subroutine inter_nodal_areas(ixs, ixc, ixtg, fasolfr, x, iad_elem, fr_elem, weight, ixq, segquadfr, ixs10, intarean)
subroutine inter_struct_init(inter_struct, sort_comm)
subroutine intfop1(output, ipari, x, a, icodt, fsav, wa, v, ms, dt2t, neltst, ityptst, itab, stifn, npc, tf, fskyi, isky, vr, fcont, in, igrsurf, bufsf, fncont, ftcont, icontact, rcontact, num_imp, ns_imp, ne_imp, nt_imp, sensor_tab, intbuf_tab, h3d_data, nsensor)
subroutine intfop2(output, timers, ipari, x, a, igroups, ale_connectivity, icodt, fsav, v, ms, dt2t, neltst, ityptst, itab, stifn, tf, fskyi, isky, vr, fcont, secfcum, jtask, niskyfi, kinet, newfront, nstrf, icontact, viscn, xcell, num_imp, ns_imp, ne_imp, ind_imp, nt_imp, fr_i18, igrbric, eminx, ixs, ixs16, ixs20, fncont, ftcont, iad_elem, fr_elem, rcontact, acontact, pcontact, temp, fthe, ftheskyi, iparg, nsensor, pm, intstamp, weight, niskyfie, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, mskyi_sms, iskyi_sms, nodnx_sms, int18add, fcontg, fncontg, ftcontg, nodglob, ms0, npc, wa, sensor_tab, qfricint, ncont, indexcont, tagcont, inod_pxfem, ms_ply, wagap, elbuf_tab, condn, condnskyi, nv46, sfbsav6, fbsav6, nodadt_therm, theaccfact, isensint, nisubmax, nb25_candt, nb25_impct, nb25_dst1, nb25_dst2, ixig3d, kxig3d, wige, knot, igeo, multi_fvm, h3d_data, pskids, t2main_sms, forneqs, knotlocpc, knotlocel, apinch, stifpinch, t2fac_sms, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, dgaploadint, s_loadpinter, interfaces, xcell_remote)
subroutine intfop8(output, ipari, x, a, icodt, fsav, wa, v, ms, dt2t, neltst, ityptst, itab, stifn, npc, tf, fskyi, isky, vr, fcont, in, bufsf, fncont, nsensor, ftcont, icontact, rcontact, num_imp, ns_imp, ne_imp, nt_imp, sensor_tab, intbuf_tab, h3d_data, pskids, tagncont, kloadpinter, loadpinter, loadp_hyd_inter)
subroutine intstamp_ass(intstamp, ms, in, a, ar, stifn, stifr, weight, wfext)
subroutine intstamp_dt(intstamp, ipari, neltst, ityptst, dt2t, nodnx_sms, diag_sms, ms, v, stifn, stifr)
subroutine intstamp_init(intstamp, icodr)
subroutine intstamp_move(intstamp, npc, tf, skew, nodnx_sms, v, vr, ms, x, d, npby, rby)
subroutine intti1(nodes, ipari, x, v, a, vr, ar, wa, ms, in, weight, stifn, stifr, khie, itab, fr_i2m, iad_i2m, addcni2, procni2, iadi2, i2msch, dmast, adm, skew, i2size, fr_nbcci2, adi, igeo, bufgeo, fsav, npf, tf, fncont, iad_elem, fr_elem, nodnx_sms, dmint2, pdama2, nb_fri2m, fr_loci2m, dt2t, neltst, ityptst, intbuf_tab, temp, mcp, fthe, condn, glob_therm, h3d_data, t2fac_sms, fncontp, ftcontp)
subroutine intti2(ipari, x, v, a, vr, ar, khie, ms, in, weight, wa, skew, intbuf_tab)
subroutine inttri(output, timers, ipari, x, w, errors, v, ms, in, iad_elem, fr_elem, vr, isendto, irecvfrom, newfront, itask, wag, dt2t, itab, neltst, ityptst, weight, intlist, nbintc, kinet, dretri, islen7, irlen7, islen11, irlen11, temp, igrbric, igrsh3n, eminx, ixs, ixs16, ixs20, islen17, irlen17, irlen7t, islen7t, num_imp, ind_imp, intstamp, thknod, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, renum, nsnfiold, xslv, xmsr, vslv, vmsr, size_t, nodnx_sms, dxancg, ikine, diag_sms, count_remslv, count_remslve, ale_connectivity, ixtg, sensors, delta_pmax_gap, intbuf_tab, delta_pmax_gap_node, iad_frnor, fr_nor, nb25_candt, nb25_impct, nb25_dst1, nb25_dst2, intlist25, iad_fredg, fr_edg, main_proc, nativ_sms, i_opt_stok, multi_fvm, iparg, elbuf_tab, h3d_data, t2main_sms, lskyi_sms_new, forneqs, int7itied, idel7nok_sav, maxdgap, t2fac_sms, icodt, iskew, fskyn25, addcsrect, procnor, inter_struct, sort_comm, renum_siz, nodnx_sms_siz, temp_siz, interfaces, glob_therm, component)
subroutine joint_block_stiffness(itab, ms, in, stifn, stifr, weight, ixr, ipart, x, ipartr, igeo, geo, npby, iparg, elbuf_tab, dmas, diner)
subroutine joint_elem_timestep(ms, in, stifn, stifr, ixr, ipart, ipartr, igeo, geo, npby, iparg, elbuf_tab, dt2t, neltst, ityptst, nrbody, itab)
subroutine kine_seatbelt_force(a, stifn, flag_slipring_update, flag_retractor_update)
subroutine kine_seatbelt_vel(a, v, x, xdp)
subroutine lag_multp(output, ipari, x, a, wat, v, ms, in, vr, wag, itab, ixs, ixs20, ixs16, fani, fsav, skew, ar, lambda, lagbuf, ibcslag, ixs10, gjbufi, gjbufr, ibmpc, rbmpc, npbyl, lpbyl, ibfv, vel, npf, tf, newfront, icontact, rwbuf, lprw, nprw, rbyl, d, dr, kinet, nodglob, weight, nbncl, nbikl, nbnodl, nbnodlr, fr_lagf, llagf, iad_elem, fr_elem, intbuf_tab, h3d_data, python, nodes)
subroutine lag_mult(output, ipari, x, a, wat, v, ms, in, vr, itask, wag, itab, ixs, ixs20, ixs16, igrnod, fani, fsav, skew, ar, lambda, lagbuf, ibcslag, ixs10, gjbufi, gjbufr, ibmpc, rbmpc, npbyl, lpbyl, ibfv, vel, npf, tf, newfront, icontact, rwbuf, lprw, nprw, rbyl, d, dr, kinet, nsensor, sensor_tab, intbuf_tab, h3d_data, igrbric, python, nodes)
subroutine load_pressure(iloadp, loadp, lloadp, npc, tf, a, v, x, skew, sensor_tab, iadc, fsky, fext, tagncont, nsensor, loadp_hyd_inter, h3d_data, python, npresload, loadp_tagdel, th_surf, pblast, wfext)
subroutine manctr(output, sensors, h3d_data)
subroutine merge(x, itab, itabm1, cmerge, imerge, imerge2, iadmerge2, nmerge_tot)
subroutine modsti(nodft, nodlt, stifn, viscn, ms)
subroutine monvol0(monvol, volmon, x, a, npc, tf, v, normal, fsav, nsensor, sensor_tab, igrsurf, fr_mv, iadmv, sicontact, sporo, fsky, icontact, poro, iparg, elbuf_tab, geo, igeo, pm, ipm, ipart, ipartc, iparttg, igroupc, igrouptg, fext, flag, h3d_data, t_monvol, frontier_global_mv, output, python)
subroutine movfra1(xframe, iframe, x, v, a, ar)
subroutine movfra_imp(xframe, iframe, x, v, a, vr, ar, d)
subroutine movfra2(xframe, iframe, x, v, vr, d)
subroutine multi_deallocate(multi_fvm)
subroutine multi_velocity_backup(itask, multi_fvm, n2d, numels, numelq, numeltg)
subroutine mvoludt(monvol, volmon)
integer, dimension(:), allocatable ifoam_cont
integer, dimension(:), allocatable ifoam
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param
type(alemuscl_param_) alemuscl_param
type(alemuscl_buffer_) alemuscl_buffer
subroutine spmd_flush_accel(ncycle, ispmd, nspmd, numnod, numnodg, numnodm, a, itab, weight, nodglob)
integer ncycle_debug
Engine Cycle number.
integer, dimension(:), pointer fr_stsh
integer, dimension(:), pointer iad_stsh
integer, dimension(:), pointer iad_rtsh
integer, dimension(:), pointer ienunl
integer, dimension(:), pointer fr_rtsh
integer, parameter id_engine_user_initialize
type(dyn_lib_type), dimension(:), allocatable dlib_struct
integer, parameter id_engine_user_check
integer, dimension(:), pointer iad_cndm1
integer, dimension(:), pointer fr_nbcccnd1
integer, dimension(:), pointer iad_cnds
integer, dimension(:), allocatable imap2nd
integer, dimension(:), pointer iadcnd
integer, dimension(:), pointer fr_cndm
integer, dimension(:), pointer fr_cndm1
integer, dimension(:), pointer itagnd
integer, dimension(:), pointer procncnd
integer, dimension(:), pointer icnds10
integer, dimension(:), pointer fr_cnds
integer, dimension(:), pointer addcncnd
integer, dimension(:), pointer iad_cndm
integer, dimension(:), pointer fr_nbcccnd
integer ninter22
number of /INTER/TYPE22
type(edge_entity), dimension(:,:), allocatable, target edge_list
type(brick_entity), dimension(:,:), allocatable, target brick_list
integer, dimension(:), allocatable imergel
type(list_secnd), dimension(:,:), allocatable old_secndlist
integer, dimension(:,:), allocatable list_b_old
integer, dimension(:), allocatable n_unlinked_l
integer, dimension(:,:,:), allocatable unlinked_cells_l
integer, dimension(:), allocatable nbold
type(intstamp_data), dimension(:), allocatable intstamp
integer, dimension(:), allocatable indexcont
integer, dimension(:), allocatable tagcont
integer, dimension(:), allocatable mds_matid
type(ply_data), dimension(:), allocatable ply
type(ply_data), dimension(:), allocatable plysky
type(ply_data), allocatable plyskyi
integer, dimension(:), allocatable nllnk
integer, dimension(:), allocatable nbdof_nl
integer, dimension(:), allocatable socket
integer, dimension(:), allocatable iadd_nl
integer, dimension(:), allocatable lsh3act
integer, dimension(:), allocatable msh3sky
integer, dimension(:), allocatable lsh4upl
integer, dimension(:), allocatable ilevnod
integer, dimension(:), allocatable lsh4kin
integer, dimension(:), allocatable lsh3upl
integer, dimension(:), allocatable lsh3kin
integer, dimension(:), allocatable psh4kin
integer, dimension(:), allocatable psh3kin
integer, dimension(:), allocatable psh4act
integer, dimension(:), allocatable psh3upl
integer, dimension(:), allocatable psh4upl
integer, dimension(:), allocatable msh4sky
integer, dimension(:), allocatable lsh4act
integer, dimension(:), allocatable psh3act
integer, dimension(:), allocatable ipiv_k
type(retractor_struct), dimension(:), allocatable retractor
type(slipring_struct), dimension(:), allocatable slipring
integer, dimension(:), allocatable tagslv_rby_sms
integer, dimension(:), allocatable indx2_sms
integer, dimension(:), allocatable tagprt_sms
integer, dimension(:), allocatable, target tagnod_sms
integer, dimension(:), allocatable, target nodxi_sms
integer, dimension(:), allocatable tagmsr_rby_sms
integer, dimension(:), allocatable nativ_sms
integer, dimension(:), allocatable tagslv_i21_sms
integer, dimension(:), allocatable tagrel_sms
integer, dimension(:), allocatable kad_sms
integer, dimension(:), allocatable lad_sms
integer, dimension(:), allocatable jsm_sms
integer, dimension(:), allocatable indx1_sms
integer, dimension(:), allocatable jadc_sms
integer, dimension(:), allocatable jadi_sms
integer, dimension(:), allocatable jdii_sms
integer, dimension(:), allocatable jadt_sms
integer, dimension(:), allocatable tagmsr_i21_sms
integer, dimension(:), allocatable jad_sms
integer, dimension(:), allocatable kdi_sms
integer, dimension(:), allocatable jadtg_sms
integer, dimension(:), allocatable pk_sms
integer, dimension(:), allocatable iad_sms
integer, dimension(:), allocatable jadp_sms
integer, dimension(:,:), allocatable iskyi_sms
integer, dimension(:), allocatable nrwl_sms
integer, dimension(:), allocatable idi_sms
integer, dimension(:), allocatable jadi21_sms
integer, dimension(:), allocatable jads10_sms
integer, dimension(:), allocatable, target nodii_sms
integer, dimension(:), allocatable jads_sms
integer, dimension(:), allocatable jdi_sms
integer, dimension(:), allocatable jadr_sms
integer, dimension(:), allocatable tag_lnk_sms
OPTION /TH/SURF outputs of Pressure and Area needed Tabs.
integer, parameter th_surf_num_channel
number of /TH/SURF channels : AREA, VELOCITY, MASSFLOW, P A, MASS
integer, dimension(:), allocatable igrth
integer, dimension(:), allocatable grth
integer, dimension(:), allocatable nodreac
type(time_type) global_comp_time
type(xfem_sky_), dimension(:), allocatable crksky
integer, dimension(:,:), allocatable xedge4n
integer, dimension(:), allocatable indx_crk
type(xfem_edge_), dimension(:), allocatable crkedge
integer, dimension(:,:), allocatable xedge3n
subroutine newskw_init(iskwp, numskw_l, nskwp, numskw_l_send, iskwp_l_send, recvcount)
subroutine newskw(skew, iskwn, x, iskwp_l, nskwp, numskw_l, numskw_l_send, iskwp_l_send, recvcount, iskwp)
subroutine nlocal_acc(nloc_dmg, nodft, nodlt)
subroutine nlocal_dtnoda(nodft, nodlt, nloc_dmg, dtnod_nlocal, dt2t)
subroutine nlocal_incr(nloc_dmg, nodft, nodlt)
subroutine nlocal_vel(nloc_dmg, nodft, nodlt)
subroutine pblast_load_computation(output, pblast, iloadp, fac, a, v, x, iadc, fsky, lloadp, fext, noda_surf, noda_pext, itab, h3d_data, th_surf, wfext)
subroutine pfluid(iloadp, rload, npc, tf, a, v, x, xframe, ms, nsensor, sensor_tab, wfexc, wfext, iadc, fsky, fskyv, lloadp, fext, h3d_data, th_surf, python)
subroutine free_pinch(pinch_data)
subroutine ply_accele(inod, ms_layer, zi_layer, ms, nodft, nodlt, nplymax, nplyxfe, nddim, msz2)
subroutine ply_bcs(nodft, nodlt, icodt, iskew, skew, inod, ms_ply, ibc_ply)
subroutine ply_velocity(nodft, nodlt, nplymax, inod, nddim)
subroutine poro(geo, nodpor, ms, x, v, w, af, am, skew, weight, nporgeo)
subroutine pressure_cyl(loads, table, nsensor, sensor_tab, iframe, dt1, x, v, acc, fext, h3d_data, cptreac, fthreac, nodreac, fsky, wfext)
subroutine cp_dm(numgeo, geo, igeo, dmcp, iflag)
subroutine r2r_exchange(iexlnk, igrnod, dx, v, vr, a, ar, ms, in, stx, str, r2r_on, dd_r2r, weight, iad_elem, fr_elem, rby, xdp, x, dd_r2r_elem, sdd_r2r_elem, off_sph_r2r, numsph_glo_r2r, nloc_dmg)
subroutine r2r_getdata(iexlnk, igrnod, x, v, vr, a, ar, ms, in, xdp, dx, r2r_on, dd_r2r, weight, iad_elem, fr_elem, stifn, stifr, dd_r2r_elem, sdd_r2r_elem, nloc_dmg, wfext, wfext_md)
subroutine r2r_sendkine(iexlnk, igrnod, ms, in)
void get_shmbuf_c(int *val1, int *val2)
void get_fbuf_c(my_real_c *fbuf, int *len)
void r2r_unlock_threads_c(int *nthr)
void get_fbufdp_c(double *fbuf, int *len)
void send_fbuf_c(my_real_c *fbuf, int *len)
void close_sock_c(int *sd)
void send_ibuf_c(int *ibuf, int *len)
void get_ibuf_c(int *ibuf, int *len)
void send_fbufdp_c(double *fbuf, int *len)
subroutine radiation(ibcr, fradia, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
subroutine rbagdt(geo, igeo)
subroutine rbe2t1(irbe2, lrbe2, x, a, ar, ms, in, skew, weight, iad_rbe2, fr_rbe2m, nmrbe2, stifn, stifr, r2size)
subroutine rbe2v(irbe2, lrbe2, x, a, ar, v, vr, skew)
subroutine rbe3t1(rbe3, nodes, skew, dmast, adm, dinert, adi, h3d_data, dt1, tt, impl_s)
subroutine prerbe3p0(rbe3)
subroutine rbe3v(rbe3, nodes, skew)
subroutine rbycor(rby, x, v, vr, skew, fsav, lpby, npby, iskew, itab, weight, a, ar, ms, in, kind, irbkin_l, nrbykin_l, weight_md, ms_2d)
subroutine rbyfor(timers, rby, a, ar, x, vr, fsav, in, stifn, stifr, fani, lpby, npby, weight, ms, v, igrsurf, bufsf, icodr, iskew, skew, kind, iad_rby, fr_rby6, rby6, irbkin_l, nrbykin_l, nativ_sms, dimfb, fbsav6, stabsen, tabsensor, nodreac, fthreac, cptreac, dampr, sdamp, damp, ndamp_vrel, id_damp_vrel, igrnod, tagslv_rby, iparit, wfext, ndamp_vrel_rbyg, size_rby6_c, rby6_c, nhier_rby)
subroutine rbysens(iparg, ipari, ms, in, ixs, ixq, ixc, ixt, ixp, ixr, skew, itab, itabm1, iskwn, npby, itag, lpby, fsky, nsensor, rby, x, v, vr, ixtg, igrv, ibgr, sensor_tab, a, ar, fsav, stifn, stifr, fani, weight, dmast, dinert, bufsf, fr_rby2, partsav, ipart, elbuf_tab, icfield, lcfield, tagslv_rby)
subroutine rbyvit(rby, x, v, vr, skew, fsav, lpby, npby, iskew, itab, weight, a, ar, ms, in, kind, irbkin_l, nrbykin_l, nodreac, fthreac, freac, nhier_rby)
subroutine reaction_forces_th(nodft, nodlt, a, ar, ms, in, fthreac, iflag, nodreac)
subroutine reaction_forces_check_for_requested_output(npby, h3d_data, comptreac)
subroutine reaction_forces_1(nodft, nodlt, a, ar, freac)
subroutine reaction_forces_3(nodft, nodlt, a, ar, ms, in, freac)
subroutine reaction_forces_2(nodft, nodlt, a, ar, ms, in, freac, iflag)
subroutine reallocate_i_skyline(new_count, call_id, intheat, nodadt_therm, pon)
subroutine renum_siz(ipari, rnum_siz)
subroutine smp_init(itsk, nodftsk, nodltsk, numntsk, ndtsk, ipmtsk, partftsk, partltsk, nwaftsk, igmtsk, greftsk, greltsk)
subroutine resol_init(itask, fr_nbcc, isendto, ircvfrom, iad_elem, fr_elem, itabm1, ipari, iparg, itab, ixs10, ixs20, i13a, i13b, i13c, i13d, i13e, i13f, i13g, i13h, i13i, i15a, i15b, i15c, i15d, i15e, i15f, i15g, i15h, i15i, i87a, i87b, i87c, i87d, i87e, i87f, i87g, nfia, nfea, nfoa, ndma, ndma2, nodft, nodlt, ndtask, numnthread, ixs16, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, pon, ikine, a, ar, v, vr, x, d, ms, in, stifn, stifr, dmas, diner, wa, uwa, pm, geo, partsav, parts0, monvol, i87h, i87i, i87j, i87k, i15j, kxx, secbuf, secfcum, nstrf, igrnod, iexlnk, xframe, ixtg1, ib, viscn, dd_r2r, elbuf, ipart, madprt, madsh4, madsh3, madsol, madnod, madfail, igeo, intlist, nbintc, procne, niskyfi, weight, isizxv, ilenxv, addcni2, procni2, iad_i2m, fr_i2m, fr_nbcci2, i2size, fr_mad, lwibem, lwrbem, fxbfp, fxbefw, fxbedp, fxbgrp, fxbgrw, ndin, islen7, irlen7, islen11, irlen11, lwiflow, lwrflow, iflow, addcnel, cnel, addtmpl, ipartl, npartl, nfnca, nftca, i15ath, i35ath, ipm, sh4tree, ipadmesh, msc, inc, sh3tree, mstg, intg, ptg, fthe, fthesky, ftheskyi, nme17, islen17, irlen17, irlen7t, islen7t, lindidel, lbufidel, sh4trim, sh3trim, mscnd, incnd, irlen20, islen20, irlen20t, islen20t, nbint20, irlen20e, islen20e, niskyfie, mcp, ms0, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icodt, icodr, ibfv, admsms, nodreac, igrouc, ngrouc, igrounc, ngrounc, fr_rby, fr_rby6, npby, nom_sect, mcpc, mcptg, grth, igrth, nelem, lag_sec, nprw, diag_sms, dmelc, dmeltg, ngrth, nft2, dmels, dmeltr, dmelp, dmelrt, res_sms, i87l, irbe2, lrbe2, nmrbe2, iad_rbe2, fr_rbe2, fr_rbe2m, r2size, lpby, procne_pxfem, isendp_pxfem, irecvp_pxfem, iadsdp_pxfem, iadrcp_pxfem, fr_nbcc1, rby, int18kine, xdp, i87m, inod_crkxfem, iel_crkxfem, iadc_crkxfem, adsky_crkxfem, procne_crkxfem, isendp_crkxfem, irecvp_crkxfem, iadsdp_crkxfem, iadrcp_crkxfem, int24use, ndama2, igroupc, igrouptg, igroups, igroupflg, dmint2, irbkin_l, nrbykin_l, kindrby, elbuf_tab, sensors, dd_r2r_elem, sdd_r2r_elem, kinet, weight_md, dmsph, ioldsect, lbufidel24, intbuf_tab, numsph_glo_r2r, flg_sphinout_r2r, i15k, condn, condnsky, kxfenod2elc, elcutc, nodedge, iad_edge, crknodiad, fr_edge, fr_nbedge, nodlevxf, crkedge, xfem_tab, isensint, nisubmax, intlist25, int24e2euse, tabmp_l, i87n, tab_mat, h3d_data, tagtrimc, tagtrimtg, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, forneqs, int7itied, fxvel_fgeo, failwave, nloc_dmg, pinch_data, slloadp, tagslv_rby, nfnca2, nftca2, in0, sort_comm, stack, output, thke, sfr_elem, sh_offset_tab, need_comm_int25_solid_erosion, comm_int25_solid_erosion, iskwn, iframe, loads, glob_therm, pblast, rbe3, nhier_rby)
subroutine rbe2cor(irbe2, lrbe2, x, v, vr, skew, iskew, itab, weight, a, ar, ms, in, weight_md)
subroutine rgwal0(x, a, v, rwbuf, lprw, nprw, ms, fsav, fr_wall, fopt, rwsav, weight, frwl6, nodnx_sms, weight_md, dimfb, fbsav6, stabsen, tabsensor, wfext, wfext_md)
subroutine rgwalf(a, rwbuf, nprw, ms)
subroutine rivet1(ms, in, a, ar, x, ixrt, rivet, geo, v, vr, itask)
subroutine rlink11(ms, in, a, ar, v, vr, nnlink, lllink, skew, fr_ll, weight, frl6, x, xframe)
subroutine rlink10(ms, in, a, ar, v, vr, nlink, llink, skew, fr_rl, weight, frl6)
subroutine rmatacce(rbym, arbym, arrbym, vrbym, vrrbym, irbym, lnrbym, x, a, ar, v, vr, kind)
subroutine rmatforp(timers, a, ar, x, vr, in, stifn, stifr, irby, lnrby, rby, icodrby, weight, ms, v, fr_rbm, iad_rby, arby, vrby, arrby, vrrby, kind, rbym6)
subroutine s10cndf2(icnds10, weight, iad_cndm, fr_cndm, fr_nbcccnd, addcncnd, procncnd, a, iadcnd, fskycnd, itagnd, nodftsk, nodltsk, eftsk, eltsk, itsk, itab, stifn, stifnd)
subroutine s10cndf1(icnds10, weight, iad_cndm, fr_cndm, fr_nbcccnd, addcncnd, procncnd, a, iadcnd, fskycnd, itagnd, nodftsk, nodltsk, eftsk, eltsk, itsk, itab, stifn, stifnd)
subroutine s10cndfnd(icnds10, weight, iad_cnds, fr_cnds, itab, nodftsk, nodltsk, eftsk, eltsk, itsk, stifn, stifnd)
subroutine s10stfe_poff(icnds10, weight, iad_cnds, fr_cnds, itab, nodftsk, nodltsk, eftsk, eltsk, itsk, stifn, stifnd)
subroutine cnd_dmasi2(icnds10, nkend, imap2nd, masi2nd0, ms, weight)
subroutine s10cndv(icnds10, vnd, v)
subroutine s10getvdm(icnds10, v, vnd, vmd)
subroutine s10cndi2a(icnds10, itagnd, a)
subroutine s10cndi2a1(icnds10, itagnd, a)
subroutine s4lagsfem(iparg, ixs, x, v, elbuf_tab, sfem_nodvar, s_sfem_nodvar, iad_elem, fr_elem, ixs10, xdp, sxdp, numnod, sfr_elem, nspmd, numels, numels8, numels10, nparg, ngroup, iresp)
subroutine section_fio(nstrf, v, vr, a, ar, secbuf, ms, in, weight, iad_cut, fr_cut, wfext)
subroutine section_io(nstrf, d, dr, v, vr, fsav, secfcum, a, ar, secbuf, ms, in, x, fani, weight, xsec, iad_elem, fr_elem, rg_cut, iad_cut, fr_cut, weight_md, ioldsect, stabsen, dimfb, tabs, fbsav6, wfext)
subroutine spmd_i21fthecom(ipari, fthe, intbuf_tab, sensor_tab, niskyfi, ftheskyi, isky, fskyi, condnskyi, nsensor, nodadt_therm)
subroutine spmd_i21tempcom(ipari, temp, intbuf_tab, nsensor, sensor_tab)
subroutine sensor_base(sensors, nsensor, time, timestep, xsens, ipari, partsav2, gauge, fsav, x, v, a, acc, nprw, subset, igrsurf, igrnod, python)
subroutine sensor_dist_surf0(nsensor, sensor_tab, x, igrsurf, comm_sens16)
subroutine sensor_ener_sav(nsensor, sensor_tab, partsav, partsav2)
subroutine sensor_init(subset, iparg, ngrouc, ipartc, iparttg, iparts, ipartq, ipartt, ipartp, ipartr, sensors, time, timestep, iout, python, ntask)
subroutine sensor_logical(sensors)
subroutine sensor_spmd(sensor_tab, ipari, nprw, isensp, nsensp, xsens, x, accelm, iaccp, naccp, gauge, igaup, ngaup, partsav2, nsensor, comm_sens14, sensor_struct)
subroutine sensor_temp0(nsensor, sensor_tab, igrnod, temp, weight, comm_sens17, sensor_struct)
subroutine sms_build_mat_2(itask, nodft, nodlt, ixc, iparg, ixs, ixt, ixp, ixr, ixtg, nodnx_sms, ms, ms0, indx1_sms, indx2_sms, jad_sms, jdi_sms, lt_sms, kad_sms, kdi_sms, ltk_sms, pk_sms, nodii_sms, jadc_sms, jads_sms, jadt_sms, jadp_sms, jadr_sms, jadtg_sms, diag_sms, tagprt_sms, tagrel_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, ipartx, iad_elem, fr_elem, npby, lpby, tagslv_rby_sms, lad_sms, jsm_sms, dmeltg, dmelc, mskyi_sms, iskyi_sms, jadi_sms, jdii_sms, lti_sms, nodxi_sms, dmels, dmeltr, dmelp, dmelrt, igeo, fr_sms, fr_rms, ev, ipari, intbuf_tab, kinet, tagslv_i21_sms, jadi21_sms, intstamp, ixs10, jads10_sms, ilink, rlink, nnlink, lnlink, tag_lnk_sms, ljoint, iadcj, fr_cj, itab, weight, dmint2, elbuf_tab, tagmsr_rby_sms, nprw, lprw, fr_wall, nrwl_sms, rby, x, a, ar, in, v, vr, irbe2, lrbe2, irbe3, lrbe3, iad_rbe3m, fr_rbe3m, nativ_sms, t2main_sms, t2fac_sms, mskyi_fi_sms, list_sms, list_rms, sz_mw6, mw6)
subroutine sms_encin_2(timers, itask, nodft, nodlt, nodxi_sms, ms, jad_sms, jdi_sms, lt_sms, indx1_sms, diag_sms, iad_elem, fr_elem, weight, v, a, wv, wmv, wdg, xmom_sms, icodt, icodr, iskew, skew, ibfv, vel, npc, tf, x, d, sensors, iframe, xframe, jadi_sms, jdii_sms, lti_sms, iskyi_sms, mskyi_sms, fr_sms, fr_rms, npby, tagslv_rby_sms, intstamp, cptreac, nodreac, fthreac, ar, vr, dr, in, rby, irbe2, lrbe2, iad_rbe2, fr_rbe2m, nmrbe2, r2size, irbe3, lrbe3, frbe3, iad_rbe3m, fr_rbe3m, fr_rbe3mp, rrbe3, rrbe3_pon, iad_rby, fr_rby6, rby6, lpby, tagmsr_rby_sms, r3size, nodii_sms, indx2_sms, ibcscyc, lbcscyc, output, mskyi_fi_sms, list_sms, list_rms, vfi, sz_mw6, mw6)
subroutine sms_mass_scale_2(timers, python, itask, nodft, nodlt, nodii_sms, indx2_sms, nodxi_sms, ms, ms0, a, icodt, icodr, iskew, skew, jad_sms, jdi_sms, lt_sms, x_sms, p_sms, z_sms, y_sms, prec_sms, indx1_sms, diag_sms, iad_elem, fr_elem, weight, npby, lpby, tagslv_rby_sms, lad_sms, kad_sms, jrb_sms, ibfv, vel, npc, tf, v, x, d, sensor_tab, nsensor, iframe, xframe, jadi_sms, jdii_sms, lti_sms, fr_sms, fr_rms, iskyi_sms, mskyi_sms, res_sms, igrv, agrv, lgrav, ilink, rlink, fr_rl, frl6, nnlink, lnlink, fr_ll, fnl6, tag_lnk_sms, itab, fsav, ljoint, iadcj, fr_cj, am, vr, in, frl, fnl, nprw, lprw, rwbuf, rwsav, fopt, fr_wall, nrwl_sms, intstamp, kinet, ixc, ixtg, sh4tree, sh3tree, cptreac, nodreac, fthreac, frwl6, dim, tagslv_rby, dampr, damp, igrnod, dr, rby, tagmsr_rby_sms, jsm_sms, irbe2, lrbe2, iad_rbe2, fr_rbe2m, nmrbe2, r2size, irbe3, lrbe3, frbe3, iad_rbe3m, fr_rbe3m, fr_rbe3mp, rrbe3, rrbe3_pon, prec_sms3, diag_sms3, iad_rby, fr_rby6, rby6, r3size, betate, ibcscyc, lbcscyc, mskyi_fi_sms, list_sms, list_rms, cjwork, frea, irwl_work, vfi, sz_mw6, mw6, wfext, ams_work)
subroutine soltospha(itask, v, a, ms, pm, ipart, ixs, iparts, kxsp, ipartsp, irst, spbuf, partsav, sol2sph, iparg, ngrounc, igrounc, elbuf_tab, igeo)
subroutine sortie_error(v, nodglob, weight, itab, ms, ms0, param, partsav, ipart, pm, igeo)
subroutine sortie_main(timers, pm, d, v, ale_connect, w, elbuf, iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, wa, itab, x, geo, ms, a, partsav, icut, xcut, lpby, npby, nstrf, rwbuf, nprw, ebcs_tab, tani, inoise, bufnois, rby, neflsw, nnflsw, crflsw, flsw, lout, nodes, fsav, skew, elbuf_tab, cluster, vr, in, weight, fcluster, mcluster, dd_iad, dmas, accelm, gauge, ipari, eani, ipart, mat_param, igrnod, subset, nom_opt, ar, igrsurf, bufsf, idata, rdata, kxx, ixx, bufmat, bufgeo, kxsp, ixsp, nod2sp, spbuf, dr, fsavd, ixri, rivet, iskwn, iframe, xframe, ixs10, ixs20, ixs16, ndma, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_rby2, iad_rby2, fr_wall, fr_sec, fxbipm, fxbrpm, ndin, fxbdep, fxbvit, fxbacc, iflow, rflow, ipartl, npartl, iaccp, naccp, fasolfr, iparth, fr_mv, ipart_state, sh4tree, sh3tree, temp, thke, err_thk_sh4, err_thk_sh3, inod_pxfem, fthreac, nodreac, gresav, diag_sms, sh4trim, sh3trim, xmom_sms, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, res_sms, sensors, qfricint, igaup, ngaup, weight_md, ncont, indexcont, nodglobxfe, nodedge, xfem_tab, nv46, rthbuf, kxig3d, ixig3d, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, stack, isphio, vsphio, icode, indx_crk, xedge4n, xedge3n, sph2sol, stifn, stifr, drape_sh4n, drape_sh3n, ms_2d, multi_fvm, segquadfr, h3d_data, iskew, pskids, iskwp, knotlocpc, knotlocel, pinch_data, tag_skins6, irunn_bis, tf, npc, dynain_data, fcont_max, mds_matid, ibcl, iloadp, lloadp, loadp, tagncont, loadp_hyd_inter, forc, drapeg, user_windows, output, dt, fsavsurf, table, loads, sfani, iparit, x_c, sz_npcont2, npcont2, glob_therm, pblast, wfext, mass0_start)
subroutine spgauge_f(p, ff, p0, p1, p2, n)
subroutine sphprep(timers, pm, geo, x, v, ms, elbuf_tab, wa, pld, bufmat, partsav, iparg, npc, ipart, itab, bufgeo, xframe, kxsp, ixsp, nod2sp, ipartsp, spbuf, ispcond, ispsym, xspsym, vspsym, wasph, lprtsph, lonfsph, wsp2sort, isphio, vsphio, igrsurf, d, sphveln, itask, xdp, ibufssg_io, lgauge, gauge, ngrounc, igrounc, sol2sph, sph2sol, ixs, iads, addcne, fskyd, dmsph, waspact, icontact, off_sph_r2r, wsmcomp, irunn_bis, sph_iord1, sph_work, wfext)
subroutine sphres44b(kxsp, ixsp, nod2sp, iparg, spbuf)
subroutine splissv(x, v, ms, a, spbuf, wa, itab, kxsp, ixsp, nod2sp, d, ispsym, xspsym, vspsym, bufmat, bufgeo, npc, pld, pm, geo, ispcond, xframe, waspsym, ipartsp, partsav, wacomp, wsmcomp, waspact, ipart, itask, sph2sol, sol2sph, irst, ixs, iparg, ngrounc, igrounc, elbuf_tab, iad_elem, fr_elem, igeo, sol2sph_typ, sph_work)
subroutine split_asspar4(addcne, numnod, nthreads, first, last, sadsky)
subroutine spmd_allglob_isum9(v, len)
subroutine spmd_chkw(iwiout, iout)
subroutine spmd_collect(a, itab, weight, nodglob, sizp0)
subroutine spmd_collect_multi_fvm(ixs, multi_fvm, flag)
subroutine spmd_collect_nlocal(a, sizea, numnod_local, posi, nloc_dmg, sizp0, nodglob, itab)
subroutine spmd_collectm(nodnx_sms, itab, weight, nodglob, sizp0)
subroutine spmd_collectt(temp, itab, weight, nodglob, sizp0)
subroutine spmd_exch2_a_pon(interfaces, iad_elem, fr_elem, addcne, procne, fr_nbcc, size, lenr, lens, fsky, fskyv, fskym, ifsubm, sizi, leni, iadsdp, iadrcp, isendp, irecvp, ffsky, procne_pxfem, fr_nbcc1, iadsdp_pxfem, iadrcp_pxfem, isendp_pxfem, irecvp_pxfem, lenr1, lens1, iadsdp_crk, iadrcp_crk, isendp_crk, irecvp_crk, fskyd, crknodiad, crksky, forneqsky, nfacnit, lenc, fcont, h3d_data, fncont, ftcont, glob_therm)
subroutine spmd_exch_a(a, adp, ar, stifn, stifr, ms, iad_elem, fr_elem, msnf, ifsubm, size, lenr, fthe, mcp, dmsph, condn, ms_2d, mcp_off, forneqs, nfacnit, lenc, fcont, h3d_data, fncont, ftcont, glob_therm)
subroutine spmd_exch_a_ams_poff(a, ar, stifn, stifr, ms, iad_elem, fr_elem, msnf, ifsubm, size, lenr, fthe, mcp, fr_loc, nb_fr, ms_2d, mcp_off, forneqs, nfacnit, lenc, fcont, h3d_data, fncont, ftcont, glob_therm)
subroutine spmd_exch_da20(intbuf_tab, ipari, iad_elem, fr_elem, len20, nbint20, lenr, intlist, nbintc)
subroutine spmd_exch_deleted_surf_edge(iad_elem, nodes, shoot_struct, intbuf_tab, newfront, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem)
subroutine spmd_exch_vmax(iad_stsh, fr_stsh, iad_rtsh, fr_rtsh, v_max)
subroutine spmd_exch_fa(iad_stsh, fr_stsh, iad_rtsh, fr_rtsh, a)
subroutine spmd_exch_efric(output, ipari, intlist, nbintc, islen7, irlen7, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, intbuf_tab, h3d_data)
subroutine spmd_exch_i24(ipari, intbuf_tab, itab, iad_elem, fr_elem, intlist, nbintc, iad_i24, fr_i24, sfr_i24, i24maxnsne, flag, int24e2euse)
subroutine spmd_exch_i25(ipari, intbuf_tab, itab, iad_elem, fr_elem, intlist, nbintc, iad_i25, fr_i25, sfr_i25, flag)
subroutine spmd_exch_icodt(icodt, iad_elem, fr_elem, size, lenr)
subroutine spmd_exch_icont(icontact, iad_elem, fr_elem, size, lenr)
subroutine spmd_exch_inter_18(ninter, nspmd, number_inter18, sxcell, inter18_list, xcell, multi_fvm, xcell_remote, intbuf_tab, ale_connectivity)
subroutine spmd_exch_press(output, ipari, intlist, nbintc, fncont, ftcont, islen7, irlen7, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, intbuf_tab, n_cse_fric_inter, n_scal_cse_efric)
subroutine spmd_exch_sub_pon(nloc_dmg)
subroutine spmd_exch_sub_poff(nloc_dmg)
subroutine spmd_exch_tagncont(tagncont, iad_elem, fr_elem, lenr)
subroutine spmd_exch_thknod(thknod, iad_elem, fr_elem, size, lenr)
subroutine spmd_exch_wave(fr_wave, iad_elem, fr_elem, size, lenr)
subroutine spmd_exsum_fb6(dim6, dim_exch, fb6)
subroutine spmd_fvb_switch(monvol)
subroutine spmd_glob_min5(dt2, itypts, nelts, icodt, imsch, tstop, iwiout, mstop, ismsch, int24use, nbintc, intlist, ipari, intbuf_tab)
subroutine spmd_glob_minv(t_monvol, dt2, itypts, nelts, volmon, fr_mv)
subroutine spmd_i25front_init(itab, main_proc, intbuf_tab, ipari)
subroutine spmd_i7fcom_poff(output, ipari, a, stifn, viscn, intlist, nbintc, icodt, secfcum, nstrf, icontact, fcont, islen7, irlen7, islen11, irlen11, islen17, irlen17, igrbric, ixs, ixs16, fthe, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, condn, iflag, intbuf_tab, h3d_data, multi_fvm, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, fsav, interfaces, nodadt_therm)
subroutine spmd_i7fcom_pon(output, ipari, intlist, nbintc, niskyfi, icodt, secfcum, nstrf, icontact, fcont, igrbric, ixs, ixs16, niskyfie, nbint20, iflag, intbuf_tab, sfskyi, sisky, h3d_data, multi_fvm, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, fsav, interfaces, glob_therm)
subroutine spmd_i7xvcom2(ipari, x, v, ms, imsch, i2msch, dt2prev, intlist, nbintc, islen7, irlen7, islen11, irlen11, islen17, irlen17, ixs, ixs16, nsensor, igrbric, temp, iflag, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, ikine, diag_sms, sensor_tab, intbuf_tab, int24e2euse, forneqs, multi_fvm, interfaces, ish_offset)
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)
subroutine spmd_int18_law151_pon(ipari, islen7, irlen7, iflag, intbuf_tab, multi_fvm)
subroutine spmd_exch_r2r_sphoff(off_sph_r2r, iad_elem, fr_elem, dd_r2r, dd_r2r_elem, lenr)
subroutine spmd_exch_r2r_sph(a, iad_elem, fr_elem, dd_r2r, dd_r2r_elem, lenr)
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
subroutine spmd_sd_xv(output, x, d, v, vr, ms, in, iad_elem, fr_elem, weight, imsch, w, isizxv, ilenxv, xdp)
subroutine spmd_exch_sec(nstrf, x, ms, weight, xsec, fr_sec, iad_sec, lsend1, lrecv1, lsend2, lrecv2, weight_md)
subroutine spmd_sort_sms(iskyi_sms, mskyi_sms, fr_sms)
subroutine spmd_nlist_sms(fr_sms, fr_rms)
subroutine ams_prepare_poff_assembly(iad_elem, fr_elem, nb_fr, fr_loc, iad_i2m, fr_i2m, nb_fri2m, fr_loc_i2m)
subroutine spmd_glob_isum9(v, len)
subroutine spmd_wiout(iout, iwiout)
subroutine spmd_max_xfe_i(int)
subroutine spmd_exch_crkvel(iad_elem, fr_elem, inod_crk, itab, x, v, vr)
subroutine sponfv(x, v, a, d, ms, spbuf, itab, kxsp, ixsp, nod2sp, npc, pld, isphio, vsphio, ipart, ipartsp, waspact, wa, vnormal, sph_work, wfext)
subroutine spwfvis(spbuf, ipartsp, partsav, iparg, elbuf_tab, kxsp, waspact)
subroutine srfvit(x, v, vr, a, ar, npby, rby, ms, in, igrsurf, bufsf)
subroutine fvmesh0(t_monvol, xyzini, ixs, ixc, ixtg, pm, ipm, igrsurf, xyzref, nb_node)
subroutine fvdim(t_monvol)
subroutine sms_ini_jad_1(ixc, iparg, ixs, ixt, ixp, ixr, ixtg, ixs10, nodnx_sms, jadc_sms, jads_sms, jads10_sms, jadt_sms, jadp_sms, jadr_sms, jadtg_sms, tagprt_sms, kad_sms, kdi_sms, pk_sms, tagrel_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, ipartx, npby, lpby, kinet, tagslv_rby_sms, ipari, intbuf_tab, lad_sms, ipart, igeo, nativ_sms, iad_sms, idi_sms, jad_sms, jdi_sms, t2main_sms)
subroutine sms_ini_jad_2(ixc, iparg, ixs, ixt, ixp, ixr, ixtg, ixs10, nodnx_sms, jadc_sms, jads_sms, jads10_sms, jadt_sms, jadp_sms, jadr_sms, jadtg_sms, tagprt_sms, kad_sms, kdi_sms, tagrel_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, ipartx, npby, lpby, kinet, tagslv_rby_sms, ipari, intbuf_tab, lad_sms, nprw, lprw, tagmsr_rby_sms, intstamp, ipart, igeo, nativ_sms, irbe2, lrbe2, iad_sms, idi_sms, jad_sms, jdi_sms, t2main_sms)
subroutine sms_ini_kdi(ixc, iparg, ixs, ixt, ixp, ixr, ixtg, ixs10, nodnx_sms, kad_sms, kdi_sms, jadc_sms, jads_sms, jads10_sms, jadt_sms, jadp_sms, jadr_sms, jadtg_sms, tagprt_sms, iad_sms, tagrel_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, ipartx, npby, lpby, kinet, tagslv_rby_sms, ipari, intbuf_tab, lad_sms, ipart, igeo, nativ_sms)
subroutine sms_ini_kad(ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs16, ixs20, iparg, ms, ms0, nodnx_sms, icodt, icodr, kinet, kad_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, ipartx, tagprt_sms, tagrel_sms, itab, irbe2, irbe3, lrbe2, lrbe3, nprw, lprw, ipart, igeo, nativ_sms)
subroutine sms_ini_jad_3(ixc, iparg, ixs, ixt, ixp, ixr, ixtg, ixs10, nodnx_sms, jadc_sms, jads_sms, jads10_sms, jadt_sms, jadp_sms, jadr_sms, jadtg_sms, tagprt_sms, kad_sms, kdi_sms, tagrel_sms, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, ipartx, npby, lpby, kinet, tagslv_rby_sms, ipari, intbuf_tab, lad_sms, jsm_sms, intstamp, ipart, igeo, tagmsr_rby_sms, nativ_sms, iad_sms, idi_sms, jad_sms, jdi_sms, t2main_sms)
subroutine deallocate_joint()
subroutine int18_law151_init(s_append_array, ninter, npari, numnod, numels, ngrbric, multi_fvm, igrbric, ipari, ixs, x, v, ms, kinet, x_append, v_append, mass_append, kinet_append)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine startime(event, itask)
subroutine elapstime(etime)
subroutine printime(itask, got_timer, startdate, starttime, enddate, endtime)
subroutine stoptime(event, itask)
subroutine trace_out(nsub)
subroutine trace_in(nsub, itab, atab)
subroutine static(v, vr, a, ar, ms, in, igrnod, weight_md, wfext)
subroutine stop_sensor(sensors, h3d_data, dynain_data, output)
subroutine tempur(temp, mcp, fthe, nodft, nodlt, weight, mcp_off, heat_stored)
subroutine th_time_output(ithout, sensors, output)
subroutine thbcs(nodft, nodlast, icodt, icodr, iskew, skew, a, ar, ms, in, fthreac, nodreac, cptreac)
subroutine thbcs_imp(nodft, nodlast, a, ar, fthreac, nodreac, cptreac, fthdtm, dt3)
subroutine thermbilan(glob_therm)
subroutine printime_interf(intbuf_tab, ipari, intlist, nbintc, treshold)
subroutine timfun(python, fv, np, tf)
subroutine upd_tmax(elbuf_tab, iparg, geo, pm, ixs, ixs10, ixs16, ixs20, ixq, ixc, ixtg, ixt, ixp, ixr, x, d, v, iad_elem, fr_elem, weight, ipm, igeo, stack, itask)
subroutine update_failwave(failwave)
subroutine update_slipring(ixr, ixc, iparg, elbuf_tab, flag_slipring_update, flag_retractor_update, x, npby)
subroutine upenr_crk(addcne_crk, inod_crk, nodft, nodlt, nodenr, enrtag, nodlevxf, procne_crk)
subroutine upxfem1(xfem_tab, iparg, ixc, ngrouc, igrouc, ixtg, iadc_crk, iel_crk, inod_crk, elcutc, nodedge, enrtag, crkedge, xedge4n, xedge3n)
subroutine upxfem2(iparg, ixc, ngrouc, igrouc, iadc_crk, iel_crk, elcutc, ixtg, enrtag, inod_crk, iad_elem, fr_elem, iad_edge, fr_edge, fr_nbedge, crkedge)
subroutine upxfem_tagxp(xfem_tab, iparg, ixc, ngrouc, igrouc, ixtg, iadc_crk, iel_crk, inod_crk, elcutc, nodedge, enrtag, crkedge, xedge4n, xedge3n, itab)
subroutine user_windows_routine(ispmd, nspmd, userl_avail, user_windows, rad_inputname, len_rad_inputname, numnod, ncycle, itab, tt, dt1, wfext, d, x, v, vr, ms, in, stifn, stifr, a, ar, dt2)
subroutine velocity(a, ar, v, vr, fzero, itab, nale)
subroutine velocitypinch(apinch, vpinch, nodft, nodlt)
subroutine wrrestp(elements, nodes, af, iaf, ich, addcne, elbuf_tab, xfem_tab, intbuf_tab, multi_fvm, mat_elem, h3d_data, intbuf_fric_tab, subset, pinch_data, ale_connectivity, t_monvol, sensors, ebcs_tab, dynain_data, user_windows, output, interfaces, loads, python, names_and_titles, eigipm, eigibuf, eigrpm, neipm, leibuf, nerpm, iflow, rflow, liflow, lrflow, impbuf_tab, impl_s, impl_s0, mcp, temp, forneqs, unitab, stack, ndrape, drape_sh3n, drape_sh4n, drapeg, restsize, skews, glob_therm, pblast, rbe3, rwall)
subroutine spmd_crk_adv(iad_elem, fr_elem, inod_crk, enrtag)
subroutine xfeoff(xfem_tab, iparg, ixc, ngrouc, igrouc, iel_crk, elcutc, ixtg, iadc_crk, iad_elem, iad_edge, fr_edge, fr_nbedge, fr_elem, nlay, inod_crk, crkedge, xedge4n, xedge3n)