rigi4
C RIGI4 SOURCE OF166741 24/10/07 21:15:45 12016 *---------------------------------------------------------------------* * ________________________ * * | | * * | CALCUL DE LA RIGIDITE | * * |________________________| * * * * poutre,tuyau,linespring,tuyau fissure,barre,homogeneise,joint 3D, * * cerce, tuyo,joints 2D, litu,zone cohesives * * * *---------------------------------------------------------------------* * * * ENTREES : * * ________ * * * * MATE Numero du materiau * * MELE Numero de l'element fini * * IPMAIL Pointeur sur un segment MELEME * * IPMINT Pointeur sur un segment MINTE * * NBPGAU Nombre de point d'integration pour la rigidite * * LRE Nombre de ddl dans la matrice de rigidite * * NSTRS Nombre de composante de contraintes/deformations * * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou * * pour une matrice de hooke * * IVACAR Pointeur sur un segment MPTVAL pour les caracteri- * * stiques * * IVECT FLAG INDIQUANT SI ON A ENTRE UN VECTEUR LOCAL * * CMATE Nom du materiau * * MFR Numero de la formulation element fini * * NBGMAT Taille maxi des melval du materiau (pt de gauss) * * NELMAT Taille maxi des melval du materiau (No d'element) * * IMAT (2 il y a une matrice de HOOKE,1 non ) * * NMATT Nombre de composantes de materiau (IMAT=1) * * NCARR Nombre de caracteristiques geometriques * * ISOUS NUMERO DE LA SOUS-ZONE * * LW Dimension du tableau de travail * * IPORE nombre de fonctions de forme * * * * * SORTIES : * * ________ * * * * IPMATR pointeur sur la rigidite de la sous-zone * * * *---------------------------------------------------------------------* & IVAMAT,IVACAR,IVECT,CMATE,MFR,NBGMAT,NELMAT,IMAT,LHOOK, & NMATT,NCARR,ISOUS,LW,IPORE,IPMATR,IIPDPG) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCHAML -INC SMINTE -INC SMELEME -INC SMRIGID -INC SMMODEL -INC SMCOORD -INC SMLREEL -INC SMLMOTS SEGMENT WRK1 REAL*8 DDHOOK(NSTRS,NSTRS) ,DDHOMU(NSTRS,NSTRS) REAL*8 REL(LRE,LRE) , XE(3,NBBB) ENDSEGMENT SEGMENT WRK2 ENDSEGMENT SEGMENT WRK3 ENDSEGMENT SEGMENT WRK4 c cccccc REAL*8 BPSS(3,3),XEL(3,NBBB),rell(lre,lre),XPA(IDIM,IDIM) REAL*8 XPB(IDIM,IDIM) c cccccc ENDSEGMENT SEGMENT WRK5 REAL*8 XGENE(NSTN,LRN) ENDSEGMENT SEGMENT WRK6 REAL*8 PSS(3,3) ENDSEGMENT SEGMENT WRK7 REAL*8 PROPEL(14) REAL*8 OUT(5) REAL*8 WORK1(24*24) ENDSEGMENT SEGMENT,MVELCH REAL*8 VALMAT(NV1) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT CHARACTER*4 lesinc(7),lesdua(7) DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR'/ DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR'/ DATA X577/.577350269189626D0/ DIMENSION CRIGI(12),CMASS(12) CHARACTER*8 CMATE MELEME=IPMAIL NBNN=NUM(/1) NBELEM=NUM(/2) NV1=NMATT SEGINI,MVELCH XMATRI=IPMATR * NLIGRP=LRE * NLIGRD=LRE C Introduction du point autour duquel se fait le mouvement C de la section en defo plane generalisee C IIPDPG = numero du noeud/point support si defini pour le modele C IIPDPG > 0 si prise en compte du point support C <- Ici test equivalent a IF (IFOUR.EQ.-3)THEN IF (IIPDPG.GT.0) THEN IREF=(IIPDPG-1)*(IDIM+1) XDPGE=XCOOR(IREF+1) YDPGE=XCOOR(IREF+2) ELSE XDPGE=0.D0 YDPGE=0.D0 ENDIF * NHRM=NIFOUR * MINTE=IPMINT IRTD=1 * cas cmate 'STATIQUE' IF (mfr.eq.28) THEN jgn = 4 if (ifour.eq.2) then jgm = 6 segini mlmots iinc = mlmots do igm = 1,jgm enddo segini mlmots idua = mlmots do igm= 1,jgm enddo else if (ifour.lt.0) then jgm = 4 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.0) then jgm = 3 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.1) then * a faire endif ENDIF 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) * CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8 QUA9 & GOTO ( 99, 2, 99, 99, 99, 99, 99, 99, 99, 99, 99 * RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6 LIA8 MULT & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP FAC3 FAC4 FAC6 & , 99, 99, 99, 99, 99, 99, 29, 30, 99, 99, 99 * FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5 COQ8 TUYA TUFI COQ2 & , 99, 99, 99, 99, 99, 99, 99, 99, 29, 43, 99 * POI1 BARR RACO LSU2 COQ4 LISM COF3 RES2 LSU3 LSU4 LICO & , 45, 46, 99, 99, 99, 30, 99, 99, 99, 99, 99 * COQ6 CVS2 CVS3 CVT3 CVT6 CVQ4 CVQ8 THP5 TH13 THP6 TH15 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * THC8 TH20 ICT3 ICQ4 ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * IC15 TRIP QUAP CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4 & , 99, 99, 99, 99, 99, 99, 29, 85, 86, 87, 88 * JOI6 JOI8 LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3 & , 99, 99, 99, 92, 99, 99, 46, 96, 29, 29, 99 * HYQ4 & , 99),MELE IF (MELE.LE.200) * HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8 & GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12 PO13 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3 QUF4 CUF8 & , 99, 46, 124, 125, 126, 127, 99, 99, 99, 99, 99 * PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18 MT10 MP14 SEF3 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6 TR21 QU36 C216 P126 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TE56 PY91 TRH6 ???? ???? ???? ???? ???? ???? ???? ???? & , 99, 99, 92, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 168, 169, 170, 171, 172, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? & , 51, 51),MELE-100 IF (MELE.LE.300) * ???? ???? ???? ???? ???? ???? ???? ???? ???? & GOTO ( 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? & , 51, 51, 51, 51, 258, 51, 260, 51, 51, 51, 51 * JOI1 ZCO2 ZCO3 ZCO4 c cccccc & , 129, 266, 266, 266, 51,51,271,272),MELE-200 c cccccc 51 CONTINUE GOTO 99 2 CONTINUE if (cmate.eq.'IMPELAST'.or.cmate.eq.'IMPVOIGT'.or. &cmate.eq.'IMPREUSS'.or.cmate.eq.'IMPCOMPL') then MPTVAL=IVAMAT MELVAL=IVAL(1) if (ival(/1).gt.1) then melva1 = ival(2) else melva1 = 0 endif jddl = LRE/NBPGAU DO IB = 1,NBELEM * kich 1 pgau inutile IGAU = 1 JDIAG = 0 IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) if (cmate.eq.'IMPCOMPL') then MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL else XRAID = VELCHE(IGMN,IBMN) XTORS = XRAID if (melva1.gt.0) then XTORS = melva1.VELCHE(IGMN,IBMN) endif endif do j=1,jddl JDIAG = JDIAG + 1 if (j.le.3) then RE(JDIAG,JDIAG,IB) = XRAID RE(JDIAG,JDIAG+jddl,IB) = XRAID*(-1.D0) else RE(JDIAG,JDIAG,IB) = XTORS RE(JDIAG,JDIAG+jddl,IB) = XTORS*(-1.D0) endif enddo do j=jddl+1,LRE JDIAG = JDIAG + 1 if (j.le.jddl+3) then RE(JDIAG,JDIAG,IB) = XRAID RE(JDIAG,JDIAG-jddl,IB) = XRAID*(-1.D0) else RE(JDIAG,JDIAG,IB) = XTORS RE(JDIAG,JDIAG-jddl,IB) = XTORS*(-1.D0) endif enddo ENDDO SEGDES XMATRI goto 510 endif if (mele.eq.2) goto 99 C_______________________________________________________________________ C C ELEMENTS POUTRE TUYAU ET POUTRE TIMOSCHENKO C_______________________________________________________________________ C 29 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3029 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C CAS DE L'ELEMENT LITU OU LA MATRICE DE RIGIDITE EST NULLE C IF (MELE.EQ.98) THEN GOTO 8029 ENDIF C C RANGEMENT DES CARACTERISTIQUES DANS WORK C SI LE VECTEUR EXISTE , IL EST EN DERNIERE POSITION C NCARR1=NCARR ** IF(IVECT.EQ.1) NCARR1=NCARR-3 DO 4030 IGAU=1,NBNN 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)) ELSE ENDIF 6029 CONTINUE 4030 CONTINUE C MPTVAL=IVAMAT C C CAS DE L'ACOUSTIQUE PURE C IF (MELE.EQ.97) THEN DO 7029 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 7029 CONTINUE ELSE C C AUTRES CAS ...... C MELVAL=IVAL(1) * IF(CMATE.NE.'SECTION') THEN * ON RECUPERE LE MODULE D'YOUNG SI IMAT = 1 IF(IMAT.EQ.1) THEN IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(1,IBMN) YOUNG=VALMAT(1) C C ON CHERCHE LES COEFF DES MAT DE HOOKE SI IMAT = 2 C 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) SEGDES MLREEL * IF(MELE.EQ.42) THEN RINT=REXT-EPAIS SD =XPI*(REXT**2-RINT**2) YOUNG = DDHOOK(1,1)/SD ENDIF ENDIF C C CAS DES TUYAUX - ON CALCULE LES CARACTERISTIQUES DE LA POUTRE C EQUIVALENTE IF(MELE.EQ.42) THEN ** write(6,*) 'tuykar ncarr',ncarr, ** > work(6),work(7),work(8),work(9),work(10) ENDIF IF (KERRE.EQ.77) THEN GOTO 510 ENDIF C------------- C PROVISOIRE C------------- IF(IMAT.EQ.2) THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE * *ZZZZ ATTENTION A LA DIVISION PAR 0. * * IF(ABS(DDHOOK(2,2)).GE.XPETIT/XZPREC) then MOTERR(1:4)='SECY' RETURN ELSE ENDIF Else ENDIF 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 IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE C ENDIF ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE ENDIF ENDIF C------------- C PROVISOIRE C------------- IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN AUX=VALMAT(2) ELSE C AUX=VALMAT(2) 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) SEGDES MLREEL C 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) SEGDES MLREEL * ELSE IBMN=MIN(IB,IELCHE(/2)) IPMODL=IELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,IELCHE(/2)) IPMAT=IELCHE(1,IBMN) IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) ENDIF ENDIF ENDIF ENDIF C C FIN TRAITEMENT DES DONNEES MATERIAUX C IF(MELE.EQ.97) THEN ELSE IF(MELE.EQ.84) THEN IF(CMATE.NE.'SECTION') THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE ENDIF * ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN $ DDHOOK,KERRE) ELSE $ DDHOOK,KERRE) ENDIF ENDIF ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN & LHOOK, DDHOOK, KERRE) ELSE & LHOOK, DDHOOK, KERRE) ENDIF ENDIF C IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB C 4029 CONTINUE 8029 CONTINUE * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3029 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR return ENDIF SEGDES XMATRI SEGSUP WRK1,WRK3,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENTS LINESPRING LISP ET LISM C_______________________________________________________________________ C 30 CONTINUE NBBB=NBNN NSTRS=2 SEGINI WRK1,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3030 IB=1,NBELEM C C ON CHRCHE LES COORDONNEES DES NOEUDS C C C ON CHERCHE LES COEFFS DE 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) 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) ENDIF C C ON CHERCHE LES CARACTERISTIQUES ON OUBLIE LE 2 IEME POINT DEGAUS C IE=0 MPTVAL=IVACAR DO IC=1,3,2 DO ID=1,NCARR IE=IE+1 MELVAL=IVAL(ID) IGMN=MIN(IC,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) enddo enddo C C CALCUL DE LA RIGIDITE C C IF(I70.EQ.1) INTERR(1)=IB IF(I158.EQ.1) INTERR(1)=IB IF(I343.EQ.1) INTERR(1)=IB * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3030 CONTINUE C IF(I70.EQ.1) CALL ERREUR(70) IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF SEGDES XMATRI SEGSUP WRK1,WRK3,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENT TUYAU FISSURE C_______________________________________________________________________ C 43 CONTINUE NBBB=NBNN NSTRS=2 SEGINI WRK1,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3043 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C 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) 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) ENDIF C C CHERCHER LES CARACTERISTIQUES C MPTVAL=IVACAR DO 4043 IC=1,NCARR MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) 4043 CONTINUE C C ON CALCULE SA RAIDEUR C IF(I137.NE.0) INTERR(1)=ISOUS IF(I137.NE.0) INTERR(2)=IB C C REMPLISSAGE DE XMATRI C C 3043 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF SEGDES XMATRI SEGSUP WRK1,WRK3,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENT POI1 C_______________________________________________________________________ C 45 CONTINUE if (cmate.eq.'IMPELAST'.or.cmate.eq.'IMPVOIGT'.or. &cmate.eq.'IMPREUSS'.or.cmate.eq.'IMPCOMPL') then MPTVAL=IVAMAT MELVAL=IVAL(1) if (ival(/1).gt.1) then melva1 = ival(2) else melva1 = 0 endif DO IB = 1,NBELEM JDIAG = 0 * SEGINI XMATRI * IMATTT(IB)=XMATRI IBMN=MIN(IB,VELCHE(/2)) do igau = 1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) XRAID = VELCHE(IGMN,IBMN) XTORS = XRAID if (melva1.gt.0) then XTORS = melva1.VELCHE(IGMN,IBMN) endif do j =1,LRE JDIAG = JDIAG + 1 if (j.le.3) then RE(JDIAG,JDIAG,IB) = XRAID else RE(JDIAG,JDIAG,IB) = XTORS endif enddo enddo * SEGDES XMATRI ENDDO SEGDES XMATRI goto 510 endif IF (CMATE.EQ.'MODAL') THEN * MODAL DO IB = 1,NBELEM MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) XFREQ=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) XMASS=VELCHE(1,IBMN) OMEG = 2. * XPI * XFREQ RE(1,1,IB) = XMASS * OMEG * OMEG cbp-2017-10-02 if (xfreq.lt.0) RE(1,1,IB) = RE(1,1,IB) * (-1.) if (XFREQ.LT.0.D0) RE(1,1,IB) = 0.D0 ENDDO GOTO 510 * ELSE IF (CMATE.EQ.'STATIQUE') THEN * STATIQUE DO IB = 1,NBELEM MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,IELCHE(/2)) idepl=IELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,IELCHE(/2)) itreac=IELCHE(1,IBMN) if (ierr.ne.0) return re(1,1,IB) = x1 ENDDO SEGDES XMATRI GOTO 510 ENDIF * IF(MELE.EQ.45.AND.IFOUR.NE.-3) THEN GOTO 99 ENDIF NBBB=NBNN SEGINI WRK1,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3045 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DE L ELEMENT IB C C C C ON RECUPERE LA SECTION DE L'ELEMENT C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) 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) 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 ENDIF C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3045 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF SEGDES XMATRI SEGSUP WRK1,WRK3,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENTS BARRE ET CERCE C_______________________________________________________________________ C 46 CONTINUE * IF(MELE.EQ.95.AND.IFOUR.NE.0.AND.IFOUR.NE.1) THEN GO TO 99 ENDIF NBBB=NBNN SEGINI WRK1,WRK3 IF(MELE.EQ.123) THEN NSTN=NBNN LRN =LRE SEGINI WRK5 ENDIF C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3046 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DE L ELEMENT IB C C C C ON RECUPERE LA SECTION DE L'ELEMENT C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) 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) 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 ENDIF IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3046 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF SEGDES XMATRI SEGSUP WRK1,WRK3,MVELCH IF(MELE.EQ.123) SEGSUP WRK5 GOTO 510 C C_______________________________________________________________________ C C ELEMENT BARRE 3D EXCENTRE (BAEX) C_______________________________________________________________________ C 124 CONTINUE NBBB=NBNN NBNO=NBNN NSTRS1=NSTRS NSTRS=NBNN SEGINI WRK1,WRK2,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 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)) ELSE ENDIF END DO 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) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9108 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 9108 CONTINUE IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) ENDIF C C BGENE STOCKE LA MATRICE DE PASSAGE DE L'ELEMENT EXCENTRE C IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3108 CONTINUE NSTRS=NSTRS1 SEGDES XMATRI SEGSUP WRK1,WRK2,WRK3,MVELCH GOTO 510 C_______________________________________________________________________ C C LIA2 : element de liaison a 2 noeuds (6 ddl par noeuds) C_______________________________________________________________________ C 125 CONTINUE NBBB=NBNN NBNO=NBNN SEGINI WRK1,WRK2,WRK3,WRK4 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3109 IB=1,NBELEM C MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO C IF(KERRE.NE.0) INTERR(1)=ISOUS IF(KERRE.NE.0) INTERR(2)=IB C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3109 CONTINUE SEGDES XMATRI SEGSUP WRK1,WRK2,WRK3,MVELCH GOTO 510 *------------------------------------------------------------- C_______________________________________________________________________ C C JOI1 : element de liaison a 2 noeuds (6 ddl par noeuds) C_______________________________________________________________________ C 129 CONTINUE NBBB=NBNN NBNO=NBNN SEGINI WRK1,WRK2,WRK3,WRK4 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3110 IB=1,NBELEM 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) SEGDES MLREEL IF(IDIM.EQ.2) THEN NCA=2 ELSE NCA=6 ENDIF * MPTVAL=IVACAR DO IC=1,NCA IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO ELSE DO IC=1,NMATT IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO c c on calcule la matrice de rigidité locale c ENDIF c c on passe en repère global c IAW1=101 IAW2=IAW1+LRE*LRE IAW3=IAW2+LRE*LRE IAW4=IAW3+LRE*LRE * C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * * SEGDES XMATRI 3110 CONTINUE SEGDES XMATRI SEGSUP WRK1,WRK2,WRK3,MVELCH GOTO 510 *------------------------------------------------------------- c c element coaxial COS2 (3D pour liaison acier-beton) c 271 continue NBBB=NBNN lw=5 SEGINI WRK1,WRK4,wrk3 do 3271 ib= 1,nbelem C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C MPTVAL=IVAmat if(imat.eq.1) then DO IC=1,2 IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO ELSE MELVAL=IVAL(1) IBMN=MIN(IB,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL if(idim.eq.3) then else if (idim.eq.1.or.idim.eq.2) then endif segdes mlreel endif C C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C xv1= xe(1,2)-xe(1,1) yv1= xe(2,2)-xe(2,1) zv1=0.d0 if( idim.eq.3) zv1 = xe(3,2)-xe(3,1) xl= sqrt(xv1*xv1 + yv1*yv1 + zv1*zv1) C C recuperation de la section et calcul du diamètre C MPTVAL=IVACAR DO 2712 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IGMN = VELCHE(/1) IBMN=MIN(IB,VELCHE(/2)) SECA =VELCHE(IGMN,IBMN) 2712 CONTINUE diam = sqrt(4.d0*SECA/xpi) C xls1 = (3.d0*xpi*diam*xl)/8.d0 xls2 = (1.d0*xpi*diam*xl)/8.d0 xln1 = (3.d0*diam*xl)/8.d0 xln2 = (1.d0*diam*xl)/8.d0 if (idim.eq.2) then C cas de matrice elastique rel(1,1)= xks1 rel(1,3)= xks2 rel(1,5)= -xks2 rel(1,7)=-xks1 rel(7,7)= xks1 rel(7,1)=-xks1 rel(7,3)= -xks2 rel(7,5)= xks2 rel(3,3)=xks1 rel(3,5)=-xks1 rel(3,1)= xks2 rel(3,7)= -xks2 rel(5,5)=xks1 rel(5,3)=-xks1 rel(5,1)= -xks2 rel(5,7)= xks2 c --------------------------- rel(2,2)= xkn1 rel(2,4)= xkn2 rel(2,6)= -xkn2 rel(2,8)=-xkn1 rel(8,8)= xkn1 rel(8,2)=-xkn1 rel(8,4)= -xkn2 rel(8,6)= xkn2 rel(4,4)=xkn1 rel(4,6)=-xkn1 rel(4,2)= xkn2 rel(4,8)= -xkn2 rel(6,6)=xkn1 rel(6,4)=-xkn1 rel(6,2)= -xkn2 rel(6,8)= xkn2 else if (idim.eq.3) then C cas de matrice elastique rel(1,1)= xks1 rel(1,4)= xks2 rel(1,7)= -xks2 rel(1,10)=-xks1 rel(10,10)= xks1 rel(10,1)=-xks1 rel(10,4)= -xks2 rel(10,7)= xks2 rel(4,4)=xks1 rel(4,7)=-xks1 rel(4,1)= xks2 rel(4,10)= -xks2 rel(7,7)=xks1 rel(7,4)=-xks1 rel(7,1)= -xks2 rel(7,10)= xks2 C ------- remplissage de KN ------------ rel(2,2)= xkn1 rel(2,5)= xkn2 rel(2,8)= -xkn2 rel(2,11)=-xkn1 rel(11,11)= xkn1 rel(11,2)=-xkn1 rel(11,5)= -xkn2 rel(11,8)= xkn2 rel(5,5)=xkn1 rel(5,8)=-xkn1 rel(5,2)= xkn2 rel(5,11)= -xkn2 rel(8,8)=xkn1 rel(8,5)=-xkn1 rel(8,2)= -xkn2 rel(8,11)= xkn2 c------------ rel(3,3)= xkn1 rel(3,6)= xkn2 rel(3,9)= -xkn2 rel(3,12)=-xkn1 rel(12,12)= xkn1 rel(12,3)=-xkn1 rel(12,6)= -xkn2 rel(12,9)= xkn2 rel(6,6)=xkn1 rel(6,9)=-xkn1 rel(6,3)= xkn2 rel(6,12)= -xkn2 rel(9,9)=xkn1 rel(9,6)=-xkn1 rel(9,3)= -xkn2 rel(9,12)= xkn2 endif do ia = 1, 4 do ic = 1,4 do io=1,idim do iu=1,idim xpa(io,iu)= rel( ia*idim-idim+io,ic*idim -idim +iu) enddo enddo do io=1,idim do iu=1,idim rell( ia*idim-idim+io,ic*idim -idim +iu) = xpb(io,iu) enddo enddo enddo enddo C C REMPLISSAGE DE XMATRI C 3271 continue SEGDES XMATRI SEGSUP WRK1,WRK3,WRK4 GOTO 510 c cccccc C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE COA2 C C_______________________________________________________________________ C 272 continue NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C C BOUCLE POUR TOUS LES ELEMENTS C DO 2721 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C CALCUL DES AXES LOCAUX C DO 2722 IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C . BGENE,DJAC,IRRT,IDIM,NBNN,NSTRS,LRE) IF(IRRT.NE.0) THEN INTERR(1)=IB GOTO 9985 ENDIF C C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C xv1= xe(1,2)-xe(1,1) yv1= xe(2,2)-xe(2,1) zv1=0.d0 if( idim.eq.3) zv1 = xe(3,2)-xe(3,1) xl= sqrt(xv1*xv1 + yv1*yv1 + zv1*zv1) C C recuperation de la section et calcul du diamètre C MPTVAL=IVACAR DO 2729 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IGMN = VELCHE(/1) IBMN=MIN(IB,VELCHE(/2)) SECA =VELCHE(IGMN,IBMN) 2729 CONTINUE diam = sqrt(4.d0*SECA/xpi) C DJAC=DJAC*POIGAU(IGAU) C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 2723 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 2723 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) END IF C C CALCUL ET INTEGRATION DE BDB C 2722 CONTINUE C do ia = 1,4 do ic = 1,4 do io=1,idim do iu=1,idim xpa(io,iu)= rel( ia*idim-idim+io,ic*idim -idim +iu) enddo enddo do io=1,idim do iu=1,idim rell( ia*idim-idim+io,ic*idim -idim +iu) = xpb(io,iu) enddo enddo enddo enddo C C REMPLISSAGE DE XMATRI C 2721 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C c SEGDES XMATRI 9985 CONTINUE SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 *----------------------------------------------------------------------- C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JOI2 C C_______________________________________________________________________ C 85 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C C BOUCLE POUR TOUS LES ELEMENTS C DO 3085 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C CALCUL DES AXES LOCAUX C C CCC IF (NOQUAL.EQ.1) THEN CCCC NOEUDS TROP VOISINS CCC INTERR(1)=IB CCCC *******MESSAGE D'ERREUR 323 A ADAPTER AUX JOINTS CCC CALL ERREUR(323) CCC ELSE IF ( NOQUAL.EQ.2 ) THEN CCCC JOINT NON PLAN CCC INTERR(1)=IB CCCC *******MESSAGE D'ERREUR 323 A ADAPTER AUX JOINTS CCC CALL ERREUR(323) CCC RETURN CCC ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO 4085 IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C + BGENE,DJAC,IRRT) DJAC=DJAC*POIGAU(IGAU) * IF (IFOUR.EQ.0) THEN C C EN AXISYMETRIE, ON MULTIPLIE PAR R C (R=RAYON DE COURBURE DU POINT DE GAUSS) C RAYON=0.0D0 * DO 5085 IRAY=1,NUMSUP RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) ) 5085 CONTINUE * modif TC * dr = XE(1,2)-xe(1,1) * ra= XE(1,1) * rb= XE(1,2) * rayona = rb*rb*rb/6.d0 - 0.5d0*ra*ra*rb +ra*ra*ra /3.d0 * rayona=rayona *2.d0 /dr / dr * rayonb= rb*rb*rb/3.d0 - 0.5d0*ra*rb*rb +ra*ra*ra /6.d0 * rayonb=rayonb *2.d0 / dr / dr * rayon= rayona * if(igau.eq.2) rayon=rayonb DJAC=DJAC*RAYON ENDIF C C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9085 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9085 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C 4085 CONTINUE C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3085 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JGI2 C C_______________________________________________________________________ C 170 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 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 C C C CALCUL DES AXES LOCAUX C C C BOUCLE SUR LES POINTS DE GAUSS C DO IGAU=1,NBPGAU C C ON CHERCHE L EPAISSEUR DU JOINT C EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C CcPPj CALL BJO2GN(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK, CcPPj. EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT) . EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT) DJAC=DJAC*POIGAU(IGAU) C IF (IFOUR.EQ.0) THEN C C EN AXISYMETRIE, ON MULTIPLIE PAR R C (R=RAYON DE COURBURE DU POINT DE GAUSS) C RAYON=0.0D0 DO IRAY=1,NUMSUP RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) ) ENDDO DJAC=DJAC*RAYON ENDIF C C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C ENDDO C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JCT3 en 2D cisaillement C C_______________________________________________________________________ C 168 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 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 C C C CALCUL DES AXES LOCAUX C C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JGT3' RETURN ELSE IF ( NOQUAL.EQ.2) THEN INTERR(1)=IB MOTERR(1:4) = 'JGT3' RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO IGAU=1,NBPGAU C 4 C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C + BGENE,DJAC,IRRT) DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C ENDDO C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JGT3 GENERALISE C C_______________________________________________________________________ C 171 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 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 C C C CALCUL DES AXES LOCAUX C C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JGT3' RETURN ELSE IF ( NOQUAL.EQ.2) THEN INTERR(1)=IB MOTERR(1:4) = 'JGT3' RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO IGAU=1,NBPGAU C C ON CHERCHE L'EPAISSEUR DU JOINT C EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF C 4 C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C CcPPj CALL BJT3G(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK, + EPAIST,BGENE,DJAC,IRRT) DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C ENDDO C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JCI4 en 2D cisaillement C C_______________________________________________________________________ C 169 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 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 C C C CALCUL DES AXES LOCAUX C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JCI4' RETURN ELSE IF ( NOQUAL.EQ.2 ) THEN INTERR(1)=IB MOTERR(1:4) = 'JCI4' RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C ENDDO C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JGI4 GENERALISE C C_______________________________________________________________________ C 172 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 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 C C C CALCUL DES AXES LOCAUX C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JGI4' RETURN ELSE IF ( NOQUAL.EQ.2 ) THEN CbPPj INTERR(1)=IB CbPPj MOTERR(1:4) = 'JGI4' CbPPj CALL ERREUR(766) CbPPj RETURN WRITE(IOIMP,*)'RIGI4(WARNING): JGI4 element number',IB, . ' not planar' ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO IGAU=1,NBPGAU C C ON CHERCHE L'EPAISSEUR DU JOINT C EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C CcPPj CALL BJO4G(IGAU,XEL,BPSS,SHPTOT,SHPWRK,EPAIST,BGENE,DJAC,IRRT) . IRRT) DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C ENDDO C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JOI3 SANS TEST DE PLANEITE C ET SANS REPERE LOCAL C C_______________________________________________________________________ C 86 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C C BOUCLE POUR TOUS LES ELEMENTS C DO 3086 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C BOUCLE SUR LES POINTS DE GAUSS C DO 4086 IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C + BGENE,DJAC,IRRT) DJAC=DJAC*POIGAU(IGAU) * IF (IFOUR.EQ.0) THEN C C EN AXISYMETRIE, ON MULTIPLIE PAR R C (R=RAYON DE COURBURE DU POINT DE GAUSS) C RAYON=0.0D0 DO 5086 IRAY=1,NUMSUP RAYON=RAYON +( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) ) 5086 CONTINUE DJAC=DJAC*RAYON ENDIF C C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9086 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9086 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C 4086 CONTINUE C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3086 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JOT3 C C_______________________________________________________________________ C 87 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C C BOUCLE POUR TOUS LES ELEMENTS C DO 3087 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C CALCUL DES AXES LOCAUX C C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JOT3' RETURN ELSE IF ( NOQUAL.EQ.2) THEN INTERR(1)=IB MOTERR(1:4) = 'JOT3' RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO 4087 IGAU=1,NBPGAU C 4 C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C + BGENE,DJAC,IRRT) DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9087 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9087 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C 4087 CONTINUE C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3087 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE JOI4 C C_______________________________________________________________________ C 88 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C C BOUCLE POUR TOUS LES ELEMENTS C DO 3088 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C CALCUL DES AXES LOCAUX C IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4) = 'JOI4' RETURN ELSE IF ( NOQUAL.EQ.2 ) THEN INTERR(1)=IB MOTERR(1:4) = 'JOI4' RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO 4088 IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIEN <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB ENDIF C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9088 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9088 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C 4088 CONTINUE C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3088 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISE TRIH C_______________________________________________________________________ C 92 CONTINUE NBNO=NBNN NBBB=NBNN LRN =NBNN NSTN=3 SEGINI WRK1,WRK2 ,WRK5 I195=0 DO 3092 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C * MPTVAL=IVAMAT DO 9092 IM=1,10 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 9092 CONTINUE C C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB C RHOF =VALMAT(4) E =VALMAT(6) C =VALMAT(7) RHOREF=VALMAT(8) CREF =VALMAT(9) RLCAR =VALMAT(10) C C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB C MPTVAL=IVACAR IF(IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL =VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU =VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) XINERT=VELCHE(1,IBMN) EI = E*XINERT/(EPS*EPS) ELSE MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL =VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU =VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) C E REPRESENTE LA RIGIDITE MODALE DE LA POUTRE EI = E /(EPS*EPS) ENDIF C C CALCUL DES COEFFICIENTS DE NORMALISATION C COEFPR=(RHOREF*CREF*CREF)/RLCAR VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL) VKL2 = EI/SCEL C C BOUCLE SUR LES POINTS DE GAUSS C ISDJC=0 DO 4092 IGAU=1,NBPGAU # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT) IF(IRRT.NE.1) GOTO 5092 DJAC=DJAC*POIGAU(IGAU) 4092 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3092 CONTINUE C C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR C 5092 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1)=IB ENDIF ENDIF IF(I195.NE.0) INTERR(1)=I195 SEGDES XMATRI SEGSUP WRK1,WRK2,WRK5,MVELCH GOTO 510 *_______________________________________________________________________ * * ELEMENT TUYO *_______________________________________________________________________ * 96 CONTINUE NBNO=IPORE NBBB=NBNN SEGINI WRK1,WRK2,WRK3,WRK6 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3096 IB=1,NBELEM KERRE=0 C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C * XL=(XE(1,2)-XE(1,1))**2+(XE(2,2)-XE(2,1))**2+ . (XE(3,2)-XE(3,1))**2 XL=SQRT(XL) IF(XL.EQ.0.D0) THEN KERRE=1 GO TO 3096 ENDIF C C RANGEMENT DES CARACTERISTIQUES DANS WORK C ON SUPPOSE QU'ELLES SONT CONSTANTES POUR L'ELEMENT C VX VY VZ sont supposes etre a la fin C ** write(6,*) 'rigi4 en 2695' MPTVAL=IVACAR DO 6096 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 6096 CONTINUE C C TRAITEMENT DU VECTEUR 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 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 CALCUL DU REPERE LOCAL C IF(KERRE.NE.0) THEN INTERR(1)=IB RETURN ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C DO 4096 IGAU=1,NBPGAU C C TRAITEMENT DU MATERIAU C IL PEUT VARIER D'UN POINT DE GAUSS A L'AUTRE C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL * ELSE IF (IMAT.EQ.1) THEN * DO 9096 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9096 CONTINUE ENDIF * * CALCUL DE LA MATRICE B ET DU JACOBIEN * DJAC=DJAC*POIGAU(IGAU) * IF(KERRE.NE.0) THEN INTERR(1)=IB ENDIF * * CALCUL ET INTEGRATION DE BTDB * 4096 CONTINUE * * CHANGEMENT DE BASE * * * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3096 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR return ENDIF SEGDES XMATRI SEGSUP WRK1,WRK2,WRK3,WRK6,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISES QUAH C_______________________________________________________________________ C 126 CONTINUE C NBNO=NBNN NBBB=NBNN LRN =NBNN+NBNN NSTN=2 SEGINI WRK1,WRK2 ,WRK5 I195=0 DO 3126 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C * MPTVAL=IVAMAT DO 9126 IM=1,10 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 9126 CONTINUE C C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB C RHOF =VALMAT(4) E =VALMAT(6) C =VALMAT(7) RHOREF=VALMAT(8) CREF =VALMAT(9) RLCAR =VALMAT(10) C C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL =VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU =VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(5) IBMN=MIN(IB,VELCHE(/2)) XINERT=VELCHE(1,IBMN) EI = E*XINERT/(EPS*EPS) C C CALCUL DES COEFFICIENTS DE NORMALISATION C COEFPR=(RHOREF*CREF*CREF)/RLCAR VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL) VKL2 = EI/SCEL C C C BOUCLE SUR LES POINTS DE GAUSS C ISDJC=0 DO 4126 IGAU=1,NBPGAU # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT) IF(IRRT.NE.1) GOTO 5126 DJAC=DJAC*POIGAU(IGAU) 4126 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3126 CONTINUE C C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR C 5126 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1)=IB ENDIF ENDIF IF(I195.NE.0) INTERR(1)=I195 SEGDES XMATRI SEGSUP WRK1,WRK2,WRK5,MVELCH GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LES ELEMENTS HOMOGENEISES CUBH C_______________________________________________________________________ C 127 CONTINUE NBNO=NBNN NBBB=NBNN LRN =NBNN*2 NSTN=2 C SEGINI WRK1,WRK2 ,WRK5 I195=0 DO 3127 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C * MPTVAL=IVAMAT DO 9127 IM=1,10 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 9127 CONTINUE C C ON CHERCHE LES CARACTERISTIQUES DU MATERIAU POUR L ELEMENT IB C RHOF =VALMAT(4) E =VALMAT(6) C =VALMAT(7) RHOREF=VALMAT(8) CREF =VALMAT(9) RLCAR =VALMAT(10) C C ON CHERCHE LES CARACTERISTIQUES GEOMETRIQUES POUR L ELEMENT IB C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL =VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU =VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(5) IBMN=MIN(IB,VELCHE(/2)) XINERT=VELCHE(1,IBMN) EI = E*XINERT/(EPS*EPS) C C CALCUL DES COEFFICIENTS DE NORMALISATION C COEFPR=(RHOREF*CREF*CREF)/RLCAR VKL1 =(COEFPR*COEFPR*SFLU)/(RHOF*C*C*SCEL) VKL2 = EI/SCEL C C BOUCLE SUR LES POINTS DE GAUSS C ISDJC=0 DO 4127 IGAU=1,NBPGAU # SHPWRK,NST,ISDJC,XGENE,DJAC,IRRT) IF(IRRT.NE.1) GOTO 5127 DJAC=DJAC*POIGAU(IGAU) C C 4127 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI 3127 CONTINUE C C IMPRESSION D UN EVENTUEL MESSAGE D ERREUR C 5127 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1)=IB ENDIF ENDIF IF(I195.NE.0) INTERR(1)=I195 SEGDES XMATRI SEGSUP WRK1,WRK2,WRK5,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENTS CIFL MACRO ELEMENT CISAILLEMENT FLEXION C C_______________________________________________________________________ C 258 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK3,WRK4 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 C C C PASSAGE DES AXES GLOBAUX AUX AXES LOCAUX C C C CALCUL DE LA MATRICE DE HOOK C MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN MELVAL=IVAL(1) IGMN=MIN(1,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN 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)) ELSE ENDIF ENDDO C ENDIF C C CALCUL ET INTEGRATION DE BDB 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) C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO C SEGDES XMATRI SEGSUP WRK1,WRK2,WRK3,WRK4,MVELCH GOTO 510 C_______________________________________________________________________ C C ELEMENT DE COQUE VOLUMIQUE SHB8 C_______________________________________________________________________ C 260 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4,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 C 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)=XZERO ENDIF 9070 CONTINUE PROPEL(1)=VALMAT(1) PROPEL(2)=VALMAT(2) DO IM=3,12 PROPEL(IM)=VALMAT(1) ENDDO PROPEL(13)=XZERO PROPEL(14)=VALMAT(1) WORK1(1)=IB DO IM=1,5 REL(IM,1)=XZERO ENDDO cbp loi de comportement a utiliser = c 1 : improved plane-stress constitutive law c [Abed-Meiram & Combescure, IJNME, 2009] c 2 : plane-stress constitutive law c 3 : tridimensional constitutive law cbp OUT(1)=3 OUT(1)=1 C C CALCUL DE LA MATRICE DE RIGIDITE C C * SEGINI XMATRI * IMATTT(IB)=XMATRI C C REMPLISSAGE DE XMATRI C * SEGDES XMATRI ENDDO SEGDES XMATRI SEGSUP WRK1,WRK2,WRK4,WRK7,MVELCH GOTO 510 * C_______________________________________________________________________ C C ELEMENTS DE ZONE COHESIVE ZCO2, ZCO3, ZCO4 C_______________________________________________________________________ C 266 CONTINUE NDIM = 2 IF(IFOUR.GT.0) NDIM = 3 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C DO 3266 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C C BOUCLE SUR LES POINTS DE GAUSS C DO 6266 IGAU=1,NBPGAU C C . NSTRS,NBNN,LRE,MELE,SHPWRK,BGENE,DJAC,IERT) IF (IERT.NE.0) THEN INTERR(1)=IB GOTO 99266 ENDIF C DJAC=DJAC*POIGAU(IGAU) C C CALCUL DE 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) SEGDES MLREEL ELSE IF (IMAT.EQ.1) THEN DO 9266 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9266 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF C C CALCUL ET INTEGRATION DE BDB C 6266 CONTINUE C C REMPLISSAGE DE XMATRI C 3266 CONTINUE C C IMPRESSION EVENTUELLE D'UN MESSAGE D'ERREUR C IF (IRTD.EQ.0) THEN MOTERR(1:8) = CMATE MOTERR(9:16) = NOMFR(MFR/2+1) INTERR(1) = IFOUR ENDIF C 99266 CONTINUE SEGSUP WRK1,WRK2,WRK4,MVELCH GOTO 510 *_______________________________________________________________________ * 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='RIGI4' 510 CONTINUE SEGDES XMATRI IF (CMATE.eq.'STATIQUE') THEN mlmots = iinc if (iinc.gt.0) segsup mlmots mlmots = idua if (idua.gt.0) segsup mlmots ENDIF c RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales