633
634
635
636 USE ghost_shells_mod
637 USE connectivity_mod
638 USE nodal_arrays_mod
639 USE detach_node_mod
650 USE rigmat_mod
658 USE imp_intbuf
664 USE intbufdef_mod
673 USE multi_fvm_mod
675 USE pblast_mod
679 USE mat_elem_mod
689 USE sensor_mod
691 USE ebcs_mod
702 USE loads_mod
706 USE output_mod , ONLY : output_
707 USE output_mod , ONLY : noda_pext, noda_surf, output_allocate_noda_pext, output_deallocate_noda_pext
708 USE interfaces_mod
711 USE python_funct_mod
712 USE python_share_memory_mod
713 USE python_register_mod, ONLY : python_register
714 USE funct_python_update_elements_mod, ONLY : funct_python_update_elements
715 USE python_monvol_mod , ONLY : python_monvol
717 USE force_mod , ONLY : force
721 USE bcs_mod , ONLY : bcs
722 USE inter_sh_offset_mod , only:sh_offset_
723 USE offset_nproj_mod, only : offset_nproj
724 USE get_neighbour_surface_mod , only : get_neighbour_surface
725 USE spmd_mod , only : spmd_max,spmd_allreduce,spmd_barrier
726 USE skew_mod
727 USE elbufdef_mod
728 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
729 use init_global_frontier_monvol_mod , only : init_global_frontier_monvol
730 use init_monvol_omp_structure_mod , only : init_monvol_omp_structure
731 USE inivel_dt2_mod , only : inivel_dt2
732 USE inivel_start_mod , only : inivel_start
733 use glob_therm_mod
734 USE my_alloc_mod
735 USE sph_work_mod
736 USE pblast_mod
737 USE spmd_xv_inter_type1_mod, only : spmd_xv_inter_type1
738 USE timer_mod
739 USE rbe3_mod
741 USE ams_work_mod
742 USE update_pon_mod
744 use inter_init_component_mod , only : inter_init_component
745 use damping_vref_compute_dampa_mod
746 use coupling_adapter_mod
747 use damping_funct_ini_mod , only : damping_funct_ini
748 USE viper_mod
749
750
751
752#include "implicit_f.inc"
753#include "comlock.inc"
754
755
756
757#include "mvsiz_p.inc"
758
759
760
761#include "macro.inc"
762#include "com01_c.inc"
763#include "com04_c.inc"
764#include "com06_c.inc"
765#include "com08_c.inc"
766#include "com09_c.inc"
767#include "intstamp_c.inc"
768#include "sphcom.inc"
769#include "param_c.inc"
770#include "scr02_c.inc"
771#include "scr03_c.inc"
772#include "scr05_c.inc"
773#include "scr06_c.inc"
774#include "scr07_c.inc"
775#include "scr11_c.inc"
776#include "scr12_c.inc"
777#include "scr14_c.inc"
778#include "scr16_c.inc"
779#include "scr17_c.inc"
780#include "scr18_c.inc"
781#include "scr23_c.inc"
782#include "units_c.inc"
783#include "stati_c.inc"
784#include "statr_c.inc"
785#include "cong2_c.inc"
786#include "task_c.inc"
787#include "parit_c.inc"
788#include "timeri_c.inc"
789#include "couple_c.inc"
790#include "rad2r_c.inc"
791#include "chara_c.inc"
792#include "lagmult.inc"
793#include "warn_c.inc"
794#include "impl1_c.inc"
795#include "fxbcom.inc"
796#include "eigcom.inc"
797#include "spmd_c.inc"
798#include "remesh_c.inc"
799#include "com_xfem1.inc"
800#include "tabsiz_c.inc"
801#include "sms_c.inc"
802#include "filescount_c.inc"
803#include "inter22.inc"
804#include "userlib.inc"
805#include "drape_c.inc"
806
807 COMMON /vglob/dmas,diner
809
810
811
812 INTEGER ITASK
813 INTEGER ISKWN(LISKN,*), NETH(*),
814 . IPART(*),NOM_OPT(LNOPT1,*),IXS(*),
815 . IXQ(NIXQ,*), IXT(NIXT,*), IXP(NIXP,*),
816 . IXR(NIXR,*),IXTG(NIXTG,*), IXTG1(4,*),
817 . KINET(*),
818 . IFILL(NUMNOD,*), (*), NPC(*), IBCL(*), IBFV(*),
819 . IDUM(*), LAS(*),IPARG(NPARG,*),
820 . NPRW(*), LPRW(*), ICONX(*), NPBY(NNPBY,*),
821 . LPBY(*),
822 . LRIVET(*), NSTRF(*), LJOINT(*), ILINK(*),
823 . LLINK(*), LINALE(*), NEFLSW(*), NNFLSW(*),
824 . NODPOR(*),ICUT(*) , INOISE(*),MONVOL(*),
825 . LACCELM(3,*),DD_IAD(NSPMD+1,*),
826 . IAD_RBY(*),FR_RBY(*),NNLINK(10,*),LNLINK(*),
827 . IAF(*),IGRV(*),
828 . KXX(NIXX,*),IXX(*),IEXLNK(NR2R,*),
829 . IFRAME(LISKN,*),KXSP(NISP,*),IXSP(*),NOD2SP(*),
830 . ISPCOND(,*),ISPSYM(NSPCOND,*),IBVEL(NBVELP,*),LBVEL(*),
831 . ISPHIO(NISPHIO,*),LPRTSPH(*),LONFSPH(*),LAGBUF(*),IBCSLAG(*),
832 . IACTIV(*),GJBUFI(LKJNI,*) ,IBMPC(*),NPBYL(NNPBY,*), LPBYL(*),
833 . NBRCVOIS(*),NBSDVOIS(*),LNRCVOIS(*),LNSDVOIS(*),
834 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*), NPORGEO(*),
835 . NPSEGCOM(*), LSEGCOM(*), IGEO(NPROPGI,*),
836 . (NPROPMI,*),MADPRT(*), MADSH4(*), MADSH3(*), (*),
837 . MADNOD(*),MADFAIL(*),
838 . FR_WALL(*),IAD_RBY2(*),
839 . FR_RBY2(*),IAD_I2M(*),FR_I2M(*),ADDCNI2(*),PROCNI2(*),IADI2(*),
840 . FR_MV(*), IADMV2(*), FR_LL(*), FR_RL(*),
841 . IADCJ(*), FR_CJ(*),
842 . FR_SEC(*), IAD_SEC(4,*),
843 . IAD_CUT(NSPMD+2,*), FR_CUT(*), RG_CUT(*), NEWFRONT(*),
844 . FR_MAD(5,*), LNODPOR(*), FR_I18(*),
845 . FXBIPM(NBIPM,*),FXBNOD(*),FXBELM(*), FXBGRVI(*),
846 . EIGIPM(NEIPM,*), EIGIBUF(*), IFLOW(*), FASOLFR(*),
847 . DD_R2R(NSPMD+1,*), LGRAV(*), FR_LAGF(3,*), LLAGF(*),
848 . ICONTACT(*), SH4TREE(*), SH3TREE(*), IPADMESH(*),
849 . ISKWP(*), NSKWP(*), ISENSP(2,*), NSENSP(*), IACCP(*), NACCP(*),
850 . IPART_STATE(*),SH4TRIM(*), SH3TRIM(*),IRBYM(*) ,LNRBYM(*),
851 . ICODRBYM(*),IAD_RBYM(*),
852 . FR_RBYM(*),NOM_SECT(*), IBCR(*),IRBE2(*),LRBE2(*),
853 . IAD_RBE2(*),FR_RBE2(*),IADSDP_PXFEM(*),
854 . IADRCP_PXFEM(*),ICFIELD(*),LCFIELD(*),ILOADP(*),LLOADP(*),
855 . IADSDP_CRK(*),IADRCP_CRK(*),INOD_CRK(*),IEL_CRK(*),IADC_CRK(*),
856 . ADSKY_CRK(*),PROCNE_CRK(*),CNE_CRK(*),IBORDNODE(*),
857 . NODEDGE(*),IAD_EDGE(*),FR_EDGE(*),FR_NBEDGE(*),
858 . CRKNODIAD(*), LGAUGE(3,*), (*), NGAUP(*),NODLEVXF(*),
859 . NODGLOBXFE(*),ELCUTC(2,*),NODENR(*),KXFENOD2ELC(*),
860 . ENRTAG(NUMNOD,*),KXIG3D(*),IXIG3D(*),
861 . NATIV0_SMS(*), SEGQUADFR(*),
862 . KLOADPINTER(NINTER+1) ,LOADPINTER(NINTER*NLOADP_HYD)
863 INTEGER IDATA(*), IBFTEMP(*), IBCV(*), IBFFLUX(*), WEIGHT_RM(*),
864 . ICODT_PLY(*), ISKEW_PLY(*),INOD_PXFEM(*),IEL_PXFEM(*),
865 . IADC_PXFEM(*),ADSKY_PXFEM(*),ICODE_PLY(*),MADCLNOD(*),
866 . PROCNE_PXFEM(*),
867 . IBUFSSG_IO(*),IBC_PLY(*),DD_R2R_ELEM(*),
868 . SPH2SOL(*), SOL2SPH(2,*), IRST(3,*), SOL2SPH_TYP(*),IRUNN_BIS,
869 . ADDCSRECT(*), IAD_FRNOR(*), FR_NOR(*), PROCNOR(*),
870 . IAD_FREDG(*), FR_EDG(*),TAG_SKINS6(*),IBCSCYC(*),LBCSCYC(*)
871 integer :: IPARI(NPARI,ninter)
872 INTEGER, DIMENSION(NUMSKW), INTENT(IN) :: ISKWP_L
873 INTEGER, DIMENSION(*), INTENT(in) :: ID_GLOBAL_VOIS,FACE_VOIS
875 . damp(*),
876 . pm(npropm,*),geo(npropg,*),
877 . bufmat(*) ,w(3,*) ,veul(*),fill(numnod,*),dfill(numnod,*),
878 . alph(*) ,wb(3,*) ,tf(*) ,forc(*) ,vel(*),
879 . fsav(nthvki,*) ,fzero(3,*),xlas(*) ,elbuf(*) ,
880 . rwbuf(nrwlp,*),rwsav(*),rby(nrby,*),rivet(*),wa(*),
881 . fv(*) ,val2(*) ,phi(*),
882 . r(3,*) ,crflsw(*),flsw(*),
883 . fani(3,*) ,uwa(*) ,partsav(*) ,
884 . dsave(3,*),asave(3,*),xcut(*) ,anin(*) ,bufnois(*),
885 . accelm(llaccelm,*),
886 . tani(*),volmon(*),eani(*),agrv(*), thke(*), bufsf(*),af(*),
887 . secbuf(*),secfcum(7,numnod,nsect),lambda(*),
888 . fr_wave(*),parts0(*),bufgeo(*),
889 . spbuf(nspbuf,*),xframe(nxframe,*),
890 . wasph(*),w16(*),vsphio(*),fbvel(*),dampr(nrdamp,*),
891 . rdata(*),pv(*),fsavd(nthvki,*),gjbufr(lkjnr,*),rbmpc(*),
892 . sphveln(*),rbyl(nrby,*), msnf(*),
893 . fxbrpm(*), fxbmod(*), fxbglm(*), fxbcpm(*), fxbcps(*),
894 . fxblm(*), fxbfls(*), fxbdls(*), fxbdep(*), fxbvit(*),
895 . fxbacc(*), fxbsig(*), fxbgrvr(*), eigrpm(nerpm,*),
896 . dmsph(*),knot(*),wige(*),ms_2d(*),
897 . knotlocpc(*),knotlocel(*),xcell(*),xface(*),fcont_max(3,*)
899 . rflow(*), rcontact(*),
900 . padmesh(*), msc(*), mstg(*), inc(*) , intg(*), ptg(3,*),
901 . acontact(*), pcontact(*), factiv(*),
902 . mscnd(*), incnd(*), rbym(*), fbfflux(*),
903 . fconv(*), fbftemp(*), ms_ply(*), zi_ply(*), admsms(*),
904 . mcpc(*), mcptg(*), dmelc(*), dmeltg(*), mssa(*), dmels(*),
905 . mstr(*), dmeltr(*), msp(*), dmelp(*), msrt(*), dmelrt(*),
906 . fradia(*), res_sms(*), phie(*),msf(*),
907 . cfield(*),msz2(*), diag_sms(*),loadp(*), dmint2(*),por(*),
908 . gauge(llgauge,*),wagap(2,*),rthbuf(*),forneqs(3,*),
909 . dpl0cld(*),vel0cld(*)
910 my_real ,
INTENT(IN) :: dgaploadint(ninter*nloadp_hyd)
911 TYPE(timer_) :: TIMERS
912 TYPE(connectivity_), INTENT(INOUT) :: ELEMENT
913 TYPE(NODAL_ARRAYS_), INTENT(INOUT) :: NODES
914 TYPE (CLUSTER_) ,DIMENSION(*) :: CLUSTER
915 TYPE(PRGRAPH) :: GRAPHE(*)
916 TYPE(TTABLE) :: TABLE(*)
917 TYPE(ELBUF_STRUCT_),DIMENSION(NGROUP) :: ELBUF_TAB
918 TYPE(ELBUF_STRUCT_),DIMENSION(:),ALLOCATABLE :: ELBUF_IMP
919 TYPE(ELBUF_STRUCT_),DIMENSION(NGROUP,NXEL) :: XFEM_TAB
920 TYPE spsym_struct
921 my_real,
DIMENSION(:) ,
POINTER :: buf
922 END TYPE spsym_struct
923 TYPE () :: XSPSYM,VSPSYM,WSMCOMP
924 TYPE (STACK_PLY) :: STACK
925 TYPE (MPI_MIN_REAL_STRUCT) :: MPI_BUF
926 TYPE(UNIT_TYPE_) :: UNITAB
927 INTEGER MIN_TAB(4)
929 TYPE(coupling_type), intent(inout) :: coupling
930
931
932 INTEGER, DIMENSION(NUMMAT) :: POIN_UMP
933 my_real,
DIMENSION(NBR_GPMP,NSPMD+1) :: cputime_mp_glob
934 my_real,
DIMENSION(TAILLE) :: cputime_mp
935 INTEGER, DIMENSION(7,TAILLE) :: TAB_UMP
937 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
938 TYPE(H3D_DATABASE) :: H3D_DATA
939 TYPE (FAILWAVE_STR_) :: FAILWAVE
940
941 TYPE(SUBSET_) ,DIMENSION(NSUBS) :: SUBSETS
942 TYPE(GROUP_) ,DIMENSION(NGRNOD) :: IGRNOD
943 TYPE(GROUP_) ,DIMENSION(NGRBRIC) :: IGRBRIC
944 TYPE(GROUP_) ,DIMENSION(NGRQUAD) :: IGRQUAD
945 TYPE(GROUP_) ,DIMENSION(NGRSHEL) :: IGRSH4N
946 TYPE(GROUP_) ,DIMENSION(NGRSH3N) :: IGRSH3N
947 TYPE(GROUP_) ,DIMENSION(NGRTRUS) :: IGRTRUSS
948 TYPE(GROUP_) ,DIMENSION(NGRBEAM) :: IGRBEAM
949 TYPE(GROUP_) ,DIMENSION(NGRSPRI) :: IGRSPRING
950 TYPE(GROUP_) ,DIMENSION(NGRPART) :: IGRPART
951 TYPE(SURF_) ,DIMENSION(NSURF) :: IGRSURF
952c
953 TYPE(NLOCAL_STR_) :: NLOC_DMG
954 TYPE(PINCH) :: PINCH_DATA
955 TYPE(t_ale_connectivity), INTENT(INOUT) ::
956 INTEGER, INTENT(IN) :: NE_NERCVOIS(*), NE_NESDVOIS(*), NE_LERCVOIS(*), NE_LESDVOIS(*)
957 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
958 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE) , DRAPE_SH3N(NUMELTG_DRAPE)
959 TYPE(DRAPEG_) :: DRAPEG
960 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
961 TYPE(t_ebcs_tab) ,INTENT(INOUT) :: EBCS_TAB
962 TYPE(T_DIFFUSION) ,INTENT(INOUT) :: DIFFUSION
963 TYPE(t_segvar) :: SEGVAR
964 TYPE(inter_struct_type), DIMENSION(:), ALLOCATABLE :: INTER_STRUCT
965 TYPE(sorting_comm_type), DIMENSION(:), ALLOCATABLE
966 TYPE (LOADS_) ,INTENT(INOUT) :: LOADS
967 TYPE (DYNAIN_DATABASE), INTENT(INOUT) :: DYNAIN_DATA
968 TYPE(USER_WINDOWS_),INTENT(INOUT) :: USER_WINDOWS
969 TYPE(OUTPUT_),INTENT(INOUT) ::
970 TYPE (INTERFACES_) ,INTENT(INOUT) :: INTERFACES
971 TYPE (DT_) ,INTENT(INOUT) :: DT
972 TYPE(MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
973 TYPE(PYTHON_) ,INTENT(INOUT) :: PYTHON
974 TYPE(NAMES_AND_TITLES_),INTENT(INOUT) :: NAMES_AND_TITLES
975 type (glob_therm_) ,intent(inout) :: glob_therm
976 type (PBLAST_) ,intent(inout) :: PBLAST
977 type (rbe3_) ,intent(inout) :: RBE3
978
979 INTEGER ,INTENT(IN) :: NDAMP_VREL,NDAMP_VREL_RBYG
980 INTEGER ,INTENT(IN) :: ID_DAMP_VREL(NDAMP_VREL),FR_DAMP_VREL(NSPMD+2,NDAMP_VREL)
981 TYPE(SKEW_),INTENT(INOUT) ::
982 INTEGER, INTENT(IN) :: LIFLOW
983 INTEGER, INTENT(IN) :: LRFLOW
984
985
986
987 LOGICAL LOUT
988 CHARACTER FILNAM*100
989 INTEGER NODFT, NODLT, I,J, N,
990 . K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K, ISK, KK1,
991 . N0, N1, N2, NN, NNOD, NSENSOR,
992 . ISYNC, TWO_INTS(2),
993 . NELTST,ITYPTST,NWAFT, NBNCL, NBIKL,
994 . NBNODL, NBNODLR,GREFTSK,GRELTSK,
995 . ISTOP, NFIA, NFEA, NFOA, NDMA, NDIN,
996 . NFNCA, NFTCA,NDMA2, NFNCA2, NFTCA2,
997 . L1,L2,L3,LL1,LL2,LL3,NFT2,LISENDP_PXFEM,
998 . LIRECVP_PXFEM,NDAMA2,FLG_KJ2,NCONT,BID,,IVAD,IAD_GREL,
999 . FLG_KJ2_RAZ,I_EXCH_FLG_RAZ
1000 INTEGER :: LISENDP_CRK,LIRECVP_CRK
1001 INTEGER :: I13A,I13B,I13C,I13D,I13E,I13F,I13G,I13H,I13I
1002 INTEGER :: I15A,I15B,I15C,I15D,I15E,I15F,I15G,I15H,I15I,I15J,I15K
1003 INTEGER :: I15ATH,I35ATH
1004 INTEGER :: I87A,I87B,I87C,I87D,I87E,I87F,I87G,I87H,I87I,I87J,I87K,
1005 . I87L,I87M,I87N,IMSCH,IAD1B,IAD1,IAD2,I2MSCH, ISMSCH, ONOFP
1006 INTEGER CPLXIT, ADRNOD, ONOF, ONFELT, ICH,IFLGADM, MADENDREQUEST
1007 CHARACTER*13 CDUM
1008 INTEGER IDUM1, DIM6, DIM_EXCH
1009
1011 . rdum1,maduf,rbuf(10)
1012 INTEGER LLT1,IWIOUT
1013 INTEGER KSPH1,KSPH21,KSPH22,KSPH23,IUN,
1014 . KSPACTIV,KSP2SORT,NELTSA,ITYPTSA,IDTNOD
1015 INTEGER NEGMAS
1016 INTEGER :: LENGTH
1017 INTEGER NBINTC, LENR, LENS, LENI, SIZI, ISIZXV ,ILENXV,
1018 . I2SIZE, LSEND1, LRECV1, LSEND2, LRECV2, NPARTL,
1019 . ISLEN7, IRLEN7, ISLEN11, IRLEN11, LISENDP, LIRECVP,
1020 . ISLEN17, IRLEN17,IRLEN7T,ISLEN7T,LINDIDEL,LBUFIDEL,LBUFSEGLO,
1021 . ISLEN20, IRLEN20, ISLEN20T, IRLEN20T, NBINT20,
1022 . ISLEN20E, IRLEN20E,LAG_SEC,LENS1,LENR1,INT18KINE,
1023 . NRBYKIN_L, INT24USE, NELEML,I24MAXNSNE,INT24E2EUSE
1024 INTEGER :: INT7ITIED
1025 INTEGER, DIMENSION(:,:),ALLOCATABLE ::
1026 . ISENDTO,IRCVFROM,FR_NBCC,FR_NBCCI2,FR_NBCC1
1027 INTEGER, DIMENSION(:),ALLOCATABLE ::
1028 . INTLIST,NISKYFI,ISENDP,IRECVP, IRBKIN_L,
1029 . IPARTL, NISKYFIE, TAGEL,
1030 . ISENDP_PXFEM,IRECVP_PXFEM,COUNT_REMSLV,COUNT_REMSLVE,
1031 . INTLIST25
1032 INTEGER, DIMENSION(:), ALLOCATABLE, TARGET :: CNEL,ADDCNEL,ADDTMPL
1033 INTEGER, DIMENSION(:),ALLOCATABLE ::
1034 . ISENDP_CRK,IRECVP_CRK
1035 INTEGER NSPHACTG,SPH_IORD1
1036 INTEGER, DIMENSION(1), TARGET :: IMP_DUM
1037
1038 my_real,
DIMENSION(:),
ALLOCATABLE :: dretri, xsec,qfricint,icodr0,icodt0,
1039 . stifn_tmp,stifr_tmp
1040 SAVE isendto, ircvfrom, intlist, fr_nbcc, niskyfi, fr_nbcci2,
1041 . nbintc, i2size, islen7 ,irlen7 ,islen11 ,irlen11,
1042 . ilenxv, isizxv, islen17, irlen17,irlen7t,islen7t,
1043 . islen20, irlen20, islen20t, irlen20t, nbint20, niskyfie,
1044 . islen20e, irlen20e, nrbykin_l, irbkin_l, qfricint,
1045 . intlist25
1046 SAVE dretri, xsec, lisendp, lirecvp, isendp, irecvp,
1047 . cnel, addcnel, addtmpl, ipartl, npartl, lindidel, lbufidel,
1048 . lbufseglo
1050 . dt2save, mas, bb, wfexc,trest,dtrest,
1051 . dmast, dinert, factb,dampt,
1052 . xsens(12,sensors%NSENSOR),dampa3
1053 my_real fxbmvn(lencp),fxbsv(lenlm),fxbse(15*nfxbody),
1054 . fxbmcd(lenmcd),fxbfp(lenvar),fxbfc(lenlm),fxbefw(nfxbody),
1055 . fxbedp(nfxbody),fxbgrp(lenvar),fxbgrw(nfxbody)
1056 my_real,
DIMENSION(:,:),
ALLOCATABLE :: dxancg
1057 my_real dt2prev, dtmin1_save, target_dt
1058 SAVE imsch, i2msch, ismsch
1059 SAVE dt2prev
1060 SAVE nfia, nfea, nfoa, ndma, ndin, ndma2,
1061 . i13a,i13b,i13c,i13d,i13e,i13f,i13g,i13h,i13i,
1062 . i15a,i15b,i15c,i15d,i15e,i15f,i15g,i15h,i15i,i15j,i15k,
1063 . i87a,i87b,i87c,i87d,i87e,i87f,i87g,i87h,i87i,i87j,i87k,i87l,
1064 . i87m,i87n,i15ath,i35ath,lag_sec,nft2,ndama2
1065 INTEGER NDDL0,NNZK0,LENQMV,NV46,NUM_IMP(NINTER),NINT7,NT_IMP,
1066 . NNDL,IT,NMC2,LI13,DIRUL(NFXVEL),NUM_IMP1(NINTER),
1067 . FR_RBE2M(SFR_RBE2),R2SIZE,
1068 . NUM_IMPL(NINTER,NTHREAD), I_OPT_STOK(NINTER),IT_T,NTMP
1069 INTEGER IER1,NDS,IBUCK,NMRBE2,NTHOLD
1070 SAVE nmrbe2,r2size,nint7
1071 INTEGER, DIMENSION(:),POINTER :: NS_IMP,NE_IMP,IND_IMP
1072 TYPE (IMPBUF_STRUCT_), TARGET :: IMPBUF_TAB
1073 my_real,
DIMENSION(:) ,
POINTER :: fext_imp,r_imp
1075 data ttmp /0.0/
1076 INTEGER , LWRBEM, IERROR, IERROR2, INTER_ERRORS
1077 INTEGER, DIMENSION(:), ALLOCATABLE :: WIBEM
1078 my_real,
DIMENSION(:),
ALLOCATABLE :: wrbem
1079 SAVE lwibem, lwrbem, wibem, wrbem
1080 INTEGER NKCOND, NDDLG, NRP, NCP, NKCOND_INI, NT_IMP_OLD
1081 INTEGER LWIFLOW, LWRFLOW
1082 INTEGER, DIMENSION(:), ALLOCATABLE :: WIFLOW
1083 my_real,
DIMENSION(:),
ALLOCATABLE :: wrflow
1084 SAVE lwiflow, lwrflow, wiflow, wrflow
1085 INTEGER SIZ, R2R_ON
1086 INTEGER, DIMENSION(:), ALLOCATABLE :: CDDLP
1087#if defined(MUMPS5)
1088 TYPE(DMUMPS_STRUC) MUMPS_PAR
1089#endif
1090 INTEGER IFVMESH
1091
1092 my_real,
DIMENSION(:,:),
ALLOCATABLE :: madclfrecv,partsav2
1093
1094 INTEGER MADYMO_DEL,MADYMO_DEL_GLOBAL
1095 INTEGER, DIMENSION(:), ALLOCATABLE ::MAD_TAG_SOL, MAD_TAG_SH,MAD_TAG_TG,MAD_FAIL_ELEMENTS
1096
1097
1098 INTEGER ITSK, NODFTSK, NODLTSK, NUMNTSK, NDTSK, IPMTSK,
1099 . PARTFTSK, PARTLTSK, NWAFTSK, I16TSK,
1100 . NELTSTT, ITYPTSTT,IGMTSK,NGROUC, NGROUNC,
1101 . NSNFIOLD(NSPMD),
1102 . KINDRBY(NRBYKIN), NINDEX1(NINTER), NINDEX2(NINTER),
1103 . NINDEX3(NINTER), NINDEX4(NINTER), KINDRBYM(NRBYM),
1104 . OMP_GET_THREAD_NUM,IADISK,RNUM_SIZ,RNS,NINDEXP,NI,LENC,ITHOUT
1105 integer :: omp_address
1106 INTEGER, DIMENSION(:),ALLOCATABLE :: IGROUC
1107 INTEGER, DIMENSION(:),ALLOCATABLE :: IGROUNC
1108
1109 EXTERNAL omp_get_thread_num
1110 INTEGER, DIMENSION(:), ALLOCATABLE :: IBUFIDEL, INDIDEL,RENUM,IBUFSEGLO,
1111 . INDSEGLO
1112 my_real dt2tt,d_tstart,d_tstop
1113 my_real xslv(18,ninter),xmsr(12,ninter),
1114 . vslv(6,ninter),vmsr(6,ninter),
1115 . size_t(ninter)
1116
1117
1118 INTEGER FR_RBY6(SFR_RBY)
1119 double precision
1120 . frl6(15,6,nrlink),fnl6(15,6,nlink),
1121 . frwl6(7,6,nrwall),rbym6(6,6,nrbym),sphg_f6(4,6,nbgauge)
1122 DOUBLE PRECISION,DIMENSION(:,:,:),ALLOCATABLE :: RBY6
1123 my_real frl(4,nrlink), fnl(4,nlink)
1124 INTEGER NGRTH,NELEM
1125 INTEGER RESTSIZE
1126
1127 INTEGER FR_SMS(NSPMD+1), FR_RMS(NSPMD+1)
1128 INTEGER, POINTER, DIMENSION(:) :: PTR_SMS
1129 INTEGER NMT0
1130 INTEGER, DIMENSION(:), ALLOCATABLE :: IKINE
1131 my_real,
DIMENSION(:),
ALLOCATABLE :: stk_sn,stk_sr,fcluster,mcluster
1132 my_real,
DIMENSION(:),
ALLOCATABLE :: noda_fext
1133 INTEGER LNZM
1134 INTEGER, DIMENSION(:),ALLOCATABLE :: INT18ADD,TAGPENE
1135 INTEGER, DIMENSION(:),ALLOCATABLE :: IDAMP_RDOF_TAB
1136 my_real,
DIMENSION(:,:),
ALLOCATABLE :: mtf, cand_sav
1137 INTEGER FLG_DTNODAMP,FLG_DAMP_FUNCT
1139 INTEGER IGROUPFLG(2)
1140 INTEGER, DIMENSION(:),ALLOCATABLE :: IGROUPC,IGROUPTG,IGROUPS
1141 INTEGER IOLDSECT
1142
1143
1144 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar
1145 my_real,
DIMENSION(:),
ALLOCATABLE :: sfem_nodvar_ale
1146 INTEGER S_SFEM_NODVAR
1147
1148
1149 INTEGER, DIMENSION(:),ALLOCATABLE :: UNCOMP_FR,FR_LOC,
1150 * UNCOMP_FRI2M,FR_LOCI2M
1151 INTEGER NB_FR,NB_FRI2M
1152
1153
1154 my_real,
DIMENSION(:),
ALLOCATABLE :: mcp_off
1155
1156
1157 INTEGER SFR_I24
1158 INTEGER, DIMENSION(:), ALLOCATABLE :: FR_I24
1159 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IAD_I24
1161 . delta_pmax_gap(ninter)
1162 INTEGER DELTA_PMAX_GAP_NODE(NINTER)
1163 INTEGER S_LOADPINTER,
1164 INTEGER, DIMENSION(:,:), ALLOCATABLE :: TAGNCONT
1165 INTEGER, DIMENSION(:), ALLOCATABLE :: LOADP_HYD_INTER, LOADP_TAGDEL
1166
1167
1168 INTEGER,DIMENSION(:),ALLOCATABLE :: NB25_CANDT
1169 INTEGER,DIMENSION(:),ALLOCATABLE :: NB25_IMPCT
1170 INTEGER,DIMENSION(:),ALLOCATABLE :: NB25_DST1
1171 INTEGER,DIMENSION(:),ALLOCATABLE :: NB25_DST2
1172 SAVE nb25_candt,nb25_impct,nb25_dst1,nb25_dst2
1173
1174
1175 INTEGER
1176 INTEGER, DIMENSION(:), ALLOCATABLE :: FR_I25
1177 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IAD_I25
1178
1179 REAL(kind=4), dimension(:,:), ALLOCATABLE :: fskyn25
1180
1182 INTEGER :: FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE
1183
1184
1185 INTEGER IDEL7NOK_R2R,IDEL7NOK_SAV,NUMSPH_GLO_R2R,FLG_SPHINOUT_R2R
1186 INTEGER, DIMENSION(:),ALLOCATABLE :: OFF_SPH_R2R
1187
1188
1189 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: ISENSINT
1190 INTEGER NISUBMAX
1191
1192 INTEGER, ALLOCATABLE, DIMENSION(:) :: ICONTACT_OLD
1193
1195 . , DIMENSION(:),ALLOCATABLE :: waspsym
1196
1197 INTEGER LSKYI_SMS_NEW
1198 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: T2MAIN_SMS
1199 my_real,
DIMENSION(:),
ALLOCATABLE :: t2fac_sms
1200 my_real,
DIMENSION(:),
ALLOCATABLE :: mskyi_fi_sms
1201 INTEGER, DIMENSION(:),ALLOCATABLE :: LIST_SMS
1202 INTEGER, DIMENSION(:),ALLOCATABLE :: LIST_RMS
1203 my_real,
DIMENSION(:,:),
ALLOCATABLE :: cjwork
1204 my_real,
DIMENSION(:,:),
ALLOCATABLE :: frea
1205 INTEGER, DIMENSION(:), ALLOCATABLE :: IRWL_WORK
1206 my_real,
DIMENSION(:,:),
ALLOCATABLE :: sms_vfi
1207 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: MW6
1208 integer sz_mw6
1209
1210
1211 INTEGER :: NFVBAG0
1212 LOGICAL :: CHECK_NPOLH
1213
1214 INTEGER, DIMENSION(:),ALLOCATABLE :: ,TAGTRIMTG
1215
1216
1217 INTEGER :: IFTHE, ICONDN, IDX_FTHE, IDX_CONDN, IDX_PINCH,
1218
1219 INTEGER NFACNIT
1220 my_real,
DIMENSION(:,:),
ALLOCATABLE :: stressmean
1221 my_real,
DIMENSION(:),
ALLOCATABLE :: forneqsky
1222
1223 INTEGER :: NUMSKW_L,NUMSKW_L_SEND,NODFTSK_2,NODLTSK_2
1224 INTEGER, DIMENSION(NUMSKW) :: ISKWP_L_SEND
1225 INTEGER, DIMENSION(NSPMD) :: RECVCOUNT
1226 INTEGER, DIMENSION(NTHREAD) :: NODFT_ASSPAR, NODLT_ASSPAR
1227 INTEGER NODFT_NL,
1228 REAL(kind=8) :: secs
1229 REAL(kind=8) :: tt_double
1231 . dtnod_nlocal,t_kin
1232 INTEGER, DIMENSION(:),ALLOCATABLE ::IBUFPDEL, NINDEXPDEL
1233
1234 DOUBLE PRECISION :: argin,argout
1235 DOUBLE PRECISION, DIMENSION(:,:,:),ALLOCATABLE :: RBY6_C
1236
1237
1238 INTEGER FXVEL_FGEO
1239
1240
1241 INTEGER SIZE_RBY6_C,FL_VREL
1243
1244
1245 type(viper_coupling_) :: VIPER
1246
1247
1248 INTEGER :: SZ_NPCONT2
1249 my_real,
DIMENSION(:,:),
ALLOCATABLE :: npcont2
1250
1251
1252 my_real,
TARGET,
DIMENSION(:,:),
ALLOCATABLE :: xyz
1253 my_real,
POINTER,
DIMENSION(:,:),
contiguous :: ptrx, ptrx_offset
1254 TYPE(sh_offset_) :: SH_OFFSET_TAB
1255
1256 INTEGER IFLAG, COMPTREAC
1257! 1. Storing Freac=fint+fext+fcont
1258
1259
1260
1261
1262! because
sortie_main(output) is done before integration of accelerations
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292 INTEGER :: STATE_H3D, STATE_ANIM
1293 LOGICAL :: BOOL_RESTART
1294
1295 INTEGER :: NATIV_SMS_SIZ
1296 INTEGER :: TEMP_SIZ
1297
1298 TYPE(shooting_node_type) :: SHOOT_STRUCT
1299 INTEGER :: S_ELEM_STATE
1300 LOGICAL, DIMENSION(:), ALLOCATABLE :: ELEM_STATE
1301 INTEGER :: SIZE_ADDCNEL
1302 INTEGER :: SIZE_CNEL
1303 LOGICAL :: GLOBAL_ACTIVE_ALE_ELEMENT
1304
1305 INTEGER :: SIZE_NPBY
1306
1307
1308 LOGICAL :: NEED_COMM_INTER18
1309 INTEGER :: NUMBER_INTER18
1310 INTEGER, DIMENSION(NINTER) :: INTER18_LIST
1311 TYPE(array_type), DIMENSION(:), ALLOCATABLE :: XCELL_REMOTE
1312
1313 my_real,
DIMENSION(:),
ALLOCATABLE :: fsky_l
1314 LOGICAL :: NEED_COMM_INT25_SOLID_EROSION
1315 INTEGER :: COMM_INT25_SOLID_EROSION
1316
1317 INTEGER :: CHECK_NEIGH_FLAG,CHECK_NEIGH_FLAG_RES
1318
1319 integer, dimension(nspmd+2) :: frontier_global_mv
1320 integer :: sporo
1321
1322 INTEGER STOP_OR_ADD_CYCLE
1323 DATA iun/1/
1324 INTEGER MAXFUNC
1325 parameter(maxfunc = 100)
1326 integer :: numnod_old,numnodm_old
1327 integer :: new_crack
1328
1329
1330
1331 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_sh4
1332 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_sh3
1333 my_real,
DIMENSION(:),
ALLOCATABLE :: thick_nod
1334 my_real,
DIMENSION(:),
ALLOCATABLE :: area_nod
1335 my_real,
DIMENSION(:),
ALLOCATABLE :: area_sh4
1336 my_real,
DIMENSION(:),
ALLOCATABLE :: area_sh3
1337
1338
1339
1340 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_sh4
1341 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_sh3
1342 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_thick_nod
1343 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_nod
1344 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_sh4
1345 my_real,
DIMENSION(:),
ALLOCATABLE :: admerr_area_sh3
1346
1347 type(SPH_WORK_) :: SPH_WORK
1348 type (ams_work_) :: ams_work
1349
1350 type(component_), dimension(:), allocatable :: component
1351
1352
1353 logical :: ongoing
1354 double precision :: dt2max_coupling
1355
1356 element%SHELL%OFFSET = numels + numelq
1358 interfaces%NINTER = ninter
1359 interfaces%npari = npari
1360
1361 CALL my_alloc(rby6,8,6,nrbykin)
1362 CALL my_alloc(dxancg,3,numnod)
1363 CALL my_alloc(nb25_candt,parasiz)
1364 CALL my_alloc(nb25_impct,parasiz)
1365 CALL my_alloc(nb25_dst1,parasiz)
1366 CALL my_alloc(nb25_dst2,parasiz)
1367 CALL my_alloc(igrouc,ngroup)
1368 CALL my_alloc(igrounc,ngroup)
1369
1370 ALLOCATE(interfaces%PON%ADSKYI(0:numnod+1))
1371 bool_restart = .true.
1372 state_h3d = 0
1373 state_anim = 0
1374 ALLOCATE(int18add(ninter+1))
1375 int18add(1) = 1
1376 int18add(ninter+1) = 0
1378 ALLOCATE (idamp_rdof_tab(sicontact))
1379 ALLOCATE( icontact_old(sicontact))
1380 idamp_rdof_tab = 0
1381 flg_dtnodamp = 0
1382 IF ((nodadt==1).AND.
1383 . (idamp_rdof==ndamp .OR. ndamp>0 .OR. istat==3)) THEN
1384 flg_dtnodamp = 1
1385 ENDIF
1386 flg_damp_funct = 0
1387 IF (ndamp>0) THEN
1388 DO i=1,ndamp
1389 IF(nint(dampr(21,i))==4) flg_damp_funct=1
1390 END DO
1391 END IF
1392 flg_kj2 = 0
1393 i_exch_flg_raz = 0
1394 neltst = 0
1395 ityptst = 0
1396 dt2t = 0
1397 mstop_dt_therm = 0
1398 nsensor = sensors%NSENSOR
1399
1400 IF(glob_therm%ITHERM_FE>0) THEN
1401 temp_siz = numnod
1402 ELSE
1403 temp_siz = 0
1404 ENDIF
1405
1406
1407 int24use = 0
1408 int24e2euse = 0
1409
1410
1411 cplxit=0
1412 ilastanim=0
1413 ilasth3d=0
1414 ioldsect = -1
1415 ilastdynain=0
1416 nodft = 1
1417 nodlt = numnod
1418 nwaft = 1
1419 lout = ispmd==0
1420 iwiout = 0
1421 lmpc = 0
1422 tt_double = tt
1423 lskyi_count = 0
1424 flag_slipring_update = 0
1425 flag_retractor_update = 0
1426 IF (ndamp_vrel_rbyg > 0) THEN
1427 size_rby6_c = nrbykin
1428 ELSE
1429 size_rby6_c = 0
1430 ENDIF
1431 ALLOCATE(rby6_c(2,6,size_rby6_c))
1432
1433 IF(ispmd==0)THEN
1434 DO i = 1,nummpc
1435 lmpc = lmpc + ibmpc(i)
1436 ENDDO
1437 END IF
1438
1439
1440
1441 size_npby = snpby/nnpby
1442
1443
1444 getunod_nocom=0
1445
1446
1447
1448
1449
1450
1451 IF (imon>0) THEN
1453 ENDIF
1454
1455
1456
1457 imsch = 0
1458 i2msch = 0
1459 dt2prev= zero
1460 lisendp_pxfem = 0
1461 lirecvp_pxfem = 0
1462
1463 lisendp_crk = 0
1464 lirecvp_crk = 0
1465
1466 pblast%PBLAST_DT%IDT = 0
1467
1468 numsph_glo_r2r = 0
1469 flg_sphinout_r2r = 0
1470
1471 CALL assinit(element%PON%ADSKY,nodes%BOUNDARY_ADD,nodes%BOUNDARY,element%PON%PROCNE,lisendp,lirecvp)
1472 IF(iplyxfem > 0 )
1473 .
CALL assinit_pxfem(adsky_pxfem,inod_pxfem,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
1474 . procne_pxfem,lisendp_pxfem,lirecvp_pxfem)
1475 IF (icrack3d > 0 .AND. nspmd > 1)
1477 . nodes%BOUNDARY,procne_crk,lisendp_crk,
1478 . lirecvp_crk)
1479 ALLOCATE(isendto(ninter+1,nspmd+1))
1480 ALLOCATE(ircvfrom(ninter+1,nspmd+1))
1481 isendto(1:ninter+1, 1:nspmd+1) = 0
1482 ircvfrom(1:ninter+1, 1:nspmd+1) = 0
1483
1484 ALLOCATE(intlist(2*ninter))
1485 ALLOCATE(intlist25(ninter25))
1486 ALLOCATE(niskyfi(ninter))
1487 ALLOCATE(niskyfie(ninter))
1488 ALLOCATE(count_remslv(ninter))
1489 ALLOCATE(count_remslve(ninter))
1490 count_remslv(1:ninter)=0
1491 count_remslve(1:ninter)=0
1492 ALLOCATE(fr_nbcc(2,nspmd+1))
1493 ALLOCATE(fr_nbcci2(2,nspmd+1))
1494 ALLOCATE(dretri(5*ninter))
1495 ALLOCATE(xsec(3*4*nsect))
1496 ALLOCATE(irbkin_l(nrbykin))
1497 ALLOCATE(element%PON%ISENDP(
min(lisendp,1):lisendp))
1498 ALLOCATE(element%PON%IRECVP(
min(lirecvp,1):lirecvp))
1499 ALLOCATE(isendp_pxfem(
min(lisendp_pxfem,1):lisendp_pxfem))
1500 ALLOCATE(irecvp_pxfem(
min(lirecvp_pxfem,1):lirecvp_pxfem))
1501 ALLOCATE(isendp_crk(
min(lisendp_crk,1):lisendp_crk))
1502 ALLOCATE(irecvp_crk(
min(lirecvp_crk,1):lirecvp_crk))
1503 ALLOCATE(fr_nbcc1(2,nspmd+1))
1504
1505
1506
1507 nloadp_hyd_inter = 0
1508 ierror = 0
1509 IF(nintloadp > 0 ) THEN
1510 ALLOCATE(loadp_hyd_inter(nloadp_hyd),stat=ierror2)
1511 ierror = ierror + ierror2
1512 DO k=1,nloadp_hyd
1513 IF(iloadp(sizloadp*(k-1)+5) > 0 ) THEN
1514 nloadp_hyd_inter = nloadp_hyd_inter + 1
1515 loadp_hyd_inter(k) = nloadp_hyd_inter
1516 ENDIF
1517 ENDDO
1518 ENDIF
1519
1520 IF(nloadp_hyd_inter > 0) THEN
1521 ALLOCATE(tagncont(nloadp_hyd_inter,numnod),stat=ierror2)
1522 ierror = ierror + ierror2
1523 IF(ierror/=0)THEN
1524 CALL ancmsg(msgid=158,anmode=aninfo,
1525 . i1=ierror)
1527 END IF
1528 tagncont = 0
1529 ELSE
1530 ALLOCATE(tagncont(0,0))
1531 ENDIF
1532
1533 s_loadpinter = ninter*nloadp_hyd
1534
1535 npresload = 0
1536 IF(nloadp_hyd > 0 ) THEN
1537 DO k=1,nloadp_hyd
1538 npresload = npresload + iloadp(sizloadp*(k-1)+1)/4
1539 ENDDO
1540 ALLOCATE(loadp_tagdel(npresload),stat=ierror2)
1541 loadp_tagdel(1:npresload) =0
1542 ELSE
1543 ALLOCATE(loadp_tagdel(0))
1544 ENDIF
1545
1546 IF(interfaces%PARAMETERS%INTCAREA>0) THEN
1547 ALLOCATE(interfaces%PARAMETERS%INTAREAN(numnod))
1548 ELSE
1549 ALLOCATE(interfaces%PARAMETERS%INTAREAN(0))
1550 ENDIF
1551
1552
1553
1554 IF(nsurf > 0) THEN
1557 ELSE
1558 ALLOCATE(output%TH%TH_SURF%CHANNELS(0,0))
1559 ENDIF
1560
1561 IF(output%TH%TH_SURF%IOK > 0 ) THEN
1562 IF(output%TH%TH_SURF%LOADP_FLAG > 0 ) THEN
1563 output%TH%TH_SURF%NSEGLOADPF = 0
1564 DO k=1,nloadp_f
1565 output%TH%TH_SURF%NSEGLOADPF = output%TH%TH_SURF%NSEGLOADPF + iloadp(sizloadp*(k-1)+1)/4
1566 ENDDO
1567 output%TH%TH_SURF%NSEGLOADPB = 0
1568 DO k=nloadp_f+1,pblast%NLOADP_B
1569 output%TH%TH_SURF%NSEGLOADPB = output%TH%TH_SURF%NSEGLOADPB + iloadp(sizloadp*(k-1)+1)/4
1570 ENDDO
1571 output%TH%TH_SURF%NSEGLOADP = 0
1572 DO k=nloadp_f+pblast%NLOADP_B+1,nloadp
1573 output%TH%TH_SURF%NSEGLOADP = output%TH%TH_SURF%NSEGLOADP + iloadp(sizloadp*(k-1)+1)/4
1574 ENDDO
1575 ENDIF
1576 ENDIF
1577
1578
1579 IF((idel7ng>0).OR.(irad2r/=0).OR.(
alemuscl_param%IALEMUSCL>0).OR.(pdel>0))
THEN
1580 size_addcnel = numnod+1
1581 size_cnel = lcnel
1582 neleml = numels+numelq+numelc+numelt+numelp+
1583 . numelr+numeltg
1584 s_elem_state = neleml
1585 ELSE
1586 size_addcnel = 0
1587 size_cnel = 0
1588 s_elem_state = 0
1589 ENDIF
1590 ierror = 0
1591 ALLOCATE(cnel(0:size_cnel))
1592 ALLOCATE(addcnel(0:size_addcnel))
1593 IF((idel7ng>0).OR.(irad2r/=0).OR.(
alemuscl_param%IALEMUSCL>0).OR.(pdel>0))
THEN
1594
1595 ALLOCATE(addtmpl(0:numnod+1))
1596 ierror = ierror + ierror2
1597 neleml = numels+numelq+numelc+numelt+numelp+
1598 . numelr+numeltg
1599 ALLOCATE(tagel(1:neleml))
1600 tagel(:) = 0
1604 ELSE
1605 ALLOCATE(addtmpl(0),tagel(0))
1606 END IF
1607 ALLOCATE(ipartl(npart))
1608 ALLOCATE(partsav2(2,npart))
1609 ALLOCATE( elem_state(s_elem_state) )
1610 elem_state(1:s_elem_state) = .true.
1611
1612
1613
1614 glob_therm%NODADT_THERM = 0
1615 IF(glob_therm%IDT_THERM == 1) THEN
1616 IF(ninter>0.OR.nodadt>0) glob_therm%NODADT_THERM = 1
1617 ENDIF
1618 IF(glob_therm%IDT_THERM == 1) THEN
1619 ALLOCATE(icodt0(numnod))
1620 ALLOCATE(icodr0(numnod))
1621 ELSE
1622 ALLOCATE(icodt0(0))
1623 ALLOCATE(icodr0(0))
1624 ENDIF
1625
1626 ALLOCATE(mcp_off(numnod))
1627 mcp_off(1:numnod) = 1.0
1628
1629 ifthe = 1
1630 icondn = 1
1631 IF(glob_therm%ITHERM_FE > 0 ) THEN
1632 IF(iparit == 3 ) THEN
1633 ifthe = numnod+3*numnod*nthread
1634 ALLOCATE(fthe(ifthe), fthesky(lsky))
1635 ELSEIF(iparit /= 0 ) THEN
1636 ifthe = numnod
1637 ALLOCATE(fthe(ifthe), fthesky(lsky))
1638 ELSE
1639 ifthe = numnod*nthread
1640 ALLOCATE(fthe(ifthe), fthesky(0))
1641 ENDIF
1642 ALLOCATE(qfricint(ninter))
1643 qfricint(1:ninter) = zero
1644 IF (glob_therm%NODADT_THERM == 1) THEN
1645 IF(iparit == 0 ) THEN
1646 icondn = numnod*nthread
1647 ALLOCATE (condn(icondn), condnsky(0))
1648 ELSE
1649 icondn = numnod
1650 ALLOCATE (condn(icondn),stat=ierr)
1651 ALLOCATE (condnsky(lsky),stat=ierr)
1652 ENDIF
1653 ENDIF
1654 ELSE
1655 ifthe = 1
1656 icondn = 1
1657 ALLOCATE(fthe(ifthe), fthesky(0))
1658 ALLOCATE(qfricint(ninter))
1659 qfricint(1:ninter) = zero
1660 ALLOCATE(condn(icondn),condnsky(0))
1661 ENDIF
1662
1663 IF (glob_therm%INTHEAT > 0 ) THEN
1664 IF(iparit /= 0 )THEN
1665 ALLOCATE(ftheskyi(lskyi))
1666 ftheskyi(1:lskyi) = 0
1667 ELSE
1668 ALLOCATE(ftheskyi(0))
1669 ENDIF
1670 IF (glob_therm%NODADT_THERM == 1) THEN
1671 IF(iparit /= 0 )THEN
1672 ALLOCATE(condnskyi(lskyi))
1673 ELSE
1674 ALLOCATE(condnskyi(0))
1675 ENDIF
1676 ELSE
1677 ALLOCATE(condnskyi(0))
1678 ENDIF
1679 ELSE
1680 ALLOCATE(ftheskyi(0))
1681 ALLOCATE(condnskyi(0))
1682 ENDIF
1683
1684
1685
1686 IF(iplyxfem > 0 ) THEN
1687 IF(iparit /= 0 ) THEN
1688 ALLOCATE(
plysky(nplymax))
1689
1690 DO i=1,nplymax
1692 ALLOCATE(
ply(i)%A(4,nplyxfe),
1693 .
plysky(i)%FSKY(4,lskypxfem))
1696 NULLIFY(
ply(i)%ITAG)
1697 ALLOCATE(
ply(i)%ITAG(nplyxfe))
1699 ENDDO
1700 ELSE
1701
1702 DO i=1,nplymax
1704 ALLOCATE(
ply(i)%A(4,nplyxfe*nthread))
1706 ENDDO
1708 ENDIF
1709 IF(anim_ply > 0) THEN
1710 ALLOCATE(vn_nod(3,nplyxfe))
1711 vn_nod = zero
1712 ELSE
1713 ALLOCATE(vn_nod(0,0))
1714 ENDIF
1715 ELSE
1717 ENDIF
1718
1719 IF(intplyxfem > 0 ) THEN
1720 IF(iparit /= 0 ) THEN
1723 ALLOCATE(
plyskyi%FSKYI(lskyi,5))
1725 ELSE
1727 ENDIF
1728 ELSE
1729 ENDIF
1730
1731 IF(irigid_mat > 0 ) THEN
1732 ALLOCATE(vrbym(3*nrbym),vrrbym(3*nrbym),
1733 . arbym(3*nrbym),arrbym(3*nrbym))
1734 vrbym = zero
1735 vrrbym = zero
1736 arbym = zero
1737 arrbym = zero
1738 ELSE
1739 ALLOCATE(vrbym(0),vrrbym(0),arbym(0),arrbym(0))
1740 ENDIF
1741
1742
1743
1744
1745 IF( ialelag > 0) THEN
1746 IF(iparit == 0) THEN
1747 ALLOCATE (aflow(3*numnod*nthread))
1748 ALLOCATE(ffsky(0))
1749 ALLOCATE(
ifoam(numnod*nthread))
1751 ELSE
1752 ALLOCATE (aflow(3*numnod))
1753 ALLOCATE(ffsky(3*lsky))
1754 ALLOCATE(
ifoam(numnod))
1756 ffsky = zero
1757 ENDIF
1758 aflow = zero
1761 DO i=1,numnod
1762 msf(i) = msnf(i)
1763 ENDDO
1764 ELSE
1765 ALLOCATE(aflow(0),vflow(0),
1766 . dflow(0),wflow(0),
1767 . ffsky(0),
ifoam(0),
1769 ENDIF
1770
1771 IF(nadmesh/=0)THEN
1776 . stat=ierror)
1777
1778 IF(ierror/=0) THEN
1779 CALL ancmsg(msgid=153,anmode=aninfo,
1780 . i1=ierror)
1782 END IF
1783
1784 IF (iparit/=0) THEN
1786 . stat=ierror)
1787 IF(ierror/=0) THEN
1788 CALL ancmsg(msgid=153,anmode=aninfo,
1789 . i1=ierror)
1791 END IF
1792 ELSE
1794 END IF
1795 ALLOCATE(
ilevnod(0:numnod),stat=ierr)
1796 IF(ierr/=0) THEN
1797 CALL ancmsg(msgid=20,anmode=aninfo)
1799 END IF
1800 END IF
1801
1802 IF(istatcnd /= 0)THEN
1805 . stat=ierror)
1806 IF(ierror/=0) THEN
1807 CALL ancmsg(msgid=159,anmode=aninfo,
1808 . i1=ierror)
1810 END IF
1811 ALLOCATE(acnd(3,numnod),arcnd(3,numnod),
1812 . stcnd(nthread*numnod) ,strcnd(numnod),
1813 . stat=ierror)
1814 IF(ierror/=0) THEN
1815 CALL ancmsg(msgid=159,anmode=aninfo,
1816 . i1=ierror)
1818 END IF
1819 ELSE
1821 ALLOCATE(acnd(0,0),arcnd(0,0),
1822 . stcnd(0) ,strcnd(0) )
1823 END IF
1824
1825 IF( (anim_n(18) /= 0 .OR. h3d_data%N_SCAL_STIFR /= 0) .AND. iroddl /= 0) THEN
1826 ALLOCATE(stifr_tmp(numnod))
1827 ELSE
1828 ALLOCATE(stifr_tmp(0))
1829 ENDIF
1830 IF( anim_n(19) /= 0 .OR. h3d_data%N_SCAL_STIFN /= 0) THEN
1831 ALLOCATE(stifn_tmp(numnod))
1832 ELSE
1833 ALLOCATE(stifn_tmp(0))
1834 ENDIF
1835
1836
1837
1838 IF(anim_ce(2156)/=0 .OR. iadmerrt/=0 .OR.
1839 . h3d_data%SH_SCAL_ERR_THK /= 0)THEN
1840 ALLOCATE(err_thk_sh4(numelc))
1841 ALLOCATE(err_thk_sh3(numeltg))
1842 err_thk_sh4(1:numelc) = zero
1843 err_thk_sh3(1:numeltg) = zero
1844 ELSE
1845 ALLOCATE(err_thk_sh4(0))
1846 ALLOCATE(err_thk_sh3(0))
1847 END IF
1848
1849 IF(inter_ithknod/=0)THEN
1850 ALLOCATE(thksh4(numelc),thksh3(numeltg),
1851 . thknod(numnod),
1852 . stat=ierror)
1853 IF(ierror/=0) THEN
1854 CALL ancmsg(msgid=20,anmode=aninfo)
1856 END IF
1857 ELSE
1858 ALLOCATE(thksh4(0))
1859 ALLOCATE(thksh3(0))
1860 ALLOCATE(thknod(0))
1861 END IF
1862
1863 IF( anim_ce(2156)/=0 .OR. h3d_data%SH_SCAL_ERR_THK /=0) THEN
1864 CALL my_alloc(area_sh4,numelc)
1865 CALL my_alloc(area_sh3,numeltg)
1866 CALL my_alloc(area_nod,numnod)
1867 CALL my_alloc(thick_sh4,numelc)
1868 CALL my_alloc(thick_sh3,numeltg)
1869 CALL my_alloc(thick_nod,numnod)
1870 ENDIF
1871
1872 IF (iadmerrt/=0) THEN
1873 CALL my_alloc(admerr_area_sh4,numelc)
1874 CALL my_alloc(admerr_area_sh3,numeltg)
1875 CALL my_alloc(admerr_area_nod,numnod)
1876 CALL my_alloc(admerr_thick_sh4,numelc)
1877 CALL my_alloc(admerr_thick_sh3,numeltg)
1878 CALL my_alloc(admerr_thick_nod,numnod)
1879 ENDIF
1880
1881
1882
1883
1884 ismsch =1
1885 IF(idtmins /= 0)THEN
1897 . x_sms(3,numnod), p_sms(3,numnod),
1898 . y_sms(3,numnod), z_sms(3,numnod),
1899 . prec_sms(numnod), xmom_sms(3,numnod),
1900 . prec_sms3(3,numnod),diag_sms3(3,numnod),
1901 . t2main_sms(6,numnod),
1902 . t2fac_sms(numnod),
1903 . stat=ierror)
1904 IF(ierror/=0) THEN
1905 CALL ancmsg(msgid=19,anmode=aninfo,
1906 . c1='(/DT/.../AMS)')
1908 ENDIF
1909 fr_rms(1:nspmd+1)=0
1910 fr_sms(1:nspmd+1)=0
1911 t2main_sms = 0
1912 t2fac_sms = one
1913 ELSEIF(idtmins_int/=0)THEN
1925 . x_sms(3,numnod), p_sms(3,numnod),
1926 . y_sms(3,numnod), z_sms(3,numnod),
1927 . prec_sms(numnod), xmom_sms(3,numnod),
1928 . prec_sms3(3,numnod),diag_sms3(3,numnod),
1929 . t2main_sms(6,numnod),
1930 . t2fac_sms(numnod),
1931 . stat=ierror)
1932 IF(ierror/=0) THEN
1933 CALL ancmsg(msgid=19,anmode=aninfo,
1934 . c1='(/DT/.../AMS)')
1936 ENDIF
1938 fr_rms(1:nspmd+1)=0
1939 fr_sms(1:nspmd+1)=0
1940 t2main_sms = 0
1941 t2fac_sms = one
1942 ELSE
1954 . x_sms(0,0), p_sms(0,0),
1955 . y_sms(0,0), z_sms(0,0), prec_sms(0),
1956 . xmom_sms(0,0), prec_sms3(0,0),diag_sms3(0,0),
1957 . t2main_sms(0,0),
1958 . t2fac_sms(0))
1959
1961 END IF
1962 IF(idtmins == 2 .AND. nintstamp /=0)THEN
1965 . stat=ierror)
1966 IF(ierror/=0) THEN
1967 CALL ancmsg(msgid=19,anmode=aninfo,
1968 . c1='(/DT/.../AMS)')
1970 ENDIF
1971 ELSE
1974 END IF
1975
1976 IF(idtmins /= 0 .OR. idtmins_int /= 0)THEN
1978 . stat=ierror)
1979 IF(ierror/=0) THEN
1980 CALL ancmsg(msgid=19,anmode=aninfo,
1981 . c1='(/DT/.../AMS)')
1983 ENDIF
1984 ELSE
1986 END IF
1987
1988 IF(idtmins == 2 .OR. idtmins_int /= 0)THEN
1989 ALLOCATE(mskyi_sms(lskyi_sms),
iskyi_sms(lskyi_sms,3),
1991 . lti_sms(2*lskyi_sms),
1992 . stat=ierror)
1993 IF(ierror/=0) THEN
1994 CALL ancmsg(msgid=19,anmode=aninfo,
1995 . c1='(/DT/.../AMS)')
1997 ENDIF
1998 ELSE
2001 END IF
2002
2003 IF (ireac == 1 ) THEN
2005 ELSE
2007 ENDIF
2008
2009 IF (igrelem == 1) THEN
2010 ngpe = nthpart
2011 ngrth = nthpart
2012 nelem=numelsg+3*numels16g+numsphg+
2013 . numelcg+numeltgg+numelqg+
2014 . numeltg + numelpg + 2*numelrg
2015 ELSE
2016 ngpe = 0
2017 ngrth = 0
2018 nelem = 0
2019 ENDIF
2020
2021 IF (igrelem == 1 ) THEN
2022 ALLOCATE(
grth(nelem+ngrth+1))
2023 ALLOCATE(
igrth(nelem+1))
2024 ELSE
2027 ENDIF
2030 dxancg = zero
2031
2032
2033
2034
2035
2036 igroupflg(1:2)=0
2037 IF(nvolu > 0) igroupflg(1) = 1
2038 DO i=1,nummat
2039 IF(ipm(2,i)/=19.AND.ipm(2,i)/=58) cycle
2040 IF(ipm(4,i) >= 4) igroupflg(1)=1
2041 ENDDO
2042 IF(igroupflg(1) == 1) THEN
2043 ALLOCATE(igroupc(numelc))
2044 ALLOCATE(igrouptg(numeltg))
2045 ELSE
2046 ALLOCATE(igroupc(0))
2047 ALLOCATE(igrouptg(0))
2048 ENDIF
2049 igroupflg(2)=1
2050 ALLOCATE(igroups(numels))
2051
2052
2053 fxvel_fgeo = 0
2054
2055
2056
2057
2058 rnum_siz=numnod
2059 ALLOCATE(renum(rnum_siz))
2060
2061
2062
2063 nisubmax = 0
2064 DO i=1,ninter
2065 nisubmax =
max(nisubmax,ipari(36,i))
2066 ENDDO
2067 ALLOCATE(isensint(nisubmax+1,ninter))
2068 isensint(1:nisubmax+1,1:ninter) = 0
2069
2070 idel7nok_sav=idel7nok
2071
2072
2074
2075
2076
2077
2078
2079 l1 = 1+nixs*numels + nsvois*nixs
2080 l2 = l1+6*numels10
2081 l3 = l2+12*numels20
2082 ll1 = 1+8*numels
2083 ll2 = ll1+6*numels10
2084 ll3 = ll2+12*numels20
2085 IF(nadmesh/=0.AND.idel7ng>=1)THEN
2086 ALLOCATE(tagtrimc(numelc))
2087 ALLOCATE(tagtrimtg(numeltg))
2088 ELSE
2089 ALLOCATE(tagtrimc(0))
2090 ALLOCATE(tagtrimtg(0))
2091 ENDIF
2092
2093
2094 nfacnit =0
2095 IF (nitsche > 0 ) THEN
2096
2097
2098 ALLOCATE(stressmean(6,numels))
2099
2100
2101 IF(iparit /= 0 ) THEN
2102 IF(numels10g ==0) THEN
2103 nfacnit = 6
2104 ALLOCATE(forneqsky(18*lsky))
2105 forneqsky(1:18*lsky) = zero
2106 ELSE
2107 nfacnit = 16
2108 ALLOCATE(forneqsky(48*lsky))
2109 forneqsky(1:48*lsky) = zero
2110 ENDIF
2111 ELSE
2112 ALLOCATE(forneqsky(0))
2113 ENDIF
2114 stressmean(1:6,1:numels)=zero
2115 ELSE
2116 ALLOCATE(stressmean(0,0))
2117 ALLOCATE( forneqsky(0))
2118 ENDIF
2119
2120 CALL newskw_init(iskwp,numskw_l,nskwp,numskw_l_send,iskwp_l_send,recvcount)
2121 partsav2(1:2,1:npart) = zero
2122
2123
2124 ALLOCATE( inter_struct(ninter) )
2125 ALLOCATE( sort_comm(ninter) )
2127
2128
2129
2130
2131
2132 CALL python_register(python,nodes,numnod,
2133 . ixs, nixs, numels,
2134 . element%SHELL%IXC, nixc, numelc,
2135 . ixp, nixp, numelp,
2136 . ixt, nixt, numelt,
2137 . ixq, nixq, numelq,
2138 . ixtg, nixtg, numeltg,
2139 . ixr, nixr, numelr,
2140 . iparg, ngroup, nparg, mvsiz)
2141
2142 IF(python%NB_FUNCTS > 0) CALL python_share_memory(python,nodes,numnod,
2143 . ixs, nixs, numels,
2144 . element%SHELL%IXC, nixc, numelc,
2145 . ixp, nixp, numelp,
2146 . ixt, nixt, numelt,
2147 . ixq, nixq, numelq,
2148 . ixtg, nixtg, numeltg,
2149 . ixr, nixr, numelr,
2150 . iparg, ngroup, nparg)
2151
2152
2153
2154 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2155 k2=k1+numels
2156 k3=k2+numelq
2157 k4=k3+numelc
2158 k5=k4+numelt
2159 k6=k5+numelp
2160 k7=k6+numelr
2161 k8=k7
2162 k9=k8+numeltg
2163 CALL funct_python_update_elements(python, ispmd,
2164 . n2d, ngroup, nixc, nixtg, nixs,nixq,
2165 . numgeo, numelc, numeltg, numels, numelq, nummat, numnod,
2166 . nparg, npropg, npropm, npropmi, npropgi,
2167 . snercvois, snesdvois, slercvois, slesdvois,
2168 . sthke, seani, npart,
2169 . elbuf_tab ,iparg ,geo ,
2170 . element%SHELL%IXC ,ixtg , ixs, ixq, pm ,bufmat ,
2171 . eani,
2172 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
2173 . nodes ,w ,ale_connectivity,
2174 . nercvois ,nesdvois ,lercvois ,lesdvois,
2175 . m51_n0phas, m51_nvphas, stack ,
2176 . ipart(k3:k4-1),ipart(k1:k2-1),ipart(k8:k9-1), ipart(k2:k3-1),
2177 . multi_fvm ,
2178 . mat_elem%MAT_PARAM ,
fani_cell,glob_therm%ITHERM)
2179
2180
2181
2182
2183
2184
2185 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
2186 k2=k1+numels
2187 k3=k2+numelq
2188 k4=k3+numelc
2189 k5=k4+numelt
2190 k6=k5+numelp
2191 k7=k6+numelr
2192 k8=k7
2193 k9=k8+numeltg
2194 k10=k9+numelx
2195 k11=k10+numsph
2196 k12=k11+numelig3d
2198 . ipart(k3),ipart(k8),ipart(k1),ipart(k2),ipart(k4),
2199 . ipart(k5) ,ipart(k6),sensors,tt ,dt2 ,iout, python ,nthread)
2200
2201
2202
2203
2204
2205
2206 need_comm_int25_solid_erosion = .false.
2207 comm_int25_solid_erosion = 0
2208
2209
2210
2211
2212
2214 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
2215 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
2216 3 greftsk,greltsk)
2217
2219 1 itsk ,fr_nbcc ,
2220 2 isendto ,ircvfrom ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITABM1 ,
2221 3 ipari ,iparg ,nodes%ITAB ,ixs(l1) ,ixs(l2) ,
2222 4 i13a ,i13b ,i13c ,i13d ,i13e ,
2223 5 i13f ,i13g ,i13h ,i13i ,i15a ,
2224 6 i15b ,i15c ,i15d ,i15e ,i15f ,
2225 7 i15g ,i15h ,i15i ,i87a ,i87b ,
2226 8 i87c ,i87d ,i87e ,i87f ,i87g ,
2227 9 nfia ,nfea ,nfoa ,ndma ,ndma2 ,
2228 a nodftsk ,nodltsk ,ndtsk ,numntsk ,ixs(l3) ,
2229 b ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
2230 c ixr ,ixtg ,element%PON, nodes%IKINE ,
2231 d nodes%A ,nodes%AR ,nodes%V ,nodes%VR ,
2232 e nodes%X ,nodes%D ,nodes%MS ,nodes%IN ,nodes%STIFN ,
2233 f nodes%STIFR ,dmas ,diner ,fani ,anin ,
2234 g wa ,uwa ,pm ,geo ,
2235 h partsav ,parts0 ,monvol ,
2236 i i87h ,i87i ,i87j ,i87k ,
2237 j i15j ,kxx ,
2238 k secbuf ,secfcum ,nstrf ,igrnod ,iexlnk ,
2239 l xframe ,
2240 m ixtg1 ,ibcl ,nodes%VISCN ,dd_r2r ,
2241 o elbuf ,ipart ,madprt ,madsh4 ,
2242 p madsh3 ,madsol ,madnod ,madfail ,igeo ,
2243 q intlist ,nbintc ,element%PON%PROCNE ,niskyfi ,nodes%WEIGHT ,
2244 r isizxv ,ilenxv ,addcni2 ,procni2 ,iad_i2m ,
2245 s fr_i2m ,fr_nbcci2,i2size ,fr_mad ,lwibem ,
2246 t lwrbem ,fxbfp ,fxbefw ,fxbedp ,fxbgrp ,
2247 u fxbgrw ,ndin ,
2248 v islen7 ,irlen7 ,islen11 ,irlen11 ,
2249 w lwiflow ,lwrflow ,iflow ,addcnel ,cnel ,
2250 x addtmpl ,ipartl ,npartl ,nfnca ,nftca ,
2251 y i15ath ,i35ath ,ipm ,sh4tree ,ipadmesh ,
2252 z msc ,inc ,sh3tree ,mstg ,intg ,
2253 a ptg ,fthe ,fthesky ,ftheskyi ,
nme17 ,
2254 b islen17 ,irlen17 ,irlen7t ,islen7t ,lindidel ,
2255 c lbufidel ,sh4trim ,sh3trim ,mscnd ,incnd ,
2256 d irlen20 ,islen20 ,irlen20t ,islen20t ,nbint20 ,
2257 e irlen20e ,islen20e ,niskyfie ,
2258 f nodes%MCP ,nodes%MS0 ,inod_pxfem,iel_pxfem,iadc_pxfem,
2259 g adsky_pxfem,nodes%ICODT ,nodes%ICODR ,ibfv ,admsms ,
2260 h
nodreac ,igrouc ,ngrouc ,igrounc ,ngrounc ,
2261 i fr_rby ,fr_rby6 ,npby ,
2263 k nelem ,lag_sec ,nprw ,diag_sms ,dmelc ,
2264 l dmeltg ,ngrth ,nft2 ,dmels ,dmeltr ,
2265 m dmelp ,dmelrt ,res_sms ,i87l ,irbe2 ,
2266 n lrbe2 ,nmrbe2 ,iad_rbe2 ,fr_rbe2 ,fr_rbe2m ,
2267 o r2size ,lpby ,procne_pxfem,isendp_pxfem,irecvp_pxfem ,
2268 p iadsdp_pxfem,iadrcp_pxfem,fr_nbcc1,rby ,int18kine ,
2269 q nodes%XDP ,i87m ,inod_crk ,iel_crk ,iadc_crk,
2270 r adsky_crk,procne_crk,isendp_crk,irecvp_crk,
2271 s iadsdp_crk,iadrcp_crk ,int24use,ndama2 ,
2272 t igroupc ,igrouptg ,igroups ,igroupflg ,dmint2 ,irbkin_l ,
2273 u nrbykin_l,kindrby ,elbuf_tab ,sensors ,dd_r2r_elem,
2274 v sdd_r2r_elem,kinet, nodes%WEIGHT_MD ,dmsph ,ioldsect,lbufseglo,
2275 w interfaces%INTBUF_TAB ,numsph_glo_r2r, flg_sphinout_r2r,i15k,
2276 y condn ,condnsky,kxfenod2elc ,elcutc ,nodedge,
2277 z iad_edge ,crknodiad,fr_edge ,fr_nbedge ,nodlevxf,
2278 x
crkedge ,xfem_tab ,isensint ,nisubmax ,
2279 1 intlist25 ,int24e2euse,tabmp_l ,
2280 2 i87n ,tab_mat,h3d_data,tagtrimc,tagtrimtg ,
2281 3 igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss ,
2282 4 igrbeam ,igrspring,igrpart ,forneqs ,int7itied,
2283 5 fxvel_fgeo,failwave,nloc_dmg,pinch_data ,slloadp,
2284 6 nodes%TAG_S_RBY,nfnca2 ,nftca2 ,nodes%IN0 ,sort_comm,stack,output,
2285 7 thke ,nodes%BOUNDARY_SIZE ,sh_offset_tab,
2286 8 need_comm_int25_solid_erosion,comm_int25_solid_erosion ,
2287 9 iskwn ,iframe ,loads ,glob_therm,pblast,rbe3)
2288
2289
2291
2292
2293
2294 CALL split_asspar4(element%PON%ADSKY,numnod,nthread,nodft_asspar,nodlt_asspar,element%PON%SADSKY)
2295
2296 IF (sh_offset_tab%NNSH_OSET > 0 .AND. impl_s==0) THEN
2297 ALLOCATE(xyz(3,numnod))
2298 xyz(1:3,1:numnod) = nodes%X(1:3,1:numnod)
2299 CALL offset_nproj(nspmd,numnod,xyz,sh_offset_tab,iparit)
2300 ELSE
2301 ALLOCATE(xyz(3,1))
2302
2303 sh_offset_tab%NNSH_OSET = 0
2304 ENDIF
2305
2306 IF (sh_offset_tab%NNSH_OSET > 0) THEN
2307 CALL assign_ptrx(ptrx,xyz,numnod)
2308 ELSE
2309 CALL assign_ptrx(ptrx,nodes%X,numnod)
2310 ENDIF
2311
2312
2313
2314 ALLOCATE( xcell_remote(ninter) )
2315 CALL int18_alloc(number_inter18,inter18_list,multi_fvm,ipari,xcell_remote,nspmd)
2317 1 igroups ,iparg ,elbuf_tab,multi_fvm%FORCE_INT ,
2318 2 ptrx , nodes%V , nodes%MS , kinet ,
2319 3 multi_fvm%X_APPEND,multi_fvm%V_APPEND,multi_fvm%MASS_APPEND,multi_fvm%KINET_APPEND,
2320 4 multi_fvm%FORCE_INT_PON)
2321
2322
2323
2325
2326 global_active_ale_element = .false.
2327 CALL check_ale_comm(iparg,elbuf_tab,global_active_ale_element,glob_therm%ITHERM)
2328
2329 IF(nadmesh/=0.AND.idel7ng>=1) idel7nok = 0
2330
2331
2332 IF (glob_therm%IDT_THERM == 1) THEN
2333 CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0 ,1 )
2334 ENDIF
2335
2336
2337
2338 if(nvolu/=0) then
2339 call init_global_frontier_monvol(ispmd,nspmd,nvolu,nsurf,monvol,
2340 . nimv,volmon,nrvolu,
2341 . fr_mv,frontier_global_mv, t_monvol,igrsurf )
2342 else
2343 frontier_global_mv(1:nspmd+2) = 0
2344 endif
2345
2346 call init_monvol_omp_structure(ispmd,nspmd,nvolu,nsurf,monvol,
2347 . nimv,numnod,
2348 . fr_mv,t_monvol,igrsurf )
2349
2350 i24maxnsne=0
2351 IF (int24use == 1)THEN
2352 ALLOCATE(iad_i24(nbintc+1,nspmd))
2353 sfr_i24=0
2355 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
2356 * iad_i24 , sfr_i24, idum,i24maxnsne)
2357 ALLOCATE(fr_i24(sfr_i24))
2359 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
2360 * iad_i24 , sfr_i24, fr_i24,i24maxnsne)
2361
2363 * nodes%X,nodes%V,nodes%MS,nodes%ITAB,xyz,numnod,sh_offset_tab%NNSH_OSET)
2364
2365 ELSE
2366 ALLOCATE(iad_i24(1,1))
2367 ENDIF
2368
2369 CALL init_i25_edge(nledge,ninter,npari,ipari,interfaces%INTBUF_TAB )
2370 IF(ninter25 /= 0)THEN
2371 ALLOCATE(iad_i25(nbintc+1,nspmd))
2373 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
2374 * iad_i25 , sfr_i25, idum)
2375
2376 ALLOCATE(fr_i25(sfr_i25))
2378 * nodes%BOUNDARY_ADD, nodes%BOUNDARY,intlist,nbintc,
2379 * iad_i25 , sfr_i25, fr_i25)
2380
2381 ELSE
2382 ALLOCATE(iad_i25(1,1))
2383 ENDIF
2384 ALLOCATE(fskyn25(3,nbccnor))
2385 fskyn25=0.
2386
2387 IF ((numsph_glo_r2r>0).AND.(flg_sphinout_r2r==1)) THEN
2388 ALLOCATE(off_sph_r2r(numnod))
2389 off_sph_r2r(:) = 0
2390 ENDIF
2391
2392
2393 IF (glob_therm%NFXTEMP > 0 .AND. glob_therm%ITHERM_FE > 0.AND.tt==zero) THEN
2394 CALL fixtemp(python,ibftemp ,fbftemp ,nodes%TEMP ,npc ,tf ,
2395 . nsensor ,sensors%SENSOR_TAB,glob_therm,snpc )
2396 ENDIF
2397
2398
2399
2400 IF (anim_v(27)+h3d_data%N_VECT_PCONT2 > 0) THEN
2401 sz_npcont2 = numnod
2402 ALLOCATE(npcont2(3,numnod))
2403 npcont2 = zero
2404 ELSE
2405 sz_npcont2 = 0
2406 ALLOCATE(npcont2(3,0))
2407 ENDIF
2408
2409
2410
2411 IF(anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
2412 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT >0 .or. vipercoupling) THEN
2413 ALLOCATE(noda_fext(3*numnod))
2414 noda_fext(1:3*numnod)=zero
2415 ELSE
2416 ALLOCATE(noda_fext(3))
2417 noda_fext(1:3)=zero
2418 ENDIF
2419
2420
2421
2422 CALL output_allocate_noda_pext(numnod, numnodg)
2423
2424 IF (anim_v(19) + h3d_data%N_VECT_CLUST_FORCE > 0) THEN
2425 ALLOCATE(fcluster(3*numnod))
2426 fcluster(1:3*numnod)=zero
2427 ELSE
2428 ALLOCATE(fcluster(3))
2429 fcluster(1:3)=zero
2430 ENDIF
2431 IF (anim_v(20) + h3d_data%N_VECT_CLUST_MOM > 0) THEN
2432 ALLOCATE(mcluster(3*numnod))
2433 mcluster(1:3*numnod)=0
2434 ELSE
2435 ALLOCATE(mcluster(3))
2436 mcluster(1:3)=0
2437 ENDIF
2438
2439
2440
2441
2442 CALL init_nodal_state( ipari,shoot_struct,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
2443 . nodes%ITAB,nodes,geo,addcnel,cnel,
2444 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,
2445 . size_addcnel,size_cnel ,
2446 . numelsg,numelqg,numelcg,numeltrg,numelpg,
2447 . numelrg,numeltgg ,ixs(l1))
2448
2449
2450
2451 allocate(component(ninter))
2452 call inter_init_component(ninter,npari,numnod,ispmd,nspmd,ipari,nodes%x,interfaces%intbuf_tab,component)
2453
2454
2455
2456
2457 call allocate_sph_work(sph_work,
2458 * numsph,numsph,
2459 * sol2sph_flag, numnod,
2460 * nsphact,numnod,nsphact )
2461
2462
2463
2464
2466
2467
2468
2469 IF (icrack3d > 0 .and. tt == zero) THEN
2470 CALL inixfem(elbuf_tab ,xfem_tab ,
2471 . iparg ,element%SHELL%IXC ,ixtg ,ngrouc ,igrouc ,
2472 . elcutc ,iadc_crk ,iel_crk ,inod_crk ,adsky_crk ,
2473 . nodes%X ,kxfenod2elc ,nodedge ,crknodiad ,iad_edge ,
2476 END IF
2477
2478
2479
2480 ALLOCATE(fthreac(6*cptreac))
2481 IF (impl_s==1) THEN
2482 ALLOCATE(fthdtm(6*cptreac))
2483 ELSE
2484 ALLOCATE(fthdtm(0))
2485 ENDIF
2486
2487
2488 comptreac = 0
2490 IF(comptreac == 1)THEN
2491 ALLOCATE(freac(6*numnod))
2492 freac(1:6*numnod)=zero
2493 ELSE
2494 ALLOCATE(freac(0))
2495 ENDIF
2496
2497 fthreac = zero
2498 fthdtm = zero
2499 IF (nthpart > 0) THEN
2500 ALLOCATE(gresav(npsav*ngpe*nthread))
2501 ELSE
2502 ALLOCATE(gresav(1))
2503 ENDIF
2504 gresav = zero
2505
2506 IF(idel7ng>0)THEN
2507 ierror = 0
2508 ALLOCATE(ibufidel(lbufidel),stat=ierror2)
2509 ierror = ierror + ierror2
2510 ALLOCATE(indidel(lindidel),stat=ierror2)
2511 ierror = ierror + ierror2
2512 IF(int24use==1.OR.ninter25/=0)THEN
2513 ALLOCATE (ibufseglo(lbufseglo),stat=ierror2)
2514 ALLOCATE (indseglo(ninter+1),stat=ierror2)
2515 ENDIF
2516 IF(ierror/=0)THEN
2517 CALL ancmsg(msgid=158,anmode=aninfo,
2518 . i1=ierror)
2520 ENDIF
2521 ELSE
2522 ALLOCATE(ibufidel(0) ,stat=ierror2)
2523 ALLOCATE(indidel(0) ,stat=ierror2)
2524 END IF
2525
2526 IF(nspmd > 1.AND.pdel > 0) THEN
2527 ALLOCATE(ibufpdel(4*nconld+4*npresload),stat=ierr)
2528 ALLOCATE(nindexpdel(nconld+npresload),stat=ierr)
2529 ENDIF
2530
2531
2532
2533
2534
2535
2536 IF(nadmesh/=0.AND.idel7ng>=1)THEN
2537
2538 l1 = 1+nixs*numels + nsvois*nixs
2539 l2 = l1+6*numels10
2540 l3 = l2+12*numels20
2541 IF((int24use==1.OR.ninter25/=0).AND.idel7nok==1)THEN
2542 indseglo(2:ninter+1)=0
2543 indseglo(1)=1
2544 ENDIF
2545 check_neigh_flag_res = 0
2546 IF (sh_offset_tab%NNSH_OSET > 0) THEN
2547 CALL assign_ptrx(ptrx,xyz,numnod)
2548 ELSE
2549 CALL assign_ptrx(ptrx,nodes%X,numnod)
2550 ENDIF
2551
2552
2553
2554
2555
2556
2558 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
2559 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
2560 3 greftsk,greltsk)
2561 omp_address = 1 + itsk * numnod
2563 1 geo ,ixs ,ixs(l1) ,ixs(l1) ,ixs(l3) ,ixq ,
2564 2 element%SHELL%IXC ,ixt ,ixp ,ixr ,ixtg ,
2565 3 nodes%deleted_node,nodftsk ,nodltsk ,iparg ,elbuf ,itsk ,
2566 4 ixtg1 ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITAB ,
2567 5 addcnel ,cnel ,kxsp ,elbuf_tab ,tagel ,iexlnk ,
2568 6 igrnod ,dd_r2r ,dd_r2r_elem,sdd_r2r_elem,idel7nok_sav ,
2569 7 idel7nok_r2r,tagtrimc,tagtrimtg,s_elem_state,elem_state,
2570 8 shoot_struct,shoot_struct%GLOBAL_NB_ELEM_OFF)
2571
2572
2573 CALL check_nodal_state( itsk,nodes%deleted_node,newfront,interfaces%INTBUF_TAB,shoot_struct%SIZE_SEC_NODE,
2574 . shoot_struct%SHIFT_S_NODE,shoot_struct%INTER_SEC_NODE,shoot_struct%SEC_NODE_ID)
2575
2576
2577
2578
2579 IF(itsk==0) THEN
2581 . ixtg ,
2582 . ngroup,nparg,igroups,iparg )
2583
2585 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
2586 2 ixr,geo,ngroup,igroups,iparg )
2587 ENDIF
2589
2590
2591
2592
2593
2594 IF(nspmd>1) THEN
2596 . interfaces%INTBUF_TAB,newfront,
2597 . ipari,geo,
2598 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2599 . addcnel,cnel,nodes%work_array_node(omp_address),tagel )
2601 ENDIF
2602
2603
2604
2605
2606
2608 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
2609 . ipari,geo,
2610 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2611 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
2612
2613
2614
2615 CALL check_edge_state( itsk,shoot_struct%SAVE_M_EDGE_NB,shoot_struct%SAVE_S_EDGE_NB,
2616 . shoot_struct%SAVE_M_EDGE,shoot_struct%SAVE_S_EDGE,
2617 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,newfront,ipari,geo,
2618 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
2619 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
2620
2621
2622
2623
2624
2625 IF(int24use>0.OR.ninter25/=0) THEN
2627 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
2628 . ipari,nodes%BOUNDARY_ADD,shoot_struct )
2630 IF(ninter25/=0.AND.interfaces%PARAMETERS%INT25_EROSION_SOLID > 0) THEN
2631 IF(itsk==0) THEN
2632 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
2633 IF(need_comm_int25_solid_erosion) THEN
2634 CALL spmd_allreduce(check_neigh_flag,check_neigh_flag_res,1,spmd_max,comm_int25_solid_erosion)
2635 ELSEIF(nspmd==1) THEN
2636 check_neigh_flag_res = check_neigh_flag
2637 ENDIF
2638 IF(check_neigh_flag_res > 0 ) THEN
2639 CALL get_neighbour_surface( ispmd,nspmd,ninter25,npari,ninter,
2640 . nbintc,nixs,nixc,nixtg,numnod,
2641 . numels,numelc,numeltg,s_elem_state,
2642 . nbddedgt,nbddedg_max,
2643 . elem_state,ipari,intlist,nodes,
2644 . newfront,ixs,element%SHELL%IXC,ixtg,
2645 . nodes%BOUNDARY_ADD,ptrx,
2646 . interfaces%INTBUF_TAB,interfaces%SPMD_ARRAYS,shoot_struct )
2647 ENDIF
2648 ENDIF
2650 ENDIF
2651 ENDIF
2652
2653
2655 1 ipari ,geo
2656 2 ixp ,ixr ,ixtg ,nodes%deleted_node,iparg ,itsk ,
2657 3 newfront,nodes%work_array_node(omp_address) ,nodes%MS ,nodes%IN ,anin(ndma+1),nodes%ITAB ,
2658 4 nodes%ITABM1 ,addcnel , cnel ,indidel ,nindex1 ,nindex2 ,
2659 5 nindex3 ,nindex4 ,tagel ,int24use ,ibufseglo ,indseglo,
2660 6 ibufidel ,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD)
2661
2662
2663
2665 ENDIF
2666
2667
2668
2669 IF(isfem >= 1) THEN
2670 s_sfem_nodvar = 2*numnod
2671 ELSE
2672 s_sfem_nodvar = 1
2673 ENDIF
2674 ALLOCATE(sfem_nodvar(s_sfem_nodvar))
2675 ALLOCATE(sfem_nodvar_ale(s_sfem_nodvar))
2676
2677
2678
2679
2680
2681
2682
2683
2684 IF(idtmins_int /= 0)THEN
2685
2686
2688
2689 END IF
2690
2691 IF(idtmins /= 0)THEN
2692 l1 = 1+nixs*numels + nsvois*nixs
2693 l2 = l1+6*numels10
2694 l3 = l2+12*numels20
2695
2696
2697 nativ_sms(1:numnod) = nativ0_sms(1:numnod)
2698
2700
2701 IF(idtmins_int==0)
2703 1 kinet ,nprw ,lprw ,npby , lpby ,
2705
2707 1 ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
2708 2 ixr ,ixtg ,ixtg1 ,ixs(l1) ,ixs(l3) ,
2709 3 ixs(l2) ,iparg ,nodes%MS ,nodes%MS0 ,
tagnod_sms,
2710 4 nodes%ICODT ,nodes%ICODR ,kinet ,
indx1_sms,
2711 5
kad_sms ,ipart(i15a),ipart(i15b),
2712 6 ipart(i15c),ipart(i15d),ipart(i15e),ipart(i15f),ipart(i15g),
2714 8 nodes%WEIGHT ,irbe2 ,rbe3%IRBE3 ,lrbe2 ,rbe3%LRBE3 ,
2715 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nprw ,lprw ,ipart ,
2717
2719 IF(ierror/=0) THEN
2720 CALL ancmsg(msgid=19,anmode=aninfo,
2721 . c1='(/DT/.../AMS)')
2723 ENDIF
2724
2725 nsgdone=1
2727 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2732 7
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2733 8 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2734 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,kinet ,
2736 b
lad_sms ,ipart,igeo ,nodes%WEIGHT ,
2738
2740 IF(ierror/=0) THEN
2741 CALL ancmsg(msgid=19,anmode=aninfo,
2742 . c1='(/DT/.../AMS)')
2744 ENDIF
2745
2746 nsgdone=1
2748 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2753 7
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2754 8 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2755 9 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,kinet ,
2760
2761 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2762 IF(ierror/=0) THEN
2763 CALL ancmsg(msgid=19,anmode=aninfo,
2764 . c1='(/DT/.../AMS)')
2766 ENDIF
2767
2768 nsgdone=1
2770 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2774 6
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2775 7 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2776 8 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,kinet ,
2780 . ipart ,
2781 c igeo ,nodes%WEIGHT ,
nativ_sms,irbe2 ,lrbe2 ,
2784 ALLOCATE(
jdi_sms(nnz_sms),stat=ierror)
2785 IF(ierror/=0) THEN
2786 CALL ancmsg(msgid=19,anmode=aninfo,
2787 . c1='(/DT/.../AMS)')
2789 ENDIF
2790 ALLOCATE(
jsm_sms(nnz_sms),stat=ierror)
2791 IF(ierror/=0) THEN
2792 CALL ancmsg(msgid=19,anmode=aninfo,
2793 . c1='(/DT/.../AMS)')
2795 ENDIF
2796
2797 nsgdone=1
2799 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
2803 6
tagrel_sms,ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),
2804 7 ipart(i15e),ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),
2805 8 nodes%BOUNDARY_ADD ,nodes%BOUNDARY,npby ,lpby ,kinet ,
2810
2812
2813 ALLOCATE(ltk_sms(knz_sms),lt_sms(nnz_sms),stat=ierror)
2814 IF(ierror/=0) THEN
2815 CALL ancmsg(msgid=19,anmode=aninfo,
2816 . c1='(/DT/.../AMS)')
2818 ENDIF
2819
2822 . stat=ierror)
2823 IF(ierror/=0) THEN
2824 CALL ancmsg(msgid=19,anmode=aninfo,
2825 . c1='(/DT/.../AMS)')
2827 ENDIF
2828
2829 IF(idtmins==1)THEN
2830
2831 ELSE
2834 2 fr_ll ,fr_rl ,nodes%WEIGHT ,nodes%ITAB ,ljoint ,
2835 3 iadcj ,fr_cj ,nprw ,lprw ,fr_wall ,
2836 4
nrwl_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY )
2837 END IF
2838
2839 IF(idtmins_int/=0)THEN
2840
2842 1 kinet ,nprw ,lprw ,npby , lpby ,
2844 END IF
2845
2847 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2848 2 nbintc)
2849
2850 ELSEIF(idtmins_int/=0)THEN
2851
2852
2856 . stat=ierror)
2857 IF(ierror/=0) THEN
2858 CALL ancmsg(msgid=19,anmode=aninfo,
2859 . c1='(/DT/.../AMS)')
2861 ENDIF
2862
2863 nindx1_sms=0
2864 nsmspcg=
min(nsmspcg,numnodg)
2865
2868 2 fr_ll ,fr_rl ,nodes%WEIGHT ,nodes%ITAB ,ljoint ,
2869 3 iadcj ,fr_cj ,nprw ,lprw ,fr_wall ,
2870 4
nrwl_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY )
2871
2873 1 kinet ,nprw ,lprw ,npby , lpby ,
2875
2877 1 ipari ,interfaces%INTBUF_TAB ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist,
2878 2 nbintc)
2879
2880 ELSE
2884 END IF
2885
2886
2887 IF (m_vs_sms>0) THEN
2888 lnzm=m_vs_sms+3
2889 ALLOCATE(proj_s(numnod,lnzm),proj_t(numnod,lnzm),
2890 . proj_la_1(lnzm),
2891 . proj_w(3*lnzm),proj_k(lnzm,lnzm),
2892 . stat=ierr)
2893 IF (ierr/=0) THEN
2894 CALL ancmsg(msgid=19,anmode=aninfo,
2895 . c1='(/DT/.../AMS)')
2897 ENDIF
2898 proj_s = zero
2899 ncg_run_sms = 0
2900 ELSE
2901 ALLOCATE(proj_s(0,0),proj_t(0,0),
2902 . proj_la_1(0),
2903 . proj_w(0),proj_k(0,0))
2904 END IF
2905
2906
2907
2908 IF (idtmins/=0.AND.debug(macro_debug_ams)==1) THEN
2909 IF(nspmd > 1) THEN
2910 IF (ispmd==0) THEN
2911 siz = numnodg
2912 ELSE
2913 siz = 0
2914 END IF
2916 ELSE
2918 END IF
2919 END IF
2920
2921
2922
2923 IF(idtmins/=0.AND.iparit==0)THEN
2924 ALLOCATE(uncomp_fr(numnod))
2925 ALLOCATE(uncomp_fri2m(numnod))
2926
2928 * nodes%BOUNDARY_ADD,nodes%BOUNDARY,nb_fr,uncomp_fr,
2929 * iad_i2m,fr_i2m,nb_fri2m,uncomp_fri2m)
2930
2931 ALLOCATE(fr_loc(nb_fr))
2932 fr_loc(1:nb_fr) = uncomp_fr(1:nb_fr)
2933
2934 ALLOCATE(fr_loci2m(nb_fri2m))
2935 fr_loci2m(1:nb_fri2m) = uncomp_fri2m(1:nb_fri2m)
2936
2937
2938 DEALLOCATE(uncomp_fr)
2939 DEALLOCATE(uncomp_fri2m)
2940
2941 ELSE
2942 ALLOCATE(fr_loc(1))
2943 ALLOCATE(fr_loci2m(1))
2944 ENDIF
2945
2946
2947
2948
2949
2950
2951
2952 ALLOCATE(wibem(lwibem), wrbem(lwrbem), stat=ierror)
2953 IF (ierror/=0) THEN
2954 CALL ancmsg(msgid=160,anmode=aninfo,
2955 . i1=ierror)
2957 ENDIF
2958 DO i=1,lwibem
2959 wibem(i)=0
2960 ENDDO
2961 ALLOCATE(wiflow(lwiflow), wrflow(lwrflow), stat=ierror)
2962 IF (ierror/=0) THEN
2963 CALL ancmsg(msgid=160,anmode=aninfo,
2964 . i1=ierror)
2966 ENDIF
2967 DO i=1,lwiflow
2968 wiflow(i)=0
2969 ENDDO
2970
2971
2972
2973 ALLOCATE(eminx(
nme17*6))
2974
2975 IF (nfxbody>0) THEN
2976 DO n=1,nfxbody
2977 adrnod=fxbipm(6,n)
2978 onof=1
2979 onfelt=0
2981 . iparg , ixs , ixq , element%SHELL%IXC ,
2982 . ixt , ixp , ixr , ixtg , fxbipm(1,n),
2983 . fxbnod(adrnod), onof , wa , onfelt ,elbuf_tab )
2984 ENDDO
2985 END IF
2986
2987
2988
2989 IF(mcheck==0) dt2s=0.0
2990 IF(mcheck/=0) dt2save = dt2
2991
2992 IF(nrbe3>0)THEN
2993 nmt0 = rbe3%lrbe3_sz/2
2994 IF (nmt0>0) THEN
2996 END IF
2997 END IF
2998
2999
3000
3001
3002 IF (impl_s==1.OR.neig>0) THEN
3003#if defined(MYREAL8) && !defined(WITHOUT_LINALG)
3004 ALLOCATE (elbuf_imp(ngroup))
3006 IF (imon>0)
CALL startime(timers,34)
3007 IF (imon>0)
CALL startime(timers,31)
3008 l1 = 1+nixs*numels + nsvois*nixs
3009 l2 = l1+6*numels10
3010 l3 = l2+12*numels20
3012 1 geo ,npby ,lpby ,nodes%ITAB ,
3013 2 ipari ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
3014 4 ixp ,ixr ,ixtg ,ixtg1 ,ixs(l1) ,
3015 5 ixs(l2) ,ixs(l3) ,iparg ,
3016 6 elbuf ,nint7 ,nbintc ,nodes%X ,dmcp ,
3017 7 nodes%BOUNDARY ,nodes%BOUNDARY_ADD ,fr_i2m ,iad_i2m ,
3018 8 nprw ,num_imp1 ,num_impl ,monvol ,igrsurf ,
3019 9 fr_mv ,ipm ,igeo ,iad_rby ,
3020 a fr_rby ,sh4tree ,sh3tree ,rbe3%IRBE3 ,rbe3%LRBE3 ,
3021 b rbe3%mpi%FR_RBE3 ,rbe3%mpi%IAD_RBE3 ,irbe2 ,lrbe2 ,ibfv ,
3022 c vel ,elbuf_tab ,iframe ,interfaces%INTBUF_TAB,
3023 d nddl0 ,nnzk0 ,impbuf_tab)
3024 IF (imon>0)
CALL stoptime(timers,31)
3025 IF (imon>0)
CALL stoptime(timers,34)
3026
3027 ns_imp=>impbuf_tab%CAND_N
3028 ne_imp=>impbuf_tab%CAND_E
3029 ind_imp=>impbuf_tab%INDSUBT
3030 fext_imp=>impbuf_tab%AC
3031 r_imp=>impbuf_tab%R_IMP
3032 ALLOCATE(fac_k(0),
ipiv_k(0))
3033 IF (imumpsv >0.OR.(isolv==7.AND.nspmd>1)) THEN
3034#if defined(MUMPS5)
3036#else
3037 WRITE(6,*) __line__,"Fatal error: MUMPS required"
3038 CALL flush(6)
3040#endif
3041 ALLOCATE(cddlp(nddl0))
3042 ENDIF
3043 ibuck= ibuckl
3044
3045
3046
3047
3048 IF (neig>0) THEN
3050#ifdef DNC
3051 CALL imp_eigsol(
3052 1 eigipm , eigrpm , nodes%MS ,nodes%IN , eigibuf ,
3053 2 nodes%X ,ixtg1 ,tf , npc , fr_wave ,
3054 3 w16 , wa ,
3055 4 nodes%ICODT , nodes%ICODR , nodes%ISKEW ,ibfv , vel ,
3056 4 nodes%V , nodes%A , elbuf , ixs , ixq ,
3057 5 element%SHELL%IXC , ixt , ixp , ixr , ixtg ,
3058 6 pm , geo , fani , icut , skews%SKEW ,
3059 7 xcut ,fani(1,1+nfia), nodes%ITAB ,fani(1,1+nfea),fani(1,1+nfoa),
3060 8 anin , lpby , npby , nstrf , rwbuf ,
3061 9 nprw , tani , elbuf_tab ,mat_elem%MAT_PARAM, dd_iad ,
3062 a nodes%BOUNDARY_ADD , nodes%BOUNDARY , nodes%WEIGHT , eani , ipart ,
3063 b rby , nom_opt , igrsurf ,
3064 c bufsf , idata , rdata , bufmat , bufgeo ,
3065 d kxx , ixx , kxsp , ixsp , nod2sp ,
3066 e spbuf , ixs(l1) , ixs(l2) , ixs(l3) , nodes%VR ,
3067 f monvol , volmon , ipm , igeo , iparg ,
3068 g nodes%NODGLOB , nodes%BOUNDARY_ADD , nodes%BOUNDARY , fr_sec , fr_rby2 ,
3069 h iad_rby2 , fr_wall , ipari ,
3070 i interfaces%INTBUF_TAB , nodes%D ,partsav ,
3071 j fsav(1,nfnca+1),fsav(1,nftca+1), nodes%TEMP , thke ,
3072 k err_thk_sh4 , err_thk_sh3 , irbe2 , rbe3%IRBE3 ,lrbe2 ,
3073 l rbe3%LRBE3 , rbe3%FRBE3 ,fr_rbe2 , rbe3%mpi%fr_rbe3 , iad_rbe2,
3074 m nodes%WEIGHT_MD , cluster , fcluster , mcluster , xfem_tab,
3075 o w , nv46 , nercvois , nesdvois,
3077 q
xedge3n ,stack ,sph2sol ,nodes%STIFN ,nodes%STIFR ,
3078 r drape_sh4n , drape_sh3n ,h3d_data ,subsets ,igrnod ,
3079 s fcont_max ,fani(1,nfnca2+1),fani(1,nftca2+1), ale_connectivity ,
3080 t itask ,nddl0 ,nnzk0 ,impbuf_tab , drapeg,
3081 u glob_therm, output ,multi_fvm)
3082#endif
3083 dt2 =
max(em20,tstop-tt)
3084 mstop=2
3085 GOTO 300
3086 END IF
3087#endif
3088 ELSE
3089 impl_s0 = 0
3090 imp_dum(1)=0
3091 ns_imp => imp_dum
3092 ne_imp => imp_dum
3093 ind_imp=> imp_dum
3094 num_imp=0
3095 ismdisp=0
3096 END IF
3097
3098
3099
3100
3101
3102
3103 onofp=0
3104 iad1 = 0
3105 iad2 = 0
3106 iad1b= 0
3107 IF (iparit>0) THEN
3108 iad1 = 1
3109 IF(ivector==1)THEN
3110 iad1b = iad1+numnod+1
3111 iad2 = iad1b+numnod
3112 ELSE
3113 iad1b = iad1
3114 iad2 = iad1b+numnod+1
3115 ENDIF
3116 ENDIF
3117 IF(numsph/=0)THEN
3118 IF(scodver>=44.AND.sminver<3)
3119 .
CALL sphres44b(kxsp ,ixsp ,nod2sp ,iparg ,spbuf )
3120 ENDIF
3121
3122
3123
3124 ksph1 =1+3*numsph
3125 ksph21 =numsph+1
3126 ksph22 =ksph21+16*numsph
3127 ksph23 =ksph22+
min(iun,nsphio)*3*numsph
3128 kspactiv=1
3129 IF(nsphsol==0)THEN
3130
3131 ksp2sort=1
3132 ELSE
3133
3134 ksp2sort=ksph23
3135 END IF
3136
3137
3138
3139
3160
3161
3162
3163
3164
3165#ifdef DNC
3166 madymo_del_global=0
3167 madymo_del=0
3168 IF(imadcpl==1)THEN
3169
3170 ALLOCATE(mad_tag_sol(numels))
3171 ALLOCATE(mad_tag_sh(numelc))
3172 ALLOCATE(mad_tag_tg(numeltg))
3173 ALLOCATE(mad_fail_elements(nmadsol+nmadsh4+nmadsh3))
3174 mad_tag_sol(1:numels)=0
3175 mad_tag_sh(1:numelc)=0
3176 mad_tag_tg(1:numeltg)=0
3177 mad_fail_elements(1:nmadsol+nmadsh4+nmadsh3) = 0
3178
3179 ALLOCATE(madclfrecv(3,madclnods))
3180
3181 CALL initial_data_exch_madcpl(nodes%X,nodes%A,nodes%V,nodes%MS,madclnod)
3182
3183
3184 CALL dummy_cycle_madcpl(nodes%X,madclnod)
3185
3186 ENDIF
3187#endif
3188
3189 IF(ninter25 /= 0) THEN
3191 ELSE
3192 ninter25e = 0
3193 ENDIF
3194
3196 check_npolh = .false.
3197 IF(nvolu>0)THEN
3200 ENDIF
3201
3203
3204
3205 IF( ninter /= 0 ) THEN
3206
3208
3210 ENDIF
3211
3212
3213
3219 ENDIF
3220
3221 CALL python_update_time(tt,dt2)
3222 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)
3223 CALL python_sync(python%CONTEXT)
3224 IF(nvolu > 0)THEN
3225 IF(python%NB_FUNCTS > 0) THEN
3226 k1 = 1
3227 kk1 = 0
3228 DO i=1,nvolu
3229 t_monvol(i)%pressure = volmon(kk1+12)
3230 t_monvol(i)%temperature = volmon(kk1+13)
3231 t_monvol(i)%area = volmon(kk1+18)
3232 t_monvol(i)%volume = volmon(kk1+16)
3233 k1 = k1 + nimv
3234 kk1 = kk1 + nrvolu
3235 END DO
3236 CALL python_monvol(t_monvol)
3237 ENDIF
3238 ENDIF
3239
3240
3241 IF(coupling%active) THEN
3242
3243 ALLOCATE(nodes%FORCES(3,numnod))
3244 nodes%FORCES = zero
3245 call coupling_set_interface(coupling, igrnod, ngrnod, igrsurf, nsurf, nodes)
3246 CALL coupling_initialize(coupling,nodes%X,numnod,ispmd,nspmd)
3247 CALL coupling_ongoing(coupling,ongoing)
3248 ENDIF
3249
3250
3251 CALL init_ghost_shells(nodes, element,ispmd,nspmd,nodes%boundary_add,nodes%boundary_size,nodes%boundary)
3252
3253
3254
3255 IF (vipercoupling) THEN
3256 call viper_coupling_initialize(viper, nodes, element, numnod,
3257 . nixs, numels, ixs, nixc, numelc,nixtg, numeltg,ixtg,
3258 . istdo, neleml, numelq, numelt, numelp, numelr,
3259 . dtmin, tstop, dtanim, tt, nparg, ngroup, iparg, elbuf_tab,
3260 . tt_double, tanim)
3261 ENDIF
3262
3263
3264
3265
3266 100 CONTINUE
3267
3269
3270
3271
3272
3273
3274
3275
3276 rns = 0
3278 IF (rns > rnum_siz)THEN
3279 DEALLOCATE(renum)
3280 rnum_siz=rns
3281 ALLOCATE(renum(rnum_siz))
3282 ENDIF
3283
3284#ifdef DNC
3285 IF (imadcpl>0)THEN
3286
3287 CALL data_send_madcpl(nodes%X,madclnod,
3288 * madymo_del_global,mad_fail_elements)
3289 ENDIF
3290#endif
3291
3292
3293
3294
3296
3298 IF(imonm > 0)
CALL startime(timers,47)
3299
3300 CALL manctr(sensors,h3d_data)
3301
3302
3303
3304 IF(numskw/=0)
CALL newskw(skews%SKEW ,iskwn ,nodes%X ,iskwp_l ,nskwp,
3305 1 numskw_l,numskw_l_send,iskwp_l_send,recvcount,iskwp)
3306
3307 econt=zero
3308 edamp=zero
3309 enint=zero
3310 xmass=zero
3311 xmomt=zero
3312 ymomt=zero
3313 zmomt=zero
3314 def=zero
3315 dmf=zero
3316 wplast=zero
3317
3318 dt1=dt2
3319 dt2=ep06
3320 glob_therm%DT_THERM = ep06
3321 nt_imp=0
3322
3323 IF(impl_s>0) THEN
3324 IF(ncycle>0) THEN
3325 IF (imon>0)
CALL startime(timers,timer_integ)
3326 CALL imp_fanie(fani ,fext_imp,nfia ,nfea ,nodft ,nodlt,
3327 . h3d_data )
3328 IF (imon>0)
CALL stoptime(timers,timer_integ)
3329 ENDIF
3330 END IF
3331
3332
3333 IF(ncycle==1.AND.interfaces%PARAMETERS%ISTIF_DT>0)
3334 . interfaces%PARAMETERS%DT_STIFINT = dt1
3335
3336 IF(imonm > 0)
CALL stoptime(timers,47)
3338
3339 imadfsh4=0
3340
3341
3342
3343
3344 IF(inter_ithknod/=0)THEN
3345 nsgdone=1
3346 thknod(nodft:nodlt)=zero
3347
3348
3349 CALL thickvar(iparg,elbuf_tab,element%SHELL%IXC,ixtg,thksh4,
3350 . thksh3,thknod,thke,sh4tree,sh3tree)
3351
3352 IF(nspmd>1) THEN
3353 length = 1
3354 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
3356 + thknod,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
3357 ENDIF
3358 END IF
3359
3360
3361
3362
3363
3364 IF(ilag+iale+ieuler/=0)THEN
3365
3366
3367
3368 isync = 0
3369 IF(n2d/=0) THEN
3370
3371
3372
3373
3374
3375
3376!$omp+ private(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,igmtsk)
3377
3378
3379
3381 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
3382 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
3383 3 greftsk,greltsk)
3384 CALL zero1(nodes%MS(nodftsk),numntsk)
3385
3386
3387 ENDIF
3388 ENDIF
3389
3390
3391
3392
3393 DO i=1+nfoa,nfoa+2*(nsect+nrbody+nrwall)
3394 fani(1,i) = zero
3395 fani(2,i) = zero
3396 fani(3,i) = zero
3397 ENDDO
3398 IF(anim_v(13)+h3d_data%N_VECT_CONT2 > 0)THEN
3399 DO i=1+nft2,nft2 + numnod*
min(1,anim_v(13)+h3d_data%N_VECT_CONT2)
3400 fani(1,i) = zero
3401 fani(2,i) = zero
3402 fani(3,i) = zero
3403 ENDDO
3404 ENDIF
3405 IF(h3d_data%N_VECT_CONT2M==1)THEN
3406 DO i=1,numnod
3407 mcont2(1,i) = zero
3408 mcont2(2,i) = zero
3409 mcont2(3,i) = zero
3410 ENDDO
3411 ENDIF
3412 ngdone = 1
3413 nsgdone = 1
3414
3415
3416
3417
3418 IF (ispmd==0) THEN
3419 IF (ninter/=0) THEN
3420 IF (imon>0)
CALL startime(timers,timer_contsort)
3421 CALL i14ist(ipari,interfaces%INTBUF_TAB,igrsurf,bufsf)
3422 IF (imon>0)
CALL stoptime(timers,timer_contsort)
3423 ENDIF
3424 ENDIF
3425
3426
3427
3428
3429
3430
3431 dt2t = dt2
3432
3433 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
3434 k2=k1+numels
3435 k3=k2+numelq
3436 k4=k3+numelc
3437 k5=k4+numelt
3438 k6=k5+numelp
3439 k7=k6+numelr
3440 k8=k7
3441 k9=k8+numeltg
3442 k10=k9+numelx
3443 k11=k10+numsph
3444 k12=k11+numelig3d
3445
3446
3447
3448 IF (iale+ieuler+glob_therm%ITHERM+numsph/=0) THEN
3449 IF(nbgauge/=0)
CALL agauge0(lgauge,gauge,nodes%X,element%SHELL%IXC,igaup,ngaup)
3450 END IF
3451
3452
3453 IF (imon>0)
CALL startime(timers,6)
3454 IF (imonm > 0)
CALL startime(timers,49)
3455
3456 IF(numgeo>0.AND.nodadt==0)THEN
3457 DO i=1,numgeo
3458 IF(geo(5,i)>zero.AND.dtfac1(3)*geo(5,i)<dt2t)THEN
3459 dt2t= dtfac1(3)*geo(5,i)
3460 neltst = 0
3461 ityptst= 3
3462 ENDIF
3463 ENDDO
3464 ENDIF
3465
3466
3467
3468 IF(user_windows%HAS_USER_WINDOW /= 0 ) THEN
3470
3472 1 user_windows ,rad_inputname ,len_rad_inputname,
3473 2 numnod ,ncycle ,nodes%ITAB ,
3474 3 tt ,dt1 ,output%TH%WFEXT ,
3475 4 nodes%D ,nodes%X ,nodes%V ,
3476 5 nodes%VR ,nodes%MS ,nodes%IN ,
3477 6 nodes%STIFN ,nodes%STIFR ,nodes%A ,
3478 7 nodes%AR ,dt2)
3479
3481
3482 ENDIF
3483
3484
3485
3486
3487 IF(nfunct /= 0.AND.iale+ieuler+glob_therm%ITHERM+nebcs>0) THEN
3488 CALL timfun(python,fv, npc, tf)
3489 IF(ebcs_tab%nebcs_loc/=0) THEN
3490
3491
3492
3494 ENDIF
3495 ENDIF
3496
3497
3498
3499 CALL stop_sensor(sensors,h3d_data,dynain_data,output)
3500
3501
3502
3503
3504 IF (nactiv>0) THEN
3505 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 ) THEN
3506 DO i = 1,numnod
3507 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
3508 nodes%STIFN(i) = nodes%STIFN(i) * nodes%WEIGHT(i)
3509 ENDDO
3510 ENDIF
3511 CALL desacti(ixs ,ixq ,element%SHELL%IXC ,ixp ,ixt ,
3512 . ixr ,ixtg ,iparg ,iactiv ,
3513 . nsensor ,sensors%SENSOR_TAB,element%PON%FSKY ,nodes%X ,elbuf_tab,
3514 . ibcv ,fconv ,ibcr ,fradia ,igroups ,
3515 . factiv ,nodes%TEMP ,nodes%MCP ,pm ,mcp_off ,
3516 . igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss ,
3517 . igrbeam ,igrspring,glob_therm)
3518 ELSE
3519 IF(glob_therm%ITHERM_FE > 0 .AND. nspmd > 1 .AND. iparit == 0) THEN
3520 DO i = 1,numnod
3521 nodes%MCP(i) = nodes%MCP(i) * nodes%WEIGHT(i)
3522 ENDDO
3523 ENDIF
3524 ENDIF
3525 IF (imonm > 0)
CALL stoptime(timers,49)
3526
3527
3528
3529
3530 IF (nconld/=0 .AND. impl_s/=1) THEN
3532 IF (imon>0)
CALL startime(timers,timer_kin)
3533 IF (imonm > 0)
CALL startime(timers,41)
3534 CALL force(
3535 1 nibcld ,ibcl ,lfaccld ,forc ,snpc ,
3536 2 npc ,stf ,tf ,nodes%A ,nodes%V ,
3537 3 nodes%X ,skews ,nodes%AR ,
3538 4 nodes%VR ,nsensor ,sensors%SENSOR_TAB ,wfexc ,element%PON%IAD_CONLD ,
3539 5 lsky ,element%PON%FSKY ,noda_fext ,h3d_data ,cptreac ,
3540 6 fthreac ,
nodreac ,output%TH%TH_SURF ,
3541 7 dpl0cld ,vel0cld ,nodes%D ,nodes%DR ,nconld ,
3542 8 numnod ,nfunct ,anim_v ,outp_v ,
3543 9 iparit ,tt ,dt1 ,n2d ,output%TH%WFEXT ,
3544 a impl_s ,python=python, nodes=nodes)
3545
3547 CALL forcepinch(ibcl ,forc ,npc ,tf ,nodes%A ,
3548 2 nodes%V ,nodes%X ,skews%SKEW ,nodes%AR ,nodes%VR ,
3549 3 nsensor,sensors%SENSOR_TAB ,nodes%WEIGHT ,wfexc ,element%PON%IAD_CONLD,
3550 4 element%PON%FSKY , element%PON%FSKY ,noda_fext ,h3d_data,
3551 5 pinch_data%APINCH, pinch_data%VPINCH, python, output%TH%WFEXT)
3552 ENDIF
3553
3554 IF (imonm > 0)
CALL stoptime(timers,41)
3555 IF (imon>0)
CALL stoptime(timers,timer_kin)
3557 ENDIF
3558
3559 IF(nfxvel/=0.AND.impl_s/=1) THEN
3560 IF(imon>0) THEN
3563 IF(imonm > 0)
CALL startime(timers,44)
3564 ENDIF
3565 CALL forcefingeo(ibfv ,npc ,tf ,nodes%A ,nodes%V ,nodes%X ,
3566 2 vel ,sensors%SENSOR_TAB ,element%PON%FSKY ,noda_fext ,nodes%ITABM1,
3567 3 h3d_data,nsensor,python,output%TH%WFEXT,nodes)
3568 IF(imon>0) THEN
3569 IF(imonm > 0)
CALL stoptime(timers,44)
3572 ENDIF
3573 ENDIF
3574
3575
3576
3577 IF(nloadp_f/=0.AND.impl_s/=1) THEN
3579 IF (imon>0)
CALL startime(timers,timer_kin)
3580 IF (imonm > 0)
CALL startime(timers,41)
3581
3582 CALL pfluid(iloadp ,loadp ,npc ,tf ,nodes%A ,
3583 2 nodes%V ,nodes%X ,xframe ,nodes%MS ,
3584 3 nsensor ,sensors%SENSOR_TAB,wfexc ,output%TH%WFEXT,element%PON%IAD_LOADP ,
3585 4 element%PON%FSKY , element%PON%FSKY ,lloadp ,noda_fext ,h3d_data ,
3586 5 output%TH%TH_SURF, python)
3587
3588 IF (imonm > 0)
CALL stoptime(timers,41)
3589 IF (imon>0)
CALL stoptime(timers,timer_kin)
3591 ENDIF
3592
3593
3594
3595
3596 IF(pblast%NLOADP_B/=0.AND.impl_s/=1) THEN
3598 IF (imon>0)
CALL startime(timers,timer_kin)
3599 IF (imonm > 0)
CALL startime(timers,41)
3601 1 pblast ,iloadp ,loadp ,nodes%A ,nodes%V ,nodes%X,
3602 2 element%PON%IAD_LOADP ,element%PON%FSKY ,lloadp ,noda_fext ,noda_surf ,noda_pext,
3603 3 nodes%ITAB ,h3d_data ,output%TH%TH_SURF ,output%TH%WFEXT)
3604 IF (imonm > 0)
CALL stoptime(timers,41)
3605 IF (imon>0)
CALL stoptime(timers,timer_kin)
3607 IF(pblast%PBLAST_DT%DT<dt2t)THEN
3608
3609 dt2t = pblast%PBLAST_DT%DT
3610 ityptst = 12
3611 neltst = pblast%PBLAST_DT%IDT
3612 pblast%PBLAST_DT%DT = ep20
3613 ENDIF
3614 ENDIF
3615
3616
3617
3618 IF (loads%NLOAD_CYL > 0) THEN
3620 . loads ,table ,sensors%NSENSOR,sensors%SENSOR_TAB,iframe ,
3621 . dt1 ,nodes%X ,nodes%V ,nodes%A ,noda_fext ,
3622 . h3d_data ,cptreac ,fthreac ,
nodreac ,element%PON%FSKY ,output%TH%WFEXT )
3623 ENDIF
3624
3625
3626
3627 IF (sh_offset_tab%NNSH_OSET > 0) THEN
3628 xyz(1:3,1:numnod) = nodes%X(1:3,1:numnod)
3629 CALL offset_nproj(nspmd,numnod,xyz,sh_offset_tab,iparit)
3630 ENDIF
3631
3632 IF( glob_therm%NUMCONV + glob_therm%NUMRADIA > 0 .AND. glob_therm%ITHERM_FE > 0 )THEN
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642 IF (glob_therm%NUMCONV > 0 .AND. glob_therm%ITHERM_FE > 0) THEN
3643 IF (imon>0)
CALL startime(timers,timer_kin)
3644 IF (imonm > 0)
CALL startime(timers,41)
3645 CALL convec(ibcv ,fconv ,npc ,tf , nodes%X ,
3646 1 nodes%TEMP ,nsensor,sensors%SENSOR_TAB,fthe, element%PON%IAD_CONV,
3647 2 fthesky, python,glob_therm)
3648 IF (imonm > 0)
CALL stoptime(timers,41)
3649 IF (imon>0)
CALL stoptime(timers,timer_kin)
3650 ENDIF
3651
3652
3653
3654 IF (glob_therm%NUMRADIA > 0 .AND. glob_therm%ITHERM_FE > 0) THEN
3655 IF (imon>0)
CALL startime(timers,timer_kin)
3656 IF (imonm > 0)
CALL startime(timers,41)
3657 CALL radiation(ibcr, fradia, npc, tf, nodes%X ,
3658 1 nodes%TEMP, nsensor,sensors%SENSOR_TAB, fthe, element%PON%IAD_RADIA,
3659 2 fthesky, python,glob_therm)
3660 IF (imonm > 0)
CALL stoptime(timers,41)
3661 IF (imon>0)
CALL stoptime(timers,timer_kin)
3662 ENDIF
3663
3664 ENDIF
3665
3666
3667
3668
3669
3670
3671
3672
3673 IF (glob_therm%NFXFLUX > 0 .AND. glob_therm%ITHERM_FE > 0) THEN
3674 IF (imon>0)
CALL startime(timers,timer_kin)
3675 IF (imonm > 0)
CALL startime(timers,41)
3676 CALL fixflux(ibfflux, fbfflux, npc, tf, nodes%X, ixs,
3677 . nsensor,sensors%SENSOR_TAB, fthe, element%PON%IAD_FXFLUX, fthesky, python,
3678 . glob_therm)
3679 IF (imonm > 0)
CALL stoptime(timers,41)
3680 IF (imon>0)
CALL stoptime(timers,timer_kin)
3681 ENDIF
3682
3683
3684 icontact_old(1:sicontact) = icontact(1:sicontact)
3685 IF(nvolu/=0)THEN
3686 IF (imonm > 0)
CALL startime(timers,50)
3688 nn = numelc+numeltg+ibagsurf
3689 n0 = 1 + 3*nn
3690 IF(intbag/=0)THEN
3691 n1 = n0+ nn
3692 ELSE
3693 n1 = n0
3694 ENDIF
3695 sporo = numelc+numeltg+ibagsurf
3696
3697 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
3698 IF (impl_s > 0 .AND. ismdisp >0) THEN
3699 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3700 ELSE
3701 CALL assign_ptrx(ptrx,nodes%X,numnod)
3702 ENDIF
3704 1 monvol ,volmon ,ptrx ,nodes%A ,
3705 2 npc ,tf ,nodes%V ,wa ,
3706 3 fsav(1,n) ,nsensor ,sensors%SENSOR_TAB ,igrsurf ,
3707 4 fr_mv ,element%PON%IAD_MV ,sicontact ,sporo ,
3708 5 element%PON%FSKY,icontact ,wa(n0) ,iparg ,
3709 6 elbuf_tab ,geo ,igeo ,
3710 7 pm ,ipm ,ipart ,ipart(k3) ,
3711 8 ipart(k8) ,igroupc ,igrouptg ,noda_fext ,
3712 9 1 ,h3d_data ,t_monvol ,frontier_global_mv,
3713 a output, python )
3715 IF (imonm > 0)
CALL stoptime(timers,50)
3716 ENDIF
3717 IF (imon>0)
CALL stoptime(timers,6)
3718
3719 IF (nflow>0) THEN
3720 CALL flow0(iflow, rflow, wiflow, wrflow, nodes%X,
3721 . nodes%V, nodes%A, npc, tf, sensors%SENSOR_TAB,
3722 . nbgauge,lgauge, gauge , nsensor,
3723 . igrv, agrv ,nfunct ,python, output%TH%WFEXT)
3724 ENDIF
3725
3726
3727
3728
3729 IF (imon>0)
CALL startime(timers,13)
3730 IF (imonm > 0)
CALL startime(timers,24)
3731 IF(nspmd>1)THEN
3732 l1 = 1+nixs*numels + nsvois*nixs
3733 l2 = l1+6*numels10
3734 l3 = l2+12*numels20
3736 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
3737 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
3738 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
3739 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
3740 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
3741 6 irlen20 ,islen20 ,irlen20t,islen20t,irlen20e,
3742 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse,
3743 8 forneqs ,multi_fvm,interfaces)
3744 END IF
3745 IF (imonm > 0)
CALL stoptime(timers,24)
3746 IF (imon>0)
CALL stoptime(timers,13)
3747
3748
3749
3750
3751
3752
3753 IF (int24use == 1)THEN
3754 IF (imon>0)
CALL startime(timers,timer_contfor)
3755 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3756 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3757 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,4,
3758 * int24e2euse)
3759 IF (imon>0)
CALL stoptime(timers,timer_contfor)
3760 ENDIF
3761
3762
3763
3764
3765 IF(nsect>0.AND.nspmd>1) THEN
3766 lsend1 = iad_sec(1,nspmd+1)
3767 lrecv1 = iad_sec(2,nspmd+1)
3768 lsend2 = iad_sec(3,nspmd+1)
3769 lrecv2 = iad_sec(4,nspmd+1)
3770 CALL spmd_exch_sec(nstrf ,nodes%X ,nodes%MS ,nodes%WEIGHT,xsec ,
3771 2 fr_sec,iad_sec,lsend1,lrecv1,lsend2,
3772 3 lrecv2,nodes%WEIGHT_MD)
3773 END IF
3774
3775
3776
3777 IF(nintstamp/=0)THEN
3779 END IF
3780
3781
3782
3783 IF(isfem >= 1) THEN
3784 IF(glob_therm%ITHERM == 0)THEN
3785 l1 = 1+nixs*numels + nsvois*nixs
3786 CALL s4lagsfem(iparg, ixs, nodes%X, nodes%V, elbuf_tab, sfem_nodvar, s_sfem_nodvar,
3787 . nodes%BOUNDARY_ADD, nodes%BOUNDARY, ixs(l1), nodes%XDP, sxdp,
3788 . numnod, nodes%BOUNDARY_SIZE , nspmd, numels, numels8, numels10, nparg, ngroup, iresp)
3789 ENDIF
3790 ENDIF
3791
3792
3793
3794
3795 IF(ninter/=0) THEN
3797 IF (imon > 0)
CALL startime(timers,timer_contsort)
3798 l1 = 1+nixs*numels + nsvois*nixs
3799 l2 = l1+6*numels10
3800 l3 = l2+12*numels20
3801 lskyi_count = 0
3802 lskyi_sms_new = 0
3803
3804 IF(idtmins/=0) THEN
3805 nativ_sms_siz = numnod
3806 ELSE
3807 nativ_sms_siz = 0
3808 ENDIF
3809
3810 IF(coupling%active .AND. tt > zero) dt2t =
min(dt2t,coupling%DT_LIMIT)
3811
3812
3813
3814
3815 IF (sh_offset_tab%NNSH_OSET > 0) THEN
3816 CALL assign_ptrx(ptrx,xyz,numnod)
3817 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
3818 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
3819 ELSE
3820 CALL assign_ptrx(ptrx,nodes%X,numnod)
3821 ENDIF
3822 inter_errors = 0
3823
3824
3825 dt2tt = dt2t
3826 neltstt = neltst
3827 ityptstt= ityptst
3828 itsk = omp_get_thread_num()
3830 1 ipari ,ptrx ,w , inter_errors,
3831 2 nodes%V ,nodes%MS ,nodes%IN ,nodes%BOUNDARY_ADD ,
3832 3 nodes%BOUNDARY ,nodes%VR ,isendto ,ircvfrom ,
3833 4 newfront ,itsk ,wa ,dt2tt ,
3834 5 nodes%ITAB ,neltstt ,ityptstt,nodes%WEIGHT ,
3835 6 intlist ,nbintc ,kinet ,dretri ,
3836 7 islen7 ,irlen7 ,islen11 ,irlen11 ,
3837 8 nodes%TEMP ,igrbric ,igrsh3n ,eminx ,
3838 9 ixs ,ixs(l3) ,ixs(l2) ,islen17 ,
3839 a irlen17 ,irlen7t ,islen7t ,num_imp1 ,
3840 b ind_imp ,
intstamp,thknod ,irlen20 ,
3841 c islen20 ,irlen20t,islen20t,irlen20e ,
3842 d islen20e ,renum ,nsnfiold,xslv ,
3843 e xmsr ,vslv ,vmsr ,size_t ,
3844 f
nativ_sms ,dxancg ,nodes%IKINE ,diag_sms ,
3845 g count_remslv,count_remslve ,ale_connectivity,
3846 h ixtg ,sensors,delta_pmax_gap,interfaces%INTBUF_TAB,
3847 i delta_pmax_gap_node,iad_frnor,fr_nor,
3848 j nb25_candt,nb25_impct,nb25_dst1,nb25_dst2,intlist25,
3849 k interfaces%SPMD_ARRAYS%IAD_FREDG,interfaces%SPMD_ARRAYS%FR_EDG,nodes%MAIN_PROC,
nativ_sms,i_opt_stok ,
3850 l multi_fvm,iparg ,elbuf_tab, h3d_data, t2main_sms,
3851 m lskyi_sms_new ,forneqs ,int7itied,idel7nok_sav,maxdgap,
3852 n t2fac_sms,nodes%ICODT,nodes%ISKEW ,fskyn25 ,addcsrect,procnor,
3853 o inter_struct,sort_comm,rnum_siz,nativ_sms_siz,temp_siz,
3854 p interfaces,glob_therm,component)
3855
3856#include "lockon.inc"
3857 IF(dt2tt<dt2t)THEN
3858 dt2t = dt2tt
3859 neltst = neltstt
3860 ityptst= ityptstt
3861 ENDIF
3862#include "lockoff.inc"
3863
3864
3865 IF(inter_errors > 0) THEN
3866 mstop = 2
3867 ENDIF
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877 IF(iparit >0)THEN
3878 IF(SIZE(interfaces%PON%ADSKYI,1) < numnod+2) then
3879 deallocate(interfaces%PON%ADSKYI)
3880 allocate(interfaces%PON%ADSKYI(0:numnod+1))
3881 endif
3882 IF ( nisky+lskyi_count > sisky) THEN
3883 CALL reallocate_i_skyline(lskyi_count,1,glob_therm%INTHEAT,glob_therm%nodadt_therm,interfaces%PON)
3884 ENDIF
3885
3886
3887
3888 IF (nspmd >1)THEN
3889 CALL upgrade_rem_2ry(ipari,count_remslv,count_remslve,glob_therm%nodadt_therm)
3890 count_remslv(1:ninter)= 0
3891 count_remslve(1:ninter)= 0
3892 ENDIF
3893
3894 ENDIF
3895
3896 IF (imon > 0)
CALL stoptime(timers,timer_contsort)
3898 ENDIF
3899
3900
3901
3902
3903
3904
3905 IF ((idtmins == 2.OR.idtmins_int/=0).AND.(ninter > 0)) THEN
3906
3907 IF (lskyi_sms_new > lskyi_sms) THEN
3908
3910
3911 lskyi_sms = nint(lskyi_sms_new*1.2)
3912 ALLOCATE(mskyi_sms(lskyi_sms),
iskyi_sms(lskyi_sms,3),
3913 .
jdii_sms(2*lskyi_sms),lti_sms(2*lskyi_sms),
3914 . stat=ierror)
3915
3916 IF(ierror/=0) THEN
3917 CALL ancmsg(msgid=19,anmode=aninfo,
3918 . c1='LSKYI_SMS RESIZE')
3920 ENDIF
3921
3922 ENDIF
3923 ENDIF
3924
3925
3926
3927
3928 IF(ninter25 /= 0)THEN
3929
3930 IF(nspmd > 1)THEN
3931 IF (imon>0)
CALL startime(timers,timer_exfor)
3932 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3933 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3934 * iad_i25 ,fr_i25 ,sfr_i25 ,1 )
3935 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB ,nodes%ITAB ,
3936 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
3937 * iad_i25 ,fr_i25 ,sfr_i25 ,2 )
3938 IF (imon>0)
CALL stoptime(timers,timer_exfor)
3939 END IF
3940
3941 END IF
3942
3943
3944
3945
3946
3947
3948 IF(nadmesh > 0.AND.impl_s==0)THEN
3949 IF (imon>0)
CALL startime(timers,36)
3950
3953 iadmesh=0
3954 ichkadm=0
3955 IF(tt >= tadmesh+dtadmesh)THEN
3956 tadmesh=tadmesh+dtadmesh
3957 ichkadm=1
3958 END IF
3959
3960 IF(ichkadm/=0 .AND. iadmerrt/=0)THEN
3961
3963 . element%SHELL%IXC ,ixtg ,nodes%X ,iparg ,elbuf_tab ,
3964 . ipart ,ipart(k3),ipart(k8),err_thk_sh4 ,err_thk_sh3 ,
3965 . nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%WEIGHT ,sh4tree ,sh3tree ,
3966 . admerr_area_sh4, admerr_area_sh3, admerr_area_nod,
3967 . admerr_thick_sh4,admerr_thick_sh3,admerr_thick_nod )
3968 END IF
3969
3970
3971
3972
3973
3974
3975 itsk = omp_get_thread_num()
3976 nodftsk = 1+itsk*numnod/ nthread
3977 nodltsk = (itsk+1)*numnod/nthread
3978
3979 CALL admdiv(element%SHELL%IXC ,ipart(k3),ixtg ,ipart(k8),ipart,
3980 . itsk ,icontact ,iparg,nodes%X ,nodes%MS ,
3981 . nodes%IN ,rcontact ,elbuf_tab,nodftsk ,nodltsk,
3982 . igeo ,ipm ,sh4tree,padmesh,msc ,
3983 . inc ,sh3tree ,mstg ,intg ,ptg ,
3984 . acontact,pcontact,err_thk_sh4,err_thk_sh3,mscnd,
3985 . incnd,pm ,nodes%MCP ,mcpc ,mcptg,
3986 . glob_therm%ITHERM_FE)
3987 ngdone = 1
3988
3990
3991 IF(iadmrule /= 0)THEN
3992 IF(iadmesh > 0)THEN
3993 CALL admregul(element%SHELL%IXC ,ipart(k3),ixtg ,ipart(k8),ipart,
3994 . itsk ,iparg ,nodes%X ,nodes%MS ,nodes%IN ,
3995 . elbuf_tab,nodftsk ,nodltsk,igeo ,ipm ,
3996 . sh4tree,msc ,inc ,sh3tree,mstg ,
3997 . intg ,ptg ,mscnd ,incnd ,pm ,
3998 . nodes%MCP ,mcpc ,mcptg ,glob_therm%ITHERM_FE)
3999
4001
4002 END IF
4003 END IF
4004
4005 IF(iadmesh > 0)THEN
4006 IF(itsk==0) THEN
4007 CALL admordr(sh4tree,sh3tree,element%SHELL%IXC,ixtg)
4008 IF(istatcnd /= 0)
CALL cndordr(ipart,ipart(k3),ipart(k8),
4009 . sh4tree,sh3tree)
4010 END IF
4011 iflgadm=1
4013 1 iparg ,elbuf_tab ,element%PON%FSKY ,element%PON%FSKY ,fthesky,
4014 2 element%PON%IADC,element%PON%IAD_TG,iflgadm,igrouc,ngrouc ,
4015 3 condnsky ,glob_therm%NODADT_THERM)
4017 ngdone = 1
4018 END IF
4019 rcontact(nodftsk:nodltsk)=ep30
4020 acontact(nodftsk:nodltsk)=ep30
4021 pcontact(nodftsk:nodltsk)=zero
4022
4023
4024 IF (imon>0)
CALL stoptime(timers,36)
4025 END IF
4026
4027
4028
4029
4030 IF(anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
4031 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT>0
4032 . .AND.impl_s==0)THEN
4033
4034
4035
4036
4037
4038
4039
4040
4041 itsk = omp_get_thread_num()
4042 nodftsk = 1+itsk*numnod/ nthread
4043 nodltsk = (itsk+1)*numnod/nthread
4044 CALL forani1(fani,nodes%A ,nfia,nfea,nfoa,nodftsk,nodltsk,noda_fext,h3d_data)
4045
4046
4047 ENDIF
4048
4049
4050
4051 need_comm_inter18 = .false.
4052 IF (iale+ieuler+glob_therm%ITHERM/=0.AND.global_active_ale_element) THEN
4053 CALL startime(timers,macro_timer_alemain)
4054
4055
4056
4057
4058 lenqmv = 1
4059 IF(trimat>0)lenqmv =
min(1,trimat)*(numels+numelq)
4060 nv46 = 6
4061 IF(n2d /= 0) nv46 = 4
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4075 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4076 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4077 3 greftsk,greltsk)
4078 dt2tt = dt2t
4079 neltstt = neltst
4080 ityptstt = ityptst
4081 IF(iparit == 1) ndtsk = 1
4082
4083
4085 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%V ,
4086 2 nodes%MS ,wa ,elbuf_tab ,bufmat ,partsav(ipmtsk) ,tf,
4087 3 val2 ,veul ,fv ,nodes%STIFN(ndtsk),element%PON%FSKY,eani,
4088 4 phi ,fill ,dfill ,alph ,skews%SKEW ,w,
4089 5 nodes%D ,dsave ,asave ,dt2tt ,dt2save ,xcell,
4090 6 iparg ,npc ,ixs ,ixq, ixtg ,element%PON%IADS,
4091 7 ifill ,nodes%ICODT,nodes%ISKEW ,ims ,element%PON%IADQ ,
4092 8 neltstt ,ityptstt ,ipart(k1) ,ipart(k2) ,itsk ,
4093 a nodftsk ,nodltsk ,nbrcvois ,nodes%TEMP ,output%TH%TH_SURF%CHANNELS,
4094 b nbsdvois ,lnrcvois ,lnsdvois ,nercvois ,nesdvois ,lercvois ,
4095 c lesdvois ,isizxv ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,element%PON%FSKYM,msnf ,
4096 d ipari ,segvar ,nodes%ITAB ,iskwn ,diffusion ,iresp,
4097 e volmon ,fsav ,igrsurf ,neltsa ,
4098 f ityptsa ,nodes%WEIGHT ,npsegcom ,lsegcom ,ipm ,igeo,
4099 g nodes%ITABM1 ,lenqmv ,nv46 ,nodes%A ,gresav ,
4101 i dmels ,igaup ,ngaup ,table ,nodes%MS0 ,
4102 j nodes%XDP ,igrnod ,sfem_nodvar_ale ,interfaces%PON%FSKYI,interfaces%PON%ISKY, s_sfem_nodvar,
4103 k interfaces%INTBUF_TAB ,ixt ,igrv ,agrv ,sensors ,
4104 l lgrav ,condnsky ,condn ,ms_2d ,multi_fvm ,igrtruss ,
4105 m igrbric ,nloc_dmg ,id_global_vois,face_vois ,ebcs_tab ,ale_connectivity,
4106 n mat_elem ,h3d_data ,dt ,output ,need_comm_inter18 ,idtmins ,
4107 o
4108 p impl_s ,idyna ,python ,mat_elem%MAT_PARAM,glob_therm)
4109
4111#include "lockon.inc"
4112 IF(int22 == 0)THEN
4113 IF(dt2tt<dt2t)THEN
4114 dt2t = dt2tt
4115 ityptst= ityptstt
4116 neltst = neltstt
4117 ENDIF
4118 ELSE
4119 IF(idt_int22 /= 0)THEN
4120
4121 dt2t = dt22_min
4122 ityptst= 10
4123 neltst = 1
4124 ELSE
4125
4126 IF(dt2tt<dt2t)THEN
4127 dt2t = dt2tt
4128 ityptst= ityptstt
4129 neltst = neltstt
4130 ENDIF
4131 ENDIF
4132 ENDIF
4133#include "lockoff.inc"
4134
4135
4136
4137 IF(need_comm_inter18) THEN
4139 . xcell,multi_fvm,xcell_remote,interfaces%INTBUF_TAB,ale_connectivity)
4140 ENDIF
4142 CALL stoptime(timers,macro_timer_alemain)
4143 ELSE
4146 t1s=tt
4147 ENDIF
4148
4149
4150
4151
4152
4153 IF(
ale%SUB%IALESUB ==2 .AND.
ale%SUB%IFSUB==2)
GOTO 22
4154 21 CONTINUE
4155
4156 IF (imon>0)
CALL startime(timers,6)
4157 IF (imonm > 0)
CALL startime(timers,51)
4158
4159
4160
4162 1 pm ,geo ,nodes%X ,nodes%A ,nodes%AR ,
4163 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,w ,
4164 3 elbuf ,val2 ,veul ,fv ,
4165 4 nodes%STIFN ,nodes%STIFR ,element%PON%FSKY ,tf ,bufmat ,
4166 5 partsav ,fani(1,nfoa+1),fsav ,
4167 6 skews%SKEW,dt2t ,
4168 7 element%PON%IADS ,iparg ,npc ,ixs ,
4169 8 neltst ,ityptst ,ipart ,ipart(k1) ,nodes%ITAB ,
4170 9 interfaces%PON%FSKYI ,bufgeo ,kxx ,ixx ,interfaces%PON%ISKY ,
4171 a ipart(k9) ,gresav ,
grth ,
4172 b
igrth ,elbuf_tab )
4173 IF (imonm > 0)
CALL stoptime(timers,51)
4174 IF (imon>0)
CALL stoptime(timers,6)
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4186 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4187 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4188 3 greftsk,greltsk)
4189
4190
4191
4192
4193 IF(kcontact/=0)THEN
4194 IF(ialelag >0)
4195 .
ifoam_cont(nodftsk:nodltsk)= icontact(nodftsk
4196
4197 icontact(nodftsk:nodltsk)=0
4198 END IF
4199
4200 IF(istatcnd /= 0)THEN
4201 IF(iparit==0)THEN
4202 DO n=1,numnod
4203 stcnd(ndtsk+n-1) = zero
4204 END DO
4205 ELSE
4206 DO n=nodftsk,nodltsk
4207 stcnd(n) = zero
4208 END DO
4209 END IF
4210 END IF
4211
4212 IF(intplyxfem > 0) THEN
4213 DO n=nodftsk,nodltsk
4214 wagap(1,n) = zero
4215 wagap(2,n) = zero
4216 END DO
4217 ENDIF
4218
4219
4220
4221 IF(anim_ply > 0) vn_nod = zero
4222
4223
4224
4225 IF(nloadp_hyd_inter > 0 )THEN
4226
4227
4228
4229
4230
4231
4232 itsk = omp_get_thread_num()
4233 nodftsk = 1+itsk*numnod/ nthread
4234 nodltsk = (itsk+1)*numnod/nthread
4235 DO k=1,nloadp_hyd_inter
4236 tagncont(k,nodftsk:nodltsk) = 0
4237 ENDDO
4238
4239
4240
4241 ENDIF
4242
4243
4244
4245 IF(ninter/=0) THEN
4246
4248 IF (imon>0)
CALL startime(timers,timer_contsort)
4249
4250 dt2tt = dt2t
4251 neltstt = neltst
4252 ityptstt= ityptst
4253 IF (impl_s>0) THEN
4254 iadisk = 1
4255 ELSE
4256 iadisk = 1
4257 ENDIF
4258 IF (sh_offset_tab%NNSH_OSET > 0) THEN
4259 CALL assign_ptrx(ptrx,xyz,numnod)
4260 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
4261 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
4262 ELSE
4263 CALL assign_ptrx(ptrx,nodes%X,numnod)
4264 ENDIF
4266 1 ipari ,ptrx ,nodes%A ,
4267 2 nodes%ICODT ,fsav ,wa(1),nodes%V ,nodes%MS ,
4268 3 dt2tt ,neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN ,
4269 4 npc ,tf ,interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,
4270 5 fani ,nodes%IN ,bufsf ,fani(1,nfnca+1) ,nsensor,
4271 6 fani(1,nftca+1) ,icontact ,rcontact ,num_impl(1,1),
4272 7 ns_imp(iadisk),ne_imp(iadisk),nt_imp ,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,
4273 8 h3d_data ,pskids ,tagncont,kloadpinter,loadpinter,
4274 9 loadp_hyd_inter)
4275
4276 IF(dt2tt<dt2t)THEN
4277 dt2t = dt2tt
4278 neltst = neltstt
4279 ityptst= ityptstt
4280 ENDIF
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4294 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4295 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4296 3 greftsk,greltsk)
4297
4298 dt2tt = dt2t
4299 neltstt = neltst
4300 ityptstt= ityptst
4301
4302
4303 IF(istatcnd /= 0 .AND. iparit == 0)THEN
4304 DO n=1,numnod
4305 stcnd(ndtsk+n-1)=-nodes%STIFN (ndtsk+n-1)
4306 END DO
4307 END IF
4308
4309 IF (impl_s>0) THEN
4310 iadisk = 1+itsk*nint7
4311 ELSE
4312 iadisk = 1
4313 ENDIF
4314 IF(iparit == 1) ndtsk = 1
4315
4317 1 ipari ,nodes%X ,nodes%A(1,ndtsk) ,
4318 2 nodes%ICODT ,fsav ,wa(nwaftsk),nodes%V ,nodes%MS ,
4319 3 dt2tt ,neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN(ndtsk) ,
4320 4 npc ,tf ,interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,
4321 6 fani ,nodes%IN ,igrsurf ,bufsf ,fani(1,nfnca+1) ,
4322 7 fani(1,nftca+1) ,icontact ,rcontact ,num_impl(1,itsk+1),
4323 8 ns_imp(iadisk),ne_imp(iadisk),nt_imp ,sensors%SENSOR_TAB,interfaces%INTBUF_TAB,
4324 9 h3d_data ,nsensor)
4325
4326#include "lockon.inc"
4327 IF(dt2tt<dt2t)THEN
4328 dt2t = dt2tt
4329 neltst = neltstt
4330 ityptst= ityptstt
4331 ENDIF
4332#include "lockoff.inc"
4333
4334
4335
4336 IF(impl_s>0) THEN
4337 CALL re2int5(nt_imp,num_imp,ns_imp,ne_imp,num_impl,ipari,nint7)
4338 nt_imp5=nt_imp
4339 END IF
4340
4341 IF (imon>0)
CALL stoptime(timers,timer_contsort)
4343
4344
4345
4346
4348 IF (imon>0)
CALL startime(timers,timer_contfor)
4349
4350 l1 = 1+nixs*numels + nsvois*nixs
4351 l2 = l1+6*numels10
4352 l3 = l2+12*numels20
4353
4354
4355
4356
4357 IF(nspmd > 1)THEN
4358 IF(ninter25 /= 0)THEN
4359 IF (imon>0)
CALL startime(timers,timer_exfor)
4360 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
4361 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
4362 * iad_i25
4363 CALL spmd_exch_i25(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
4364 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
4365 * iad_i25 ,fr_i25 ,sfr_i25 ,4 )
4366 IF (imon>0)
CALL stoptime(timers,timer_exfor)
4367 ENDIF
4368 END IF
4369
4370
4371
4372
4373 ncont = 0
4374 IF (impl_s>0) THEN
4375 ntmp = nt_imp5 + nt_imp1
4376 ENDIF
4377 IF (sh_offset_tab%NNSH_OSET > 0) THEN
4378 CALL assign_ptrx(ptrx,xyz,numnod)
4379 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
4380 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
4381 ELSE
4382 CALL assign_ptrx(ptrx,nodes%X,numnod)
4383 ENDIF
4384
4385
4386
4387
4388
4389
4390
4392 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4393 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4394 3 greftsk,greltsk)
4395 dt2tt = dt2t
4396 neltstt = neltst
4397 ityptstt= ityptst
4398
4399 IF (impl_s>0) THEN
4400 iadisk = 1+ntmp+itsk*(nint7-ntmp)
4401 ELSE
4402 iadisk = 1
4403 ENDIF
4404 idx_fthe = ndtsk
4405 IF(ndtsk>ifthe) idx_fthe =
4406 idx_condn = ndtsk
4407 IF(ndtsk>icondn)idx_condn = 1
4408 idx_pinch = ndtsk
4409 IF(
npinch == 0 )idx_pinch = 1
4410 IF(iparit == 1) ndtsk = 1
4412 1 ipari ,ptrx ,nodes%A(1,ndtsk) ,igroups ,ale_connectivity,
4413 2 nodes%ICODT ,fsav ,nodes%V ,nodes%MS ,dt2tt ,
4414 3 neltstt ,ityptstt ,nodes%ITAB ,nodes%STIFN(ndtsk) ,tf ,
4415 4 interfaces%PON%FSKYI ,interfaces%PON%ISKY ,nodes%VR ,fani,secfcum,
4416 5 itsk+1 ,niskyfi ,kinet ,newfront ,nstrf ,
4417 6 icontact ,nodes%VISCN(ndtsk),xcell ,
4418 8 num_impl(1,itsk+1),ns_imp(iadisk) ,ne_imp(iadisk) ,ind_imp(iadisk) ,nt_imp ,
4419 9 fr_i18 ,igrbric ,eminx ,
4420 a ixs ,ixs(l3) ,ixs(l2) ,fani(1,nfnca+1) ,fani(1,nftca+1) ,
4421 b nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,rcontact ,acontact ,pcontact ,
4422 c nodes%TEMP ,fthe(idx_fthe) ,ftheskyi ,iparg ,nsensor ,
4423 d pm ,
intstamp ,nodes%WEIGHT ,niskyfie ,irlen20 ,
4424 e islen20 ,irlen20t ,islen20t ,irlen20e ,islen20e ,
4426 g fncontg ,ftcontg ,nodes%NODGLOB ,nodes%MS0 ,npc ,
4427 h wa ,sensors%SENSOR_TAB,qfricint ,ncont ,
indexcont ,
4428 i
tagcont ,inod_pxfem ,ms_ply ,wagap ,elbuf_tab ,
4429 j condn(idx_condn) ,condnskyi ,nv46 ,
4430 k sensors%SFSAV ,sensors%FSAV ,glob_therm%NODADT_THERM,glob_therm%THEACCFACT,
4431 l isensint ,nisubmax ,nb25_candt ,nb25_impct ,
4432 m nb25_dst1 ,nb25_dst2 ,ixig3d ,kxig3d ,wige ,
4433 n knot ,igeo ,multi_fvm ,h3d_data ,
4434 p pskids ,t2main_sms ,forneqs ,knotlocpc ,knotlocel ,
4435 q pinch_data%APINCH(1,idx_pinch),pinch_data%STIFPINCH(idx_pinch),t2fac_sms
4436 r kloadpinter ,loadpinter
4437 s interfaces ,xcell_remote)
4438
4439 IF(nintstamp/=0.AND.(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0.OR.
4440 . anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT >0))THEN
4442 IF(ncont/=0) THEN
4443 DO i=itsk+1,ncont,nthread
4445 ENDDO
4446 ENDIF
4447 ENDIF
4448
4449#include "lockon.inc"
4450 IF(dt2tt<dt2t)THEN
4451 dt2t = dt2tt
4452 neltst
4453 ityptst= ityptstt
4454 END IF
4455#include "lockoff.inc"
4456
4457 IF(istatcnd /= 0 .AND. iparit == 0)THEN
4458 DO n=1,numnod
4459 stcnd(ndtsk+n-1) = stcnd(ndtsk+n-1) + nodes%STIFN (ndtsk+n-1)
4460 END DO
4461 ENDIF
4462 IF (iparit == 0 .AND. nspmd > 1 .AND. nthread > 1) THEN
4464 CALL assparxx(itsk, intlist,nbintc,ipari,glob_therm%NODADT_THERM)
4465 ENDIF
4466
4467
4468
4469
4470
4471
4472 IF(impl_s>0)
CALL re2int7(nt_imp,num_imp,ns_imp,ne_imp,
4473 1 ind_imp,num_impl,ipari,nint7 )
4474
4475 IF (imon>0) THEN
4476 CALL stoptime(timers,timer_contfor)
4478 ENDIF
4479 IF (imonm > 0)
CALL startime(timers,21)
4480
4481
4482
4483
4484
4485 IF(nspmd>1)THEN
4486
4487 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0.AND.
4488 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP) .OR.
4489 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
4490 . .OR.h3d_data%N_VECT_PCONT_MAX >0)THEN
4492 1 ipari ,intlist ,nbintc ,fani(1,nfnca+1),
4493 2 fani(1,nftca+1),islen7 ,irlen7 ,irlen7t ,islen7t ,
4494 3 irlen20 ,islen20,irlen20t,islen20t,interfaces%INTBUF_TAB ,
4495 4 h3d_data%N_CSE_FRIC_INTER,h3d_data%N_SCAL_CSE_FRIC)
4496 ELSEIF((h3d_data%N_SCAL_CSE_FRIC+
ninefric>0.AND.
4497 . ((tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP) .OR.
4498 . h3d_data%MH3D/=0 ))
4499 . .OR.(h3d_data%N_SCAL_CSE_FRIC+
ninefric >0.AND.ninter25>0))
THEN
4501 1 ipari ,intlist ,nbintc ,islen7 ,irlen7 ,
4502 2 irlen7t ,islen7t ,irlen20 ,islen20,irlen20t,
4503 3 islen20t ,interfaces%INTBUF_TAB ,h3d_data)
4504
4505 END IF
4506
4507 l1 = 1+nixs*numels + nsvois*nixs
4508 l2 = l1+6*numels10
4509 l3 = l2+12*numels20
4510 IF(iparit==0) THEN
4512 1 ipari ,nodes%A ,nodes%STIFN ,nodes%VISCN ,
4513 2 intlist ,nbintc ,nodes%ICODT ,secfcum ,nstrf ,
4514 3 icontact ,fani ,islen7 ,irlen7 ,islen11 ,
4515 4 irlen11 ,islen17 ,irlen17,igrbric ,
4516 5 ixs ,ixs(l3) ,fthe ,irlen7t ,
4517 6 islen7t ,irlen20 ,islen20,irlen20t,islen20t,
4518 7 irlen20e ,islen20e,condn ,1, interfaces%INTBUF_TAB ,
4519 8 h3d_data, multi_fvm,tagncont,kloadpinter,loadpinter,
4520 9 loadp_hyd_inter,fsav ,interfaces,glob_therm%NODADT_THERM)
4521 ELSE
4522
4524 1 ipari ,intlist ,nbintc ,niskyfi ,nodes%ICODT ,
4525 2 secfcum ,nstrf ,icontact ,fani ,igrbric ,
4526 3 ixs ,ixs(l3) ,niskyfie ,nbint20 ,1 ,
4527 4 interfaces%INTBUF_TAB,sfskyi ,sisky ,h3d_data ,multi_fvm ,
4528 5 tagncont ,kloadpinter,loadpinter,loadp_hyd_inter,fsav,
4529 6 interfaces,glob_therm)
4530
4531 IF(multi_fvm%IS_INT18_LAW151) THEN
4534 1 multi_fvm
4535 ENDIF
4536 END IF
4537 ENDIF
4538 IF (imon
CALL stoptime(timers,timer_exfor)
4539 IF (imonm > 0)
CALL stoptime(timers,21)
4540
4542 ENDIF
4543
4544
4545
4546 IF (int24use == 1)THEN
4547 IF (imon>0)
CALL startime(timers,timer_contfor)
4548 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
4549 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
4550 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,1,
4551 * int24e2euse )
4552
4553 IF (imon>0)
CALL stoptime(timers,timer_contfor)
4554 ENDIF
4555
4556
4557
4558 IF(nspmd>1)THEN
4559 IF(nintstamp /= 0.AND.ftempvar21==1) THEN
4560 CALL spmd_i21fthecom(ipari ,fthe ,interfaces%INTBUF_TAB,sensors%SENSOR_TAB,niskyfi ,
4561 . ftheskyi,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,condnskyi,nsensor,glob_therm%NODADT_THERM)
4562 ENDIF
4563 ENDIF
4564
4565
4566
4567 IF (ns10e > 0.AND.iparit == 0) THEN
4568
4569
4570
4571
4572
4573
4574!$omp+private(itsk,nodftsk,nodltsk,greftsk,greltsk)
4575 itsk = omp_get_thread_num()
4576 nodftsk = 1+itsk*numnod/ nthread
4577 nodltsk = (itsk+1)*numnod/nthread
4578 greftsk = 1+itsk*ns10e/ nthread
4579 greltsk = (itsk+1)*ns10e/nthread
4581 2 nodftsk,nodltsk,greftsk,greltsk,itsk ,
4582 3 nodes%STIFN ,stifnd)
4583
4584 END IF
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594 IF(nvolu/=0)THEN
4595 IF (imonm > 0)
CALL startime(timers,50)
4597 nn = numelc+numeltg+ibagsurf
4598 n0 = 1 + 3*nn
4599 IF(intbag/=0)THEN
4600 n1 = n0+ nn
4601 ELSE
4602 n1 = n0
4603 ENDIF
4604
4607 CALL fvmesh0(monvol, nodes%X, volmon, ixs)
4609 CALL fvupd0(monvol, nodes%X, nodes%V, volmon, smonvol, svolmon)
4610 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
4611 CALL fvbag0(monvol , volmon, nodes%X, sensors%SENSOR_TAB, nodes%V ,
4612 . nodes%A , npc, tf, nsensor ,
4613 . fsav(1,n), ifvmesh, icontact_old, lgauge ,
4614 . gauge , igeo, geo, pm , ipm ,
4615 . iparg , igrouptg, igroupc, elbuf_tab , noda_fext,
4616 . 1 , h3d_data, nodes%ITAB, nodes%WEIGHT , output%TH%WFEXT, python)
4617
4619 IF (imonm > 0)
CALL stoptime(timers,50)
4620 ENDIF
4621
4622
4623 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0) THEN
4624
4625 dt2r = dt2
4626
4627
4628 min_tab(1) = nelts
4629 min_tab(2) = itypts
4630 min_tab(3) = 0
4631 min_tab(4) = ispmd
4632
4633
4634
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645 ENDIF
4646
4647 t1sh=tt
4648
4649
4650
4651
4652
4653 IF (nslipring + nretractor> 0)
CALL update_slipring(ixr,element%SHELL%IXC,iparg,elbuf_tab,flag_slipring_update,
4654 . flag_retractor_update,nodes%X,npby)
4655
4656
4657
4658
4660 IF (imon>0)
CALL startime(timers,timer_element)
4661
4662
4663
4664 getunod_nocom=1
4665
4666 llt1 = i87g+3*numeltg
4667
4668
4669
4670
4671
4672
4674 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4675 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4676 3 greftsk,greltsk)
4677 dt2tt = dt2t
4678 neltstt = neltst
4679 ityptstt= ityptst
4680 iad_grel = 1
4681 IF(igrelem == 1)iad_grel = k3-k1+1
4682 idx_fthe = ndtsk
4683 IF(ndtsk>ifthe)idx_fthe=1
4684 idx_condn = ndtsk
4685 IF(ndtsk>icondn)idx_condn=1
4686 idx_pinch = ndtsk
4687 IF(
npinch == 0 )idx_pinch = 1
4688 IF(iparit == 1) ndtsk = 1
4690 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%AR(1,ndtsk) ,
4691 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,nloc_dmg ,
4692 3 wa(nwaftsk) ,nodes%STIFN(ndtsk) ,nodes%STIFR(ndtsk) ,element%PON%FSKY ,
crksky ,
4693 4 tf ,bufmat ,partsav(ipmtsk) ,nodes%D ,mat_elem ,
4694 5 nodes%DR ,eani ,tani ,fani(1,nfoa+1) ,
4695 6 fsav ,sensors ,skews%SKEW ,anin(ndma2+1) ,failwave ,
4696 7 dt2tt ,thke ,bufgeo ,element%PON%IADC ,element%PON%IAD_TG ,
4697 8 iparg ,npc ,element%SHELL%IXC ,ixtg ,neltstt ,
4698 9 ipari ,ityptstt ,nstrf ,
4699 a ipart ,ipart(k3) ,ipart(k8) ,secfcum ,
4700 b fsavd ,mat_elem%GROUP_PARAM ,
4701 e fzero ,ixtg1 ,element%PON%IAD_TG6 ,igeo ,ipm ,
4702 f madfail ,xsec ,itsk ,nodes%MCP ,
4703 g nodes%TEMP ,fthe(idx_fthe) ,fthesky ,
4705 i iel_pxfem ,iadc_pxfem ,igrouc ,ngrouc ,gresav(igmtsk),
4706 j
grth ,
igrth(iad_grel) ,mstg ,dmeltg ,msc ,
4707 k dmelc ,table ,kxfenod2elc ,ptg ,msz2 ,
4708 l inod_crk ,iel_crk
4709 m
4710 n xfem_tab ,condn(idx_condn),condnsky ,
crkedge ,
4711 o stack ,nodes%ITAB ,glob_therm,
4712 q drape_sh4n ,drape_sh3n ,subsets, nodes%XDP ,pinch_data%VPINCH ,
4713 r pinch_data%APINCH(1,idx_pinch),pinch_data%STIFPINCH(idx_pinch),drapeg ,
4714 s output ,dt ,snpc , stf ,userl_avail ,maxfunc ,
4715 s sbufmat )
4716#include "lockon.inc"
4717 IF(dt2tt<dt2t)THEN
4718 dt2t = dt2tt
4719 neltst = neltstt
4720 ityptst= ityptstt
4721 END IF
4722#include "lockoff.inc"
4723
4725 IF (imon>0)
CALL stoptime(timers,timer_element)
4726
4727
4728
4729
4730
4731
4732
4733
4734
4736 IF (imon>0)
CALL startime(timers,timer_element)
4737 l1 = 1+nixs*numels + nsvois*nixs
4738 l2 = l1+6*numels10
4739 l3 = l2+12*numels20
4740 ll1 = 1+8*numels
4741 ll2 = ll1+6*numels10
4742 ll3 = ll2+12*numels20
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4755 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4756 2 ipmtsk,partftsk ,partltsk ,nwaftsk,igmtsk ,
4757 3 greftsk,greltsk)
4758 IF(iparit == 1) ndtsk = 1
4759
4760 dt2tt = dt2t
4761 neltstt = neltst
4762 ityptstt= ityptst
4763 i16tsk = 1+itsk*(sw16/nthread)
4764 idx_fthe = ndtsk
4765 IF(ndtsk>ifthe) idx_fthe = 1
4766 idx_condn = ndtsk
4767 IF(ndtsk>icondn)idx_condn = 1
4768
4769 CALL forint(timers, python,
4770 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%AR(1,ndtsk) ,
4771 2 nodes%V ,nodes%VR ,nodes%MS ,nodes%IN ,w ,
4772 3 elbuf ,wa(nwaftsk) ,val2 ,veul ,fv ,
4773 4 nodes%STIFN(ndtsk) ,nodes%STIFR(ndtsk) ,element%PON%FSKY ,tf ,bufmat ,
4774 5 partsav(ipmtsk),nodes%D ,nodes%DR ,eani ,elbuf_tab ,
4775 6 tani ,fani(1,nfoa+1),fsav ,sensors ,nloc_dmg ,
4776 7 skews%SKEW ,anin(ndma2+1) ,dt2tt ,bufgeo ,nodes%ITAB
4777 8 element%PON%IADS ,element%PON%IADQ ,element%PON%IAD_TRUSS ,element%PON%IAD_BEAM ,mat_elem ,
4778 9 element%PON%IAD_SPRING ,iparg ,ale_connectivity,npc ,
4779 a ixs ,ixq ,ixt ,ixp ,
4780 b ixr
4781 c ityptstt ,nstrf ,ipart ,
4782 d ipart(k1) ,ipart(k2) ,ipart(k4) ,ipart(k5) ,
4783 e ipart(k6) ,ipart(k7) ,fr_wave ,rby ,
4784 f secfcum ,agrv ,igrv ,lgrav ,
4785 g ixs(l1) ,
4786 h ixs(l2) ,element%PON%IADS10 ,element%PON%IADS20 ,ixs(l3) ,element%PON%IADS16 ,
4787 i w16(i16tsk) ,element%PON%FSKYM ,msnf ,igeo ,ipm
4788 j xsec ,itsk ,nodes%TEMP ,
4789 k fthe(idx_fthe) ,fthesky ,igrounc ,ngrounc ,
4790 m gresav
4791 n dmels ,mstr ,dmeltr ,msp ,dmelp ,
4792 o msrt ,dmelrt ,table ,vflow ,aflow ,
4793 p dflow ,wflow ,ffsky ,aflow ,nbsdvois ,
4794 q nercvois ,nesdvois ,lercvois ,lesdvois ,phi ,
4795 r
4797 t kxig3d ,ixig3d ,knot ,wige ,condn(idx_condn),
4798 u condnsky ,s_sfem_nodvar,
4800 w knotlocpc ,knotlocel ,subsets ,flag_slipring_update, flag_retractor_update ,
4801 y h3d_data ,ifthe ,icondn ,dt ,output,
4802 z sbufmat ,snpc ,stf ,nodadt ,dtfac1,
4803 . dtmin1 ,idtmin ,iout ,istdo ,idtmins,dtfacs,nsvois,
4804 . iresp ,maxfunc ,userl_avail ,glob_therm,imon_mat,dtmins,sanin)
4805
4806#include "lockon.inc"
4807 IF(dt2tt<dt2t)THEN
4808 dt2t = dt2tt
4809 neltst = neltstt
4810 ityptst= ityptstt
4811 END IF
4812#include "lockoff.inc"
4813
4815
4816 IF (imon>0)
CALL stoptime(timers,timer_element)
4817
4818 IF(numsphg/=0)THEN
4819 IF (imonm > 0)
CALL startime(timers,48)
4820 IF (imonm > 0)
CALL startime(timers,87)
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4833 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk,
4834 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4835 3 greftsk,greltsk)
4836
4837
4839 1 pm ,geo ,nodes%X ,nodes%V ,nodes%MS ,
4840 2 elbuf_tab,wa ,tf ,bufmat ,partsav ,
4841 3 iparg ,npc ,ipart ,nodes%ITAB ,bufgeo ,
4842 4 xframe ,kxsp ,ixsp ,nod2sp ,ipart(k10),
4843 5 spbuf ,ispcond ,ispsym ,xspsym ,vspsym ,
4844 6 wasph(ksph21) ,lprtsph ,lonfsph ,wasph(ksp2sort) ,
4845 7 isphio ,vsphio ,igrsurf ,nodes%D ,
4846 8 sphveln ,itsk ,nodes%XDP ,ibufssg_io,lgauge ,
4847 9 gauge ,ngrounc ,igrounc ,sol2sph ,sph2sol ,
4848 a ixs ,element%PON%IADS ,element%PON%ADSKY ,element%PON%FSKYD ,dmsph(ndtsk),
4849 b wasph(kspactiv),icontact_old,off_sph_r2r,wsmcomp,irunn_bis,
4850 c sph_iord1,sph_work,output%TH%WFEXT)
4851
4852
4853 IF (imonm > 0)
CALL stoptime(timers,87)
4854
4855
4856
4857 IF (imonm > 0)
CALL startime(timers,88)
4858
4859
4860
4861
4862
4863
4864
4866 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
4867 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
4868 3 greftsk,greltsk)
4869
4870 dt2tt = dt2t
4871 neltstt = neltst
4872 ityptstt= ityptst
4873
4874 iad_grel = 1
4875 IF(igrelem == 1)iad_grel = k10-k1+1
4876 IF(iparit == 1) ndtsk = 1
4877
4878
4879
4880
4882 1 pm ,geo ,nodes%X ,nodes%A(1,ndtsk) ,nodes%V ,
4883 2 nodes%MS ,w ,elbuf_tab ,wa ,fv ,
4884 3 nodes%STIFN(ndtsk) ,tf ,bufmat ,partsav(ipmtsk) ,nloc_dmg ,
4885 4 fsav ,dt2tt ,element%PON%IADS ,iparg ,npc ,
4886 5 neltstt ,ityptstt ,ipart ,nodes%ITAB ,interfaces%PON%ISKY ,
4887 6 bufgeo ,interfaces%PON%FSKYI ,xframe ,kxsp ,ixsp ,
4888 7 nod2sp ,ipart(k10) ,spbuf ,ispcond ,ispsym ,
4889 8 xspsym%BUF ,vspsym%BUF ,
4890 9 wasph(ksph21) ,lprtsph ,lonfsph ,wasph(kspactiv) ,isphio ,
4891 a vsphio ,sphveln ,itsk ,ipm ,gresav(igmtsk),
4892 b
grth ,
igrth(iad_grel),table ,lgauge ,gauge ,
4893 c ngrounc ,igrounc ,ixs ,irst ,sol2sph ,
4894 d sph2sol ,element%PON%FSKY ,element%PON%FSKY ,igeo ,nodes%TEMP ,
4895 e fthe ,ftheskyi ,sphg_f6 ,wsmcomp%BUF ,sol2sph_typ ,
4896 f mat_elem ,output ,sph_iord1 ,snpc ,stf ,
4897 g sbufmat ,nsvois ,idtmins ,iresp ,maxfunc ,
4898 . imon_mat ,userl_avail ,impl_s ,idyna ,
4899 . dt ,glob_therm ,sph_work ,output%TH%WFEXT ,sensors )
4900#include "lockon.inc"
4901 IF(dt2tt<dt2t)THEN
4902 dt2t = dt2tt
4903 neltst = neltstt
4904
4905 END IF
4906#include "lockoff.inc"
4907
4908
4909
4910
4911 getunod_nocom=0
4912
4913
4914
4915
4916
4917
4919 IF (imonm > 0)
CALL stoptime(timers,88)
4920 IF (imonm > 0)
CALL stoptime(timers,48)
4921 ENDIF
4922
4923
4924
4925
4926 IF (nspmd>1) THEN
4927 IF ((sdd_r2r_elem>0).AND.(flg_sphinout_r2r>0)) THEN
4928 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
4929 CALL spmd_exch_r2r_sphoff(off_sph_r2r,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4930 CALL spmd_exch_r2r_sph(nodes%X,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4931 CALL spmd_exch_r2r_sph(nodes%D,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4932 CALL spmd_exch_r2r_sph(nodes%V,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
4933 ENDIF
4934 ENDIF
4935
4936
4937 IF(nvolu/=0)THEN
4938 IF (imonm > 0)
CALL startime(timers,50)
4940 nn = numelc+numeltg+ibagsurf
4941 n0 = 1 + 3*nn
4942 IF(intbag/=0)THEN
4943 n1 = n0+ nn
4944 ELSE
4945 n1 = n0
4946 ENDIF
4947 sporo = numelc+numeltg+ibagsurf
4948
4949 n=1+ninter+nrwall+nrbody+nsect+njoint+nrbag
4950 CALL fvbag0(monvol, volmon, nodes%X, sensors%SENSOR_TAB, nodes%V,
4951 . nodes%A, npc, tf, nsensor ,
4952 . fsav(1,n), ifvmesh, icontact_old,lgauge,
4953 . gauge , igeo, geo, pm, ipm,
4954 . iparg , igrouptg,igroupc, elbuf_tab, noda_fext,
4955 . 2 , h3d_data,nodes%ITAB, nodes%WEIGHT, output%TH%WFEXT, python)
4956 IF (impl_s > 0 .AND. ismdisp >0) THEN
4957 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
4958 ELSE
4959 CALL assign_ptrx(ptrx,nodes%X,numnod)
4960 ENDIF
4962 1 monvol ,volmon ,ptrx ,nodes%A ,
4963 2 npc ,tf ,nodes%V ,wa ,
4964 3 fsav(1,n) ,nsensor ,sensors%SENSOR_TAB ,igrsurf ,
4965 4 fr_mv ,element%PON%IAD_MV ,sicontact ,sporo ,
4966 5 element%PON%FSKY ,icontact ,wa(n0) ,iparg ,
4967 6 elbuf_tab ,geo ,igeo ,
4968 7 pm ,ipm ,ipart ,ipart(k3) ,
4969 8 ipart(k8) ,igroupc ,igrouptg ,noda_fext ,
4970 9 2 ,h3d_data ,t_monvol ,frontier_global_mv,
4971 a output, python)
4972
4974 IF (imonm > 0)
CALL stoptime(timers,50)
4975 ENDIF
4976
4977
4978
4979
4980
4981 IF (ns10e > 0 .AND. iparit==0) THEN
4982
4983
4984
4985 itsk = omp_get_thread_num()
4986 nodftsk = 1+itsk*numnod/ nthread
4987 nodltsk = (itsk+1)*numnod/nthread
4988 greftsk = 1+itsk*ns10e/ nthread
4989 greltsk = (itsk+1)*ns10e/nthread
4991 2 nodftsk,nodltsk,greftsk,greltsk,itsk ,
4992 3 nodes%STIFN ,stifnd)
4993
4994 END IF
4995
4996
4997
4998
4999
5000
5001
5002
5003 IF(ninter/=0) THEN
5004 IF(nspmd>1)THEN
5005 IF(imonm == 2)THEN
5007 CALL spmd_barrier()
5009 ENDIF
5010 IF (imon>0)
CALL startime(timers,timer_exfor)
5011 IF (imonm > 0)
CALL startime(timers,22)
5012
5013 l1 = 1+nixs*numels + nsvois*nixs
5014 l2 = l1+6*numels10
5015 l3 = l2+12*numels20
5016 IF(iparit==0)THEN
5017
5019 1 ipari ,nodes%A ,nodes%STIFN ,nodes%VISCN ,
5020 2 intlist ,nbintc ,nodes%ICODT ,secfcum ,nstrf ,
5021 3 icontact ,fani ,islen7 ,irlen7 ,islen11 ,
5022 4 irlen11 ,islen17 ,irlen17 ,igrbric ,
5023 5 ixs ,ixs(l3) ,fthe ,irlen7t ,
5024 6 islen7t ,irlen20 ,islen20 ,irlen20t,islen20t,
5025 7 irlen20e ,islen20e,condn ,2, interfaces%INTBUF_TAB,
5026 8 h3d_data, multi_fvm,tagncont,kloadpinter,loadpinter
5027 9 loadp_hyd_inter,fsav ,interfaces,glob_therm%nodadt_therm)
5028 ELSE
5029
5031 1 ipari ,intlist ,nbintc ,niskyfi ,nodes%ICODT ,
5032 2 secfcum ,nstrf ,icontact ,fani ,igrbric
5033 3 ixs ,ixs(l3) ,niskyfie ,nbint20 ,2 ,
5034 4 interfaces%INTBUF_TAB,sfskyi ,sisky ,h3d_data ,multi_fvm ,
5035 5 tagncont ,kloadpinter,loadpinter,loadp_hyd_inter,fsav,
5036 6 interfaces,glob_therm)
5037 END IF
5038
5039
5040 IF (imon>0) THEN
5042 IF (imonm > 0)
CALL stoptime(timers,22)
5043 ENDIF
5044 ENDIF
5045 ENDIF
5046
5047 22 CONTINUE
5048
5049
5050 IF(iparit /= 0.AND.nspmd > 1.AND. nloc_dmg%IMOD > 0)THEN
5052 ENDIF
5053 IF(nspmd > 1.AND. nintloadp > 0)THEN
5054 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5056 ENDIF
5057
5058
5059 IF(nloadp_hyd/=0.AND.impl_s/=1) THEN
5060 noda_fext = zero
5062 IF (imon>0)
CALL startime(timers,timer_kin)
5063 IF (imonm > 0)
CALL startime(timers,41)
5065 2 nodes%A ,nodes%V ,nodes%X ,skews%SKEW ,sensors%SENSOR_TAB,
5066 3 element%PON%IAD_LOADP,element%PON%FSKY ,fani(1,1+nfea),tagncont ,nsensor ,
5067 4 loadp_hyd_inter,h3d_data , python,
5068 5 npresload ,loadp_tagdel,output%TH%TH_SURF,pblast,output%TH%WFEXT)
5069
5070
5071 IF (imonm > 0)
CALL stoptime(timers,41)
5072 IF (imon>0)
CALL stoptime(timers,timer_kin)
5074 ENDIF
5075
5076
5077
5078 IF(coupling%active) THEN
5079 nodes%FORCES(1:3,1:numnod) = nodes%A(1:3,1:numnod)
5080 ENDIF
5081
5082
5083
5084 dtnod_nlocal = ep20
5085 IF(iparit == 0 .AND. nthread > 1)THEN
5086 IF (imon>0)
CALL startime(timers,timer_asm)
5087
5088
5089
5090 itsk = omp_get_thread_num()
5091 nodftsk = 1+itsk*numnod/ nthread
5092 nodltsk = (itsk+1)*numnod/nthread
5093 partftsk = 1+itsk*npsav*npart/nthread
5094 partltsk = (itsk+1)*npsav*npart/nthread
5095 greftsk = 1+itsk*npsav*ngpe/nthread
5096 greltsk = (itsk+1)*npsav*ngpe/nthread
5097
5098
5099
5101 1 nthread ,numnod,nodftsk,nodltsk,iroddl,
5102 2 npart ,partftsk,partltsk ,nodes%A ,nodes%AR ,
5103 3 partsav ,nodes%STIFN ,nodes%STIFR ,nodes%VISCN , fthe ,
5104 4 glob_therm%ITHERM_FE,glob_therm%NODADT_THERM,stcnd ,greftsk,greltsk ,
5105 5 gresav ,ngpe ,nthpart ,ialelag, aflow,
5106 6 dmsph ,condn ,
5107 7 pinch_data%APINCH,pinch_data%STIFPINCH)
5108
5109
5110
5111! accumulation of acceleration
for nlocal option : parith/off
5112 IF (nloc_dmg%IMOD > 0) THEN
5113 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
5114 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
5116 . nloc_dmg%POSI,nloc_dmg%L_NLOC,nthread )
5117
5118 IF (nodadt > 0) THEN
5120 . nloc_dmg%POSI,nloc_dmg%L_NLOC,nthread )
5121 CALL nlocal_dtnoda(nodft_nl,nodlt_nl,nloc_dmg,dtnod_nlocal,dt2t)
5122 ENDIF
5123 ENDIF
5124
5125 IF (imon>0)
CALL stoptime(timers,timer_asm)
5126 ENDIF
5127
5128
5129
5130
5131 IF(numsph /= 0 .AND. nsphsol /= 0 )THEN
5132 IF (imonm > 0)
CALL startime(timers,48)
5133 IF (imonm > 0)
CALL startime(timers,89)
5134
5135
5136
5137 itsk = omp_get_thread_num()
5138 nodftsk = 1+itsk*numnod/ nthread
5139 nodltsk = (itsk+1)*numnod/nthread
5140
5142 1 nodes%A ,spbuf ,ixs ,kxsp ,ipart(k10),
5143 2 nod2sp ,irst ,ngrounc ,igrounc ,iparg ,
5144 3 nodes%STIFN ,sol2sph,sph2sol ,elbuf_tab,itsk ,
5145 4 nodftsk,nodltsk,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,igeo ,
5146 5 sol2sph_typ)
5147
5148
5149
5150 IF (imonm > 0)
CALL stoptime(timers,89)
5151 IF (imonm > 0)
CALL stoptime(timers,48)
5152 ENDIF
5153
5154
5155
5156 IF(nitsche/=0) THEN
5157
5158
5159
5160
5162 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
5163 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
5164 3 greftsk,greltsk)
5165
5166 CALL zeror(forneqs(1,nodftsk),numntsk)
5167
5168
5169
5170
5171
5172 IF (int24use == 1)THEN
5173 IF (sh_offset_tab%NNSH_OSET > 0) THEN
5174 CALL assign_ptrx(ptrx,xyz,numnod)
5175 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
5176 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
5177 ELSE
5178 CALL assign_ptrx(ptrx,nodes%X,numnod)
5179 ENDIF
5180 CALL i24nitschfor3 (ipari ,interfaces%INTBUF_TAB,iparit ,stressmean ,
5181 2 intlist ,nbintc ,ptrx,element%PON%IADS,
5182 3 forneqs ,forneqsky ,nodes%ITAB ,ixs ,
5183 4 element%PON%IADS10,element%PON%IADS20 ,element%PON%IADS16,nfacnit )
5184 ENDIF
5185 ENDIF
5186
5187
5188
5189
5190
5191 IF(int18kine== 1)THEN
5192 ALLOCATE(mtf(14,numnod))
5193 ALLOCATE(cand_sav(8,int18add(ninter+1)-1))
5194 IF (nspmd > 1)THEN
5195 ALLOCATE(tagpene(numnod))
5196 ELSE
5197 ALLOCATE(tagpene(1))
5198 ENDIF
5199 ENDIF
5200 int18add(ninter+1) = -iabs(int18add(ninter+1))
5201 int18kine=-iabs(int18kine)
5202
5203 IF(nspmd>1)THEN
5204 IF (imon>0)
CALL startime(timers,timer_exfor)
5205 IF (iparit==0) THEN
5206 length = 4 + iroddl*4
5207 IF (n2d/=0) THEN
5208 length = length + 1
5209 IF(
ale%SUB%IFSUBM == 1) length = length + 1
5210 ELSEIF(
ale%SUB%IFSUBM==1)
THEN
5211 length = length + 2
5212 ENDIF
5213
5214 IF(glob_therm%ITHERM_FE > 0 )THEN
5215 length = length + 3
5216 IF (glob_therm%NODADT_THERM == 1 ) length = length + 1
5217 ENDIF
5218
5219 IF(ialelag > 0 )THEN
5220 length = length + 4
5221 ENDIF
5222
5223 IF(sol2sph_flag/=0) length = length + 1
5224
5225 IF(nitsche > 0 )THEN
5226 nfacnit = 3
5227 ENDIF
5228
5229 lenc = 0
5230 IF(anim_v(26)+h3d_data%N_VECT_CONT_MAX /=0.AND.nintstamp==0) lenc = 3
5231 IF(h3d_data%N_VECT_PCONT_MAX /=0.AND.nintstamp==0) lenc = lenc+6
5232
5233 lenr = nodes%BOUNDARY_ADD(1,nspmd
5234 IF(idtmins /= 0)THEN
5235
5237 1 nodes%A ,nodes%AR ,nodes%STIFN, nodes%STIFR ,nodes%MS ,
5238 2 nodes%BOUNDARY_ADD,nodes%BOUNDARY,msnf ,
ale%SUB%IFSUBM,length ,
5239 3 lenr ,fthe , nodes%MCP,fr_loc,nb_fr ,
5240 4 ms_2d ,mcp_off,forneqs ,nfacnit ,
5241 5 lenc
5242 6 fani(1,nftca+1) ,glob_therm)
5243 ELSE
5245 1 nodes%A , nodes%ACC_DP ,nodes%AR ,nodes%STIFN,nodes%STIFR ,nodes%MS ,
5246 2 nodes%BOUNDARY_ADD,nodes%BOUNDARY,msnf ,
ale%SUB%IFSUBM,length ,
5247 3
5248 4 ms_2d,mcp_off,
5249 5 forneqs ,nfacnit,lenc ,fani ,h3d_data,
5250 6 fani(1,nfnca+1) ,fani(1,nftca+1) ,glob_therm)
5251
5252 ENDIF
5253
5254 ELSE
5255 length = 4 + iroddl*4
5256 IF(
ale%SUB%IFSUBM==1)
THEN
5257 length = length + 1
5258 ENDIF
5259 IF(n2d /= 0.AND.
ale%SUB%IFSUBM == 1) length = length + 1
5260 sizi = nfskyi+1
5261
5262 IF (glob_therm%ITHERM_FE > 0 )THEN
5263 length = length + 1
5264 sizi = sizi + 1
5265 IF (glob_therm%NODADT_THERM == 1 ) THEN
5266 length = length + 1
5267 sizi = sizi + 1
5268 ENDIF
5269 ENDIF
5270 IF(intplyxfem > 0) sizi = sizi + 5
5271
5272 IF(ialelag > 0 )THEN
5273 length = length + 4
5274 ENDIF
5275
5276 lens = fr_nbcc(1,nspmd+1)
5277 lenr = fr_nbcc(2,nspmd+1)
5278 leni = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5279
5280 lens1 = 0
5281 lenr1 = 0
5282
5283 IF(iplyxfem > 0) THEN
5284 lens1 = fr_nbcc1(1,nspmd+1)
5285 lenr1 = fr_nbcc1(2,nspmd+1)
5286 ENDIF
5287
5288 IF(icrack3d > 0) THEN
5289 lens1 = fr_nbcc1(1,nspmd+1)
5290 lenr1 = fr_nbcc1(2,nspmd+1)
5291 ENDIF
5292
5293 IF(sol2sph_flag/=0)THEN
5294 length = length + 1
5295 ENDIF
5296
5297 lenc = 0
5298 IF(anim_v(26)+h3d_data%N_VECT_CONT_MAX /=0.AND.nintstamp==0) lenc = 3*leni
5299 IF(h3d_data%N_VECT_PCONT_MAX /=0.AND.nintstamp==0) lenc = lenc+6*leni
5300
5302 1 nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,element%PON%ADSKY ,element%PON%PROCNE ,fr_nbcc ,
5303 2 length ,lenr ,lens ,element%PON%FSKY ,element%PON%FSKY ,
5304 3 element%PON%FSKYM ,
ale%SUB%IFSUBM ,sizi ,leni ,element%PON%IADSDP ,
5305 4 element%PON%IADRCP ,element%PON%ISENDP ,element%PON%IRECVP ,ffsky ,procne_pxfem,
5306 5 fr_nbcc1 ,iadsdp_pxfem,iadrcp_pxfem ,isendp_pxfem,
5307 6 irecvp_pxfem,lenr1 ,lens1 ,iadsdp_crk,iadrcp_crk ,
5308 7 isendp_crk ,irecvp_crk,element%PON%FSKYD ,crknodiad ,
crksky ,
5309 8 forneqsky ,nfacnit ,lenc , fani ,h3d_data ,
5310 9 fani(1,nfnca+1),fani(1,nftca+1) ,glob_therm)
5311
5312 ENDIF
5313 IF (imon>0)
CALL stoptime(timers,timer_exfor)
5314 ENDIF
5315
5316
5317
5318
5320
5321 IF (imon>0)
CALL startime(timers,timer_asm)
5322
5324
5325
5326
5327
5328 IF(iparit==1) ALLOCATE( fsky_l(nisky) )
5329 dtnod_nlocal = ep20
5330
5331!$omp+private(itsk,nodftsk,nodltsk,partftsk,partltsk,greftsk,greltsk,nodftsk_2,nodltsk_2,nodft_nl,nodlt_nl)
5332 itsk = omp_get_thread_num()
5333
5334 nodftsk = 1+itsk*numnod/ nthread
5335 nodltsk = (itsk+1)*numnod/nthread
5336 partftsk = 1+itsk*npsav*npart/nthread
5337 partltsk = (itsk+1)*npsav*npart/nthread
5338 greftsk = 1+itsk*npsav*ngpe/nthread
5339 greltsk = (itsk+1)*npsav*ngpe/nthread
5340 nodftsk_2 = nodft_asspar(itsk+1)
5341 nodltsk_2 = nodlt_asspar(itsk+1)
5342
5343 IF(iparit==1)THEN
5344
5345
5346
5347
5349 2 element%PON%FSKY ,element%PON%FSKY ,element%PON%ADSKY ,element%PON%FSKYM ,
5350 3 msnf ,interfaces%PON%ISKY ,interfaces%PON%FSKYI ,fthe ,
5351 4 fthesky,ftheskyi,nodftsk,nodltsk ,interfaces%PON%ADSKYI,
5352 5 partsav,partftsk ,partltsk ,itsk ,greftsk ,
5353 6 greltsk ,gresav ,aflow ,ffsky ,msf ,
5354 7 adsky_pxfem, inod_pxfem ,element%PON%FSKYD ,
5355 8 dmsph ,condn ,condnsky ,condnskyi,
5357 a stifnd ,forneqs ,forneqsky ,nfacnit,nodftsk_2
5358 b nodltsk_2
5359
5360
5361
5362 IFTHEN
5363 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
5364 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
5365 CALL asspar_sub(nloc_dmg%FNL(:,1) ,nloc_dmg%FSKY
5366 . nodlt_nl ,nloc_dmg%POSI ,nloc_dmg%NNOD, nloc_dmg%L_NLOC)
5367
5368 IF (nodadt > 0) THEN
5369 CALL asspar_sub(nloc_dmg%STIFNL(:,1),nloc_dmg%STSKY,nloc_dmg%ADDCNE,nodft_nl,
5370 . nodlt_nl,nloc_dmg%POSI,nloc_dmg%NNOD,nloc_dmg%L_NLOC)
5371 CALL nlocal_dtnoda(nodft_nl,nodlt_nl,nloc_dmg,dtnod_nlocal,dt2t)
5372 ENDIF
5373 ENDIF
5374
5375
5376
5377 IF(icrack3d > 0)THEN
5378
5380
5382 . adsky_crk,inod_crk ,
crksky ,nodftsk ,nodltsk ,
5383 . nodenr ,nodlevxf ,nodes%ITAB )
5384 ENDIF
5385 ELSEIF(iparit==2)THEN
5386
5387 IF(kdtint/=0)THEN
5388
5389
5390 CALL ancmsg(msgid=165,anmode=aninfo)
5391
5392
5394 ENDIF
5395
5397 2 nodes%A ,nodes%AR ,itsk ,nodftsk ,
5398 3 nodltsk ,nodes%STIFN ,nodes%STIFR ,nodes%ITAB ,element%PON%FSKY ,
5399 4 element%PON%FSKY ,interfaces%PON%ISKY ,element%PON%ADSKY ,interfaces%PON%FSKYI ,
5400 5 wa ,partftsk ,partltsk ,partsav ,nodes%MS ,
5401 6 fthe ,fthesky ,ftheskyi ,greftsk ,greltsk ,
5402 7 gresav ,glob_therm%ITHERM_FE ,glob_therm%INTHEAT )
5403
5404 ELSEIF(iparit==3)THEN
5405
5406
5407 n1 = 1 + numnod
5409 1 nthread ,numnod ,nodftsk ,nodltsk ,iroddl ,
5410 2 npart ,partftsk ,partltsk ,nodes%A
5411 3 partsav ,nodes%STIFN ,nodes%STIFR ,nodes%A(1,n1) ,nodes%AR(1,n1) ,
5412 4 nodes%STIFN(n1) ,nodes%STIFR(n1) ,nodes%VISCN ,nodes%VISCN(n1),greftsk ,
5413 5 greltsk ,gresav ,ngpe ,nthpart)
5414
5415 ENDIF
5416
5417 IF(kdtint/=0)
CALL modsti(nodftsk,nodltsk,nodes%STIFN,nodes%VISCN,nodes%MS)
5418
5419
5420
5421 IF(iparit==1) DEALLOCATE( fsky_l )
5422 IF (imon>0)
CALL stoptime(timers,timer_asm)
5424
5425
5426
5427
5428
5429
5430 IF( debug(macro_debug_nan)/=0 )
CALL check_nan_acc(ncycle,nodes)
5431
5432 IF (debug(macro_debug_acc)==1.AND.(nloc_dmg%IMOD>0)) THEN
5433 IF (ispmd==0) THEN
5434 siz = numnodg
5435 ELSE
5436 siz = 0
5437 END IF
5438 IF ( ncycle>=debstart .AND.
5439 . mod(ncycle-debstart,rstfreq)==0 ) THEN
5441 .
5442 ENDIF
5443 ENDIF
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453 IF (ns10e > 0) THEN
5454
5455
5456 itsk = omp_get_thread_num()
5457 nodftsk = 1+itsk*numnod/ nthread
5458 nodltsk = (itsk+1)*numnod/nthread
5459 greftsk = 1+itsk*ns10e/ nthread
5460 greltsk = (itsk+1)*ns10e/nthread
5463 2
itagnd ,nodftsk,nodltsk,greftsk,greltsk,
5464 3 itsk ,nodes%ITAB ,nodes%STIFN, stifnd)
5465
5466 END IF
5467
5468 IF(sol2sph_flag/=0)THEN
5469
5470
5471
5472
5473
5474 itsk = omp_get_thread_num()
5475 nodftsk = 1+itsk*numnod/ nthread
5476 nodltsk = (itsk+1)*numnod/nthread
5477 DO i=nodftsk,nodltsk
5478 IF(nodes%MS(i)/=zero)THEN
5479 IF(nodes%MS(i)-dmsph(i) < em03*nodes%MS(i))THEN
5480 nodes%MS(i)=zero
5481 ELSE
5482 nodes%MS(i)=
max(zero,nodes%MS(i)-dmsph(i))
5483 END IF
5484 END IF
5485 dmsph(i)=zero
5486 ENDDO
5487
5488 ENDIF
5489
5490
5491
5492
5493
5494 IF (int24use == 1)THEN
5495 IF (imon>0)
CALL startime(timers,timer_contfor)
5496 CALL spmd_exch_i24(ipari ,interfaces%INTBUF_TAB,nodes%ITAB ,
5497 * nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,intlist ,nbintc,
5498 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,2,
5499 * int24e2euse )
5500 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5501 ENDIF
5502
5503
5504
5505
5506 IF(nbint20>0.AND.nspmd>1) THEN
5507 length = 21
5508 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5510 1 interfaces%INTBUF_TAB,ipari,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
5511 2 length ,nbint20,lenr ,intlist ,nbintc )
5512 ENDIF
5513
5514
5515
5516 IF(kcontact/=0.AND.nspmd>1) THEN
5517 length = 1
5518 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5520 + ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5521 ENDIF
5522
5523
5524
5525 IF(ialelag > 0.AND.nspmd>1) THEN
5526 length = 1
5527 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5529 ENDIF
5530
5531#ifdef DNC
5532 IF (imadcpl>0)THEN
5533
5534 CALL data_recv_madcpl(nodes%X,nodes%A,nodes%V,nodes%MS,fani,madclnod,madclfrecv,h3d_data)
5535 ENDIF
5536#endif
5537
5538 IF (vipercoupling) THEN
5539
5540 CALL radiossviper_receiveaccelerations(numnod,nodes%A,noda_fext,viper%ITABM1)
5541 endif
5542
5543
5544 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
GOTO 23
5545
5546
5547
5548
5549 IF(numpor>0) THEN
5551 1 geo ,nodpor ,nodes%MS,nodes%X ,nodes%V ,
5552 2 w ,nodes%A ,nodes%AR,skews%SKEW,nodes%WEIGHT,
5553 3 nporgeo)
5554 ENDIF
5555
5556
5557
5558 IF (debug(macro_debug_acc)==1) THEN
5559 IF (ncycle>=debstart .AND.
5560 . mod(ncycle-debstart,rstfreq)==0) THEN
5561
5562 IF(nspmd > 1) THEN
5563 IF (ispmd==0) THEN
5564 siz = numnodg
5565 ELSE
5566 siz = 0
5567 END IF
5568 CALL spmd_collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB,siz)
5569 ELSE
5570 CALL collect(nodes%A,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB)
5571 END IF
5572 END IF
5573 END IF
5574
5575
5576
5577
5578 IF (ifrwv > 0) THEN
5579 IF (nspmd > 1) THEN
5580 length = 1
5581 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
5582
5583 CALL spmd_exch_wave(fr_wave,nodes%BOUNDARY_ADD ,nodes%BOUNDARY,length,lenr)
5584 END IF
5585
5586
5587
5588
5589
5590
5591 itsk = omp_get_thread_num()
5592 nodftsk = 1+itsk*numnod/ nthread
5593 nodltsk = (itsk+1)*numnod/nthread
5594 DO i=nodftsk,nodltsk
5595 fr_wave(i)=abs(fr_wave(i))
5596 ENDDO
5597
5598
5599
5600 ENDIF
5601
5602
5603
5604
5605
5606
5607 IF (failwave%WAVE_MOD > 0) THEN
5609 ENDIF
5610
5611
5612
5613 IF (imon>0)
CALL startime(timers,timer_contfor)
5614 IF (n2d/=0.AND.idel7==2) THEN
5615 IF (imon>0)
CALL startime(timers,6)
5616 CALL chkstifn(ipari,nodes%MS,interfaces%INTBUF_TAB)
5617 IF (imon>0)
CALL stoptime(timers,6)
5618
5619
5620
5621
5622
5623 ELSEIF(idel7ng>=1.OR.pdel>0) THEN
5624
5625
5626 IF (nspmd>1.AND.(idel7ng>=1.OR.pdel>0)) THEN
5627
5628 IF (imonm > 0 )
CALL startime(timers,76)
5630 IF (imonm > 0 )
CALL stoptime(timers,76)
5631 idel7nok =
min(1,idel7nok)
5632 ENDIF
5633 idel7nok_sav = idel7nok
5634 IF (r2r_siu==1.AND.idel7ng>=1) THEN
5636 idel7nok = idel7nok+idel7nok_r2r
5637 idel7nok =
min(1,idel7nok)
5638 ENDIF
5639
5640 IF ((idel7ng>=1.AND.idel7nok==1).OR.(pdel>0.AND.idel7nok==1)) THEN
5641 l1 = 1+nixs*numels + nsvois*nixs
5642 l2 = l1+6*numels10
5643 l3 = l2+12*numels20
5644 IF((int24use==1.OR.ninter25/=0).AND.(idel7ng>=1.AND.idel7nok==1))THEN
5645 indseglo(2:ninter+1)=0
5646 indseglo(1)=1
5647 ENDIF
5648
5649
5650
5651
5652
5653 IF (imonm > 0 )
CALL startime(timers,29)
5654 nindexp = 0
5655 check_neigh_flag_res = 0
5656
5657
5658
5659
5660!$omp+ private(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,igmtsk)
5661
5662
5664 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
5665 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
5666 3 greftsk,greltsk)
5667 omp_address = 1 + itsk*numnod
5668
5669 IF ((idel7ng>=1.AND.idel7nok==1).OR.(pdel>0.AND.idel7nok==1)) THEN
5671 1 geo ,ixs ,ixs(l1) ,ixs(l1) ,ixs(l3) ,ixq ,
5672 2 element%SHELL%IXC ,ixt ,ixp ,ixr ,ixtg ,
5673 3 nodes%deleted_node,nodftsk ,nodltsk ,iparg ,elbuf ,itsk ,
5674 4 ixtg1 ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%ITAB ,
5675 5 addcnel ,cnel ,kxsp ,elbuf_tab ,tagel ,iexlnk ,
5676 6 igrnod ,dd_r2r ,dd_r2r_elem,sdd_r2r_elem,idel7nok_sav ,
5677 7 idel7nok_r2r,tagtrimc,tagtrimtg,s_elem_state,elem_state,
5678 8 shoot_struct,shoot_struct%GLOBAL_NB_ELEM_OFF)
5679
5680
5681 CALL check_nodal_state( itsk,nodes%deleted_node,newfront,interfaces%INTBUF_TAB,shoot_struct%SIZE_SEC_NODE,
5682 . shoot_struct%SHIFT_S_NODE,shoot_struct%INTER_SEC_NODE,shoot_struct%SEC_NODE_ID)
5683
5684
5685
5686
5687
5688 IF(itsk==0) THEN
5690 . ixtg ,
5691 . ngroup,nparg,igroups,iparg )
5693 1 element%SHELL%IXC,ixtg,ixq,ixt,ixp,
5694 2 ixr,geo,ngroup,igroups,iparg )
5695 ENDIF
5697
5698
5699
5700
5701
5702 IF(nspmd>1) THEN
5704 . interfaces%INTBUF_TAB,newfront,
5705 . ipari,geo,
5706 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5707 . addcnel,cnel,nodes%work_array_node(omp_address),tagel )
5709 ENDIF
5710
5711
5712
5713
5714
5715
5717 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
5718 . ipari,geo,
5719 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5720 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
5721
5722
5723
5724 CALL check_edge_state( itsk,shoot_struct%SAVE_M_EDGE_NB,shoot_struct%SAVE_S_EDGE_NB,
5725 . shoot_struct%SAVE_M_EDGE,shoot_struct%SAVE_S_EDGE,
5726 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,newfront,ipari,geo,
5727 . ixs,element%SHELL%IXC,ixt,ixp,ixr,ixtg,ixs(l1),
5728 . addcnel,cnel,nodes%work_array_node(omp_address),tagel,shoot_struct )
5729
5730
5731
5732
5733
5734 IF(int24use>0.OR.ninter25/=0) THEN
5736 . shoot_struct%SHIFT_INTERFACE,interfaces%INTBUF_TAB,
5737 . ipari,nodes%BOUNDARY_ADD,shoot_struct )
5739 IF(ninter25/=0.AND.interfaces%PARAMETERS%INT25_EROSION_SOLID > 0) THEN
5740 IF(itsk==0) THEN
5741 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
5742 IF(need_comm_int25_solid_erosion) THEN
5743 check_neigh_flag = shoot_struct%NUMBER_NEW_SURF + shoot_struct%NUMBER_REMOTE_SURF
5744 CALL spmd_allreduce(check_neigh_flag,check_neigh_flag_res,1,spmd_max,comm_int25_solid_erosion)
5745 ELSEIF(nspmd==1) THEN
5746 check_neigh_flag_res = check_neigh_flag
5747 ENDIF
5748 IF(check_neigh_flag_res > 0 ) THEN
5749 CALL get_neighbour_surface( ispmd,nspmd,ninter25,npari,ninter,
5750 . nbintc,nixs,nixc,nixtg,numnod,
5751 . numels,numelc,numeltg,s_elem_state,
5752 . nbddedgt,nbddedg_max,
5753 . elem_state,ipari,intlist,nodes,
5754 . newfront,ixs,element%SHELL%IXC,ixtg,
5755 . nodes%BOUNDARY_ADD,nodes%X,
5756 . interfaces%INTBUF_TAB,interfaces%SPMD_ARRAYS,shoot_struct )
5757 ENDIF
5758 ENDIF
5760 ENDIF
5761 ENDIF
5762
5763 ENDIF
5764
5765 IF (idel7ng>=1.AND.idel7nok==1) THEN
5767 1 ipari ,geo ,ixs ,ixq ,element%SHELL%IXC ,ixt ,
5768 2 ixp ,ixr ,ixtg ,nodes%deleted_node,iparg ,itsk ,
5769 3 newfront,nodes%work_array_node(omp_address) ,nodes%MS ,nodes%IN ,anin(ndma+1),nodes%ITAB ,
5770 4 nodes%ITABM1 ,addcnel , cnel ,indidel ,nindex1 ,nindex2 ,
5771 5 nindex3 ,nindex4 ,tagel ,int24use ,ibufseglo ,indseglo,
5772 6 ibufidel ,interfaces%INTBUF_TAB,nodes%BOUNDARY_ADD)
5773
5774 ENDIF
5775
5776 IF (pdel>0.AND.idel7nok==1) THEN
5778 1 ibcl ,ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
5779 2 ixr ,ixtg ,nodes%deleted_node,itsk ,nodes%work_array_node(omp_address),nodes%ITAB ,
5780 3 nodes ,addcnel ,cnel ,tagel ,iparg ,geo ,
5781 4 ibufpdel,nindexpdel,nindexp ,npresload,loadp_tagdel ,
5782 5 iloadp ,lloadp ,nodes%BOUNDARY_ADD)
5783
5784 ENDIF
5785
5786
5787 IF (imonm > 0 )
CALL stoptime(timers,29)
5789 ENDIF
5790 ENDIF
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808! . nodes%ITAB,nodes,geo,addcnel,cnel,
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818! neleml = numels+numelq+numelc+numelt+numelp+numelr+numeltg
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837! 4 ixs(l3) ,ixtg1 ,geo ,addcnel ,cnel ,
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849 IF(idtmins>=1.OR.idtmins_int/=0)THEN
5850 IF(mcheck==0)THEN
5851 ismsnok=0
5852 IF(idel7ng==0)THEN
5853 IF (nspmd>1) THEN
5854
5855 IF (imonm > 0 )
CALL startime(timers,76)
5857 IF (imonm > 0 )
CALL stoptime(timers,76)
5858 idel7nok =
min(1,idel7nok)
5859 ENDIF
5860 ENDIF
5861 ismsnok=idel7nok
5862 ELSE
5863 ismsnok=1
5864 END IF
5865 END IF
5866
5867#ifdef DNC
5868 IF(imadcpl /=0)THEN
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883 madymo_del_global=0
5884 madymo_del=0
5885
5886 IF (idel7nok > 0 ) THEN
5887 CALL mad_elfail( elbuf_tab,iparg,
5888 * madsol,madsh3,madsh4,
5889 * mad_tag_sol, mad_tag_sh,mad_tag_tg,
5890 * madymo_del,
5891 * mad_fail_elements)
5892
5893 ENDIF
5894
5895 madymo_del_global = madymo_del
5896
5898 ENDIF
5899#endif
5900
5901 idel7nok=0
5902 IF (imon>0)
CALL stoptime(timers,timer_contfor)
5903
5904
5905
5906
5907
5908
5909
5910
5912 1 nstrf ,nodes%V,nodes%VR,
5913 2 nodes%A ,nodes%AR ,secbuf,nodes%MS,nodes%IN,
5914 3 nodes%WEIGHT,iad_cut,fr_cut, output%TH%WFEXT)
5915
5916
5917
5918 IF (ncluster > 0) THEN
5919 CALL clusterf(cluster ,elbuf_tab,nodes%X ,nodes%A ,nodes%AR ,
5920 . skews%SKEW ,ixs ,iparg ,fcluster,mcluster,
5921 . h3d_data,geo )
5922 ENDIF
5923
5924
5925
5926
5927
5928 IF (nslipring + nretractor + n_anchor_remote > 0) THEN
5930 ENDIF
5931
5932
5933
5934
5935 IF(ninter /= 0.and.iale+ieuler /= 0.and.
5936 . int18kine == -1)THEN
5937
5938
5939
5940
5941
5942
5943 itsk = omp_get_thread_num()
5944
5945
5947
5948 CALL i18main_kine_1(ipari,interfaces%INTBUF_TAB,nodes%X ,nodes%V ,
5949 2 nodes%A ,nodes%ISKEW ,skews%SKEW ,nodes%ICODT ,wa ,
5950 3 nodes%MS ,nodes%ITAB
5951 4 mtf ,cand_sav ,int18add ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,
5952 5 tagpene ,h3d_data ,multi_fvm,ale_connectivity%NE_CONNECT,xcell,xcell_remote)
5953
5954 ENDIF
5955
5956
5957
5958
5959
5960
5961 IF(ninter/=0)THEN
5962 IF (imon>0) THEN
5964 CALL startime(timers,timer_contsort)
5965 ENDIF
5966 IF (imonm > 0)
CALL startime(timers,28)
5967
5968 DO k=0,nhin2
5970 1 ipari ,nodes%X ,nodes%V ,nodes%A ,
5971 2 nodes%VR ,nodes%AR ,wa ,nodes%MS ,nodes%IN ,nodes%WEIGHT ,
5972 3 nodes%STIFN ,nodes%STIFR ,k ,nodes%ITAB ,fr_i2m ,iad_i2m ,
5973 4 addcni2,procni2,iadi2 ,i2msch ,dmas ,anin(ndma+1),
5974 5 skews%SKEW ,i2size ,fr_nbcci2,anin(ndin+1) ,igeo,bufgeo ,
5975 6 fsav ,npc ,tf ,fani(1,nft2+1) ,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
5976 7
nativ_sms,dmint2,anin(ndama2+1),nb_fri2m ,fr_loci2m,
5977 8 dt2t ,neltst ,ityptst ,interfaces%INTBUF_TAB ,nodes%TEMP ,nodes%MCP ,
5978 9 fthe ,condn ,glob_therm,
5979 a h3d_data,t2fac_sms,fani(1,nfnca2+1),npcont2)
5980 ENDDO
5981 IF (imonm > 0)
CALL stoptime(timers,28)
5982 IF (imon>0) THEN
5983 CALL stoptime(timers,timer_contsort)
5985 ENDIF
5986
5987 IF((idtmins/=0.OR.idtmins_int/=0).AND.ncycle==0)ismsch=1
5988
5989 ENDIF
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999 IF (ns10e > 0) THEN
6000
6001
6002 itsk = omp_get_thread_num()
6003 nodftsk = 1+itsk*numnod/ nthread
6004 nodltsk = (itsk+1)*numnod/nthread
6005 greftsk = 1+itsk*ns10e/ nthread
6006 greltsk = (itsk+1)*ns10e/nthread
6009 2
itagnd ,nodftsk,nodltsk,greftsk,greltsk,
6010 3 itsk ,nodes%ITAB ,nodes%STIFN , stifnd)
6011
6012
6013
6014
6015
6016
6017 IF (ncycle==0.OR.mcheck/=0)
6019 END IF
6020
6021 IF(intplyxfem > 0) THEN
6023 1 ipari ,interfaces%INTBUF_TAB ,wagap,nodes%BOUNDARY_ADD,nodes%BOUNDARY)
6024 ENDIF
6025
6026
6027
6028
6029 IF (nrbe2>0.OR.r2size>0) THEN
6031 IF(itask==0)THEN
6032 IF (imon>0)
CALL startime(timers,timer_kin)
6033 CALL rbe2t1(irbe2 ,lrbe2 ,nodes%X ,nodes%A ,nodes%AR ,
6034 1 nodes%MS ,nodes%IN ,skews%SKEW ,nodes%WEIGHT ,iad_rbe2,
6035 2 fr_rbe2m,nmrbe2,nodes%STIFN ,nodes%STIFR ,r2size )
6036 IF (imon>0)
CALL stoptime(timers,timer_kin)
6037
6038 END IF
6039 ENDIF
6040
6041
6042
6043 IF (nrbe3>0) THEN
6044 IF (imon>0)
CALL startime(timers,timer_kin)
6045 IF (imonm > 0)
CALL startime(timers,45)
6046
6047 CALL rbe3t1(rbe3 ,nodes ,skews%SKEW,
6048 1 dmas ,anin(ndma+1) ,diner,
6049 2 anin(ndin+1) ,h3d_data , dt1,
6050 3 tt ,impl_s )
6051
6052 IF (imonm > 0)
CALL stoptime(timers,45)
6053 IF (imon>0)
CALL stoptime(timers,timer_kin)
6054 ENDIF
6055
6056
6057
6058
6059 IF(tt==zero.AND.iale+ieuler+glob_therm%ITHERM==0)THEN
6060
6061 negmas=0
6062
6063
6064
6065
6066
6067 itsk = omp_get_thread_num()
6068 nodftsk = 1+itsk*numnod/ nthread
6069 nodltsk = (itsk+1)*numnod/nthread
6070 CALL chkmsin(nodftsk,nodltsk,nodes%ITAB,nodes%MS,nodes%IN,negmas)
6071
6072
6073 IF(negmas/=0)
CALL arret(2)
6074 ENDIF
6075
6076
6077
6078
6079
6080
6081
6082 IF(nintstamp/=0)THEN
6084 . nodes%STIFN ,nodes%STIFR ,nodes%WEIGHT, output%TH%WFEXT)
6085 END IF
6086
6087
6088
6089
6090 IF(nrbykin>0)THEN
6091 IF (imon>0)
CALL startime(timers,timer_kin)
6092 IF (imonm > 0)
CALL startime(timers,40)
6093
6094
6095
6096
6097
6099 1 iparg,ipari ,nodes%MS ,nodes%IN ,
6100 2 ixs ,ixq ,element%SHELL%IXC ,ixt ,ixp ,
6101 3 ixr ,skews%SKEW ,nodes%ITAB ,nodes%ITABM1,iskwn,
6102 4 npby ,wa ,lpby ,element%PON%FSKY ,nsensor,
6103 5 rby ,nodes%X ,nodes%V ,nodes%VR ,ixtg ,
6104 6 igrv ,lgrav,sensors%SENSOR_TAB,nodes%A ,nodes%AR ,
6105 7 fsav ,nodes%STIFN ,nodes%STIFR,fani(1,1+nfoa),nodes%WEIGHT,
6106 8 dmas ,diner ,bufsf,fr_rby2,partsav ,
6107 9 ipart ,elbuf_tab,icfield,lcfield,nodes%TAG_S_RBY)
6108
6109
6110
6111
6112
6113
6115 1 rby ,nodes%A ,nodes%AR ,nodes%X ,nodes%VR ,
6116 2 fsav ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,fani(1,1+nfoa) ,
6117 3 lpby ,npby ,nodes%WEIGHT ,nodes%MS ,nodes%V ,
6118 4 igrsurf ,bufsf ,nodes%ICODR ,nodes%ISKEW ,skews%SKEW ,
6119 5 kindrby ,iad_rby ,fr_rby6,rby6 ,irbkin_l ,
6120 6 nrbykin_l ,
nativ_sms ,sensors%SFSAV ,sensors%FSAV ,sensors%STABSEN,
6121 7 sensors%TABSENSOR,
nodreac ,fthreac ,cptreac ,dampr,
6122 8 sdamp ,damp ,ndamp_vrel ,id_damp_vrel ,igrnod ,
6123 9 nodes%TAG_S_RBY ,iparit ,output%TH%WFEXT ,ndamp_vrel_rbyg ,size_rby6_c ,
6124 a rby6_c)
6125
6126
6127 IF (imon>0)
CALL stoptime(timers,timer_kin)
6128 IF (imonm > 0)
CALL stoptime(timers,40)
6129
6130 ENDIF
6131
6132
6133
6134
6135
6136
6137 IF (nfxbody>0) THEN
6138 CALL fxbyfor(fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm,
6139 . fxbcpm, fxbcps, fxblm , fxbfls, fxbdls,
6140 . fxbdep, fxbvit, fxbacc, nodes%A, nodes%AR,
6141 . nodes%X, fxbmvn, fxbmcd, fxbse, fxbsv,
6142 . fxbelm, fxbsig, elbuf, partsav, elbuf_tab,
6143 . fsav, fxbfp, fxbefw, fxbfc, nodes%D,
6144 . dt2t, ityptst, neltst, fxbgrvi, fxbgrvr,
6145 . igrv, npc, tf , fxbgrp, fxbgrw ,
6146 . iparg , nsensor,sensors%SENSOR_TAB,nodes%BOUNDARY_ADD, nodes%BOUNDARY,
6147 . agrv ,python)
6148 END IF
6149
6150
6151
6152
6153 IF(nadmesh/=0)THEN
6154 IF (imon>0)
CALL startime(timers,37)
6155 CALL admfor0(element%SHELL%IXC, ipart(k3), ixtg, ipart(k8), ipart,
6156 1 nodes%A , nodes%STIFN , nodes%AR, nodes%STIFR ,nodes%X ,
6157 2 sh4tree,sh3tree,stcnd, fthe,condn,
6158 . glob_therm%NODADT_THERM,glob_therm%ITHERM_FE)
6159 IF (imon>0)
CALL stoptime(timers,37)
6160 END IF
6161
6162
6163
6164 IF (irigid_mat > 0) THEN
6165
6166
6167
6168
6169
6170
6172 1 nodes%A ,nodes%AR ,nodes%X ,nodes%VR ,nodes%IN ,
6173 2 nodes%STIFN ,nodes%STIFR ,irbym ,lnrbym ,rbym ,
6174 3 icodrbym ,nodes%WEIGHT ,nodes%MS ,nodes%V ,fr_rbym ,
6175 4 iad_rbym ,arbym ,vrbym ,arrbym ,vrrbym ,
6176 5 kindrbym ,rbym6 )
6177
6178
6179
6180 ENDIF
6181
6182
6183
6184
6185 IF(nrwall>0)
CALL rgwalf(nodes%A ,rwbuf ,nprw ,nodes%MS )
6186
6187
6188
6189
6190 IF( idtmins == 1 .AND.
6191 . (ismsch/=0.OR.ncycle==0.OR.ismsnok/=0.OR.iadmesh/=0))THEN
6192
6193
6194 ELSEIF(idtmins == 2.OR.idtmins_int/=0)THEN
6195
6196 nsgdone=1
6197 nrbdone=1
6198
6199 IF (imon>0)
CALL startime(timers,39)
6200 IF (imon>0)
CALL startime(timers,75)
6201
6202
6203
6204
6205 l1 = 1+nixs*numels + nsvois*nixs
6206
6207
6209
6210 IF(nspmd > 1)THEN
6212 END IF
6213 IF (ALLOCATED(mskyi_fi_sms)) DEALLOCATE(mskyi_fi_sms)
6214 IF (ALLOCATED(list_sms)) DEALLOCATE(list_sms)
6215 IF (ALLOCATED(list_rms)) DEALLOCATE(list_rms)
6216 IF (ALLOCATED(list_rms)) DEALLOCATE(list_rms)
6217 IF (ALLOCATED(sms_vfi)) DEALLOCATE(sms_vfi)
6218 CALL my_alloc(mskyi_fi_sms,fr_rms(nspmd+1))
6219 CALL my_alloc(list_sms,fr_sms(nspmd+1))
6220 CALL my_alloc(list_rms,fr_rms(nspmd+1))
6221 CALL my_alloc( sms_vfi,3,fr_rms(nspmd+1)+fr_sms(nspmd+1) )
6222
6223 IF (ALLOCATED(mw6)) DEALLOCATE(mw6)
6224 if (iparit /=0) then
6225 sz_mw6 = 3*numnod
6226 CALL my_alloc(mw6,6,sz_mw6)
6227 else
6228 sz_mw6 = 1
6229 CALL my_alloc(mw6,6,1)
6230 endif
6231
6232 itsk = omp_get_thread_num()
6233 nodftsk = 1+itsk*numnod/ nthread
6234 nodltsk = (itsk+1)*numnod/nthread
6235
6237 1 itsk ,nodftsk ,nodltsk ,
6238 2 element%SHELL%IXC ,iparg ,ixs ,ixt ,ixp ,
6239 3 ixr ,ixtg ,
tagnod_sms,nodes%MS ,nodes%MS0 ,
6244 7 ipart(i15a),ipart(i15b),ipart(i15c),ipart(i15d),ipart(i15e),
6245 8 ipart(i15f),ipart(i15g),ipart(i15h),ipart(i15i),nodes%BOUNDARY_ADD ,
6247 a
jsm_sms ,dmeltg ,dmelc ,mskyi_sms,
6249 c dmels ,dmeltr ,dmelp ,dmelrt ,igeo ,
6250 d fr_sms ,fr_rms ,elbuf ,ipari ,interfaces%INTBUF_TAB,
6255 i nprw ,lprw ,fr_wall ,
nrwl_sms ,rby ,
6256 j nodes%X ,nodes%A ,nodes%AR ,nodes%IN ,nodes%V ,
6257 k nodes%VR ,irbe2 ,lrbe2 ,rbe3%IRBE3 ,rbe3%LRBE3 ,
6258 l rbe3%mpi%IAD_RBE3 ,rbe3%mpi%FR_RBE3 ,
nativ_sms,t2main_sms,t2fac_sms,
6259 m mskyi_fi_sms, list_sms,list_rms,sz_mw6,mw6)
6260
6261
6262
6264
6265 ismsch=0
6266 IF (imon>0)
CALL stoptime(timers,39)
6267 IF (imon>0)
CALL stoptime(timers,75)
6268
6269 ENDIF
6270
6271
6272
6273
6274
6275
6276 IF (irad2r /= 0) THEN
6277 IF (nspmd>1) CALL spmd_barrier()
6279 1 iexlnk ,igrnod ,nodes%D ,nodes%V ,nodes%VR ,
6280 2 nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,
6281 3 r2r_on ,dd_r2r ,nodes%WEIGHT ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,rby ,
6282 4 nodes%XDP ,nodes%X ,dd_r2r_elem, sdd_r2r_elem,off_sph_r2r,
6283 5 numsph_glo_r2r,nloc_dmg)
6284
6285 IF (flg_sphinout_r2r/=0) THEN
6286 DO i=1,numnod
6287 IF (off_sph_r2r(i)==2) THEN
6288 off_sph_r2r(i) = 1
6289 ELSE
6290 off_sph_r2r(i) = 0
6291 ENDIF
6292 END DO
6293 ENDIF
6294
6295 ENDIF
6296
6297
6298
6299
6300
6301
6302 23 CONTINUE
6303
6304
6305
6306
6307 IF(nintstamp/=0)THEN
6309 . ptr_sms ,diag_sms,nodes%MS ,nodes%V ,nodes%STIFN,
6310 . nodes%STIFR )
6311 END IF
6312
6313 imsch=0
6314
6315 IF (flg_damp_funct==1) THEN
6316 CALL damping_funct_ini(dampr, nrdamp, ndamp, tt,iroddl)
6317 ENDIF
6318 IF (flg_dtnodamp==1) THEN
6319
6320 IF (idamp_rdof==ndamp)
6321 +
CALL dtnodamp(nodes%ITAB ,nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2t ,
6322 1 nodes%WEIGHT ,igrnod ,dampr ,istop ,
6323 2 idamp_rdof_tab,icontact,element%SHELL%IXC,nodes%X)
6324 IF (ndamp>0 .OR. istat==3)
6325 +
CALL dtnodarayl(nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2t ,
6326 1 igrnod ,dampr )
6327 ENDIF
6328
6329
6330 IF (i_exch_flg_raz==0) THEN
6331
6332 flg_kj2_raz = flg_kj2
6334 i_exch_flg_raz = 1
6335 ENDIF
6336
6337 IF (flg_kj2==1) THEN
6338
6339 IF (ncycle==0) THEN
6340 ALLOCATE(stk_sn(numnod),stk_sr(numnod))
6341 stk_sn(1:numnod)=nodes%STIFN(1:numnod)
6342 stk_sr(1:numnod)=nodes%STIFR(1:numnod)
6343 ENDIF
6344
6346 1 ipart(k6),igeo,geo,npby,iparg,elbuf_tab,
6347 2 dt2t,neltst,ityptst,nrbody,nodes%ITAB)
6348 ENDIF
6349
6350
6351
6352
6353 IF ((ncycle==0).AND.(idt_percent_addmass > 0).AND.(idtmin(11)==3.OR.idtmin(11)==8)) THEN
6355 . percent_addmass,percent_addmass_old,mass0_start,nodes%WEIGHT_MD,igrnod,
6357 dtmin1(11) =
max(dtmin1(11),target_dt)
6358 ELSEIF ((idt_percent_addmass == 2).AND.(idtmin(11) == 8)) THEN
6359
6360 IF (idt_percent_addmass == 2) THEN
6361 idtmin(11) = 1
6362 dtmin1(11) = dt_stop_percent_addmass
6363 ENDIF
6364 ENDIF
6365
6366
6367
6368
6369 IF(nspmd > 1 .AND. nvolu > 0 .AND. nfvbag0 > 0) THEN
6370
6371
6372
6373
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384 dtmin1_save = dtmin1(11)
6385 IF(min_tab(2) == 52) dtmin1(11) =
min(dtmin1_save,dt2r,1.1*dt2old)
6386
6387 ELSE
6388
6389 dtmin1_save = dtmin1(11)
6390 IF(itypts == 52) dtmin1(11) =
min(dtmin1_save,dt2,1.1*dt2old)
6391
6392 ENDIF
6393
6394
6395
6396
6397
6398
6399 IF (glob_therm%IDT_THERM == 1)THEN
6400 dt2 = glob_therm%DT_THERM
6401 dt2t = dt2
6402 ENDIF
6403
6404
6405 IF((anim_n(18) /= 0 .OR. h3d_data%N_SCAL_STIFR /= 0) .AND. iroddl /= 0)
6406 . stifr_tmp(1:numnod)=nodes%STIFR(1:numnod)
6407 IF(anim_n(19) /= 0 .OR. h3d_data%N_SCAL_STIFN /= 0)
6408 . stifn_tmp(1:numnod)=nodes%STIFN(1:numnod)
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418 dt2tt = dt2t
6419 neltstt = neltst
6420 ityptstt= ityptst
6421 dmast = zero
6422 dinert = zero
6423 itsk = omp_get_thread_num()
6424 nodftsk = 1+itsk*numnod/ nthread
6425 nodltsk = (itsk+1)*numnod/nthread
6426
6427
6428
6429
6430 IF(istatcnd/=0)THEN
6431
6432 stcnd(nodftsk:nodltsk)=nodes%STIFN(nodftsk:nodltsk)
6433 strcnd(nodftsk:nodltsk)=nodes%STIFR(nodftsk:nodltsk)
6434 ENDIF
6435
6436 IF(idtmins==0)THEN
6437
6439 1 nodftsk,nodltsk ,neltstt,ityptstt ,nodes%ITAB ,
6440 2 nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2tt ,
6441 3 dmast,dinert,anin,anin(ndma+1),imsch ,
6442 4 nodes%WEIGHT,nodes%A ,nodes%AR ,igrnod ,glob_therm%nodadt_therm,
6443 5 anin(ndin+1),rbym ,arbym ,arrbym,nodes%WEIGHT_MD,
6444 6 nodes%MCP ,mcp_off,condn ,ale_connectivity%NALE ,h3d_data )
6445 ELSEIF(idtmins/=0)THEN
6447 1 nodftsk,nodltsk ,neltstt,ityptstt ,nodes%ITAB ,
6448 2 nodes%MS ,nodes%IN ,nodes%STIFN ,nodes%STIFR ,dt2tt ,
6449 3 dmast,dinert,anin,anin(ndma+1),imsch ,
6450 4 nodes%WEIGHT,nodes%A ,nodes%AR ,igrnod ,
6451 5 anin(ndin+1),rbym ,arbym ,arrbym ,ismsch ,
6453 7 h3d_data )
6454 END IF
6455
6456#include "lockon.inc"
6457 dmas = dmas + dmast
6458 diner = diner + dinert
6459 IF (glob_therm%IDT_THERM == 1)THEN
6460 IF(dt2tt<=dt2t)THEN
6461
6462
6463
6464 trest=
max(tstop-tt,zero)
6465
6466 dtrest = trest*(one+em10)
6467
6468 dt2t =
min(dt2tt,dtrest)
6469 neltst = neltstt
6470 ityptst= ityptstt
6471 ENDIF
6472 ELSE
6473 IF(dt2tt<dt2t)THEN
6474 dt2t = dt2tt
6475 neltst = neltstt
6476 ityptst= ityptstt
6477 END IF
6478 ENDIF
6479#include "lockoff.inc"
6480
6481
6482
6483
6484 IF ((flg_kj2_raz==1).AND.(i7kglo==0).AND.(idtmins==0).AND.(nodadt==0)) THEN
6485 nodes%STIFN(1:numnod) = em20
6486 IF (iroddl > 0) nodes%STIFR(1:numnod) = em20
6487 ENDIF
6488
6489 dtmin1(11) = dtmin1_save
6490
6491
6492
6493
6494
6495 IF (glob_therm%IDT_THERM == 1)THEN
6496 IF(dt2t<dt2)THEN
6497 nelts = neltst
6498 itypts = ityptst
6499 dt2 = dt2t
6500 ENDIF
6501 ELSE
6502 IF(dt2t<dt2)THEN
6503 nelts = neltst
6504 itypts = ityptst
6505 dt2 = dt2t
6506 ENDIF
6507 ENDIF
6508
6509
6510
6511
6512
6513
6514
6515 IF(
ale%SUB%IALESUB==2 .AND.
ale%SUB%IFSUB==2)
THEN
6516 IF(nspmd>1) THEN
6517 iwiout = 0
6518 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6520 . tstop,iwiout,mstop, ismsch,
6521 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6522 IF(iexicodt>0) THEN
6523 length = 1
6524 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1
6525 CALL spmd_exch_icodt(nodes%ICODT,nodes%BOUNDARY_ADD,nodes%BOUNDARY,length,lenr)
6526 iexicodt = 0
6527 ENDIF
6528 ENDIF
6529
6530
6531
6532
6533
6534
6535!$omp+ private(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,igmtsk)
6536!$omp+ private(partftsk,partltsk,nwaftsk,dt2tt,neltstt,ityptstt)
6537
6538
6539 CALL smp_init(itsk,nodftsk,nodltsk,numntsk,ndtsk,ipmtsk,partftsk,partltsk,nwaftsk,igmtsk,greftsk,greltsk)
6540 dt2tt = dt2t
6541 neltstt = neltst
6542 ityptstt= ityptst
6544 1 ale_connectivity%NALE,nodes%V ,dsave ,nodes%ICODT ,nodes%ISKEW,
6545 2 skews%SKEW ,asave ,nodes%A ,nodes%D ,neltstt,
6546 3 ityptstt ,itsk ,nodftsk ,nodltsk ,dt2save,
6547 4 dt2tt ,neltsa ,ityptsa ,nelts ,
6548 5 nodes%WEIGHT ,element%PON%FSKY ,element%PON%FSKY )
6549#include "lockon.inc"
6550 IF(dt2tt<dt2t)THEN
6551 dt2t = dt2tt
6552 neltst = neltstt
6553 ityptst= ityptstt
6554 END IF
6555#include "lockoff.inc"
6556
6557
6558
6559
6562
6563
6564
6565 IF(nspmd>1.AND.iwiout>0) THEN
6567 iwiout = 0
6568 ENDIF
6569 GOTO 21
6570 ENDIF
6571 IF (imon>0)
CALL startime(timers,6)
6572
6573
6574
6575 IF(nrbag > 0)THEN
6576 IF (imonm > 0)
CALL startime(timers,50)
6578 IF (imonm > 0)
CALL stoptime(timers,50)
6579 ENDIF
6580
6581
6582
6583
6584
6585 IF(nvolu > 0)THEN
6586 IF (imonm > 0)
CALL startime(timers,50)
6587 IF(nspmd>1)
CALL spmd_glob_minv(t_monvol,dt2,itypts,nelts,volmon, fr_mv)
6588 IF(python%NB_FUNCTS > 0) CALL python_monvol(t_monvol)
6589
6590
6591
6592 IF(ispmd == 0)
CALL mvoludt(monvol,volmon)
6593 IF (imonm > 0)
CALL stoptime(timers,50)
6594 ENDIF
6595
6596 IF (imonm > 0)
CALL startime(timers,52)
6597 IF (nodadt==0) THEN
6598 IF (istat==3) THEN
6599 dampa3 = two*betate/(one + betate * dt12)
6600 IF (dt2>=ep06) dampa3=zero
6601 ELSE
6602 dampa3 = zero
6603 END IF
6604
6605 IF(idamp>0)THEN
6606 IF(dampb>=zero)THEN
6607 bb = (
min(dampb,dt1,dt2) + half*(dampa+dampa3)*dt2*dt2)
6608
6609 IF (dt2>=ep06) bb = zero
6610 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6611 ELSE
6612 bb = one - dampb - dampb
6613 dt2 = dt2/sqrt(bb)
6614 ENDIF
6615 ELSEIF(ndamp>0) THEN
6616 IF(nrdamp==4)THEN
6617 bb = zero
6618 DO i=1,ndamp
6619 dampa = dampr(3,i)
6620 dampb = dampr(4,i)
6621 d_tstart = dampr(17,i)
6622 d_tstop = dampr(18,i)
6623
6624 IF ((tt>=d_tstart).AND.(tt<=d_tstop).AND.(dt2 < ep06))
6625 . bb=
max(bb,(
min(dampb,dt1,dt2)+half*(dampa+dampa3)*dt2*dt2))
6626 ENDDO
6627 ELSE
6628 bb = zero
6629 IF (flg_dtnodamp==1) GOTO 600
6630 DO i=1,ndamp
6631 dampa =
max(dampr(3,i),dampr(5,i),dampr(7,i))
6632 dampa =
max(dampa,dampr(9,i),dampr(11,i),dampr(13,i))
6633 dampb =
max(dampr(4,i),dampr(6,i),dampr(8,i))
6634 dampb =
max(dampb,dampr(10,i),dampr(12,i),dampr(14,i))
6635
6636 fl_vrel = nint(dampr(21,i))
6637 IF (fl_vrel==2) THEN
6638 call damping_vref_compute_dampa(i,ndamp,nrdamp,dampr,dt1,tt,damp_a)
6639 dampa =
max(damp_a(1),damp_a(2),damp_a(3))
6640 dampb = zero
6641 ENDIF
6642 factb = dampr(16,i)
6643 d_tstart = dampr(17,i)
6644 d_tstop = dampr(18,i)
6645
6646 IF ((tt>=d_tstart).AND.(tt<=d_tstop).AND.(dt2 < ep06)) THEN
6647 dampt =
min(dt1,dt2)*factb
6648 bb=
max(bb,(
min(dampb,dampt)+half*(dampa+dampa3)*dt2*dt2))
6649 ENDIF
6650 ENDDO
6651600 CONTINUE
6652 END IF
6653 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6654 ELSEIF(istat==3) THEN
6655 bb = half*dampa3*dt2*dt2
6656 dt2 = sqrt(bb*bb + dt2*dt2) - bb
6657 ENDIF
6658 END IF
6659
6660 IF (imonm > 0)
CALL stoptime(timers,52)
6661
6662
6663
6664
6665
6666 IF (imonm > 0)
CALL startime(timers,53)
6667 IF(nspmd>1) THEN
6668 iwiout = 0
6669 IF (ispmd/=0)
CALL spmd_chkw(iwiout,iout)
6670 ENDIF
6671
6672
6673
6681 mstop=1
6682 mrest=1
6683 ENDIF
6684 ENDIF
6685
6686#ifdef DNC
6687 IF(mds_avail==1) THEN
6694 mstop=1
6695 mrest=1
6696 ENDIF
6697 ENDIF
6698#endif
6699
6700
6701
6702 IF(nspmd>1)THEN
6704 . tstop,iwiout,mstop ,ismsch,
6705 . int24use,nbintc,intlist,ipari,interfaces%INTBUF_TAB)
6706
6707
6708
6709
6711
6712 IF(iexicodt>0) THEN
6713 length = 1
6714 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
6715 CALL spmd_exch_icodt(nodes%ICODT,nodes%BOUNDARY_ADD,nodes%BOUNDARY,length,lenr)
6716 iexicodt = 0
6717 ENDIF
6718 ENDIF
6719
6720 IF (glob_therm%IDT_THERM == 0) dt2=
min(dt2,1.1*dt2old,dtmx)
6721 IF (impl_s==1)
CALL imp_dt2(dt2)
6722
6723 IF (imonm > 0)
CALL stoptime(timers,53)
6724
6725
6726
6727 IF ((ncycle==0).AND.(flg_kj2==1)) THEN
6729 1 nodes%WEIGHT,ixr,ipart,nodes%X,ipart(k6),
6730 2 igeo,geo,npby,iparg,elbuf_tab,dmast,dinert)
6731 DEALLOCATE(stk_sn
6732 ENDIF
6733
6734
6735
6736
6737 IF (irad2r /= 0 .AND. r2r_activ == 1) THEN
6739 IF (nspmd>1) CALL spmd_barrier()
6740
6741
6742
6743
6744
6745 IF (imonm > 0)
CALL startime(timers,54)
6746 IF (ncycle == zero) tt_dp = tt
6747
6748 IF(ispmd==0)THEN
6752 IF ((r2r_siu==1).AND.(iddom/=0)) THEN
6754 ENDIF
6758 IF (r2r_mfilr==1) THEN
6761 ENDIF
6767 IF (r2r_mfilr==2) THEN
6770 ENDIF
6772 END IF
6773
6774 IF(nspmd>1)THEN
6775 IF(ispmd==0) THEN
6776 rbuf(1) = tt
6777 rbuf(2) = dt2
6778 END IF
6781 CALL spmd_ibcast(r2r_th_main,r2r_th_main,10,1,0,2)
6782 IF(ispmd/=0) THEN
6783 tt = rbuf(1)
6784 dt2 = rbuf(2)
6785 END IF
6786 END IF
6787
6788 IF ((r2r_siu==1).OR.(nspmd==1)) THEN
6792 ELSEIF (ispmd==0) THEN
6796 ENDIF
6797!$omp END master
6799
6800
6801
6802
6803
6804 CALL r2r_getdata(iexlnk ,igrnod ,nodes%X ,nodes%V ,
6805 . nodes%VR ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
6806 . nodes%XDP ,nodes%D ,r2r_on ,dd_r2r ,nodes%WEIGHT ,
6807 . nodes%BOUNDARY_ADD,nodes%BOUNDARY ,nodes%STIFN ,nodes%STIFR ,dd_r2r_elem ,
6808 . sdd_r2r_elem,nloc_dmg, output%TH%WFEXT, output%TH%WFEXT_MD)
6809
6810 IF (imonm > 0)
CALL stoptime(timers,54)
6811
6812 ENDIF
6813
6814#ifdef DNC
6815
6816
6817
6818 IF(imadcpl==1)THEN
6819 madendrequest = 0
6820 IF (imonm > 0)
CALL startime(timers,55)
6821
6822 CALL tstp_exch_madcpl(madendrequest,madclnod,madclfrecv,nodes%V,nodes%A,nodes%MS ,madymo_del_global )
6823 IF (madendrequest == -1)THEN
6824 mstop = 2
6826 RETURN
6827 ENDIF
6828 IF (imonm > 0)
CALL stoptime(timers,55)
6829 ENDIF
6830#endif
6831
6832 IF (vipercoupling) THEN
6833
6834 CALL radiossviper_receivesenddt(viper%id,tt,dt2)
6835 ENDIF
6836
6837
6838 IF(loads%NINIVELT_G>0) CALL inivel_dt2(loads%NINIVELT,loads%INIVELT,sensors,tt , dt2 ,nspmd)
6839
6840 IF (imonm > 0)
CALL startime(timers,53)
6841 dt2old=dt2
6842 IF (inconv==1) THEN
6843 dt12=half*(dt1+dt2)
6844 dt3=dt1
6845 ENDIF
6846 IF(
ale%SUB%IALESUB==0)dt2s=dt2
6847
6848
6849
6850 IF(nspmd>1.AND.iwiout>0) THEN
6852 iwiout = 0
6853 ENDIF
6854
6855 IF (irad2r /= 0) THEN
6856 IF(ispmd==0)THEN
6857 r2rfx1 = r2rfx1*dt2 + r2rfx2*dt12*dt2
6858 ENDIF
6859 ENDIF
6860
6861 IF (nconld/=0.AND.impl_s/=1) THEN
6862 output%TH%WFEXT = output%TH%WFEXT + wfexc*dt2
6863 ENDIF
6864
6865 IF (imonm > 0)
CALL stoptime(timers,53)
6866 IF (imon>0)
CALL stoptime(timers,6)
6867
6868
6869
6870
6871 IF (imon>0)
CALL startime(timers,timer_io)
6872
6873!$omp parallel private(itsk,nodftsk,nodltsk)
6874
6875 itsk = omp_get_thread_num()
6876 nodftsk = 1+itsk*numnod/ nthread
6877 nodltsk = (itsk+1)*numnod/nthread
6878
6879
6880
6881
6882
6883 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
6885 END IF
6886
6887
6888
6889
6890 CALL forani2(fani,nodes%A,nfia,nfea,nodftsk,nodltsk,h3d_data)
6891
6892
6893
6894 IF (imon>0)
CALL stoptime(timers,timer_io)
6895
6896
6897
6898 IF(idtmins == 1)THEN
6899
6900
6901 ELSEIF(idtmins == 2.OR.idtmins_int /= 0)THEN
6902
6903 IF (imon>0)
CALL startime(timers,39)
6904
6905
6906
6907
6908
6909 CALL my_alloc(cjwork,18,njoint)
6910 CALL my_alloc(frea,3,numnod)
6911 CALL my_alloc(irwl_work,slprw)
6912
6913
6914 itsk = omp_get_thread_num()
6915 nodftsk = 1+itsk*numnod/ nthread
6916 nodltsk = (itsk+1)*numnod/nthread
6919 2
nodxi_sms,nodes%MS ,nodes%MS0 ,nodes%A ,nodes%ICODT ,
6921 4 lt_sms ,x_sms ,p_sms ,z_sms ,y_sms ,
6922 5 prec_sms ,
indx1_sms ,diag_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,
6923 6 nodes%WEIGHT ,npby ,lpby ,
6925 8 vel ,npc ,tf ,nodes%V ,nodes%X ,
6926 9 nodes%D ,sensors%SENSOR_TAB,nsensor,iframe,xframe,
6928 b
iskyi_sms,mskyi_sms,res_sms ,igrv ,agrv ,
6929 c lgrav ,ilink ,llink ,fr_rl ,frl6 ,
6931 e nodes%ITAB ,fsav ,ljoint ,iadcj ,fr_cj ,
6932 f nodes%AR ,nodes%VR ,nodes%IN ,frl ,fnl ,
6933 g nprw ,lprw ,rwbuf ,rwsav ,
6934 h fani(1,1+nfoa+2*(nsect+nrbody)),fr_wall ,
nrwl_sms ,
6935 i
intstamp ,kinet ,element%SHELL%IXC ,ixtg ,sh4tree ,
6936 j sh3tree ,cptreac ,
nodreac ,fthreac ,
6937 k frwl6 ,3+iroddl*3,nodes%TAG_S_RBY,dampr , damp ,
6939 m
jsm_sms ,irbe2 ,lrbe2 ,iad_rbe2 ,fr_rbe2m ,
6940 n nmrbe2 ,r2size ,rbe3%IRBE3 ,rbe3%LRBE3 ,rbe3%FRBE3 ,
6941 o rbe3%mpi%IAD_RBE3 ,rbe3%mpi%FR_RBE3,rbe3%mpi%FR_RBE3MP ,rbe3%RRBE3 ,rbe3%RRBE3_PON,
6942 p prec_sms3 ,diag_sms3,iad_rby ,fr_rby6 ,rby6 ,
6943 q rbe3%irotg_sz ,betate ,ibcscyc ,lbcscyc,
6944 r mskyi_fi_sms, list_sms,list_rms,cjwork,frea,
6945 s irwl_work,sms_vfi,sz_mw6,mw6,output%TH%WFEXT,ams_work)
6946
6947
6948
6949 IF (ALLOCATED(cjwork)) DEALLOCATE(cjwork)
6950 IF (ALLOCATED(frea)) DEALLOCATE(frea)
6951 IF (ALLOCATED(irwl_work)) DEALLOCATE(irwl_work)
6952
6953 IF (imon>0)
CALL stoptime(timers,39)
6954
6955 ENDIF
6956
6957 idum1=0
6958 rdum1=zero
6959
6960 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
6961 k2=k1+numels
6962 k3=k2+numelq
6963 k4=k3+numelc
6964 k5=k4+numelt
6965 k6=k5+numelp
6966 k7=k6+numelr
6967 k8=k7
6968 k9=k8+numeltg
6969 k10=k9+numelx
6970 k11=k10+numsph
6971
6972
6973
6974
6975
6976 IF (impl_s == 1) THEN
6977 encin = zero
6978 enrot = zero
6979 encin2 = zero
6980 enrot2 = zero
6981 IF (imon>0)
CALL startime(timers,timer_integ)
6982
6983 IF (impl_s==1 .AND. inconv==1) THEN
6984 CALL thbcs_imp(nodft,nodlt ,nodes%A,nodes%AR,
6985 & fthreac,
nodreac,cptreac,fthdtm,dt3)
6986 ENDIF
6987
6988
6989
6990
6991
6992 itsk = omp_get_thread_num()
6993 nodftsk = 1+itsk*numnod/ nthread
6994 nodltsk = (itsk+1)*numnod/nthread
6995
6996 IF (ilag+iale+ieuler/=0) THEN
6997
6998
6999
7000 IF (nmult>0) THEN
7001 CALL bmultn(fill,dfill,ims,nodftsk,nodltsk)
7002 ENDIF
7003 CALL imp_fanii(fani ,nodes%A ,nfia ,nodft ,nodlt ,
7004 . h3d_data )
7005 IF (impdeb==1.AND.imconv==0) THEN
7006 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
7008 1 fani ,nodes%A ,nodes%AR ,nfia ,nfea ,
7009 2 nodftsk ,nodltsk ,h3d_data ,impbuf_tab)
7010 ENDIF
7011 ENDIF
7012
7013
7014
7015 IF (isecut/=0) THEN
7016 IF (imon>0)
CALL startime(timers,timer_io)
7018 1 nstrf,nodes%D,nodes%DR,nodes%V,nodes%VR,fsav(1,1+ninter+nrwall+nrbody),
7019 2 secfcum,nodes%A ,nodes%AR ,secbuf,nodes%MS ,nodes%IN ,
7020 3 nodes%X ,fani(1,nfoa+1),nodes%WEIGHT,xsec ,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
7021 4 rg_cut ,iad_cut ,fr_cut,nodes%WEIGHT_MD,ioldsect,
7022 5 sensors%STABSEN,sensors%SFSAV,sensors%TABSENSOR,sensors%FSAV, output%TH%WFEXT)
7023 IF(imon>0)
CALL stoptime(timers,timer_io)
7024 ENDIF
7025 ENDIF
7026
7027
7028
7029 IF (imon>0)
CALL stoptime(timers,timer_integ)
7030
7031 IF (ilag+iale+ieuler/=0)THEN
7032 IF(imon>0)
CALL startime(timers,timer_kin)
7033 IF(imonm > 0)
CALL startime(timers,40)
7034
7035
7036
7037
7038
7039
7040
7042 1 rby ,nodes%X ,nodes%V ,nodes%VR ,skews%SKEW ,fsav ,
7043 2 lpby,npby,nodes%ISKEW,nodes%ITAB ,nodes%WEIGHT ,nodes%A ,
7044 3 nodes%AR ,nodes%MS ,nodes%IN ,kindrby,irbkin_l,nrbykin_l ,
7045 4 nodes%WEIGHT_MD,ms_2d)
7046
7047
7048 IF(imon>0)
CALL stoptime(timers,timer_kin)
7049 IF(imonm > 0)
CALL stoptime(timers,40)
7050 ENDIF
7051
7052
7053
7054 IF (nrbe2>0)THEN
7055 IF(imon>0)
CALL startime(timers,timer_kin)
7056 IF(imonm > 0)
CALL startime(timers,40)
7057
7058
7059
7060 CALL rbe2cor(irbe2 ,lrbe2 ,nodes%X ,nodes%V ,nodes%VR ,
7061 2 skews%SKEW ,nodes%ISKEW ,nodes%ITAB ,nodes%WEIGHT,nodes%A ,
7062 3 nodes%AR ,nodes%MS0 ,nodes%IN ,nodes%WEIGHT_MD)
7063
7064
7065 IF(imon>0)
CALL stoptime(timers,timer_kin)
7066 IF(imonm > 0)
CALL stoptime(timers,40)
7067 ENDIF
7068
7069
7070
7071
7072
7073 IF (nsensor > 0) THEN
7074 IF (nspmd > 1 .AND. sensors%STABSEN > 0) THEN
7075 dim6=12
7076 dim_exch = sensors%SFSAV
7078 ENDIF
7079 ENDIF
7080
7081 IF (nsensor > 0 .AND. inconv == 1) THEN
7083
7084
7085 IF (sensors%COMM_SENS16%BOOL) THEN
7087 * igrsurf,sensors%COMM_SENS16)
7088 ENDIF
7089
7090
7091 IF(sensors%COMM_SENS17%BOOL) THEN
7092 CALL sensor_temp0(nsensor,sensors%SENSOR_TAB,igrnod,nodes%TEMP,nodes%WEIGHT,sensors%COMM_SENS17,
7093 * sensors%SENSOR_STRUCT)
7094 ENDIF
7095
7096 IF (nspmd > 1) THEN
7097 CALL sensor_spmd(sensors%SENSOR_TAB,ipari ,nprw ,isensp ,nsensp ,
7098 . xsens ,nodes%X ,accelm ,iaccp ,naccp ,
7099 . gauge ,igaup ,ngaup ,partsav2,nsensor,
7100 . sensors%COMM_SENS14,sensors%SENSOR_STRUCT)
7101 ENDIF
7102
7103
7105 . xsens ,ipari ,partsav2 ,gauge ,fsav ,
7106 . nodes%X ,nodes%V ,nodes%A ,accelm ,nprw ,
7107 . subsets ,igrsurf ,igrnod , python)
7108
7109
7111
7112 ENDIF
7113
7114 GOTO 111
7115
7116 ENDIF
7117
7118
7119
7120 IF (ilag + iale + ieuler /= 0) THEN
7121
7122 IF (imon>0)
CALL startime(timers,timer_integ)
7123
7124
7125
7126
7127
7128
7129 itsk = omp_get_thread_num()
7130 nodftsk = 1+itsk*numnod/ nthread
7131 nodltsk = (itsk+1)*numnod/nthread
7132
7133
7134
7135
7136 IF(nmult>0) THEN
7137 CALL bmultn(fill,dfill,ims,nodftsk,nodltsk)
7138 ENDIF
7139
7140
7141
7142
7143
7144
7145
7146
7147 IF ((numsph/=0).OR.(sol2sph_flag==1)) THEN
7148
7149
7150
7151 IF (imonm > 0)
CALL startime(timers,48)
7152 IF (imonm > 0)
CALL startime(timers,89)
7153
7154 ALLOCATE(waspsym(3*nsphsym+1),stat=ierror)
7155 IF(ierror/=0)THEN
7156 CALL ancmsg(msgid=19,anmode=aninfo,c1=
"WASPSYM")
7158 ENDIF
7159
7160
7161
7162
7163
7164 itsk = omp_get_thread_num()
7165 ipmtsk = 1 + itsk*npsav*npart
7166
7168 1 nodes%X ,nodes%V ,nodes%MS ,nodes%A ,spbuf ,
7169 2 wa ,nodes%ITAB ,kxsp ,ixsp ,nod2sp ,
7170 3 nodes%D ,ispsym ,xspsym%BUF ,vspsym%BUF ,bufmat ,
7171 4 bufgeo ,npc ,tf ,pm ,geo ,
7172 5 ispcond ,xframe ,waspsym,ipart(k10),partsav(ipmtsk),
7173 6 wasph(ksph21) ,wsmcomp%BUF ,wasph(kspactiv) ,ipart,itsk,
7174 7 sph2sol ,sol2sph ,irst ,ixs ,iparg ,
7175 8 ngrounc ,igrounc ,elbuf_tab,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,
7176 9 igeo ,sol2sph_typ,sph_work)
7177
7178
7179 DEALLOCATE(waspsym)
7180
7181
7182
7183
7184
7185 IF (imonm > 0)
CALL stoptime(timers,48)
7186 IF (imonm > 0)
CALL stoptime(timers,89)
7187
7188
7189
7190
7191 IF (imon>0)
CALL startime(timers,6)
7192 IF (imonm > 0)
CALL startime(timers,48)
7193 CALL spwfvis(spbuf,ipart(k10),partsav,iparg,elbuf_tab,
7194 . kxsp ,wasph(kspactiv))
7195 IF (imonm > 0)
CALL stoptime(timers,48)
7196 IF (imon>0)
CALL stoptime(timers,6)
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7208 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
7209 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
7210 3 greftsk,greltsk)
7211
7213 2 partftsk,partltsk,partsav,greftsk,greltsk,gresav)
7214
7215
7216
7217 ENDIF
7218
7219
7220
7221
7222
7223 IF (tt==zero.AND.iabs(isigi)==5) THEN
7224
7225 IF (imon>0)
CALL startime(timers,6)
7226 IF (imonm > 0)
CALL startime(timers,49)
7227 CALL fequilibre(nodes%A,fzero,element%SHELL%IXC,ixtg)
7228 IF (imonm > 0)
CALL stoptime(timers,49)
7229 IF (imon>0)
CALL stoptime(timers,6)
7230 ENDIF
7231
7232
7233
7234 IF(iparit == 0.AND.nspmd > 1.AND. nloc_dmg%IMOD > 0)THEN
7236 ENDIF
7237
7238 IF(coupling%active) THEN
7239
7240
7241
7242
7243 CALL coupling_sync(coupling,dt2,nodes,coupling_forces)
7244 ENDIF
7245
7246
7247
7248
7249
7250 itsk = omp_get_thread_num()
7251 nodftsk = 1+itsk*numnod/ nthread
7252 nodltsk = (itsk+1)*numnod/nthread
7253
7254
7255
7256
7257
7258
7259
7260
7262 CALL alefvm_accele(nodes%A, nodes%AR, nodftsk, nodltsk, ale_connectivity%NALE)
7263 ENDIF
7264
7265 CALL accele(nodes%A ,nodes%AR ,nodes%V ,nodes%MS ,nodes%IN ,
7266 2
ale%GLOBAL%SNALE ,ale_connectivity%NALE ,ms_2d ,
7267 3 size_npby,npby )
7268
7269 IF(iplyxfem > 0 )
7270 .
CALL ply_accele(inod_pxfem,ms_ply,zi_ply,nodes%MS,
7271 . nodftsk,nodltsk,nplymax,nplyxfe,numnod,msz2 )
7272
7273
7274 IF(ialelag > 0) THEN
7275 CALL flow_accele(ale_connectivity%NALE, msf ,aflow ,vflow ,
7276 2 nodftsk,nodltsk)
7277 ENDIF
7278
7279 IF (nloc_dmg%IMOD > 0) THEN
7280 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
7281 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
7282 CALL nlocal_acc(nloc_dmg, nodft_nl ,nodlt_nl)
7283 ENDIF
7284
7285 IF (icrack3d > 0) THEN
7286
7288
7289 CALL crk_accele(adsky_crk,inod_crk,nodlevxf ,nodftsk ,nodltsk ,
7290 . nodenr ,
crksky ,nodes%MS ,nodes%IN ,nodes%ITAB )
7291
7293
7295 . nodlevxf)
7296
7298
7299 ENDIF
7300
7303 1 pinch_data%APINCH, nodes%MS, pinch_data%MSPINCH,
7304 2 pinch_data%STIFPINCH, nodftsk, nodltsk,
7305 3 dt2t, dtfac)
7306 ENDIF
7307
7308
7309
7310 IF (glob_therm%ITHERM_FE > 0 )
7311 .
CALL tempur(nodes%TEMP ,nodes%MCP,fthe,nodftsk,nodltsk,nodes%WEIGHT,mcp_off,glob_therm%HEAT_STORED)
7312
7313
7314
7315
7316
7319 IF(ntsheg > 0) THEN
7320
7321
7322
7323
7324
7325
7326
7327 itsk = omp_get_thread_num()
7328 greftsk = 1+itsk*ntsheg/ nthread
7329 greltsk = (itsk+1)*ntsheg/nthread
7330 CALL accdtdc(greftsk,greltsk,
ienunl ,alpha_dc,nodes%A ,nodes%MS ,nodes%ITAB )
7331
7332 ENDIF
7333
7336
7337
7338
7339 IF (debug(macro_debug_temp)==1) THEN
7340 IF (ncycle>=tdebstart .AND.
7341 . mod(ncycle-tdebstart,trstfreq)==0) THEN
7342
7343 IF(nspmd > 1) THEN
7344 IF (ispmd==0) THEN
7345 siz = numnodg
7346 ELSE
7347 siz = 0
7348 END IF
7349 CALL spmd_collectt(nodes%TEMP,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB,siz)
7350 ELSE
7351 CALL collectt(nodes%TEMP,nodes%ITAB,nodes%WEIGHT,nodes%NODGLOB)
7352 END IF
7353 END IF
7354 END IF
7355
7356
7357
7358
7359
7360 IF (imon>0)
CALL stoptime(timers,timer_integ)
7361
7362
7363
7364 IF(nsphio/=0)THEN
7365
7366
7367 nsphactg = nsphact
7368
7369 IF(nspmd>1)THEN
7372 END IF
7373
7374 IF(nsphactg/=0)THEN
7375
7376 IF (imon>0)
CALL startime(timers,6)
7377 IF (imonm > 0)
CALL startime(timers,48)
7378 IF (imonm > 0)
CALL startime(timers,89)
7379
7380 CALL sponfv (nodes%X ,nodes%V ,nodes%A ,nodes%D ,nodes%MS ,
7381 2 spbuf ,nodes%ITAB ,kxsp ,ixsp ,nod2sp ,
7382 3 npc ,tf ,isphio ,vsphio ,ipart ,
7383 4 ipart(k10),wasph(kspactiv) ,wa,wasph(ksph22) ,sph_work, output%TH%WFEXT)
7384
7385 IF (imonm > 0)
CALL stoptime(timers,89)
7386 IF (imonm > 0)
CALL stoptime(timers,48)
7387 IF (imon>0)
CALL stoptime(timers,6)
7388 ENDIF
7389 END IF
7390
7391
7392
7393
7394
7395
7396
7397
7398 IF(nsphio/=0.AND.nsphactg/=0)THEN
7399
7400 IF (imon>0)
CALL startime(timers,6)
7401 IF (imonm > 0)
CALL startime(timers,48)
7402 IF (imonm > 0)
CALL startime(timers,89)
7403
7404 CALL sponfv (nodes%X ,nodes%V ,nodes%A ,nodes%D ,nodes%MS ,
7405 2 spbuf ,nodes%ITAB ,kxsp ,ixsp ,nod2sp ,
7406 3 npc ,tf ,isphio ,vsphio ,ipart ,
7407 4 ipart(k10),wasph
7408
7409 IF (imonm > 0)
CALL stoptime(timers,89)
7410 IF (imonm > 0)
CALL stoptime(timers,48)
7411 IF (imon>0)
CALL stoptime(timers,6)
7412 ENDIF
7413
7414
7415
7416
7417 IF (nspmd>1) THEN
7418 IF ((sdd_r2r_elem>0).AND.(numsph_glo_r2r>0)) THEN
7419 lenr = nodes%BOUNDARY_ADD(1,nspmd+1)-nodes%BOUNDARY_ADD(1,1)
7420 CALL spmd_exch_r2r_sph(nodes%A,nodes%BOUNDARY_ADD,nodes%BOUNDARY,dd_r2r,dd_r2r_elem,lenr)
7421 ENDIF
7422 ENDIF
7423
7424
7425
7426
7427 IF (imon>0)
CALL startime(timers,timer_io)
7428
7429 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7430
7431
7432
7433 itsk = omp_get_thread_num()
7434 nodftsk = 1+itsk*numnod/ nthread
7435 nodltsk = (itsk+1)*numnod/nthread
7436
7437
7438
7439
7440
7441
7442 iflag = -1
7443 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7444
7445
7446
7447 END IF
7448
7449 IF (imon>0)
CALL stoptime(timers,timer_io)
7450 CALL python_update_nodal_entities(numnod,nodes,a=nodes%A,v=nodes%V,ar=nodes%AR,vr=nodes%VR)
7451
7452
7453
7454
7455 IF(ngrav/=0.AND.idtmins==0.AND.idtmins_int==0) THEN
7456 IF (imon>0)
CALL startime(timers,timer_kin)
7457 IF (imonm > 0)
CALL startime(timers,46)
7458
7459
7460
7461
7462
7463
7464 itsk = omp_get_thread_num()
7465 IF(multi_fvm%IS_USED)THEN
7467 1 igrv ,agrv ,npc ,tf ,nodes%A ,
7468 2 nodes%V ,nodes%X ,skews%SKEW ,nodes%MS ,sensors%SENSOR_TAB,
7469 3 nodes%WEIGHT ,lgrav ,itsk ,ale_connectivity%NALE,nsensor, python, output%TH%WFEXT)
7470 ELSE
7472 1 igrv ,agrv ,npc ,tf ,nodes%A ,
7473 2 nodes%V ,nodes%X ,skews%SKEW ,nodes%MS ,sensors%SENSOR_TAB,
7474 3 nodes%WEIGHT ,lgrav ,itsk ,nsensor, python, output%TH%WFEXT)
7475 ENDIF
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485 IF (nfxbody>0) THEN
7486 CALL fxgrvcor(fxbipm, fxbgrvi, nodes%A, igrv, agrv,
7487 . npc, tf, nodes%MS, nodes%V , skews%SKEW,
7488 . fxbgrw, nodes%BOUNDARY_ADD, nodes%BOUNDARY, output%TH%WFEXT, python)
7489 END IF
7490 IF (imon>0)
CALL stoptime(timers,46)
7491 IF (imonm > 0)
CALL stoptime(timers,timer_kin)
7492 ENDIF
7493
7494
7495
7496 IF(nbcscyc > 0)THEN
7497 CALL bcscyc(ibcscyc,lbcscyc,skews%SKEW,nodes%X,nodes%V,nodes%A,nodes%ITAB)
7498 ENDIF
7499
7500
7501
7502 IF (nloadc>0) THEN
7503 IF (imon>0)
CALL startime(timers,timer_kin)
7504
7505
7506
7507
7508
7509
7510 itsk = omp_get_thread_num()
7511 CALL cfield_1(python,icfield ,cfield,npc ,tf ,nodes%A,
7512 2 nodes%V ,nodes%X
7513 3 nodes%WEIGHT,lcfield,itsk ,iframe,nsensor, output%TH%WFEXT)
7514
7515
7516 IF (imon>0)
CALL stoptime(timers,timer_kin)
7517 ENDIF
7518
7519
7520
7521
7522
7523 IF (imon
CALL startime(timers,timer_io)
7524
7525 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7526
7527
7528
7529 itsk = omp_get_thread_num()
7530 nodftsk = 1+itsk*numnod/ nthread
7531 nodltsk = (itsk+1)*numnod/nthread
7532
7533
7534
7535
7536
7537
7538 iflag = 1
7539 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7540
7541
7542
7543 END IF
7544
7545 IF (imon>0)
CALL stoptime(timers,timer_io)
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555 IF (imon>0)
CALL startime(timers,timer_io)
7556
7557 itsk = omp_get_thread_num()
7558 nodftsk = 1+itsk*numnod/ nthread
7559 nodltsk = (itsk+1)*numnod/nthread
7560 CALL forani3(fani,nodes%A,nodes%MS,nfea,nodftsk,nodltsk,h3d_data)
7561
7562 IF (imon>0)
CALL stoptime(timers,timer_io
7563
7564
7565
7566
7567
7568
7569
7570
7571 ierr=0
7572 IF(ninter/=0.AND.iale/=0)THEN
7573 IF(ispmd==0)THEN
7574 IF (imon>0) THEN
7576 CALL startime(timers,timer_contsort)
7577 ENDIF
7578 CALL intal1(ipari ,nodes%X ,nodes%V ,
7579 2 nodes%A ,nodes%ISKEW
7580 3 nodes%MS ,nodes%ITAB ,fsav ,interfaces%INTBUF_TAB
7581 4 fani ,fani(1,nfnca
7582 IF (imon>0) THEN
7585 ENDIF
7586 ENDIF
7587 IF(nspmd > 1)THEN
7588
7589 call spmd_xv_inter_type1(numnod, nodes%BOUNDARY_SIZE, ispmd, nspmd, nodes%BOUNDARY_ADD, nodes%BOUNDARY,
7590 1 nodes%a, nodes%v, ninter, ipari, npari)
7591 ENDIF
7592 ENDIF
7593 IF(ierr == 1)
CALL arret(2)
7594
7595 IF(ninter /= 0 .and. iale+ieuler /= 0 .and. int18kine == -1)THEN
7596
7597
7598
7599
7600 itsk = omp_get_thread_num()
7601
7603
7604 CALL i18main_kine_2(ipari,interfaces%INTBUF_TAB,nodes%X ,nodes%V ,
7605 2 nodes%A ,nodes%ISKEW,skews%SKEW
7606 3 nodes%MS ,nodes%ITAB ,fsav ,itsk+1,kinet
7607 4 nodes%STIFN,mtf ,cand_sav
7608 5 nodes%BOUNDARY_ADD,nodes%BOUNDARY,h3d_data )
7609
7610 ENDIF
7611
7612
7613
7614
7615
7616
7617
7618
7619 IF(ebcs_tab%nebcs_loc>0)THEN
7620 IF (imon>0) THEN
7622 CALL startime(timers,timer_contsort)
7623 END IF
7624 IF(ispmd == 0)THEN
7625 CALL ebcclap(nodes%V,nodes%A,fv,ebcs_tab)
7626 ENDIF
7627 IF (imon>0) THEN
7628 CALL stoptime(timers,timer_contsort)
7630 END IF
7631 ENDIF
7632
7633
7634
7635
7636 IF (imon>0)
CALL startime(timers,timer_kin)
7637 IF (imonm > 0)
CALL startime(timers,42)
7638
7639 CALL thbcs(nodft ,nodlt ,nodes%ICODT ,nodes%ICODR,nodes%ISKEW,
7640 2 skews%SKEW ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
7642
7643
7644
7645
7646
7647
7648 itsk = omp_get_thread_num()
7649 nodftsk = 1+itsk*numnod/ nthread
7650 nodltsk = (itsk+1)*numnod/nthread
7651 CALL bcs10(nodftsk,nodltsk ,nodes%ICODT ,nodes%ICODR,nodes%ISKEW,
7652 2 skews%SKEW ,nodes%A ,nodes%AR ,nodes%MS ,nodes%V ,
7653 3 nodes%VR )
7654
7655
7656 IF(iplybcs > 0 .AND. iplyxfem > 0 )
7657 .
CALL ply_bcs(nodftsk, nodltsk,icodt_ply,iskew_ply,skews%SKEW,
7658 . inod_pxfem,ms_ply,ibc_ply)
7659
7660
7661 IF (imonm > 0) THEN
7664 END IF
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674 itsk = omp_get_thread_num()
7675
7676
7677
7678
7680 1 nodes%MS ,nodes%IN ,nodes%A ,nodes%AR ,nodes%V ,
7681 2 nodes%VR ,ilink ,llink,skews%SKEW,fr_rl,
7682 3 nodes%WEIGHT,frl6)
7684 1 nodes%MS ,nodes%IN ,nodes%A ,nodes%AR ,nodes%V ,
7685 2 nodes%VR ,nnlink,lnlink,skews%SKEW ,fr_ll,
7686 3 nodes%WEIGHT,fnl6 ,nodes%X ,xframe)
7687
7688
7689
7690 IF(nrivet>0) THEN
7692 + nodes%MS ,nodes%IN ,nodes%A ,nodes%AR,nodes%X ,
7693 + lrivet,rivet,geo,nodes%V ,nodes%VR,
7694 + itsk )
7695 ENDIF
7696
7697
7698
7699
7700 IF(njoint>0) THEN
7701 CALL cjoint(nodes%A ,nodes%AR ,nodes%V ,nodes%VR,nodes%X ,
7702 2 fsav ,ljoint,nodes%MS,nodes%IN,iadcj,
7704 ENDIF
7705
7706
7707
7708 IF (imon>0)
CALL stoptime(timers,timer_kin)
7709 IF (imonm > 0)
CALL stoptime(timers,43)
7710 ENDIF
7711
7712
7713
7714
7715
7716
7717 IF (imon>0)
CALL startime(timers,timer_io)
7718
7719
7720 itsk = omp_get_thread_num()
7721 nodftsk = 1+itsk*numnod/ nthread
7722 nodltsk = (itsk+1)*numnod/nthread
7723
7724
7725
7726 IF(tt==zero.AND.(isigi==2.OR.isigi==4)) THEN
7727#include "vectorize.inc"
7728 DO i=nodftsk,nodltsk
7729 fzero(1,i)=-nodes%A(1,i)
7730 nodes%A(1,i)=zero
7731 fzero(2,i)=-nodes%A(2,i)
7732 nodes%A(2,i)=zero
7733 fzero(3,i)=-nodes%A(3,i)
7734 nodes%A(3,i)=zero
7735 ENDDO
7736 ENDIF
7737
7738
7739 IF (imon>0)
CALL stoptime(timers,timer_io)
7740
7741
7742
7743
7744
7745 IF (ns10e>0.AND.(idamp/=0.OR.ndamp>0.OR.istat/=0)) THEN
7747 END IF
7748
7749
7750
7751
7752
7753 IF (imon>0)
CALL startime(timers,timer_io)
7754
7755 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7756
7757
7758
7759 itsk = omp_get_thread_num()
7760 nodftsk = 1+itsk*numnod/ nthread
7761 nodltsk = (itsk+1)*numnod/nthread
7762
7763
7764
7765
7766
7767
7768 iflag = -1
7769 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7770
7771
7772
7773 END IF
7774
7775 IF (imon>0)
CALL stoptime(timers,timer_io)
7776
7777 IF (imonm > 0)
CALL startime(timers,52)
7778
7779
7780
7781 itsk = omp_get_thread_num()
7782 nodftsk = 1+itsk*numnod/ nthread
7783 nodltsk = (itsk+1)*numnod/nthread
7784
7785 IF(idamp/=0)THEN
7786 IF (ns10e>0) THEN
7787 CALL damping(nodftsk,nodltsk,vmd,nodes%VR,nodes%A ,nodes%AR ,damp,nodes%MS,nodes%IN,
7788 . igrnod,3+iroddl*3,itsk,nodes%WEIGHT,nodes%TAG_S_RBY,output%TH%WFEXT)
7789 ELSE
7790 CALL damping(nodftsk,nodltsk,nodes%V ,nodes%VR,nodes%A ,nodes%AR ,damp,nodes%MS,nodes%IN,
7791 . igrnod,3+iroddl*3,itsk,nodes%WEIGHT,nodes%TAG_S_RBY,output%TH%WFEXT)
7792 END IF
7793 ELSEIF(ndamp>0)THEN
7794 IF(nrdamp==4)THEN
7795
7796
7798 . 3+iroddl*3,nodes%V ,
7799 . nodes%VR ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
7800 . dampr ,damp ,igrnod ,nodes%WEIGHT ,nodes%TAG_S_RBY ,output%TH%WFEXT)
7801
7802
7803 ELSE
7804
7805
7806 IF (ns10e>0) THEN
7808 . 3+iroddl*3,vmd ,
7809 . nodes%VR ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
7810 . dampr ,damp ,igrnod ,nodes%WEIGHT ,nodes%TAG_S_RBY,
7811 . skews%SKEW ,icontact,idamp_rdof_tab ,ndamp_vrel,id_damp_vrel,
7812 . fr_damp_vrel,iparit,ispmd,output%TH%WFEXT)
7813 ELSE
7815 . 3+iroddl*3,nodes%V ,
7816 . nodes%VR ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
7817 . dampr ,damp ,igrnod ,nodes%WEIGHT ,nodes%TAG_S_RBY,
7818 . skews%SKEW ,icontact,idamp_rdof_tab ,ndamp_vrel,id_damp_vrel,
7819 . fr_damp_vrel,iparit,ispmd,output%TH%WFEXT)
7820 END IF
7821
7822
7823 END IF
7824 END IF
7825
7826
7827
7828 IF(imon>0)
CALL stoptime(timers,52)
7829
7830 IF (imon>0)
CALL startime(timers,timer_io)
7831
7832 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7833
7834
7835
7836 itsk = omp_get_thread_num()
7837 nodftsk = 1+itsk*numnod/ nthread
7838 nodltsk = (itsk+1)*numnod/nthread
7839
7840
7841
7842
7843
7844
7845 iflag = 1
7846 CALL reaction_forces_2(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac,iflag)
7847
7848
7849
7850 END IF
7851
7852 IF (imon>0)
CALL stoptime(timers,timer_io)
7853
7854
7855
7856
7857
7858 IF (imon>0)
CALL startime(timers,timer_io)
7859
7860 IF(cptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7861
7862
7863
7864 itsk = omp_get_thread_num()
7865 nodftsk = 1+itsk*numnod/ nthread
7866 nodltsk = (itsk+1)*numnod/nthread
7867
7868
7869
7870
7871
7872 iflag = -1
7874 . nodes%IN ,fthreac ,iflag,
nodreac)
7875
7876
7877
7878 END IF
7879
7880 IF (imon>0)
CALL stoptime(timers,timer_io)
7881
7882
7883
7884
7885
7886
7887
7888
7889 IF(istat/=0) THEN
7890 IF (imon>0)
CALL startime(timers,6)
7891 IF (imonm > 0)
CALL startime(timers,49)
7892 IF (ns10e>0) THEN
7893 CALL static(vmd ,nodes%VR,nodes%A,nodes%AR,nodes%MS,nodes%IN,igrnod,nodes%WEIGHT_MD,output%TH%WFEXT)
7894 ELSE
7895 CALL static(nodes%V,nodes%VR,nodes%A,nodes%AR,nodes%MS,nodes%IN,igrnod,nodes%WEIGHT_MD,output%TH%WFEXT)
7896 END IF
7897 IF (imonm > 0)
CALL stoptime(timers,49)
7898 IF (imon>0)
CALL stoptime(timers,6)
7899 ENDIF
7900 encin = zero
7901 enrot = zero
7902 encin2 = zero
7903 enrot2 = zero
7904
7905
7906
7907 IF(nfxvel/=0) THEN
7908 IF(imon>0) THEN
7912 ENDIF
7913 CALL fixvel(ibfv ,nodes%A ,nodes%V ,npc ,tf ,
7914 2 vel ,nodes%MS ,nodes%X
7915 3 nodes%VR ,nodes%IN ,nsensor
7916 4 nodes%WEIGHT,nodes%D ,rby ,iframe ,
7917 5 xframe,nodes%DR
7918 6 tt_double,nodes%DDP,python ,output%TH%WFEXT)
7919
7920 IF (fxvel_fgeo ==1) THEN
7921 CALL fixfingeo(python, nodes, ibfv ,npc ,tf
7922 2 vel ,sensors%SENSOR_TAB ,
7923 3 cptreac,
nodreac,ptr_sms,nsensor ,
7924 4 fthreac, output%TH%WFEXT )
7925 ENDIF
7926
7927 IF(imon>0) THEN
7928 IF(imonm > 0)
CALL stoptime(timers,44)
7931 ENDIF
7932 ENDIF
7933
7934
7935
7936
7937
7938 IF (imon>0)
CALL startime(timers,timer_io)
7939
7940 IF(cptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
7941
7942
7943
7944 itsk = omp_get_thread_num()
7945 nodftsk = 1
7946 nodltsk = (itsk+1)*numnod
7947
7948
7949
7950
7951
7952 iflag = 1
7954
7955
7956
7957 END IF
7958
7959 IF (imon>0)
CALL stoptime(timers,timer_io)
7960
7961
7962
7963
7964
7965 IF (imon>0)
CALL startime(timers,timer_kin)
7966 IF (imonm > 0)
CALL startime(timers,43)
7967
7968
7969
7970
7971
7972
7973 IF(nrwall>0.AND.idtmins==1)THEN
7974
7975
7976 ELSEIF(nrwall>0.AND.(idtmins==2.OR.idtmins_int/=0))THEN
7978 1 nodes%X ,nodes%A
7979 2 nprw ,nodes%MS ,fsav(1,ninter+1),fr_wall ,
7980 3 fani(1,1+nfoa+2*(nsect+nrbody)),
7981 4 rwsav ,nodes%WEIGHT ,frwl6 ,
nodxi_sms, nodes%WEIGHT_MD,
7982 5 sensors%SFSAV,sensors%FSAV,sensors%STABSEN,sensors%TABSENSOR, output%TH%WFEXT, output%TH%WFEXT_MD)
7983 ELSE
7985 1 nodes%X ,nodes%A ,nodes%V ,rwbuf ,lprw,
7986 2 nprw ,nodes%MS ,fsav(1,ninter+1),fr_wall ,
7987 3 fani(1,1+nfoa+2*(nsect+nrbody)),
7988 4 rwsav ,nodes%WEIGHT ,frwl6 ,
nativ_sms, nodes%WEIGHT_MD,
7989 5 sensors%SFSAV,sensors%FSAV,sensors%STABSEN,sensors%TABSENSOR, output%TH%WFEXT, output%TH%WFEXT_MD)
7990 ENDIF
7991
7992
7993
7994 IF (imon>0)
CALL stoptime(timers,timer_kin)
7995 IF (imonm > 0)
CALL stoptime(timers,43)
7996
7997
7998
7999
8000
8001
8002
8003
8004 IF (glob_therm%NFXTEMP > 0 .AND. glob_therm%ITHERM_FE > 0) THEN
8005 IF (imon>0) THEN
8008 IF(imonm > 0)
CALL startime(timers,44)
8009 ENDIF
8010 CALL fixtemp(python,ibftemp ,fbftemp ,nodes%TEMP ,npc ,tf ,
8011 1 nsensor ,sensors%SENSOR_TAB,glob_therm,snpc)
8012 IF (imon>0) THEN
8013 IF(imonm > 0)
CALL stoptime(timers,44)
8016 ENDIF
8017 ENDIF
8018
8019 IF(isecut/=0)THEN
8020 IF (imon>0)
CALL startime(timers,timer_io)
8022 1 nstrf,nodes%D,nodes%DR,nodes%V,nodes%VR,fsav(1,1+ninter+nrwall+nrbody
8023 2 secfcum,nodes%A ,nodes%AR ,secbuf,nodes%MS ,nodes%IN ,
8024 3 nodes%X ,fani(1,nfoa+1),nodes%WEIGHT,xsec ,nodes%BOUNDARY_ADD,nodes%BOUNDARY,
8025 4 rg_cut ,iad_cut ,fr_cut,nodes%WEIGHT_MD,ioldsect,
8026 5 sensors%STABSEN,sensors%SFSAV,sensors%TABSENSOR ,sensors%FSAV ,output%TH%WFEXT )
8027 IF(imon>0)
CALL stoptime(timers,timer_io)
8028 ENDIF
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038 IF(istatcnd/=0)THEN
8039 IF (imon>0)
CALL startime(timers,38)
8040
8041 itsk = omp_get_thread_num()
8042 nodftsk = 1+itsk*numnod/ nthread
8043 nodltsk = (itsk+1)*numnod/nthread
8044 CALL cndint(element%SHELL%IXC, ipart(k3), ixtg, ipart(k8), ipart,
8045 2 itsk ,nodes%A ,nodes%V ,nodes%AR ,nodes%VR ,
8046 3 nodes%MS ,nodes%IN ,nodftsk,nodltsk ,nodes%X ,
8047 4 sh4tree,sh3tree ,nodes%ITAB ,nodes%STIFN ,nodes%STIFR ,
8048 5 mscnd ,incnd )
8049
8050
8052
8053
8054 IF (imon>0)
CALL startime(timers,timer_kin
8055 IF (imonm > 0)
CALL startime(timers,42)
8056
8057
8058
8059
8060
8061
8062
8063 itsk = omp_get_thread_num()
8064 nodftsk = 1+itsk*numnod/ nthread
8065 nodltsk = (itsk+1)*numnod/nthread
8066
8067 CALL bcs10(nodftsk,nodltsk ,nodes%ICODT ,nodes%ICODR,nodes%ISKEW,
8068 2 skews%SKEW ,nodes%A ,nodes%AR ,nodes%MS ,nodes%V ,
8069 3 nodes%VR )
8070
8071
8072
8073 IF (imonm > 0)
CALL stoptime(timers,42)
8074 IF (imon>0)
CALL stoptime(timers,timer_kin)
8075 END IF
8076
8077
8078
8079
8080
8081
8082 IF(nadmesh/=0)THEN
8083 IF (imon>0)
CALL startime(timers,38)
8084
8085
8086
8087
8088
8089
8090 itsk = omp_get_thread_num()
8091
8092 CALL admvit(element%SHELL%IXC, ipart(k3), ixtg, ipart(k8), ipart,
8093 1 itsk ,nodes%A , nodes%V , nodes%AR , nodes%VR ,
8094 2 sh4tree,sh3tree ,nodes%TEMP ,glob_therm%ITHERM_FE)
8095
8096
8097
8098 IF (imon>0)
CALL stoptime(timers,38)
8099 END IF
8100
8101
8102
8103
8104 IF(nrbykin>0)THEN
8105
8106 IF(imon>0)
CALL startime(timers,timer_kin)
8107 IF(imonm > 0)
CALL startime(timers,40)
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8121 1 rby ,nodes%X ,nodes%V ,nodes%VR ,skews%SKEW ,
8122 2 fsav ,lpby ,npby ,nodes%ISKEW,nodes%ITAB ,
8123 3 nodes%WEIGHT ,nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,
8124 4 kindrby,irbkin_l,nrbykin_l,
nodreac,fthreac,
8125 5 freac )
8126
8127
8128
8129
8130 IF(imon>0)
CALL stoptime(timers,timer_kin)
8131 IF(imonm > 0)
CALL stoptime(timers,40)
8132
8133 ENDIF
8134
8135
8136
8137
8138 IF(irigid_mat > 0 ) THEN
8139
8140
8141
8142
8143
8144
8145
8146 CALL rmatacce(rbym , arbym, arrbym, vrbym, vrrbym ,
8147 1 irbym,lnrbym,nodes%X ,nodes%A ,nodes%AR
8148 2 nodes%V ,nodes%VR ,kindrbym)
8149
8150
8151
8152 ENDIF
8153
8154
8155
8156
8157
8158
8159
8160
8161 IF (nfxbody>0) THEN
8162 CALL fxbyvit(fxbipm, fxbnod, fxbmod, fxbglm, fxblm ,
8163 . fxbmvn, fxbmcd, fxbse , fxbsv , fxbvit,
8164 . fxbacc, fxbrpm, nodes%V , nodes%VR , nodes%A ,
8165 . nodes%AR , nodes%MS , nodes%IN , nodes%WEIGHT, fsav ,
8166 . fxbfc , fxbedp
8167 END IF
8168
8169
8170
8171 IF (nrbe3>0) THEN
8172 CALL rbe3v(rbe3,nodes,skews%SKEW )
8173 ENDIF
8174
8175
8176
8177 IF (nrbe2>0) THEN
8178 IF (itask==0) THEN
8179 CALL rbe2v(irbe2 ,lrbe2 ,nodes%X ,nodes%A ,nodes%AR ,
8180 1
8181 ENDIF
8182 ENDIF
8183
8184
8185
8186 IF (nflow>0)
CALL flow1(iflow, rflow, nbgauge, nodes%A)
8187
8188
8189
8190
8191
8192 IF (ispmd==0) THEN
8193
8194
8195
8196 IF(ninter/=0)THEN
8197 IF (imon>0) THEN
8199 ENDIF
8200 CALL i14wfs(output,ipari,interfaces%INTBUF_TAB,igrsurf,fsav)
8201 IF (imon>0) THEN
8202 CALL stoptime(timers,timer_contsort)
8203 ENDIF
8204 ENDIF
8205 ENDIF
8206
8208
8209
8210
8211
8212 IF(ninter/=0)THEN
8213 IF (imon>0) THEN
8215 CALL startime(timers,timer_contsort)
8216 ENDIF
8217 IF (imonm > 0)
CALL startime(timers,28)
8218 DO k=nhin2,0,-1
8219 CALL intti2(ipari,nodes%X ,nodes%V ,nodes%A ,
8220 2 nodes%VR ,nodes%AR ,k ,nodes%MS ,nodes%IN ,nodes%WEIGHT
8221 3 interfaces%INTBUF_TAB)
8222 ENDDO
8223 IF (imonm > 0)
CALL stoptime(timers,28)
8224 IF (imon>0) THEN
8225 CALL stoptime(timers,timer_contsort)
8227 ENDIF
8228 ENDIF
8229
8230
8231
8232
8233
8234 IF (nslipring + nretractor > 0)
CALL kine_seatbelt_vel(nodes%A,nodes%V,nodes%X,nodes%XDP)
8235
8236
8237
8239
8240 IF(numfram /= 0 .AND. n2d == 0)THEN
8241
8242
8243
8245 IF (imonm > 0)
CALL startime(timers,49)
8246 CALL movfra1(xframe,iframe ,nodes%X, nodes%V ,nodes%A ,nodes%AR)
8247 IF (imonm > 0)
CALL stoptime(timers,49)
8249 ENDIF
8250
8251 IF (imon>0)
CALL startime(timers,timer_kin)
8252 IF (imonm > 0)
CALL startime(timers,40)
8253
8254 IF(numsph/=0.AND.nsphsol/=0)THEN
8255
8256
8257
8258 IF (imonm > 0)
CALL startime(timers,48)
8259 IF (imonm > 0)
CALL startime(timers,89)
8260
8261
8262
8263
8264
8265
8266 itsk = omp_get_thread_num()
8267
8269 1 itsk ,nodes%V ,nodes%A ,nodes%MS ,pm ,
8270 2 ipart ,ixs ,ipart(k1) ,kxsp ,ipart(k10) ,
8271 3 irst ,spbuf ,partsav ,sol2sph ,iparg ,
8272 4 ngrounc ,igrounc ,elbuf_tab ,igeo)
8273
8274
8275
8276 IF (imonm > 0)
CALL stoptime(timers,89)
8277 IF (imonm > 0)
CALL stoptime(timers,48)
8278 ENDIF
8279
8280
8281
8282
8283
8284
8285
8286
8287 IF (naccelm > 0) THEN
8288
8289 DO k=1,naccelm
8290
8291 IF(iaccp(k)==ispmd+1)THEN
8292 n = laccelm(1,k)
8293 IF(n > 0 .AND. n/=2*numnodg )THEN
8294 isk= laccelm(3,k)
8296 . nodes%A(1,n),accelm(1,k),accelm(2,k),accelm(8,k),accelm(14,k),
8297 . accelm(20,k),accelm(23,k),skews%SKEW(1,isk))
8298 END IF
8299 END IF
8300 ENDDO
8301
8302
8303
8304 END IF
8305
8306
8307
8308
8309 IF (nbgauge > 0) THEN
8310
8311 DO k=1,nbgauge
8312 IF(igaup(k)==ispmd+1)THEN
8313 n = lgauge(1,k)
8314
8315
8316 IF(n < -(numels+numelq+numeltg))THEN
8318 . gauge(10,k),gauge(9,k),gauge(14,k),gauge(22,k),
8319 . gauge(30,k),4)
8320 END IF
8321 END IF
8322 ENDDO
8323
8324
8325
8326 END IF
8327
8328
8329
8330
8331 IF (nsphio > 0) THEN
8332
8333 DO k=1,nsphio
8334 IF (isphio(1,k)>1) THEN
8335 ivad = isphio(4,k)
8337 . vsphio(ivad+13),vsphio(ivad+15),vsphio(ivad+18),vsphio(ivad+20),
8338 . vsphio(ivad+16),1)
8339 END IF
8340 ENDDO
8341
8342
8343 END IF
8344
8345
8346 IF(nrbykin>0)THEN
8348 1 rby ,nodes%X ,nodes%V ,nodes%VR ,skews%SKEW ,fsav ,
8349 2 lpby,npby,nodes%ISKEW,nodes%ITAB ,nodes%WEIGHT ,nodes%A ,
8350 3 nodes%AR ,nodes%MS ,nodes%IN ,kindrby,irbkin_l,nrbykin_l,
8351 4 nodes%WEIGHT_MD,ms_2d)
8352 ENDIF
8353
8354 IF(nrbe2>0)THEN
8355
8356 CALL rbe2cor(irbe2 ,lrbe2 ,nodes%X ,nodes%V ,nodes%VR ,
8357 2 skews%SKEW ,nodes%ISKEW ,nodes%ITAB ,nodes%WEIGHT,nodes%A ,
8358 3 nodes%AR ,nodes%MS0 ,nodes%IN ,nodes%WEIGHT_MD)
8359 ENDIF
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373 IF (nsensor> 0 ) THEN
8374 IF (nspmd > 1 .AND. sensors%STABSEN > 0) THEN
8375 dim6=12
8376 dim_exch = sensors%SFSAV
8378 ENDIF
8379 ENDIF
8380
8381 IF (nsensor > 0) THEN
8382
8384
8385
8386 IF (sensors%COMM_SENS16%BOOL) THEN
8388 * igrsurf,sensors%COMM_SENS16)
8389 ENDIF
8390
8391
8392 IF (sensors%COMM_SENS17%BOOL) THEN
8393 CALL sensor_temp0(nsensor,sensors%SENSOR_TAB,igrnod,nodes%TEMP,nodes%WEIGHT,sensors%COMM_SENS17,
8394 * sensors%SENSOR_STRUCT)
8395 ENDIF
8396
8397 IF (nspmd > 1) THEN
8398 CALL sensor_spmd(sensors%SENSOR_TAB,ipari ,nprw ,isensp ,nsensp ,
8399 . xsens ,nodes%X ,accelm ,iaccp ,naccp ,
8400 . gauge ,igaup ,ngaup ,partsav2 ,nsensor,
8401 . sensors%COMM_SENS14,sensors%SENSOR_STRUCT )
8402 ENDIF
8403
8404
8406 . xsens ,ipari ,partsav2 ,gauge ,fsav ,
8407 . nodes%X ,nodes%V ,nodes%A ,accelm ,nprw ,
8408 . subsets ,igrsurf ,igrnod ,python)
8409
8410
8412
8413 ENDIF
8414
8415
8416 IF (imonm > 0)
CALL stoptime(timers,40)
8417 IF (imon>0)
CALL stoptime(timers,timer_kin)
8418
8419
8420
8421
8422 IF(lag_ncf+lag_ncl>0)THEN
8423 l1 = 1+nixs*numels + nsvois*nixs
8424 l2 = l1+6*numels10
8425 l3 = l2+12*numels20
8426
8427 IF(lag_sec == 1 .AND. nspmd == 1)THEN
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8439 1 itsk ,nodftsk ,nodltsk ,numntsk,ndtsk ,
8440 2 ipmtsk,partftsk,partltsk,nwaftsk,igmtsk ,
8441 3 greftsk,greltsk)
8442
8444 1 ipari ,nodes%X ,nodes%A ,
8445 2 wa(nwaftsk),nodes%V ,nodes%MS ,nodes%IN ,nodes%VR ,
8446 3 itsk ,wa ,nodes%ITAB ,ixs ,ixs(l2) ,
8447 4 ixs(l3) ,igrnod ,fani ,fsav ,
8448 5 skews%SKEW ,nodes%AR ,lambda ,lagbuf ,ibcslag ,
8449 6 ixs(l1) ,gjbufi ,gjbufr ,ibmpc ,rbmpc ,
8450 7 npbyl ,lpbyl ,ibfv ,vel ,npc ,
8451 8 tf ,newfront ,icontact ,rwbuf ,lprw ,
8452 9 nprw ,rbyl ,nodes%D ,nodes%DR ,kinet ,
8453 a nsensor ,sensors%SENSOR_TAB,interfaces%INTBUF_TAB, h3d_data ,igrbric,
8454 b python,nodes)
8455
8456
8457
8458
8459
8460
8461
8462 ELSE
8463 IF(ispmd==0) THEN
8464 nbncl = fr_lagf(1,nspmd+1)
8465 nbikl = fr_lagf(2,nspmd+1)
8466 nbnodl = fr_lagf(3,nspmd+1)
8467 nbnodlr= nbnodl*
max(1,iroddl)
8468 ELSE
8469 nbncl = fr_lagf(1,ispmd+1)
8470 nbikl = fr_lagf(2,ispmd+1)
8471 nbnodl=0
8472 nbnodlr=0
8473 END IF
8475 1 ipari ,nodes%X ,nodes%A ,
8476 2 wa ,nodes%V ,nodes%MS ,nodes%IN ,nodes%VR ,
8477 3 wa ,nodes%ITAB ,ixs ,ixs(l2) ,
8478 4 ixs(l3) ,fani ,fsav ,
8479 5 skews%SKEW ,nodes%AR ,lambda ,lagbuf ,ibcslag ,
8480 6 ixs(l1) ,gjbufi ,gjbufr ,ibmpc ,rbmpc ,
8481 7 npbyl ,lpbyl ,ibfv ,vel ,npc ,
8482 8 tf ,newfront ,icontact ,rwbuf ,lprw ,
8483 9 nprw ,rbyl ,nodes%D ,nodes%DR ,kinet ,
8484 a nodes%NODGLOB ,nodes%WEIGHT ,nbncl ,nbikl ,nbnodl ,
8485 b nbnodlr ,fr_lagf ,llagf ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,
8486 c interfaces%INTBUF_TAB ,h3d_data, python, nodes)
8487 END IF
8488 ENDIF
8489
8490 111 CONTINUE
8491
8492
8493 ntmp = imconv
8494 IF (impdeb==1.AND.imconv==0) THEN
8495 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
8496 ttmp=ttmp+dtanim
8497 IF ((irad2r==1).AND.(iresp==1)) THEN
8498 tt_dp=tt_dp+ttmp
8499 tt = tt_dp
8500 ELSE
8501
8502 tt_double = tt_double + ttmp
8503 IF (impl_s==1.OR.neig>0) THEN
8504 tt = tt + ttmp
8505 ELSE
8506 IF(iresp == 1)THEN
8507 tt = sngl(tt_double)
8508 ELSE
8509 tt = tt_double
8510 ENDIF
8511 ENDIF
8512
8513 ENDIF
8514 ntmp = 1
8515 ENDIF
8516 ENDIF
8517
8518 IF( ( anim_ce(2156)/=0 .OR. h3d_data%SH_SCAL_ERR_THK /=0)
8519 . .AND.((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.
8520 . (manim>=4.AND.manim<=15))) THEN
8521
8522
8523
8524
8525
8526
8527
8528 itsk = omp_get_thread_num()
8529 nodftsk = 1+itsk*numnod/ nthread
8530 nodltsk = (itsk+1)*numnod/nthread
8531
8532 CALL err_thk(element%SHELL%IXC ,ixtg ,iparg ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,
8533 . nodes%WEIGHT ,nodes%X ,elbuf_tab,ipart ,ipart(k3) ,
8534 . ipart(k8) ,itsk ,nodftsk ,nodltsk ,err_thk_sh4,
8535 . err_thk_sh3,sh4tree,sh3tree,
8536 . area_sh4, area_sh3, area_nod,
8537 . thick_sh4, thick_sh3, thick_nod)
8538
8539
8540
8541 END IF
8542
8543 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
8544 k2=k1+numels
8545 k3=k2+numelq
8546 k4=k3+numelc
8547 k5=k4+numelt
8548 k6=k5+numelp
8549 k7=k6+numelr
8550 k8=k7
8551 k9=k8+numeltg
8552 CALL funct_python_update_elements(python, ispmd,
8553 . n2d, ngroup, nixc, nixtg, nixs,nixq,
8554 . numgeo, numelc, numeltg, numels, numelq, nummat, numnod,
8555 . nparg, npropg, npropm, npropmi, npropgi,
8556 . snercvois, snesdvois, slercvois, slesdvois,
8557 . sthke, seani, npart,
8558 . elbuf_tab ,iparg ,geo ,
8559 . element%SHELL%IXC,ixtg, ixs ,ixq ,pm ,bufmat ,
8560 . eani,
8561 . ipm ,igeo ,thke ,err_thk_sh4 ,err_thk_sh3,
8562 . nodes ,w ,ale_connectivity,
8563 . nercvois ,nesdvois ,lercvois ,lesdvois,
8564 . m51_n0phas, m51_nvphas, stack ,
8565 . ipart(k3:k4-1),ipart(k1:k2-1) ,ipart(k8:k9-1),ipart(k1:k2-1),
8566 . multi_fvm ,
8567 . mat_elem%MAT_PARAM,
fani_cell,glob_therm%ITHERM)
8568
8569
8570
8571
8572
8573
8574 IF(ntmp==1)THEN
8575 IF(idtmins==1)THEN
8576
8577
8578 ELSEIF(idtmins==2.OR.idtmins_int/=0)THEN
8579
8580 IF (imon>0)
CALL startime(timers,39)
8581
8582
8583
8584 itsk = omp_get_thread_num()
8585 nodftsk = 1+itsk*numnod/ nthread
8586 nodltsk = (itsk+1)*numnod/nthread
8587
8591 3 diag_sms ,nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nodes%WEIGHT ,nodes%V ,
8592 4 nodes%A ,x_sms ,y_sms ,z_sms ,xmom_sms ,
8593 5 nodes%ICODT ,nodes%ICODR ,nodes%ISKEW ,skews%SKEW ,ibfv ,
8594 6 vel ,npc ,tf ,nodes%X ,nodes%D ,
8595 7 sensors ,iframe ,xframe ,
jadi_sms ,
8598 a
nodreac ,fthreac ,nodes%AR ,nodes%VR ,
8599 b nodes%DR ,nodes%IN ,rby ,irbe2 ,lrbe2 ,
8600 c iad_rbe2 ,fr_rbe2m ,nmrbe2 ,r2size ,rbe3%IRBE3 ,
8601 d rbe3%LRBE3 ,rbe3%FRBE3 ,rbe3%mpi%IAD_RBE3,rbe3%mpi%FR_RBE3
8602 e rbe3%RRBE3 ,rbe3%RRBE3_PON,iad_rby ,fr_rby6 ,rby6 ,
8604 g ibcscyc ,lbcscyc ,output, mskyi_fi_sms,list_sms,
8605 h list_rms ,sms_vfi,sz_mw6,mw6)
8606
8607
8608
8609 IF (imon>0)
CALL stoptime(timers,39)
8610
8611 END IF
8612 END IF
8613
8614 nisky_sms=0
8615
8616
8617
8618
8619
8620 IF (icrack3d > 0 .AND. nlevset > 0) THEN
8622 . iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,iel_crk ,
8623 . elcutc ,ixtg ,iadc_crk ,nodes%BOUNDARY_ADD,iad_edge ,
8624 . fr_edge,fr_nbedge,nodes%BOUNDARY ,nxlaymax,inod_crk ,
8626 ENDIF
8627
8628
8629
8630
8631
8632
8633
8634
8635
8637
8638
8639
8640
8641
8642
8644 1 itsk , nodftsk , nodltsk , numntsk, ndtsk ,
8645 2 ipmtsk , partftsk, partltsk, nwaftsk, igmtsk ,
8646 3 greftsk, greltsk)
8647 dt2tt = dt2t
8648 neltstt = neltst
8649 ityptstt = ityptst
8650 IF(iparit == 1) ndtsk = 1
8652 1 nodes%X , nodes%V ,
8653 2 elbuf_tab , nodes%VR ,
8654 3 ale_connectivity , iparg , ixs ,
8655 4 ale_connectivity%NALE ,
8656 5 itsk ,nodftsk , nodltsk ,ipm , nv46 ,msnf )
8657
8658
8659 ENDIF
8660
8661
8662
8663
8664 IF (imon>0)
CALL startime(timers,timer_io)
8665
8666 IF(comptreac/=0.AND.(impl_s==0 .OR. inconv==1)) THEN
8667
8668
8669
8670 itsk = omp_get_thread_num()
8671 nodftsk = 1+itsk*numnod/ nthread
8672 nodltsk = (itsk+1)*numnod/nthread
8673
8674
8675
8676
8677 CALL reaction_forces_3(nodftsk,nodltsk,nodes%A,nodes%AR,nodes%MS,nodes%IN,freac)
8678
8679
8680 END IF
8681
8682 IF (imon>0)
CALL stoptime(timers,timer_io)
8683
8684
8685
8686 IF(ncycle > 0) THEN
8687
8688 IF (imon>0)
CALL startime(timers,macro_timer_genh3d1)
8689 l1 = 1+nixs*numels + nsvois*nixs
8690 l2 = l1+6*numels10
8691 l3 = l2+12*numels20
8692
8693
8694 itsk = omp_get_thread_num()
8695
8696
8697
8698 CALL upd_tmax(elbuf_tab,iparg ,geo ,pm ,
8699 . ixs ,ixs(l1) ,ixs(l3) ,ixs(l2) ,ixq ,
8700 . element%SHELL%IXC ,ixtg ,ixt ,ixp ,ixr ,
8701 . nodes%X ,nodes%D ,nodes%V ,nodes%BOUNDARY_ADD,nodes%BOUNDARY ,
8702 . nodes%WEIGHT ,ipm ,igeo ,stack ,itsk )
8703
8704
8705 IF (imon>0)
CALL stoptime(timers,macro_timer_genh3d1)
8706 END IF
8707
8708
8709
8710
8711
8712 IF(ntmp==1)THEN
8713
8714 IF (imon>0) THEN
8716 ENDIF
8718 l1 = 1+nixs*numels + nsvois*nixs
8719 l2 = l1+6*numels10
8720 l3 = l2+12*numels20
8721
8722 IF (tt<=tstop.AND.ilastanim==3) THEN
8723 ilastanim=0
8724 END IF
8725 IF (tt<=tstop.AND.ilastdynain==3) THEN
8726 ilastdynain=0
8727 END IF
8728 IF (tt<=tstop.AND.ilasth3d==3) THEN
8729 ilasth3d=0
8730 END IF
8731
8732 IF ((tt>tanim .AND. tt<=tanim_stop).AND.ilastanim==0) THEN
8733 ilastanim=3
8734 lastanimcycle=ncycle
8735 END IF
8736
8737 IF (tt>tstat.AND.ilastanim==0) THEN
8738 ilastanim=3
8739 laststatcycle=ncycle
8740 END IF
8741 IF (tt>dynain_data%TDYNAIN.AND.ilastdynain==0) THEN
8742 ilastdynain=3
8743 lastdyncycle=ncycle
8744 END IF
8745 IF (tt>h3d_data%TH3D.AND.ilasth3d==0) THEN
8746 ilasth3d=3
8747 lasth3dcycle=ncycle
8748 END IF
8749
8750 IF(debug(macro_debug_chksm) >0) THEN
8751 IF(mod(ncycle,debug(macro_debug_chksm)) == 0 ) THEN
8753 . numnodg, numnodm, nodes%A, nodes%ITAB,
8754 . nodes%WEIGHT, nodes%NODGLOB)
8755 ENDIF
8756 ENDIF
8757
8758 IF(sh_offset_tab%NNSH_OSET > 0) THEN
8759 CALL assign_ptrx(ptrx, nodes%X,numnod)
8760 CALL assign_ptrx(ptrx_offset, xyz,numnod)
8761 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
8762 CALL assign_ptrx(ptrx, impbuf_tab%X_A,numnod)
8763 CALL assign_ptrx(ptrx_offset, xyz ,numnod)
8764 ELSE
8765 CALL assign_ptrx(ptrx, nodes%X,numnod)
8766 CALL assign_ptrx(ptrx_offset, nodes%X,numnod)
8767 ENDIF
8768
8770 1 pm ,nodes%D ,nodes%V ,ale_connectivity ,w ,
8771 2 elbuf ,iparg ,ixs ,ixq ,element%SHELL%IXC,
8772 3 ixt ,ixp ,ixr ,ixtg ,wa ,
8773 4 nodes%ITAB ,ptrx ,geo ,nodes%MS ,nodes%A ,
8774 5 fani ,partsav ,icut ,xcut ,
8775 6 fani(1,1+nfia),fani(1,1+nfea) ,fani(1,1+nfoa) ,anin ,lpby ,
8776 7 npby ,nstrf ,rwbuf ,nprw ,ebcs_tab ,
8777 8 tani ,inoise ,bufnois ,rby ,neflsw ,
8778 9 nnflsw ,crflsw ,flsw ,lout ,nodes ,
8779 b fsav ,skews%SKEW ,elbuf_tab ,cluster ,
8780 c nodes%VR ,nodes%IN ,nodes%WEIGHT ,fcluster ,mcluster ,
8781 d dd_iad ,dmas ,accelm ,gauge ,
8782 e ipari ,eani ,ipart ,mat_elem%MAT_PARAM ,
8783 f igrnod ,subsets ,
8784 g nom_opt ,nodes%AR ,igrsurf ,bufsf ,idata ,
8785 h rdata ,kxx ,ixx ,bufmat ,bufgeo ,
8786 i kxsp ,ixsp ,nod2sp ,spbuf ,nodes%DR,
8787 j fsavd ,lrivet ,rivet ,iskwn ,iframe ,
8788 m xframe ,ixs(l1) ,ixs(l2) ,ixs(l3) ,ndma ,
8789 n monvol ,volmon ,ipm ,igeo ,nodes%NODGLOB ,
8790 . nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,
8791 u fr_rby2 ,iad_rby2 ,fr_wall ,fr_sec ,fxbipm ,fxbrpm ,
8792 v ndin ,fxbdep ,fxbvit ,fxbacc ,iflow ,
8793 w rflow ,ipartl ,npartl ,iaccp ,naccp ,
8794 x fasolfr ,fani(1,nfnca+1),fani(1,nftca+1),ipart(i15ath) ,
8795 y fr_mv ,ipart_state ,sh4tree ,sh3tree ,nodes%TEMP ,
8796 z thke ,err_thk_sh4 ,err_thk_sh3,
8797 a inod_pxfem ,fthreac ,
nodreac ,gresav ,
8798 b diag_sms ,sh4trim ,sh3trim ,fani(1,1+nft2) ,xmom_sms ,
8799 c irbe2 ,rbe3%IRBE3 ,lrbe2 ,rbe3%LRBE3 ,fr_rbe2 ,
8800 d rbe3%mpi%FR_RBE3 ,iad_rbe2 ,dxancg ,iel_pxfem ,zi_ply ,
8801 e vflow ,fcontg ,fncontg ,ftcontg ,freac ,
8802 f inod_crk ,iel_crk ,elcutc ,iadc_crk ,anin(ndama2+1),
8803 g res_sms ,sensors ,
8804 h qfricint ,igaup ,ngaup ,nodes%WEIGHT_MD ,ncont ,
8805 i
indexcont ,nodglobxfe ,nodedge ,xfem_tab ,
8806 j nv46 ,rthbuf ,kxig3d ,ixig3d ,knot ,
8807 k wige ,nercvois ,nesdvois ,lercvois ,lesdvois ,
8808 l
crkedge ,stack ,isphio ,vsphio ,nodes%ICODE ,
8810 n stifr_tmp ,drape_sh4n ,drape_sh3n ,ms_2d ,multi_fvm ,
8811 o segquadfr ,h3d_data ,nodes%ISKEW ,pskids ,iskwp ,
8812 p knotlocpc ,knotlocel ,pinch_data ,tag_skins6 ,irunn_bis ,
8813 q tf ,npc ,dynain_data ,fcont_max ,
mds_matid ,
8814 r fani(1,nfnca2+1),fani(1,nftca2+1),ibcl ,iloadp ,lloadp ,
8815 s loadp ,tagncont ,loadp_hyd_inter,forc ,drapeg ,
8816 t user_windows ,output ,dt ,output%TH%TH_SURF%CHANNELS ,
8817 u table ,loads ,sfani ,iparit ,ptrx_offset ,
8818 v sz_npcont2 ,npcont2 ,glob_therm ,pblast ,output%TH%WFEXT)
8819
8820 IF((mstop == 1 .AND. ictlstop == 0) .OR. mstop == 2 .OR. dt2<=zero)THEN
8822 1 nodes%V ,nodes%NODGLOB ,nodes%WEIGHT ,nodes%ITAB ,nodes%MS ,
8823 2 nodes%MS0 ,10 ,partsav ,ipart ,pm ,
8824 3 igeo )
8825 END IF
8826
8828
8830 IF(coupling%active) CALL coupling_advance(coupling,dt2)
8831
8832
8833
8834
8835
8836
8837
8838 IF (ilastanim==1) THEN
8839 ilastanim=2
8840 END IF
8841 IF (ilasth3d==1) THEN
8842 ilasth3d=2
8843 END IF
8844 IF(t1s==tt)ncycle=ncycle+1
8845
8846 IF ((irad2r==1).AND.(iresp==1)) THEN
8847 tt_dp=tt_dp+dt2
8848 tt=tt_dp
8849 ELSE
8850
8851 tt_double = tt_double + dt2
8852 IF (impl_s==1.OR.neig>0) THEN
8853 tt = tt + dt2
8854 ELSE
8855 IF(iresp == 1)THEN
8856 tt = sngl(tt_double)
8857 ELSE
8858 tt = tt_double
8859 ENDIF
8860 ENDIF
8861 ENDIF
8862
8863 IF (imadcpl /= 1) THEN
8864 IF (dtanim>zero) THEN
8865 IF (tt>tstop.AND.ilastanim==0
8866 . .AND.abs((tt-tanim)/dtanim)<em03) THEN
8867 ilastanim=1
8868 tanim=tt-em10
8869 END IF
8870 IF (tt>tstop.AND.ilastanim==0.AND.
8871 . (ncycle-lastanimcycle)>=100) THEN
8872 ilastanim=1
8873 tanim=tt-em10
8874 END IF
8875 END IF
8876
8877 IF (dtstat>zero) THEN
8878 IF (tt>tstop.AND.ilastanim==0
8879 . .AND.abs((tt-tstat)/dtstat)<em03) THEN
8880 ilastanim=1
8881 tstat=tt-em10
8882 END IF
8883 IF (tt>tstop.AND.ilastanim==0.AND.
8884 . (ncycle-laststatcycle)>=100) THEN
8885 ilastanim=1
8886 tstat=tt-em10
8887 END IF
8888 END IF
8889
8890 IF (dynain_data%DTDYNAIN>zero) THEN
8891 IF (tt>tstop.AND.ilastdynain==0
8892 . .AND.abs((tt-dynain_data%TDYNAIN)/dynain_data%DTDYNAIN)<em03) THEN
8893 ilastdynain=1
8894 dynain_data%TDYNAIN=tt-em10
8895 END IF
8896 IF (tt>tstop.AND.ilastdynain==0.AND.
8897 . (ncycle-lastdyncycle)>=100) THEN
8898 ilastdynain=1
8899 dynain_data%TDYNAIN=tt-em10
8900 END IF
8901 END IF
8902
8903 IF (h3d_data%DTH3D>zero) THEN
8904 IF (tt>tstop.AND.ilasth3d==0
8905 . .AND.abs((tt-h3d_data%TH3D)/h3d_data%DTH3D)<em03) THEN
8906 ilasth3d=1
8907 h3d_data%TH3D=tt-em10
8908 END IF
8909 IF (tt>tstop.AND.ilasth3d==0.AND.
8910 . (ncycle-lasth3dcycle)>=100) THEN
8911 ilasth3d=1
8912 h3d_data%TH3D=tt-em10
8913 END IF
8914 END IF
8915 ENDIF
8916
8917 IF (imon>0) THEN
8919 ENDIF
8920 ENDIF
8921 IF (impdeb==1.AND.imconv==0) THEN
8922 IF (ncycle>=ndeb0.AND.ncycle<=ndeb1) THEN
8923 IF ((irad2r==1).AND.(iresp==1)) THEN
8924 tt_dp=tt_dp-ttmp-dt2
8925 tt=tt_dp
8926 ELSE
8927
8928 tt_double = tt_double - ttmp - dt2
8929 IF (impl_s==1.OR.neig>0) THEN
8930 tt = tt - ttmp - dt2
8931 ELSE
8932 IF(iresp == 1)THEN
8933 tt = sngl(tt_double)
8934 ELSE
8935 tt = tt_double
8936 ENDIF
8937 ENDIF
8938
8939 ENDIF
8940 ENDIF
8941 ENDIF
8942
8943 CALL python_update_time(tt,dt2)
8944
8945
8946
8947
8948 IF (impl_s==1) THEN
8950 IF (imon>0)
CALL startime(timers,34)
8951
8952
8953
8954
8955
8956 IF (imp_chk > 0) THEN
8958 1 nodes%ICODE ,nodes%ISKEW ,iskwn ,ipart ,ixtg ,ixs ,ixq ,
8959 2 element%SHELL%IXC,ixt ,ixp ,ixr ,ixtg1 ,nodes%ITAB ,nodes%ITABM1,
8960 3 npc ,ibcl ,ibfv ,sensors%SENSOR_TAB,nnlink ,lnlink ,iparg ,igrv,
8961 4 ipari ,interfaces%INTBUF_TAB,nprw ,iconx ,npby ,lpby ,lrivet ,
8962 5 nstrf ,ljoint,nodes%ICODT ,nodes%ICODR,interfaces%PON%ISKY,element%PON%ADSKY,element%PON%IAD_CONLD,
8963 6 ilink ,llink ,nodes%WEIGHT,itask ,ibvel ,lbvel ,fbvel,
8964 7 nodes%X ,nodes%D ,nodes%V ,nodes%VR ,nodes%DR ,thke ,damp ,nodes%MS,
8965 8 nodes%IN ,pm ,skews%SKEW ,geo ,eani ,bufmat ,bufgeo ,bufsf,
8966 9 tf ,forc ,vel ,fsav ,agrv ,fr_wave,parts0 ,
8967 a elbuf ,rby ,rivet ,nodes%BOUNDARY ,nodes%BOUNDARY_ADD ,nsensor ,
8968 b wa ,nodes%A ,nodes%AR ,nodes%STIFN ,nodes%STIFR,partsav,element%PON%FSKY,
8969 c interfaces%PON%FSKYI,iframe ,xframe ,w16 ,iactiv ,element%PON%FSKYM,igeo,ipm ,
8970 d output%TH%WFEXT ,nodft ,nodlt ,nt_imp ,num_imp ,ns_imp ,ne_imp,ind_imp,
8971 l it ,rwbuf ,lprw ,fr_wall ,nbintc ,intlist ,
8972 m fani(1,1+nfoa+2*(nsect+nrbody)),rwsav ,fsavd ,
8973 n dirul ,lgrav ,rbe3%IRBE3 ,rbe3%LRBE3 ,rbe3%FRBE3 ,
8974 o frwl6 ,irbe2 ,lrbe2 ,icfield ,lcfield ,cfield ,elbuf_tab,
8975 p nodes%WEIGHT_MD ,stack,sensors%SFSAV ,sensors%FSAV,sensors%STABSEN ,sensors%TABSENSOR ,drape_sh4n ,
8976 q drape_sh3n ,h3d_data ,nddl0 ,nnzk0 ,impbuf_tab ,cptreac,fthreac,
nodreac ,
8977 r drapeg ,output%TH%TH_SURF ,dpl0cld ,vel0cld ,snpc ,stf , output%TH%WFEXT_MD,igrsurf)
8978 mstop=2
8979 ELSEIF ((tt<=tstop.OR.(tt-tstop)<em10).AND.ibuck==0) THEN
8980
8981
8982
8983#if defined(MUMPS5)
8985 1 nodes%ICODE ,nodes%ISKEW ,iskwn ,ipart ,ixtg ,ixs ,ixq ,
8986 2 element%SHELL%IXC ,ixt ,ixp ,ixr ,ixtg1 ,nodes%ITAB ,nodes%ITABM1 ,
8987 3 npc ,ibcl ,ibfv ,sensors%SENSOR_TAB,nnlink ,lnlink ,iparg ,igrv ,
8988 4 ipari ,interfaces%INTBUF_TAB,nprw ,iconx ,npby,lpby ,lrivet ,
8989 5 nstrf ,ljoint ,nodes%ICODT ,nodes%ICODR ,interfaces%PON%ISKY ,element%PON%ADSKY,element%PON%IAD_CONLD
8990 6 ilink ,llink ,nodes%WEIGHT ,itask ,ibvel ,lbvel ,fbvel ,
8991 7 nodes%X ,nodes%D ,nodes%V ,nodes%VR ,nodes%DR ,thke ,damp ,nodes%MS ,
8992 8 nodes%IN ,pm ,skews ,geo ,eani ,bufmat ,bufgeo ,bufsf ,
8993 9 tf ,forc ,vel ,fsav ,agrv ,fr_wave,parts0 ,
8994 a elbuf ,rby ,rivet,nodes%BOUNDARY,nodes%BOUNDARY_ADD,
8995 b wa ,nodes%A ,nodes%AR ,nodes%STIFN ,nodes%STIFR ,partsav,element%PON%FSKY ,
8996 c interfaces%PON%FSKYI ,iframe ,xframe ,w16 ,iactiv ,element%PON%FSKYM ,igeo ,ipm ,
8997 d output%TH%WFEXT ,nodft ,nodlt ,nt_imp ,num_imp,ns_imp ,ne_imp ,ind_imp,
8998 l it ,rwbuf ,lprw ,fr_wall,nbintc ,intlist,
8999 m fani(1,1+nfoa+2*(nsect+nrbody)),rwsav ,fsavd ,
9000 n graphe , fac_k ,
ipiv_k ,nkcond,nsensor,
9001 o monvol ,igrsurf,fr_mv ,volmon ,dirul,
9002 p nodes%NODGLOB,mumps_par,cddlp ,isendto,ircvfrom,newfront,imsch ,
9003 q i2msch ,isizxv,ilenxv ,islen7 ,irlen7 ,islen11,irlen11,islen17,
9004 r irlen17,irlen7t,islen7t,kinet ,num_imp1,nodes%TEMP ,dt2prev,wa ,
9005 s lgrav ,sh4tree,sh3tree,irlen20,islen20,irlen20t,islen20t,
9006 t irlen20e,islen20e,rbe3%IRBE3,rbe3%LRBE3 ,rbe3%FRBE3 ,fr_i2m,iad_i2m,rbe3%mpi%FR_RBE3,
9007 u rbe3%mpi%IAD_RBE3,frwl6,irbe2 ,lrbe2,intbuf_tab_cp,
9008 w nodes%IKINE ,diag_sms,icfield,lcfield,cfield,count_remslv,
9009 x count_remslve,elbuf_tab,elbuf_imp,nodes%XDP,nodes%WEIGHT_MD , stack ,
9010 y sensors%SFSAV,sensors%FSAV,sensors%STABSEN,sensors%TABSENSOR,drape_sh4n , drape_sh3n,
9011 z h3d_data,multi_fvm,igrbric,igrsh4n,igrsh3n,igrbeam,forneqs,maxdgap,
9012 a nddl0 ,nnzk0 ,it_t ,impbuf_tab,cptreac,fthreac,
nodreac, drapeg,
9013 b interfaces,output%TH%TH_SURF,dpl0cld,vel0cld,snpc,stf,glob_therm,output%TH%WFEXT_MD)
9014#else
9015 WRITE(6,*) __line__,"Fatal error: MUMPS required"
9016 CALL flush(6)
9018#endif
9019
9020 IF (nbuck>0) ibuck=1
9021 ELSEIF (ibuck>0) THEN
9022
9023#if defined(MUMPS5) && defined(DNC)
9024 IF (impl_s > 0 .AND. ismdisp >0) THEN
9025 call assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
9026 ELSE
9027 call assign_ptrx(ptrx,nodes%X,numnod)
9028 ENDIF
9030 2 pm, geo, ipm, igeo, elbuf,
9031 3 ixs, ixq, element%SHELL%IXC, ixt, ixp,
9032 4 ixr, ixtg, ixtg1, iparg,
9033 5 tf, npc, fr_wave, w16, bufmat,
9034 6 thke, bufgeo, nsensor, sensors%SENSOR_TAB,rby,
9035 7 skews%SKEW, wa, nodes%ICODT, nodes%ICODR, nodes%ISKEW,
9036 9 ibfv, vel, lpby, npby, nodes%ITAB,
9037 a nodes%WEIGHT, nodes%MS, nodes%IN, ipari, interfaces%INTBUF_TAB,
9038 b ptrx, itsk ,
9039 e fani,
9040 f fani(1,1+nfoa), anin, nstrf, rwbuf, nprw,
9041 g tani, dd_iad, eani, ipart,
9042 h nom_opt, igrsurf, bufsf, idata,
9043 i rdata, kxx, ixx, kxsp, ixsp,
9044 j nod2sp, spbuf, ixs(l1), ixs(l2), ixs(l3),
9045 k nodes%VR, monvol, volmon, nodes%NODGLOB, nodes%BOUNDARY_ADD,
9046 l nodes%BOUNDARY, fr_sec, fr_rby2, iad_rby2, fr_wall,
9047 m nodes%V, nodes%A, graphe, partsav , xframe ,
9048 n dirul,
9049 o fsav(1,nfnca+1), fsav(1,nftca+1),nodes%TEMP ,sh4tree, sh3tree,
9050 p err_thk_sh4, err_thk_sh3 , iframe ,lprw , elbuf_tab,
9051 q fsav ,fsavd , rwsav ,nodes%AR , rbe3%IRBE3 ,
9052 r rbe3%LRBE3 ,rbe3%FRBE3 , fr_i2m ,iad_i2m , rbe3%mpi%FR_RBE3,
9053 s rbe3%mpi%IAD_RBE3,frwl6 , ibcl ,forc , irbe2 ,
9054 t lrbe2 ,iad_rbe2 , fr_rbe2 ,nodes%WEIGHT_MD,
9055 u cluster ,fcluster , mcluster ,xfem_tab ,
9056 v ale_connectivity ,w , nv46 ,nercvois , nesdvois ,
9057 w lercvois ,lesdvois ,
crkedge ,stack ,sensors%SFSAV ,
9059 y
xedge3n ,sph2sol ,stifn_tmp ,stifr_tmp , drape_sh4n ,
9060 z drape_sh3n ,h3d_data ,subsets ,igrnod , fcont_max,
9061 a fani(1,nfnca2+1),fani(1,nftca2+1),nddl0 ,nnzk0 ,impbuf_tab ,
9062 b drapeg ,mat_elem%MAT_PARAM ,glob_therm, output )
9063#else
9064 WRITE(6,*) __line__,"Fatal error: MUMPS required"
9065 CALL flush(6)
9067#endif
9068
9069 IF (idyna==0.AND.itsk==0)
CALL cp_dm(numgeo,geo,igeo,dmcp,2)
9070 mstop=2
9071 ELSE
9072 IF (ilastanim/=1) THEN
9073 IF (iline/=1.AND.ispmd==0) THEN
9074 WRITE(iout,*)
9075 WRITE(istdo,*)
9076 WRITE(iout,1002)it_t
9077 WRITE(istdo,1002)it_t
9078 WRITE(iout,1003)it_bcs,it_pcg
9079 WRITE(istdo,1003)it_bcs,it_pcg
9080 ENDIF
9081 END IF
9082 tt =
min(tt,tstop+em10)
9083 dt2 = dt2t
9084 ENDIF
9085 IF (tt>tstop.AND.inconv==1) THEN
9086 CALL imp_restarcp(nodes%X,nodes%V,nodes%VR,geo,igeo,dmcp,impbuf_tab)
9087 ENDIF
9088
9090 IF (imon>0)
CALL stoptime(timers,34)
9091
9092
9093
9094 ELSEIF(ilag+iale+ieuler/=0)THEN
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105 IF (nsurf/=0) THEN
9106
9107
9108
9109
9110 IF(ispmd==0) THEN
9111 CALL srfvit(nodes%X,nodes%V,nodes%VR,nodes%A,nodes%AR,
9112 . npby ,rby ,nodes%MS ,nodes%IN ,
9113 . igrsurf ,bufsf)
9114 END IF
9115 ENDIF
9116
9117
9118
9119
9120
9121 IF (nconld > 0) THEN
9123 . dpl0cld,vel0cld,nibcld,nconld,iroddl ,
9124 . numnod )
9125 ENDIF
9126
9127
9128
9129 IF(user_windows%HAS_USER_WINDOW /= 0)THEN
9130 IF(ispmd == 0) THEN
9131 DO i=1,numnod
9132 user_windows%A_SAV(1,i)=nodes%A(1,i)*nodes%MS(i)
9133 user_windows%A_SAV(2,i)=nodes%A(2,i)*nodes%MS(i)
9134 user_windows%A_SAV(3,i)=nodes%A(3,i)*nodes%MS(i)
9135 ENDDO
9136 IF(iroddl/=0)THEN
9137 DO i=1,numnod
9138 user_windows%AR_SAV(1,i)=nodes%AR(1,i)*nodes%IN(i)
9139 user_windows%AR_SAV(2,i)=nodes%AR(2,i)*nodes%IN(i)
9140 user_windows%AR_SAV(3,i)=nodes%AR(3,i)*nodes%IN(i)
9141 ENDDO
9142 ENDIF
9143 ENDIF
9144 ENDIF
9145
9146
9147
9148
9149 IF(imon>0)
CALL startime(timers,timer_integ)
9150
9151
9152
9153
9154
9155!$omp parallel private(itsk,nodftsk,nodltsk,nodft_nl,nodlt_nl)
9156 itsk = omp_get_thread_num()
9157 nodftsk = 1+itsk*numnod/ nthread
9158 nodltsk = (itsk+1)*numnod/nthread
9159
9160
9161
9163 1 nodes%A , nodes%AR , nodes%V , nodes%VR , fzero,
9164 2 nodes%ITAB,ale_connectivity%NALE )
9165
9166 IF (nloc_dmg%IMOD > 0) THEN
9167
9168 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
9169 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
9170 CALL nlocal_vel(nloc_dmg, nodft_nl ,nodlt_nl)
9171 ENDIF
9172
9173 IF(ialelag > 0) THEN
9174 CALL flow_vitesse(ale_connectivity%NALE,aflow ,vflow , fzero ,
9175 2 nodftsk,nodltsk ,wflow, nodes%V,
ifoam)
9176 ENDIF
9177
9180 1 pinch_data%APINCH, pinch_data%VPINCH,
9181 2 nodftsk , nodltsk )
9182 ENDIF
9183
9184
9185
9186
9187
9188 IF (loads%NINIVELT > 0) THEN
9189 IF (n2d == 0) THEN
9190 length = numels + nsvois
9191 ELSE
9192 length = numelq + numeltg
9193 ENDIF
9194 CALL inivel_start(
9195 . ngrnod, ngrbric, ngrquad, ngrsh3n,
9196 . igrnod, igrbric, igrquad, igrsh3n,
9197 . numskw, lskew, numfram, sensors,
9198 . xframe,skews%SKEW, nodes%X, nodes%V,
9199 . nodes%VR, numnod, vflow, wflow,
9200 . w,multi_fvm, iale , ialelag,
9201 . tt, iroddl, loads%NINIVELT,loads%INIVELT,
9202 . nparg, ngroup, length, iparg,
9203 . elbuf_tab, nodes%MS, nodes%IN, nodes%WEIGHT,
9204 . nxframe, t_kin )
9205 output%TH%WFEXT = output%TH%WFEXT + t_kin
9206 END IF
9207
9208
9209
9210
9212
9213
9214
9215
9216
9217 IF(iplyxfem > 0) THEN
9218 nthold= nthread
9219 nthread=1
9220 call omp_set_num_threads(nthread)
9221
9222 itsk = omp_get_thread_num()
9223 nodftsk = 1+itsk*numnod/ nthread
9224 nodltsk = (itsk+1)*numnod/nthread
9225
9226 CALL ply_vitesse(nodftsk,nodltsk,nplymax,inod_pxfem,numnod)
9227
9228 nthread= nthold
9229 call omp_set_num_threads(nthread)
9230 ENDIF
9231
9232 IF(imon>0)
CALL stoptime(timers,timer_integ)
9233
9234 IF(iale+ieuler==0) THEN
9235
9236
9237
9238
9239 IF(imon>0)
CALL startime(timers,timer_integ)
9240
9241
9242
9243
9244
9245
9246
9247 itsk = omp_get_thread_num()
9248 nodftsk = 1+itsk*numnod/ nthread
9249 nodltsk = (itsk+1)*numnod/nthread
9250
9251 CALL depla(nodes%V ,nodes%D ,nodes%X ,nodes%VR ,nodes%DR ,
9252 2 nodes%XDP
9253
9254 CALL deplafakeige(nodes%X ,nodes%V ,interfaces%INTBUF_TAB, kxig3d,
9255 2 ixig3d,igeo, knot, wige,
9256 3 knotlocpc,knotlocel)
9257
9258
9259 IF (nloc_dmg%IMOD > 0) THEN
9260
9261 nodft_nl = 1+ itsk*nloc_dmg%NNOD/nthread
9262 nodlt_nl = (itsk+1)*nloc_dmg%NNOD/nthread
9264 ENDIF
9265
9266 IF(ialelag > 0) THEN
9267 CALL flow_depla(ale_connectivity%NALE, vflow ,dflow ,
9268 2 nodftsk,nodltsk)
9269 ENDIF
9270
9272 CALL deplapinch(pinch_data%VPINCH, pinch_data%DPINCH,
9273 2
9274 ENDIF
9275
9276
9277
9278 IF(imon>0)
CALL stoptime(timers,timer_integ)
9279
9280 ELSEIF(iale/=0)THEN
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291 itsk = omp_get_thread_num()
9292 nodftsk = 1+itsk*numnod/ nthread
9293 nodltsk = (itsk+1)*numnod/nthread
9295 1 geo ,nodes%X ,nodes%D ,nodes%V ,nodes%VR ,
9296 2 w ,wa ,wb ,skews%SKEW ,
9297 3 pm ,xlas ,nodes%MS ,fsav ,
9298 4 nodes%A ,tf ,rwbuf ,
9299 5 dt2save ,python ,
9300 6 iparg ,ixs ,ixq ,nodpor ,
9301 7 nodes%ISKEW ,nodes%ICODT ,elbuf_tab ,
9302 8 npc ,linale ,nprw ,las ,
9303 9 ipari ,nodftsk ,nodltsk ,itsk ,
9304 a nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,nbrcvois ,nbsdvois ,lnrcvois ,
9305 b lnsdvois ,nodes%WEIGHT ,element%PON%ADSKY,element%PON%FSKY,element%PON%IADS,
9306 c fr_wall ,nporgeo ,element%PON%PROCNE ,
9307 d fr_nbcc ,element%PON%IADQ ,nodes%XDP ,igrnod ,
9308 e nodes%DR ,interfaces%INTBUF_TAB ,multi_fvm ,
9309 f ale_connectivity,nodes%DDP ,ne_nercvois ,ne_nesdvois ,
9310 g ne_lercvois ,ne_lesdvois ,xcell ,xface , output%TH%WFEXT)
9311
9312
9313
9314
9315
9316
9317
9318 ELSEIF(ilag==1)THEN
9319
9320 IF(imon>0)
CALL startime(timers,timer_integ)
9321
9322
9323
9324
9325
9326
9327
9328 itsk = omp_get_thread_num()
9329 nodftsk = 1+itsk*numnod/ nthread
9330 nodltsk = (itsk+1)*numnod/nthread
9331
9332 CALL euldx(nodes%V,nodes%D,nodes%X,nodes%DDP,ale_connectivity%NALE,nodftsk,nodltsk)
9333
9334
9335
9336 IF(imon>0)
CALL stoptime(timers,timer_integ)
9337 ENDIF
9338 ENDIF
9339 CALL python_sync(python%CONTEXT)
9340 CALL python_update_nodal_entities(numnod,nodes,x=nodes%X, d=nodes%D, dr=nodes%DR)
9341 IF(coupling%active) THEN
9342 dt2max_coupling = dt2
9343
9344 CALL coupling_sync(coupling,dt2,nodes,coupling_positions)
9345 ENDIF
9346
9347 IF (vipercoupling) THEN
9348
9349 CALL radiossviper_sendxve(numnod,neleml,viper%NUMELE,nparg,ngroup,viper%NUMON,viper%ivout,
9350 . nodes%X,nodes%V,viper%ITABM1,viper%IXEM1,iparg,elbuf_tab)
9351 CALL radiossviper_sendkill(mstop,tstop,viper%TSTOP)
9352 ENDIF
9353
9354
9355
9356
9357
9358
9359
9360
9361 IF (icrack3d > 0) THEN
9362 IF (nlevset > 0)THEN
9363
9365 . iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,ixtg ,
9366 . iadc_crk ,iel_crk ,inod_crk ,elcutc ,nodedge ,
9368
9369 IF (nspmd > 1)
9370 .
CALL spmd_crk_adv(nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,inod_crk ,enrtag)
9371
9372
9373
9374
9375
9376
9377 itsk = omp_get_thread_num()
9378 nodftsk = 1+itsk*numnod/ nthread
9379 nodltsk = (itsk+1)*numnod/nthread
9380
9381 CALL upenr_crk(adsky_crk,inod_crk ,nodftsk ,nodltsk ,
9382 . nodenr ,enrtag ,nodlevxf ,procne_crk )
9383
9384
9385
9387 . iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,ixtg ,
9388 . iadc_crk ,iel_crk ,inod_crk ,elcutc ,nodedge ,
9390
9391 itsk = omp_get_thread_num()
9392 nodftsk = 1+itsk*numnod/ nthread
9393 nodltsk = (itsk+1)*numnod/nthread
9394
9395 CALL crk_vitesse(adsky_crk,inod_crk ,nodlevxf ,nodftsk ,nodltsk ,
9396 . nodes%X ,nodes%V ,nodes%VR ,nodes%A ,nodes%AR ,
9397 . nodes%ITAB )
9398
9399
9400
9401
9402
9403
9406 . iadc_crk ,iel_crk ,inod_crk ,nodes%ITAB )
9407
9408
9409
9410 IF (nspmd > 1) THEN
9411 CALL spmd_exch_crkvel(nodes%BOUNDARY_ADD ,nodes%BOUNDARY ,inod_crk ,nodes%ITAB ,
9412 . nodes%X ,nodes%V ,nodes%VR )
9413 ENDIF
9414
9415
9416
9417
9418
9419 itsk = omp_get_thread_num()
9420 nodftsk = 1+itsk*numnod/ nthread
9421 nodltsk = (itsk+1)*numnod/nthread
9422 CALL crk_zero_accel(adsky_crk,inod_crk ,nodftsk ,nodltsk ,nodlevxf )
9423
9424
9425
9426
9427
9428
9429
9430 CALL upxfem2(iparg ,element%SHELL%IXC ,ngrouc ,igrouc ,iadc_crk ,
9431 . iel_crk ,elcutc ,ixtg ,enrtag ,inod_crk ,
9432 . nodes%BOUNDARY_ADD ,nodes%BOUNDARY,iad_edge,fr_edge ,fr_nbedge ,
9434
9435
9436 ELSE
9437
9438
9439
9440
9441
9442
9443 itsk = omp_get_thread_num()
9444 nodftsk = 1+itsk*numnod/ nthread
9445 nodltsk = (itsk+1)*numnod/nthread
9446 CALL crk_coord_ini(adsky_crk,inod_crk ,nodftsk,nodltsk,nodes%X ,
9447 . nodlevxf )
9448
9449 END IF
9450
9451 END IF
9452
9453
9454
9455
9456
9457 IF(nintstamp/=0)THEN
9459 . nodes%V ,nodes%VR ,nodes%MS ,nodes%X ,nodes%D ,
9460 . npby ,rby )
9461 END IF
9462
9463
9464 IF( multi_fvm%IS_INT18_LAW151 ) THEN
9465 IF(nspmd>1.AND. iparit/=0) THEN
9467 1 multi_fvm )
9468 ENDIF
9469
9470
9471
9472
9473
9474
9475 itsk = omp_get_thread_num()
9477 1 igroups,iparg ,elbuf_tab,multi_fvm%FORCE_INT ,
9478 2
9479 3 multi_fvm%X_APPEND,multi_fvm%V_APPEND,multi_fvm%MASS_APPEND,multi_fvm%KINET_APPEND)
9480
9481
9482 ENDIF
9483
9484
9485 itsk = omp_get_thread_num()
9487
9488
9489
9490
9491
9492 IF( multi_fvm%IS_USED ) THEN
9493
9494 IF (debug(macro_debug_acc)==1) THEN
9495 IF (ispmd==0) THEN
9496 siz = numelsg
9497 ELSE
9498 siz = 0
9499 END IF
9500 IF ( ncycle>=debstart .AND.
9501 . mod(ncycle-debstart,rstfreq)==0 ) THEN
9503 ENDIF
9504 ENDIF
9505 IF(debug(macro_debug_chksm) >0) THEN
9506 IF(mod(ncycle,debug(macro_debug_chksm)) == 0 ) THEN
9508
9509 ENDIF
9510 ENDIF
9511 ENDIF
9512
9513
9514
9515
9516
9517 IF(interfaces%PARAMETERS%INTCAREA > 0) THEN
9518
9519 ithout = 0
9521 IF(ithout > 0) THEN
9523 . nodes%BOUNDARY_ADD,nodes%BOUNDARY ,nodes%WEIGHT ,ixq ,segquadfr ,
9524 . ixs(l1) ,interfaces%PARAMETERS%INTAREAN)
9525 ENDIF
9526
9527 ENDIF
9528
9529
9530 IF (int24use == 1)THEN
9531
9532
9533
9535 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,xyz,numnod,sh_offset_tab%nnsh_oset)
9536 ENDIF
9537
9538 IF (nspmd>1) THEN
9539 IF(imonm == 2)THEN
9541 CALL spmd_barrier()
9543 END IF
9544 IF(imon>0)
CALL startime(timers,13)
9546 1 nodes%X ,nodes%D ,nodes%V ,nodes%VR ,nodes%MS ,
9547 2 nodes%IN ,nodes%BOUNDARY_ADD,nodes%BOUNDARY,nodes%WEIGHT,imsch,
9548 3 w ,isizxv ,ilenxv ,nodes%XDP)
9549 IF (imonm > 0)
CALL startime(timers,23)
9550 l1 = 1+nixs*numels + nsvois*nixs
9551 l2 = l1+6*numels10
9552 l3 = l2+12*numels20
9553
9554 IF (sh_offset_tab%NNSH_OSET > 0) THEN
9555 CALL assign_ptrx(ptrx,xyz,numnod)
9556 ELSEIF (impl_s > 0 .AND. ismdisp >0) THEN
9557 CALL assign_ptrx(ptrx,impbuf_tab%X_A,numnod)
9558 ELSE
9559 CALL assign_ptrx(ptrx,nodes%X,numnod)
9560 ENDIF
9561
9563 1 ipari ,ptrx ,nodes%V ,nodes%MS ,
9564 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9565 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9566 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9567 5 igrbric ,nodes%TEMP ,1 ,irlen7t ,islen7t ,
9568 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9569 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse,
9570 8 forneqs ,multi_fvm,interfaces)
9571 IF (imonm > 0)
CALL stoptime(timers,23)
9572 IF (imon>0)
CALL stoptime(timers,13)
9573 ENDIF
9574
9575 IF (int24use == 1)THEN
9576 IF (imon>0)
CALL startime(timers,timer_contfor)
9577 CALL spmd_exch_i24(ipari, interfaces%INTBUF_TAB ,nodes%ITAB ,
9578 * nodes%BOUNDARY_ADD, nodes%BOUNDARY ,intlist ,nbintc,
9579 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,3,
9580 * int24e2euse)
9581 IF (imon>0)
CALL stoptime(timers,timer_contfor)
9582 ENDIF
9583
9584 IF(nintstamp /= 0.AND.ftempvar21==1.AND.nspmd>1) THEN
9585 CALL spmd_i21tempcom(ipari,nodes%TEMP,interfaces%INTBUF_TAB,nsensor,sensors%SENSOR_TAB)
9586 ENDIF
9587
9588 IF(numfram/=0.AND.n2d==0)THEN
9589
9590
9591
9593 IF (imonm > 0)
CALL startime(timers,49)
9594 IF (impl_s >0) THEN
9595 CALL movfra_imp(xframe ,iframe ,nodes%X ,nodes%V ,nodes%A ,
9596 . nodes%VR ,nodes%AR ,nodes%D )
9597 ELSE
9598 CALL movfra2(xframe ,iframe ,nodes%X ,nodes%V ,nodes%VR ,
9599 . nodes%D )
9600 END IF
9601 IF (imonm > 0)
CALL stoptime(timers,49)
9602 IF (imon>0)
CALL stoptime(timers,6)
9603 ENDIF
9604
9605 IF (glob_therm%IDT_THERM == 1.AND.(tstop-tt)<=em20)THEN
9606 mstop_dt_therm = 1
9607 ENDIF
9608
9609#if defined(MYREAL8) && !defined(WITHOUT_LINALG)
9610 300 CONTINUE
9611#endif
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622 stop_or_add_cycle = 0
9623 bool_restart=.false.
9624
9625
9626 IF (((tt>tstop).OR.(mstop_dt_therm==1)).AND.imconv==1) THEN
9627 stop_or_add_cycle = 1
9628 IF (irad2r==0) THEN
9629 bool_restart = ((ilastanim==0.OR.ilastanim==1.OR.ilastanim==3).AND.
restart_file==1)
9630 ENDIF
9631 ENDIF
9632
9633
9635 . (ncycle/ncrst)*ncrst==ncycle.AND. irad2r==0 .OR.mrest==1.OR.(wmcheck==1.AND.ncycle/=1) ) THEN
9636 stop_or_add_cycle = 0
9637 bool_restart = .true.
9638 ENDIF
9639
9640 IF(wmcheck==1)THEN
9641 IF(ispmd==0)THEN
9642 filnam = 'CHECK_DATA'
9643 OPEN(unit=icheckd,file=filnam,access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN')
9644 WRITE(icheckd, fmt='(3A, I1)') '/RERUN/',rootnam(1:rootlen),'/',irun
9645 CLOSE(icheckd)
9646 ENDIF
9647 ENDIF
9648
9649 IF (bool_restart) THEN
9650 IF(imon>0)
CALL startime(timers,timer_io)
9651
9652 IF (glob_therm%IDT_THERM == 1)
CALL bcsdtth_copy(nodes%ICODT, nodes%ICODR, icodt0, icodr0, 2)
9653
9654 CALL bcsn(nodes%ICODE,nodes%ICODT,nodes%ICODR,parts0,partsav)
9655
9656 IF (int24use == 1)THEN
9657 ! e2e update fictive node position, velocity, mass
9658
9660 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9661 . xyz,numnod,sh_offset_tab%nnsh_oset)
9662 ENDIF
9663
9664 ! Interface communication : send updates to remote nodes - finalizatoin
9665
9666 IF(nspmd>1)THEN
9667 l1 = 1+nixs*numels + nsvois*nixs
9668 l2 = l1+6*numels10
9669 l3 = l2+12*numels20
9671 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9672 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9673 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9674 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9675 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
9676 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9677 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse,
9678 8 forneqs ,multi_fvm,interfaces)
9679 END IF
9680
9681
9682 IF (int24use == 1)THEN
9683 IF (imon>0)
CALL startime(timers,timer_contfor)
9684 CALL spmd_exch_i24(ipari, interfaces%INTBUF_TAB ,nodes%ITAB ,
9685 * nodes%BOUNDARY_ADD, nodes%BOUNDARY ,intlist ,nbintc,
9686 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,3,
9687 * int24e2euse)
9688
9689 CALL spmd_exch_i24(ipari, interfaces%INTBUF_TAB ,nodes%ITAB ,
9690 * nodes%BOUNDARY_ADD, nodes%BOUNDARY ,intlist ,nbintc,
9691 * iad_i24 ,fr_i24 ,sfr_i24,i24maxnsne,4,
9692 * int24e2euse)
9693
9694 IF (imon>0)
CALL stoptime(timers,timer_contfor)
9695 ENDIF
9696
9697
9698 IF(nintstamp /= 0.AND.ftempvar21==1.AND.nspmd>1) THEN
9699 CALL spmd_i21tempcom(ipari,nodes%TEMP,interfaces%INTBUF_TAB,nsensor,sensors%SENSOR_TAB)
9700 ENDIF
9701 ich = 0
9702
9705
9706 CALL wrrestp(element, nodes, af ,iaf ,ich ,element%PON%ADSKY ,
9707 . elbuf_tab ,xfem_tab ,interfaces%INTBUF_TAB ,multi_fvm ,mat_elem ,
9708 . h3d_data ,interfaces%INTBUF_FRIC_TAB ,subsets ,pinch_data ,ale_connectivity ,
9709 . t_monvol ,sensors , ebcs_tab ,dynain_data ,user_windows ,
9710 . output ,interfaces ,loads ,python ,names_and_titles ,
9711 . eigipm ,eigibuf ,eigrpm ,neipm ,leibuf ,
9712 . nerpm ,iflow ,rflow ,liflow ,lrflow ,
9713 . impbuf_tab ,impl_s ,impl_s0 ,nodes%MCP ,nodes%TEMP ,
9714 . forneqs ,unitab ,stack ,ndrape ,drape_sh3n ,
9715 . drape_sh4n ,drapeg ,restsize ,skews ,glob_therm ,
9716 . pblast ,rbe3)
9717
9718
9719 IF (multirest >0)THEN
9720 IF (restsize > multirests(irprev))multirests(irprev)=restsize
9721 ELSE
9722 IF (restsize > restartfilesize) restartfilesize=restsize
9723 ENDIF
9724
9725 IF((iddw/=0).AND.(mstop/=0.OR.tt+dt2>=tstop)) THEN
9727 1 taille,iparg,
9728 2 element%SHELL%IXC,ixq,ixt,ixp,ixtg,
9729 3 ixr,ixs,kxig3d,ipm,
9730 4 igeo,geo,poin_ump,cputime_mp,
9731 5 nbr_gpmp,cputime_mp_glob,tab_ump,pm,
9732 6 bufmat,tabmp_l ,tab_mat )
9733 IF(iddwstat/=0) THEN
9734 CALL printimeg(iparg,pm,ipm,element%SHELL%IXC,ixtg,ixs)
9735 ENDIF
9736 ENDIF
9737
9738 IF(imon>0)
CALL stoptime(timers,timer_io)
9739 END IF
9740
9741 IF (stop_or_add_cycle==1) THEN
9742
9743
9744
9745
9746
9747
9748
9749
9750 IF (ilastanim==2.OR.irad2r==1)THEN
9751 mstop=2
9752 GOTO 500
9753 ENDIF
9754
9755 state_anim = 0
9756 IF(mstop_dt_therm==0) THEN
9757 IF (ilastanim==1) THEN
9758 state_anim = 1
9759 ELSEIF (ilastanim==0.OR.ilastanim==3) THEN
9760 state_anim = 2
9761 END IF
9762 ELSE
9763 state_anim = 2
9764 ENDIF
9765
9766 state_h3d = 0
9767 IF(mstop_dt_therm==0) THEN
9768 IF (ilasth3d==1) THEN
9769 state_h3d = 1
9770 ELSEIF (ilasth3d==0.OR.ilasth3d==3) THEN
9771 state_h3d = 2
9772 END IF
9773 ELSE
9774 state_h3d = 2
9775 ENDIF
9776 IF( state_anim == 1 .OR. state_h3d == 1 ) THEN
9778 GOTO 100
9779 ELSEIF( state_anim == 2 .OR. state_h3d == 2 ) THEN
9780 mstop=2
9781 GOTO 500
9782 ENDIF
9783 ENDIF
9784
9785
9786
9787
9788 IF(dt2<=zero) THEN
9789 WRITE(iout,*)' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9790 WRITE(istdo,*)' **ERROR : TIME STEP LESS OR EQUAL ZERO'
9791
9792 IF ( istamping == 1) THEN
9793 WRITE(istdo,'(A)')' The run has gone to divergence.'
9794 WRITE(istdo,'(A)')' It could be due to a wrong definition of the interfaces between the tools and the blank.'
9795 WRITE(istdo,'(A)')' You may need to check if there is enough clearance between the tools,'
9796 WRITE(istdo,'(A)')' and that they do not penetrate each other during their travel.'
9797 WRITE(iout, '(A)')' The run has gone to divergence.'
9798 WRITE(iout, '(A)')' It could be due to a wrong definition of the interfaces between the tools and the blank.'
9799 WRITE(iout, '(A)')' You may need to check if there is enough clearance between the tools,'
9800 WRITE(iout, '(A)')' and that they do not penetrate each other during their travel.'
9801 ENDIF
9802
9803
9804 IF (int24use == 1) THEN
9805
9806
9808 . nodes%X,nodes%V,nodes%MS,nodes%ITAB,
9809 1 xyz,numnod,sh_offset_tab%nnsh_oset)
9810 ENDIF
9811
9812 IF(nspmd>1)THEN
9813 l1 = 1+nixs*numels + nsvois*nixs
9814 l2 = l1+6*numels10
9815 l3 = l2+12*numels20
9817 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9818 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9819 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9820 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9821 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
9822 6 irlen20 ,islen20 ,irlen20t,islen20t,irlen20e,
9823 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB ,int24e2euse ,
9824 8 forneqs ,multi_fvm,interfaces)
9825 END IF
9826
9827 IF(coupling%active) THEN
9828 CALL coupling_ongoing(coupling, ongoing)
9829
9830 DO WHILE (ongoing)
9831 dt2 = huge(dt2)
9832 CALL coupling_advance(coupling,dt2)
9833 CALL coupling_ongoing(coupling, ongoing)
9834 END DO
9835 CALL coupling_finalize(coupling)
9836 ENDIF
9837
9838 IF(ALLOCATED(isendto))DEALLOCATE(isendto)
9839 IF(ALLOCATED(ircvfrom))DEALLOCATE(ircvfrom)
9840 IF(ALLOCATED(intlist))DEALLOCATE(intlist)
9841 IF(ALLOCATED(intlist25))DEALLOCATE(intlist25)
9842 IF(ALLOCATED(niskyfi))DEALLOCATE(niskyfi)
9843 IF(ALLOCATED(niskyfie))DEALLOCATE(niskyfie)
9844 IF(ALLOCATED(fr_nbcc))DEALLOCATE(fr_nbcc)
9845 IF(ALLOCATED(fr_nbcci2))DEALLOCATE(fr_nbcci2)
9846 IF(ALLOCATED(dretri))DEALLOCATE(dretri)
9847 IF(ALLOCATED(xsec))DEALLOCATE(xsec)
9848 IF(ALLOCATED(irbkin_l))DEALLOCATE(irbkin_l)
9849 IF(ALLOCATED(icodt0))DEALLOCATE (icodt0)
9850 IF(ALLOCATED(icodr0))DEALLOCATE(icodr0)
9851 IF(ALLOCATED(element%PON%ISENDP))DEALLOCATE(element%PON%ISENDP)
9852 IF(ALLOCATED(element%PON%IRECVP))DEALLOCATE(element%PON%IRECVP)
9853 IF(ALLOCATED(irecvp_pxfem))DEALLOCATE(irecvp_pxfem)
9854 IF(ALLOCATED(isendp_crk))DEALLOCATE(isendp_crk)
9855 IF(ALLOCATED(irecvp_crk))DEALLOCATE(irecvp_crk)
9856 IF(ALLOCATED(cnel))DEALLOCATE(cnel)
9857 IF(ALLOCATED(addcnel))DEALLOCATE(addcnel)
9858 IF(ALLOCATED(addtmpl))DEALLOCATE(addtmpl)
9859 IF(ALLOCATED(tagel))DEALLOCATE(tagel)
9860 IF(ALLOCATED(ibufidel))DEALLOCATE(ibufidel)
9861 IF(ALLOCATED(indidel))DEALLOCATE(indidel)
9862 IF(ALLOCATED(ipartl))DEALLOCATE(ipartl)
9863 IF(ALLOCATED(eminx))DEALLOCATE(eminx)
9864 IF(nadmesh/=0)THEN
9868 IF(idel7ng>=1) DEALLOCATE(tagtrimc,tagtrimtg)
9869 END IF
9870 IF(ALLOCATED(stifn_tmp))DEALLOCATE(stifn_tmp)
9871 IF(ALLOCATED(stifr_tmp))DEALLOCATE(stifr_tmp)
9872 IF(ALLOCATED(acnd))DEALLOCATE(acnd)
9873 IF(ALLOCATED(arcnd))DEALLOCATE(arcnd)
9874 IF(ALLOCATED(stcnd))DEALLOCATE(stcnd)
9875 IF(ALLOCATED(strcnd))DEALLOCATE(strcnd)
9880 IF(ALLOCATED(fthreac))DEALLOCATE(fthreac)
9881 IF(ALLOCATED(fthdtm))DEALLOCATE(fthdtm)
9882 IF(ALLOCATED(freac))DEALLOCATE(freac)
9884 IF(
ALLOCATED(
grth))
DEALLOCATE(
grth)
9886 IF(ALLOCATED(igroupc))DEALLOCATE(igroupc)
9887 IF(ALLOCATED(igrouptg))DEALLOCATE(igrouptg)
9888 IF(ALLOCATED(igroups))DEALLOCATE(igroups)
9889 IF(ALLOCATED(gresav))DEALLOCATE(gresav)
9890 IF(ALLOCATED(sfem_nodvar))DEALLOCATE(sfem_nodvar)
9891 IF(ALLOCATED(sfem_nodvar_ale))DEALLOCATE(sfem_nodvar_ale)
9892 IF(ALLOCATED(partsav2))DEALLOCATE(partsav2)
9893 IF(imon>0) THEN
9894 IF(nvolu > 0)
CALL fvstats(monvol)
9896 IF(imonm>0)
CALL printime_interf(interfaces%INTBUF_TAB,ipari,intlist,nbintc,timers%REALTIME(1)*0.01d0)
9897 CALL printime(timers,glob_therm%ITHERM,output)
9898 ELSE
9900 ENDIF
9902 RETURN
9903 ENDIF
9904
9905 500 CONTINUE
9906
9907 IF(mstop/=0) THEN
9908 parallel_section = 0
9909
9910 IF (irad2r==1) THEN
9911 DO itsk=1,nthread
9913 END DO
9914 ENDIF
9915
9916 IF((ncycle/ncrst)*ncrst/=ncycle.AND.
9917 2 mrest/=1.AND.wmcheck/=1.AND.nspmd>1)THEN
9918 l1 = 1+nixs*numels + nsvois*nixs
9919 l2 = l1+6*numels10
9920 l3 = l2+12*numels20
9922 1 ipari ,nodes%X ,nodes%V ,nodes%MS ,
9923 2 imsch ,i2msch ,dt2prev ,intlist ,nbintc ,
9924 3 islen7 ,irlen7 ,islen11 ,irlen11 ,islen17 ,
9925 4 irlen17 ,ixs ,ixs(l3) ,nsensor ,
9926 5 igrbric ,nodes%TEMP ,2 ,irlen7t ,islen7t ,
9927 6 irlen20 ,islen20,irlen20t,islen20t,irlen20e,
9928 7 islen20e,nodes%IKINE ,diag_sms,sensors%SENSOR_TAB,interfaces%INTBUF_TAB,int24e2euse,
9929 8 forneqs ,multi_fvm,interfaces)
9930 ENDIF
9931
9932 IF(ALLOCATED(isendto))DEALLOCATE(isendto)
9933 IF(ALLOCATED(ircvfrom))DEALLOCATE(ircvfrom)
9934 IF(ALLOCATED(intlist25))DEALLOCATE(intlist25)
9935 IF(ALLOCATED(niskyfi))DEALLOCATE(niskyfi)
9936 IF(ALLOCATED(niskyfie))DEALLOCATE(niskyfie)
9937 IF(ALLOCATED(fr_nbcc))DEALLOCATE(fr_nbcc)
9938 IF(ALLOCATED(fr_nbcci2))DEALLOCATE(fr_nbcci2)
9939 IF(ALLOCATED(dretri))DEALLOCATE(dretri)
9940 IF(ALLOCATED(xsec))DEALLOCATE(xsec)
9941 IF(ALLOCATED(irbkin_l))DEALLOCATE(irbkin_l)
9942 IF(ALLOCATED(isendp))DEALLOCATE(isendp)
9943 IF(ALLOCATED(element%PON%ISENDP))DEALLOCATE(element%PON%ISENDP)
9944 IF(ALLOCATED(element%PON%IRECVP))DEALLOCATE(element%PON%IRECVP)
9945 IF(ALLOCATED(irecvp_pxfem))DEALLOCATE(irecvp_pxfem)
9946 IF(ALLOCATED(isendp_crk))DEALLOCATE(isendp_crk)
9947 IF(ALLOCATED(irecvp_crk))DEALLOCATE(irecvp_crk)
9948
9949 IF(ALLOCATED(cnel))DEALLOCATE(cnel)
9950 IF(ALLOCATED(addcnel))DEALLOCATE(addcnel)
9951 IF(ALLOCATED(addtmpl))DEALLOCATE(addtmpl)
9952 IF(ALLOCATED(tagel))DEALLOCATE(tagel)
9953 IF(ALLOCATED(ibufidel))DEALLOCATE(ibufidel)
9954 IF(ALLOCATED(indidel))DEALLOCATE(indidel)
9955
9956 IF(ALLOCATED(ipartl))DEALLOCATE(ipartl)
9957 IF(ALLOCATED(eminx))DEALLOCATE(eminx)
9958 IF(nadmesh/=0)THEN
9962 IF(idel7ng>=1) DEALLOCATE(tagtrimc,tagtrimtg)
9963 END IF
9964
9965
9970 IF(ALLOCATED(uvarl)) DEALLOCATE (uvarl)
9971 IF(ALLOCATED(supercellvol_l)) DEALLOCATE (supercellvol_l)
9972 IF(ALLOCATED(eint_l)) DEALLOCATE (eint_l)
9973 IF(ALLOCATED(rho_l)) DEALLOCATE (rho_l)
9974 IF(ALLOCATED(mom_l)) DEALLOCATE (mom_l)
9975 IF(ALLOCATED(sig_l)) DEALLOCATE (sig_l)
9976 IF(ALLOCATED(vold_l)) DEALLOCATE (vold_l)
9981 IF(ALLOCATED(v22max_l)) DEALLOCATE (v22max_l)
9982 IF(ALLOCATED(dx22min_l)) DEALLOCATE (dx22min_l)
9983 IF(ALLOCATED(int22_fcell_anim)) DEALLOCATE (int22_fcell_anim)
9984
9985
9992
9993
9994 CALL pblast_deallocate(pblast)
9995
9996
10000
10001
10002 IF (nslipring > 0) THEN
10003 DO i=1,nslipring
10005 ENDDO
10007 ENDIF
10008 IF (nretractor > 0) THEN
10009 DO i=1,nretractor
10011 DO k=1,2
10013 DEALLOCATE(
retractor(i)%TABLE(k)%X(1)%VALUES)
10015 DEALLOCATE(
retractor(i)%TABLE(k)%Y%VALUES)
10017 ENDIF
10018 ENDDO
10019 ENDDO
10021 ENDIF
10022
10023
10025
10027 IF (multi_fvm%NS_DIFF) THEN
10028 CALL diffusion%TERMINATE_DIFFUSION()
10029 ENDIF
10030
10031
10032 IF(nebcs > 0)CALL segvar%destroy()
10033
10034 IF(ALLOCATED(stifn_tmp))DEALLOCATE(stifn_tmp)
10035 IF(ALLOCATED(stifr_tmp))DEALLOCATE(stifr_tmp)
10036 IF(ALLOCATED(acnd))DEALLOCATE(acnd)
10037 IF(ALLOCATED(arcnd))DEALLOCATE(arcnd)
10038 IF(ALLOCATED(stcnd))DEALLOCATE(stcnd)
10039 IF(ALLOCATED(strcnd))DEALLOCATE(strcnd)
10044 IF(ALLOCATED(err_thk_sh3))DEALLOCATE(err_thk_sh3)
10045 IF(ALLOCATED(err_thk_sh4))DEALLOCATE(err_thk_sh4)
10051 . x_sms, p_sms,y_sms, z_sms, prec_sms, prec_sms3,
10052 . diag_sms3, lt_sms,
10056
10057 IF(ALLOCATED(fthreac))DEALLOCATE(fthreac)
10058 IF(ALLOCATED(fthdtm))DEALLOCATE(fthdtm)
10059 IF(ALLOCATED(freac))DEALLOCATE(freac)
10061 IF(
ALLOCATED(
grth))
DEALLOCATE(
grth)
10063 IF(ALLOCATED(gresav))DEALLOCATE(gresav)
10064 IF(nrbe3>0)THEN
10065 DEALLOCATE(rbe3%RRBE3)
10066 IF (iparit>0) DEALLOCATE(rbe3%RRBE3_PON)
10067 END IF
10068 IF(impl_s>0.OR.neig>0)THEN
10070#if defined(MUMPS5)
10072#endif
10073 END IF
10074 IF(imon>0) THEN
10075 IF(nvolu > 0)
CALL fvstats(monvol)
10077 IF(imonm>0)
CALL printime_interf(interfaces%INTBUF_TAB,ipari,intlist,nbintc,timers%REALTIME(1)*0.01d0)
10078 CALL printime(timers,glob_therm%ITHERM,output)
10079 ELSE
10081 ENDIF
10082 IF (glob_therm%ITHERM_FE > 0 )
CALL thermbilan(glob_therm)
10084
10085 DEALLOCATE(wibem, wrbem)
10086 IF(glob_therm%ITHERM_FE > 0 ) DEALLOCATE(fthe,fthesky)
10087 IF(glob_therm%INTHEAT > 0 ) DEALLOCATE(ftheskyi)
10088 IF(glob_therm%NODADT_THERM > 0 ) DEALLOCATE(condn,condnsky)
10089 IF(glob_therm%NODADT_THERM > 0.AND.glob_therm%INTHEAT > 0) DEALLOCATE(condnskyi)
10090
10091 DEALLOCATE(vrbym,vrrbym,arbym,arrbym)
10092 IF(iplyxfem > 0) THEN
10093 DO i=1,nplymax
10094 DEALLOCATE(
ply(i)%A)
10095 DEALLOCATE(
ply(i)%V)
10096 DEALLOCATE(
ply(i)%U)
10097 DEALLOCATE(
plysky(i)%FSKY)
10098 ENDDO
10099 ENDIF
10100 IF(intplyxfem > 0)
DEALLOCATE(
plyskyi%FSKYI)
10102 IF(ALLOCATED(noda_fext))DEALLOCATE(noda_fext)
10103 CALL output_deallocate_noda_pext()
10104 DEALLOCATE(npcont2)
10105
10106
10107 IF(ALLOCATED(fr_loc))DEALLOCATE (fr_loc)
10108 IF(ALLOCATED(fr_loci2m))DEALLOCATE (fr_loci2m)
10109 IF(ALLOCATED(icodt0))DEALLOCATE (icodt0)
10110 IF(ALLOCATED(icodr0))DEALLOCATE (icodr0)
10111 IF(ALLOCATED(isensint))DEALLOCATE(isensint)
10112
10114
10116
10117 CALL bcs%DEALLOCATE()
10118
10119 IF (ALLOCATED(rby6)) DEALLOCATE(rby6)
10120 IF (ALLOCATED(dxancg)) DEALLOCATE(dxancg)
10121 IF (ALLOCATED(nb25_candt)) DEALLOCATE(nb25_candt)
10122 IF (ALLOCATED(nb25_impct)) DEALLOCATE(nb25_impct)
10123 IF (ALLOCATED(nb25_dst1)) DEALLOCATE(nb25_dst1)
10124 IF (ALLOCATED(nb25_dst2)) DEALLOCATE(nb25_dst2)
10125 DEALLOCATE(igrouc)
10126 DEALLOCATE(igrounc)
10127
10128 IF (ALLOCATED(sph_work%VOXEL%NNOD)) DEALLOCATE(sph_work%VOXEL%NNOD)
10129 IF (ALLOCATED(sph_work%VOXEL%DXMIN)) DEALLOCATE(sph_work%VOXEL%DXMIN)
10130 IF (ALLOCATED(sph_work%VOXEL%DYMIN)) DEALLOCATE(sph_work%VOXEL%DYMIN)
10131 IF (ALLOCATED(sph_work%VOXEL%DZMIN)) DEALLOCATE(sph_work%VOXEL%DZMIN)
10132 IF (ALLOCATED(sph_work%VOXEL%DXMAX)) DEALLOCATE(sph_work%VOXEL%DXMAX)
10133 IF (ALLOCATED(sph_work%VOXEL%DYMAX)) DEALLOCATE(sph_work%VOXEL%DYMAX)
10134 IF (ALLOCATED(sph_work%VOXEL%DZMAX)) DEALLOCATE(sph_work%VOXEL%DZMAX)
10135
10136 RETURN
10137 ENDIF
10138
10140
10141
10142
10143
10144
10145 GO TO 100
10146
10147 1002 FORMAT(3x,'* IMPLICIT COMPUTATION TERMINATED WITH ',3x,
10148 . 'TOTAL NONLINEAR ITERATIONS:',i8)
10149 1003 FORMAT(3x,'* TOTAL NUM.OF MATRIX FACTORIZATION AND PCG ITERATION:'
10150 . ,2x,i5,2x,i8)
10151
10152
10153
10154 IF (vipercoupling) THEN
10155
10156 IF(ALLOCATED(viper%ITABM1))DEALLOCATE(viper%ITABM1)
10157 IF(ALLOCATED(viper%IXEM1))DEALLOCATE(viper%IXEM1)
10158 CLOSE(viper%id)
10159 ENDIF
10160
10161
10162 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 assinit_pxfem(addcne, inod, iad_elem, fr_elem, procne, lisendp, lirecvp)
subroutine assinit_crkxfem(addcne_crkxfem, inod_crkxfem, iad_elem, fr_elem, procne, lisendp, lirecvp)
subroutine assinit(addcne, iad_elem, fr_elem, procne, lisendp, lirecvp)
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_vitesse2(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_vitesse(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 prepare_debug(itab, 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 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 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(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_vitesse(nale, a, v, fzero, nodft, nodlt, w, vs, ifoam)
subroutine forani1(fani, a, nfia, nfea, nfoa, nodft, nodlt, fext, h3d_data)
subroutine forani2(fani, a, nfia, nfea, nodft, nodlt, h3d_data)
subroutine forani3(fani, a, ms, nfea, 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)
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, anin, 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(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(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(iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, fxbipm, fxbnod, onof, itag, onfelt, elbuf_str)
subroutine fxbyvit(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_1(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 i18main_kine_2(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 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_fanie(fani, fext, nfia, nfea, nodft, nodlt, h3d_data)
subroutine imp_solv(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_fanii(fani, fint, nfia, nodft, nodlt, h3d_data)
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 imp_fout(fani, a, ar, nfia, nfea, nodft, nodlt, h3d_data, impbuf_tab)
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(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(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(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(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(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_mult(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 lag_multp(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 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(sensors, h3d_data)
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)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine mvoludt(monvol, volmon)
type(fani_cell_) fani_cell
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 nc_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(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_vitesse(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)
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)
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, fani, anin, 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)
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, cont, partsav, icut, xcut, fint, fext, fopt, anin, 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, fncont, ftcont, iparth, fr_mv, ipart_state, sh4tree, sh3tree, temp, thke, err_thk_sh4, err_thk_sh3, inod_pxfem, fthreac, nodreac, gresav, diag_sms, sh4trim, sh3trim, fncont2, 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, pdama2, 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, fncontp2, ftcontp2, 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)
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(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(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(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(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)
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(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 vitesse(a, ar, v, vr, fzero, itab, nale)
subroutine vitessepinch(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)
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)