C SIGMA3 SOURCE AM 11/05/26 21:16:42 6982 SUBROUTINE SIGMA3(IPMAIL,IVADEP,NDEP,IVACAR,NCARR,IPMINT, & IVECT,IVAMAT,MELE,IMAT,NELMAT,NBGMAT,LHOOK,CMATE,IREPS2, & NBPTEL,NSTRS,MFR,NMATT,NBPGAU,ISOUS,LRE,LW,IVASTR,UZDPG, & RYDPG,RXDPG,IIPDPG) *---------------------------------------------------------------------* * __________________________ * * | | * * | CALCUL DES CONTRAINTES| * * |________________________| * * * * poutre,tuyau,linespring,tuyau fissure,barre,cerce,tuyo,shb8 * * * * * *---------------------------------------------------------------------* * * * ENTREES : * * ________ * * * * IPMAIL Pointeur sur un segment MELEME * * IVADEP Pointeur sur le chamelem de deplacements * * NDEP Nombre de composantes de deplacements * * IVACAR Pointeur sur les chamelems de caracteristiques * * NCARR Nombre de caracteristiques geometriques * * IVECT Flag indiquant si on a entree les axes locaux * * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou * * MELE Numero de l'element fini * * IMAT (2 il y a une matrice de HOOKE,1 non ) * * NELMAT Taille maxi des melval du materiau (No d'element) * * NBGMAT Taille maxi des melval du materiau (pt de gauss) * * LHOOK Dimension de la matrice de Hooke * * CMATE Nom du materiau * * IRESP2 Flag pour indiquer si on veut les contraintes * * de Piola-Kirchhoff * * NBPTEL Nombre de points par element * * NSTRS Nombre de composante de contraintes/deformations * * MFR Numero de formulation de l'element fini * * NMATT Nombre de composante de materiau (IMAT=1) * * pour une matrice de hooke * * NBPGAU Nombre de point d'integration pour la rigidite * * ISOUS NUMERO DE LA SOUS-ZONE * * LRE Nombre de ddl dans la matrice de rigidite * * LW Dimension du tableau de travail de l'element * * * * SORTIES : * * ________ * * * * IVASTR pointeur sur un segment MPTVAL contenant les * * les melvals de contraints * * * *---------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCHAML -INC SMINTE -INC SMELEME -INC SMCOORD -INC SMLREEL * SEGMENT WRK1 REAL*8 DDHOOK(LHOOK,LHOOK) ,XDDL(LRE) ,XSTRS(NSTRS) REAL*8 XE(3,NBBB) ,DDHOMU(NSTRS,NSTRS) ENDSEGMENT * SEGMENT WRK2 REAL*8 BPSS(3,3) ,BGENE(LHOOK,LRE) ENDSEGMENT * SEGMENT WRK3 REAL*8 WORK(LW) ENDSEGMENT * SEGMENT WRK5 REAL*8 XGENE(NSTN,LRN) ENDSEGMENT * SEGMENT WRK7 REAL*8 PROPEL(45) REAL*8 OUT(30),rel(1,1),work1(24) ENDSEGMENT * SEGMENT,MVELCH REAL*8 VALMAT(NV1) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * DIMENSION CRIGI(12),CMASS(12) CHARACTER*4 CMOT CHARACTER*8 CMATE * * INITIALISATION DU POINT AUTOUR DUQUEL SE FAIT LE MOUVEMENT * EN DEFORMATION PLANE GENERALISEE * IF (IFOUR.EQ.-3) THEN IP=IIPDPG SEGACT MCOORD IREF=(IP-1)*(IDIM+1) XDPGE=XCOOR(IREF+1) YDPGE=XCOOR(IREF+2) ELSE XDPGE=0.D0 YDPGE=0.D0 ENDIF * MELEME=IPMAIL NBNN=NUM(/1) NBELEM=NUM(/2) * NV1=NMATT SEGINI,MVELCH * NHRM=NIFOUR MINTE=IPMINT * IRTD=1 NBBB=NBNN SEGINI WRK1 C_______________________________________________________________________ C C NUMERO DES ETIQUETTES : C ETIQUETTES DE 1 A 98 POUR TRAITEMENT SPECIFIQUE A L ELEMENT C DANS LA ZONE SPECIFIQUE A CHAQUE ELEMENT COMMENCANT PAR : C 5 CONTINUE C ELEMENT 5 ETIQUETTES 1005 2005 3005 4005 ... C 44 CONTINUE C ELEMENT 44 ETIQUETTES 1044 2044 3044 4044 ... C_______________________________________________________________________ C IF (MELE.LE.100) &GOTO (99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 1 99,99,99,99,99,99,99,99,29,30,99,99,99,99,99,99,99,99,99,99, 2 99,29,43,99,45,46,99,99,99,30,99,99,99,99,99,99,99,99,99,99, 3 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 4 99,99,99,29,99,99,99,99,99,99,99,99,99,99,46,96,99,99,99,99 5 ),MELE IF (MELE.LE.200) &GOTO (99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 1 99,99,46,124,125,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 2 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 3 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 4 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 5 34),MELE-100 IF (MELE.LE.300) &GOTO (34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 1 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 2 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,258,34, 3 260,34,34,34,34,265),MELE-200 C 34 CONTINUE C GOTO 99 C_______________________________________________________________________ CC C____________________________________________________________________ C C ELEMENTS POUTRES TUYAUX C____________________________________________________________________ C 29 CONTINUE SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3029 IB=1,NBELEM C C ON CHERCHE LES DEPLACEMENTS C IE=1 NCARR1=NCARR IF(IVECT.EQ.1) NCARR1=NCARR-1 CALL ZERO(WORK,NCARR1,1) DO 4029 IGAU=1,NBNN MPTVAL=IVADEP DO 4039 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4039 CONTINUE C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C RANGEMENT DES CARACTERISTIQUES DANS WORK C SI LE VECTEUR EXISTE , IL EST EN DERNIERE POSITION C MPTVAL=IVACAR DO 6029 IC=1,NCARR1 IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) WORK(IC)=WORK(IC)+VELCHE(IGMN,IBMN) ELSE WORK(IC)=0.D0 ENDIF C IF (IGAU.EQ.NBNN) WORK(IC)=WORK(IC)/NBNN 6029 CONTINUE 4029 CONTINUE C C CAS OU ON A LU LE MOT VECTEUR C C IF ((IVECT.EQ.1).AND.(IFOUR.EQ.2)) THEN C IF (IVAL(NCARR).NE.0) THEN MELVAL=IVAL(NCARR) IBMN=MIN(IB,IELCHE(/2)) IP=IELCHE(1,IBMN) IREF=(IP-1)*(IDIM+1) DO 6129 IC=1,IDIM WORK(NCARR+IC-1)=XCOOR(IREF+IC) 6129 CONTINUE ELSE DO 6229 IC=1,IDIM WORK(NCARR+IC-1)=0.D0 6229 CONTINUE ENDIF ENDIF C C TRAITEMENT DU MATERIAU C MPTVAL=IVAMAT MELVAL=IVAL(1) * IF(CMATE.NE.'SECTION') THEN IBMN=MIN(IB,VELCHE(/2)) YOUNG=VELCHE(1,IBMN) C C CAS DES TUYAUX - ON CALCULE LES CARACTERISTIQUES DE LA POUTRE EQUIVA C IF(MELE.EQ.42) THEN PRES=WORK(4) CISA=WORK(5) WORK(4)=WORK(6) WORK(5)=WORK(7) WORK(6)=WORK(8) WORK(7)=PRES WORK(8)=CISA CALL TUYKAR(WORK,KERRE,2,YOUNG) ENDIF IF (KERRE.EQ.77) THEN CALL ERREUR(77) GOTO 510 ENDIF C C ON CHERCHE LES COEFF DES MAT DE HOOKE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL C------------- C PROVISOIRE C------------- * C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN C WORK(4)=DDHOOK(1,1)/WORK(1) WORK(5)=DDHOOK(2,2)/(MAX(WORK(3),WORK(1))) ELSE WORK(10)=DDHOOK(1,1)/WORK(4) WORK(11)=DDHOOK(4,4)/WORK(1) ENDIF ELSE IF (IMAT.EQ.1) THEN * DO 9029 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9029 CONTINUE IF(MELE.EQ.84) THEN C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL DOHTI2(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) ELSE C CALL DOHTIM(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) ENDIF ELSE C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL DOHPT2(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) ELSE C CALL DOHPTR(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) ENDIF ENDIF C------------- C PROVISOIRE C------------- C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN WORK(4)=VALMAT(1) AUX=VALMAT(2) WORK(5)=WORK(4)*0.5D0/(1.D0+AUX) ELSE C WORK(10)=VALMAT(1) AUX=VALMAT(2) WORK(11)=WORK(10)*0.5D0/(1.D0+AUX) ENDIF C------------- ENDIF * * CAS DE LA FORMULATION SECTION * ELSE IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) $ CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN * * ON REGARDE SI ON A LA COMPOSANTE MAHO * SI OUI, ON LA PREND * IF(IVAL(3).NE.0) THEN MELVAL=IVAL(3) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) $ CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IBMN=MIN(IB,IELCHE(/2)) IPMODL=IELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,IELCHE(/2)) IPMAT=IELCHE(1,IBMN) CALL FRIGIE(IPMODL,IPMAT,CRIGI,CMASS) IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) $ CALL DOHTIF(CRIGI,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) ENDIF ENDIF ENDIF C C ON CALCULE LES CONTRAINTES ( STOCKEES DANS WORK ET NON PAS DANS XSTRS C IF(MELE.EQ.84) THEN IF(CMATE.NE.'SECTION') THEN C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL TIMST2(XE,XDDL,WORK,WORK(12),WORK(25),IREPS2) ELSE C CALL TIMSTR(XE,XDDL,WORK,WORK(12),WORK(25),IREPS2) ENDIF ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL TIFST2(XE,XDDL,LHOOK,DDHOOK, $ WORK(12),WORK(25),IREPS2) ELSE CALL TIFSTR(XE,XDDL,LHOOK,DDHOOK,WORK, $ WORK(12),WORK(25),IREPS2) ENDIF ENDIF ELSE C IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL POUST2(XE,XDDL,WORK,WORK(12),WORK(25),IREPS2) ELSE C CALL POUSTR(XE,XDDL,WORK,WORK(12),WORK(25),IREPS2) ENDIF ENDIF C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=12 DO 7029 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7029 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=WORK(ID) ID=ID+1 7029 CONTINUE C 3029 CONTINUE IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK3 GOTO 510 C____________________________________________________________________ C C ELEMENT LINESPRING LISP ET LISM C____________________________________________________________________ C 30 CONTINUE NSTR=NSTRS NSTRS=2 C ATTENTION ON NE SERT PAS DE XSTRS(NSTRS) DS WRK1 C SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELELEMTS C DO 3030 IB=1,NBELEM C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4030 IGAU=1,NBNN MPTVAL=IVADEP DO 4030 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4030 CONTINUE C C ON CHERCHE LES COORDONNEES DES NOEUDS ET ON REACTUALISE C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CHERCHE LA MATRICE DE HOOKE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9030 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9030 CONTINUE IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHLIS(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) ENDIF C C ON CHERCHE LES CARACTERISTIQUES ON OUBLIE LE 2 IEME PT DE GAUSS C IE=1 DO 7030 IC=1,3,2 MPTVAL=IVACAR DO 7030 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IGMN=MIN(IC,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) WORK(IE)=VELCHE(IGMN,IBMN) ELSE WORK(IE)=0.D0 ENDIF IE=IE+1 7030 CONTINUE C C CALCUL DES CONTRAINTES C CALL LISPST(XE,WORK,DDHOOK,XDDL,WORK(11),NBPGAU,MELE,WORK(53), 1 I69,I70,I195,I157) C IF(I69.NE.0) THEN CALL ERREUR( 69) * RETURN ENDIF IF(I70.NE.0) THEN CALL ERREUR( 70) * RETURN ENDIF IF(I195.NE.0) THEN CALL ERREUR( 195) * RETURN ENDIF IF(I157.NE.0) THEN CALL ERREUR( 157) * RETURN ENDIF IE=1 DO 8030 IGAU=1,NBPTEL MPTVAL=IVASTR DO 8030 ICOMP=1,NSTR MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=WORK(52+IE) IE=IE+1 8030 CONTINUE 3030 CONTINUE IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK3 GOTO 510 C____________________________________________________________________ C____________________________________________________________________ C C ELEMENT TUYAU FISSURE C____________________________________________________________________ C 43 CONTINUE C ATTENTION ON NE SERT PAS DE XSTRS(NSTRS) DS WRK1 C SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3043 IB=1,NBELEM C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4043 IGAU=1,NBNN MPTVAL=IVADEP DO 4043 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4043 CONTINUE C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CHERCHE LES CARACTERISTIQUES C MPTVAL=IVACAR DO 7043 IC=1,9 MELVAL=IVAL(IC) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF 7043 CONTINUE C C ON CHERCHE LES COEFF DES MAT DE HOOKE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9043 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9043 CONTINUE IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHFIS1(VALMAT,WORK(1),CMATE,IFOUR,LHOOK,DDHOOK,IRTD) ENDIF C C ON CALCULE LES CONTRAINTES C CALL TUFIST(VALMAT,XDDL,WORK(1),DDHOOK,WORK(10), 1 WORK(20),WORK(31),I137) IF(I137.NE.0) INTERR(1)=ISOUS IF(I137.NE.0) INTERR(2)=IB C MPTVAL=IVASTR DO 6043 ICOMP=1,8 MELVAL=IVAL(ICOMP) IBMN=MIN(IB,VELCHE(/2)) VELCHE(1,IBMN)=WORK(30+ICOMP) 6043 CONTINUE C 3043 CONTINUE IF(I137.EQ.1) CALL ERREUR(137) IF(I137.EQ.2) CALL ERREUR(123) IF(I137.EQ.3) CALL ERREUR(266) IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK3 GOTO 510 C____________________________________________________________________ C C ELEMENT POINT (POI1) C____________________________________________________________________ C 45 CONTINUE * IF(MELE.EQ.45.AND.IFOUR.NE.-3) THEN GO TO 99 ENDIF * SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3045 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CALCULE LES DEFORMATIONS C CALL PO1EPS(XE,UZDPG,RYDPG,RXDPG,XDPGE,YDPGE,WORK) C MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) ELSE CALL ERREUR(5) GO TO 3045 ENDIF C C ON CHERCHE LE COEFF DE LA MAT DE HOOKE C MPTVAL=IVADEP MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9045 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9045 CONTINUE CALL DOHBRR(VALMAT,SECT,DDHOOK,IRTD) ENDIF MPTVAL=IVADEP C C REMPLISSAGE DU SEGMENT CONTENANT LES DEFORMATIONS C ID=1 DO 7045 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7045 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=WORK(ID)*DDHOOK(1,1) ID=ID+1 7045 CONTINUE MPTVAL=IVADEP C 3045 CONTINUE IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK3 GOTO 510 C____________________________________________________________________ C C BARRE ET CERCE C____________________________________________________________________ C 46 CONTINUE * IF(MELE.EQ.95.AND.IFOUR.NE.0.AND.IFOUR.NE.1) THEN GO TO 99 ENDIF * SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3046 IB=1,NBELEM KERRE=0 C C ON CHERCHE LES DEPLACEMENTS C NDDD=NDEP IF (IFOUR.EQ.-3.AND.MELE.EQ.46) NDDD=NDEP-3 IE=1 DO 4046 IGAU=1,NBNN MPTVAL=IVADEP DO 4046 ICOMP=1,NDDD MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4046 CONTINUE C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CALCULE LES DEFORMATIONS C IF(MELE.EQ.46) CALL BAREPS(XE,XDDL,WORK,IREPS2) IF(MELE.EQ.95) CALL CEREPS(XE,XDDL,WORK,IREPS2,KERRE) IF(MELE.EQ.123)CALL BAREP3(XE,XDDL,WORK,QSIGAU,POIGAU,NBPGAU,IB) IF(KERRE.NE.0) THEN CALL ERREUR(601) GO TO 3046 ENDIF MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) ELSE CALL ERREUR(5) GO TO 3046 ENDIF C C ON CHERCHE LE COEFF DE LA MAT DE HOOKE C MPTVAL=IVADEP MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9046 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9046 CONTINUE CALL DOHBRR(VALMAT,SECT,DDHOOK,IRTD) ENDIF MPTVAL=IVADEP C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=1 DO 7046 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7046 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=WORK(ID)*DDHOOK(1,1) ID=ID+1 7046 CONTINUE MPTVAL=IVADEP C 3046 CONTINUE IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF IF(MELE.EQ.95.AND.KERRE.EQ.1) CALL ERREUR(601) SEGSUP MVELCH,WRK1,WRK3 GOTO 510 C C____________________________________________________________________ C C ELEMENT BARRE 3D EXCENTRE (BAEX) C____________________________________________________________________ C 124 CONTINUE NBBB=NBNN NSTN=NBNN LRN =LRE SEGINI WRK1,WRK3,WRK5 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3108 IB=1,NBELEM C C ON RECUPERE LA SECTION DE L'ELEMENT, SES EXCENTREMENTS ET SON C ORIENTATION. LES CARACTERISTIQUES SONT RANGEES DANS WORK C SELON L'ORDRE SUIVANT: SECT EXCZ EXCY VX VY VZ C MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF END DO SECT=WORK(1) C C XGENE STOCKE LA MATRICE DE PASSAGE DE L'ELEMENT EXCENTRE C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) CALL MAPAEX(XE,NBNN,WORK,AL,XGENE,LRE,KERRE) IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB IF(KERRE.EQ.1) CALL ERREUR(128) C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4108 IGAU=1,NBNN MPTVAL=IVADEP DO 4108 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4108 CONTINUE C C ON CALCULE LES DEFORMATIONS C CALL BAEPEX(XDDL,XGENE,AL,XSTRS,LRE) C C ON CHERCHE LE COEFF DE LA MAT DE HOOKE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF(IB.LE.NELMAT.OR.NBGMAT.GT.1) CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9124 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9124 CONTINUE CALL DOHBRR(VALMAT,SECT,DDHOOK,IRTD) ENDIF C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=1 DO 7108 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7108 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ID)*DDHOOK(1,1) ID=ID+1 7108 CONTINUE C 3108 CONTINUE SEGSUP WRK1,WRK3,WRK5,MVELCH GOTO 510 C_______________________________________________________________________ C C LIA2 : element de liaison a 2 noeuds (6 ddl par C noeuds) C_______________________________________________________________________ C 125 CONTINUE NBBB=NBNN NSTN=3 LRN =3 SEGINI WRK1,WRK3,WRK5 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3109 IB=1,NBELEM C C RANGEMENT DES CARACTERISTIQUES DANS WORK C MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF END DO C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) CALL MAPALI(XE,NBNN,WORK,XGENE,KERRE) IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB IF(KERRE.EQ.1) CALL ERREUR(128) C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4109 IGAU=1,NBNN MPTVAL=IVADEP DO 4109 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4109 CONTINUE C C ON CALCULE LES CONTRAINTES (EFFORTS : F = K * U) C CALL SIGLIA(XGENE,XDDL,WORK,LRE,NBNN,XSTRS) C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=1 DO 7109 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7109 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ID) ID=ID+1 7109 CONTINUE C 3109 CONTINUE SEGSUP MVELCH,WRK1,WRK3,WRK5 GOTO 510 C_______________________________________________________________________ C C JOI1 : element de liaison a 2 noeuds (6 ddl par C noeuds) C_______________________________________________________________________ C 265 CONTINUE NBBB=NBNN NSTN=3 LRN =3 SEGINI WRK1,WRK3,WRK2 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3110 IB=1,NBELEM C C RANGEMENT DES CARACTERISTIQUES DANS WORK C MPTVAL=IVAMAT DO IC=1,NMATT IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF END DO C CALL MAPALU(NMATT,WORK,BPSS,IDIM) C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4110 IGAU=1,NBNN MPTVAL=IVADEP DO 4110 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4110 CONTINUE C C CALCUL DES DEPLACEMENTS LOCAUX C IAW1 = 101 IAW2 = IAW1 + LRE CALL JOILOC(XDDL,BPSS,WORK(IAW1),WORK(IAW2),LRE,IDIM) C C ON CALCULE LES CONTRAINTES (EFFORTS : F = K * U) C CALL ZERO(XSTRS,NSTRS,1) * CALL SIGJOI(NMATT,XDDL,WORK,LRE,XSTRS,IDIM,NSTRS,CMATE) C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=1 DO 7110 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7110 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ID) ID=ID+1 7110 CONTINUE C 3110 CONTINUE SEGSUP MVELCH,WRK1,WRK3,WRK2 GOTO 510 C____________________________________________________________________ C C ELEMENT TUYO C____________________________________________________________________ C 96 CONTINUE SEGINI WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3096 IB=1,NBELEM C C ON CHERCHE LES DEPLACEMENTS C IE=1 DO 4096 IGAU=1,NBNN MPTVAL=IVADEP DO 4096 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4096 CONTINUE C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C RANGEMENT DES CARACTERISTIQUES DANS WORK C MPTVAL=IVACAR DO 6096 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF 6096 CONTINUE C C CAS OU ON A LU LE MOT VECTEUR C C IF (IVECT.EQ.1) THEN IF (IVAL(NCARR).NE.0) THEN MELVAL=IVAL(NCARR) IBMN=MIN(IB,IELCHE(/2)) IP=IELCHE(1,IBMN) IREF=(IP-1)*(IDIM+1) DO 6196 IC=1,IDIM WORK(NCARR+IC-1)=XCOOR(IREF+IC) 6196 CONTINUE ELSE DO 6296 IC=1,IDIM WORK(NCARR+IC-1)=0.D0 6296 CONTINUE ENDIF C C CAS DU CHAMELEM COMVERTI C ELSE IF (IVECT.EQ.2) THEN DO 6496 IC=1,IDIM MELVAL=IVAL(NCARR+IC-3) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) WORK(NCARR+IC-3)=VELCHE(1,IBMN) ELSE WORK(NCARR+IC-3)=0.D0 ENDIF 6496 CONTINUE ENDIF C MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) YOUNG=VELCHE(1,IBMN) C C CAS DES TUYAUX - ON CALCULE LES CARACTERISTIQUES DE LA POUTRE EQUIVA C IF(MELE.EQ.42) THEN PRES=WORK(4) WORK(4)=WORK(5) WORK(5)=WORK(6) WORK(6)=WORK(7) WORK(7)=PRES CALL TUYKAR(WORK,KERRE,2,YOUNG) ENDIF IF (KERRE.EQ.77) THEN CALL ERREUR(77) GOTO 510 ENDIF C C ON CHERCHE LES COEFF DES MAT DE HOOKE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL C------------- C PROVISOIRE C------------- WORK(10)=DDHOOK(1,1)/WORK(4) WORK(11)=DDHOOK(2,2)/WORK(5) ELSE IF (IMAT.EQ.1) THEN * DO 9096 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9096 CONTINUE CALL DOHPTR(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) C------------- C PROVISOIRE C------------- WORK(10)=VALMAT(1) AUX=VALMAT(2) WORK(11)=WORK(10)*0.5D0/(1.D0+AUX) C------------- ENDIF C C ON CALCULE LES CONTRAINTES ( STOCKEES DANS WORK ET NON PAS DANS XSTRS C CALL POUSTR(XE,XDDL,WORK,WORK(12),WORK(25),IREPS2) C C REMPLISSAGE DU SEGMENT CONTENANT LES CONTRAINTES C ID=12 DO 7096 IGAU=1,NBPTEL MPTVAL=IVASTR DO 7096 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=WORK(ID) ID=ID+1 7096 CONTINUE C 3096 CONTINUE IF(IRTD.EQ.0.AND.IMAT.EQ.1) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK3 GOTO 510 c_______________________________________________________________________ c c ELEMENTS CIFL MACRO ELEMENT CISAILLEMENT FLEXION c____________________________________________________________________ c 258 CONTINUE NBNO=NBNN SEGINI WRK2,WRK3 c DO IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L'ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CHERCHE LES DEPLACEMENTS (UX1,UY1,RZ1,UX2,UY2,RZ2,UM,RM) C MPTVAL=IVADEP MELVAL=IVAL(1) XDDL(1)=VELCHE(MIN(1,VELCHE(/1)),MIN(IB ,VELCHE(/2))) XDDL(4)=VELCHE(MIN(3,VELCHE(/1)),MIN(IB ,VELCHE(/2))) MELVAL=IVAL(2) XDDL(2)=VELCHE(MIN(1,VELCHE(/1)),MIN(IB ,VELCHE(/2))) XDDL(5)=VELCHE(MIN(3,VELCHE(/1)),MIN(IB ,VELCHE(/2))) MELVAL=IVAL(3) XDDL(3)=VELCHE(MIN(1,VELCHE(/1)),MIN(IB ,VELCHE(/2))) XDDL(6)=VELCHE(MIN(3,VELCHE(/1)),MIN(IB ,VELCHE(/2))) MELVAL=IVAL(4) XDDL(7)=VELCHE(MIN(2,VELCHE(/1)),MIN(IB ,VELCHE(/2))) MELVAL=IVAL(5) XDDL(8)=VELCHE(MIN(2,VELCHE(/1)),MIN(IB ,VELCHE(/2))) C C PASSAGE DES AXES GLOBAUX AUX AXES LOCAUX C CALL MURLOC(XE,NBNN,LHOOK,LRE,BPSS,XH,BGENE) c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN C DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO C MPTVAL=IVACAR DO IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) WORK(IC)=VELCHE(1,IBMN) ELSE WORK(IC)=0.D0 ENDIF ENDDO C CALL DOHMUR(VALMAT,CMATE,IFOUR,WORK,LHOOK,DDHOOK,IRTD) ENDIF c DDHOOK(1,1)=DDHOOK(1,1)/(XH/2) DDHOOK(2,2)=DDHOOK(2,2)/(XH/2) DDHOOK(3,3)=DDHOOK(3,3)/ XH DDHOOK(4,4)=DDHOOK(4,4)/(XH/2) DDHOOK(5,5)=DDHOOK(5,5)/(XH/2) CALL DBST(BGENE,DDHOOK,XDDL,LRE,NSTRS,XSTRS) c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(1,IBMN)=XSTRS(ICOMP) ENDDO ENDDO C IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP MVELCH,WRK1,WRK2,WRK3 GOTO 510 C_______________________________________________________________________ C C ELEMENT DE COQUE VOLUMIQUE SHB8 C_______________________________________________________________________ C 260 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK7,MVELCH C C BOUCLE POUR TOUS LES ELEMENTS C DO IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C on cherche les deplacements C MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN MPTVAL=IVADEP DO ICOMP=1,3 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) WORK1(IE)=VELCHE(IGMN,IBMN) IE=IE+1 enddo enddo MPTVAL=IVAMAT DO 9070 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9070 CONTINUE PROPEL(1)=VALMAT(1) PROPEL(2)=VALMAT(2) DO IM=3,12 PROPEL(IM)=VALMAT(1) ENDDO PROPEL(3)=ireps2 PROPEL(14)=VALMAT(1) C C CALCUL DES CONTRAINTES C call SHB8 (7,XE,DDHOOK,PROPEL,WORK1,REL,OUT) MPTVAL=IVASTR IE=1 DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) DO IBG=1,5 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IBG,IBMN)=out(ICOMP+ (IBG-1)*NSTRS) ENDDO ENDDO ENDDO SEGSUP WRK1,WRK7,MVELCH GO TO 510 *____________________________________________________________________ 99 CONTINUE SEGSUP MVELCH,WRK1 MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='SIGM' CALL ERREUR(86) * 510 CONTINUE RETURN END