ccoin0
C CCOIN0 SOURCE OF166741 25/11/04 21:15:09 12349 & IB,IGAU,NBPGAU,LTRAC2,IFOUR2,iecou) C----------------------------------------------------------------------- C ECOULEMENT PLASTIQUE POUR UN POINT C ALGORITHME ORTIZ ET SIMO C C EN ENTREE : C C SIG0 CONTRAINTES AU DEBUT DU PAS C DEPST INCREMENT DE DEFORMATIONS TOTALES C ( THERMIQUE ENLEVEE ) C VAR0 VARIABLES INTERNES DEDUT DU PAS C VAREX0 VARIABLES EXTERNES DEBUT DU PAS C VAREXF VARIABLES EXTERNES FIN DU PAS C XMAT COEFFICIENTS DU MATERIAU C PRECIS PRECISION POUR ITERATIONS INTERNES C WORK DES CARACTERISTIQUES C TRAC COURBE DE TRACTION C MFR1 INDICE DE FORMULATION (iecou) C NSTRSS NOMBRE DE CONTRAINTES (iecou) C INPLAS NUMERO DU MODELE DE PLASTICITE C DDAUX = MATRICE DE HOOKE ELASTIQUE C CMATE = NOM DU MATERIAU C VALMAT= TABLEAU DE CARACTERISTIQUES DU MATERIAU C VALCAR= TABLEAU DE CARACTERISTIQUES GEOMETRIQUES C N2EL = NBRE D ELEMENTS DANS SEGMENT DE HOOKE C N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE C IFOUR2 = OPTION DE CALCUL (redondant avec IFOUR, iecou.IFOURB C IB = NUMERO DE L ELEMENT COURANT C IGAU = NUMERO DU POINT COURANT C EPAIST= EPAISSEUR C NBPGAU= NBRE DE POINTS DE GAUSS C MELE = NUMERO DE L ELEMENT FINI C NPINT = NBRE DE POINTS D INTEGRATION C NBGMAT= NBRE DE POINTS DANS SEGMENT DE CARACTERISTIQUES (iecou) C NELMAT= NBRE D ELEMENTS DANS SEGMENT DE CARACTERISTIQUES (iecou) C SECT = SECTION C LHOOK = TAILLE DE LA MATRICE DE HOOKE C TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI = TABLEAUX UTILISES C UTILISES POUR LE CALCUL DE LA MATRICE DE HOOKE C C EN SORTIE : C C SIGF CONTRAINTES A LA FIN DU PAS C VARF VARIABLES INTERNES FIN DU PAS C DEFP INCR. DE DEFORMATIONS PLASTIQUES C KERRE CODE D'ERREUR C = 0 SI TOUT OK C = 99 SI FORMULATION NON DISPONIBLE C EN PLASTICITE C = 1 SI DEPS EST NEGATIF C = 2 SI NOMBRE MAX D'ITERATIONS INTERNES DEPASSE C C IFOUR : OPTION DE CALCUL C C IFOUR = -3 DEFORMATION PLANE GENERALISEE C IFOUR = -2 CONTRAINTES PLANES C IFOUR = -1 DEFORMATIONS PLANES C IFOUR = 0 AXISYMETRIQUE C IFOUR = 1 SERIE DE FOURIER C IFOUR = 2 TRIDIMENSIONNEL C C MFR1 : NUMERO DE LA FORMULATION ELEMENT FINI C C MFR1 = 1 MASSIF C MFR1 = 3 COQUE C MFR1 = 5 COQUE EPAISSE C MFR1 = 7 POUTRE C MFR1 = 9 COQUE AVEC CISAILLEMENT TRANSVERSE Ckich MFR1 = 31 pondération réduite termes diagonaux matrice B, C dite MASSIF INCOMPRESSIBLE. Utilisation en contraintes planes a justifier c doublon historique MFR/MFR1 C C INPLAS : NUMERO DU MODELE DE PLASTICITE C C INPLAS = 1 PARFAIT C INPLAS = 4 CINEMATIQUE C INPLAS = 5 ISOTROPE C INPLAS = 7 CHABOCHE1 C INPLAS = 12 CHABOCHE2 C C----------------------------------------------------------------------- C CONVENTION DE REMPLISSAGE DES MEMOIRES C----------------------------------------------------------------------- C C XMAT(1) MODULE D'YOUNG C XMAT(2) COEFFICIENT DE POISSON C C TRAC(1 A 2*LTRAC) COURBE DE TRACTION C WORK( " +1) ALFA1 POUR COQUES PLASTICITE GLOBALE C WORK( " +..) DONNEES POUR CRITERE POUTRES GLOBALES C C MODELE ISOTROPE C VAR0(1) EPS* C C MODELE CINEMATIQUE LINEAIRE C VAR0(1) EPS* C VAR0(2) A VAR0(1+NSTRSS) DEPLACEMENT DE LA SPHERE C C MODELE CHABOCHE C XMAT(5) .... COEFFICIENTS A,C,... C VAR0(1) EPS* C VAR0(2) A VAR0(1+NSTRSS) DEPLACEMENT DE LA SPHERE 1 C VAR0(2+NSTRSS) A VAR0(1+2*NSTRSS) " " " " 2 C C----------------------------------------------------------------------- C 20/09/2017 : modif SG critere de convergence trop serre C TEST=PETI*APHI0 + utilisation CCREEL C voir aussi ecoin0.eso, syco12.eso IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC DECHE -INC TECOU SEGMENT WRK2 REAL*8 TRAC(LTRAC2) ENDSEGMENT SEGMENT WRK3 ENDSEGMENT DIMENSION SIG(130),EPS(130) DIMENSION S(8),SX(8),DS(8),DSIG(8),SPHER(8),SPHER1(8),SPHER2(8) DIMENSION DSPHER1(8),DSPHER2(8),DEPSE(8),DEPSP(8),DDEPSE(8) DIMENSION F(8),WF1(8),WF2(8),SIGB(8),Z1(8),DIV(8),DDA(8,8) DIMENSION CRIGI(12) jNPLAS = INPLAS MFRl = iecou.MFR1 nstrsl = iecou.NSTRSS ncara = commat(/2) if(ib.eq.1.and.igau.eq.1) then do iaca = 1,ncara if(commat(iaca).eq.'LIMP') iecou.JELEM = iaca enddo endif icow21 = iecou.JELEM if (icow21.gt.0) xlimp = valma0(icow21) do jj = 1,8 sx(jj) = 0.d0 enddo C---------COQUES AVEC CT------------------------------------------------ C ON NE TRAVAILLE QUE SUR LES 6 PREMIERES COMPOSANTES IF (MFRl.EQ.9) THEN NCONT=6 ELSE NCONT=iecou.NSTRSS ENDIF itracb=0 C----------------------------------------------------------------------- 2222 continue KERRE=0 DO I=1,nstrsl S(I)=0.D0 SPHER(I)=0.D0 SPHER1(I)=0.D0 SPHER2(I)=0.D0 ENDDO YUNG=XMAT(1) XNU=XMAT(2) C---------CARACTERISTIQUES GEOMETRIQUES--------------------------------- C C COQUES C IF (MFRl.EQ.3.OR.MFRl.EQ.9) THEN ELSE IF (MFRl.EQ.5) THEN ALFA1 = 1.D0 ELSE EP1 = 1.D0 ALFA1 = 1.D0 ENDIF C---------COEFFICIENTS CHABOCHE----------------------------------------- IF(jNPLAS.EQ.7) THEN A1=XMAT(5) R0=XMAT(7) PSI=XMAT(8) OME=XMAT(9) RM=XMAT(10) B=XMAT(11) A2=0.D0 ELSE IF(jNPLAS.EQ.12) THEN A1=XMAT(5) A2=XMAT(7) R0=XMAT(9) PSI=XMAT(10) OME=XMAT(11) RM=XMAT(12) B=XMAT(13) ELSE IF(jNPLAS.EQ.4) THEN SLI0 = XMAT(5) HECL = XMAT(6) c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'Ecrouissage',jNPLAS,SLI0,HECL c*dbg endif ELSE DO I=1,LTRAC2 SIG(I)=TRAC(2*I-1) EPS(I)=TRAC(2*I) ENDDO ENDIF EPST=VAR0(1) C---------ECROUISSAGE CINEMATIQUE--------------------------------------- IF(jNPLAS.EQ.4.OR.jNPLAS.EQ.7.OR.jNPLAS.EQ.12) THEN DO I=1,nstrsl SPHER1(I)=VAR0(I+1) ENDDO IF(jNPLAS.EQ.12) THEN DO I=1,nstrsl SPHER2(I)=VAR0(nstrsl+1+I) ENDDO ENDIF DO I=1,nstrsl SPHER(I)=SPHER1(I)+SPHER2(I) ENDDO c*dbg if (ib.eq.1 .and.igau.eq.1) then c*dbg write(ioimp,*) ' SPHERi',nstrsl c*dbg write(ioimp,*) ' ',(spher1(iof),iof=1,nstrsl) c*dbg write(ioimp,*) ' ',(spher(iof),iof=1,nstrsl) c*dbg endif C----------------------------------------------------------------------- C PREDICTEUR ELASTIQUE C S : CONTRAINTE C SPHER : VARIABLE D'ECROUISSAGE CINEMATIQUE C SX = S - X C----------------------------------------------------------------------- * en elastique non lineaire on annule les contraintes initiales * mais on cumule les epsilons elastiques ELSE IF(jNPLAS.EQ.87) THEN EPST=0.D0 DO I=1,nstrsl SIG0(I)=0.D0 DEPST(I)=DEPST(I) + VAR0(I+1) ENDDO ENDIF & N2EL,N2PTEL,MFRl,IFOUR2,IB,IGAU,EPAIST, & NBPGAU,MELE,NPINT,iecou.NBGMAT,iecou.NELMAT, & SECT,LHOOK,TXR, & XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI,DSIGT,IRTD) IF(IRTD.NE.1) THEN KERRE=69 GOTO 1000 ENDIF IF ((mfr.eq.1.or.mfr.eq.31).and. IFOUR2.eq.-2) then * en cas de contraintes planes on repasse en 3D do ju=1,6 do iu=1,6 DDA(iu,ju)=0.d0 enddo enddo cte_cp = xnu / (1.d0 - xnu) aux= YUNG / ((1.d0+xnu)*(1.d0-2.d0*xnu)) aux1= aux * xnu aux2= aux * (1.d0-xnu) gege = Yung / (2.d0 *(1.d0 +xnu)) DDA(1,1)=AUX2 DDA(2,1)=AUX1 DDA(1,2)=AUX1 DDA(2,2)=AUX2 DDA(3,3)=aux2 DDA(1,3)=aux1 DDA(2,3)=aux1 DDA(3,1)=aux1 DDA(3,2)=aux1 DDA(4,4)=gege DDA(5,5)=gege DDA(6,6)=GEGE ELSE IF ((MFR.EQ.3.AND.NPINT.EQ.0).OR.MFR.EQ.9) THEN AUX=YUNG/(1.D0-XNU*XNU) AUX1=AUX*XNU DO J=1,NCONT DO I=1,NCONT DDAUX(I,J)=0.D0 ENDDO ENDDO C C CAS TRIDIMENSIONNEL ET FOURIER C IF(IFOUR2.EQ.2.OR.IFOUR2.EQ.1) THEN GEGE=0.5D0*YUNG/(1.D0+XNU) DDAUX(1,1)=AUX DDAUX(2,1)=AUX1 DDAUX(1,2)=AUX1 DDAUX(2,2)=AUX DDAUX(3,3)=GEGE DDAUX(4,4)=AUX DDAUX(5,4)=AUX1 DDAUX(4,5)=AUX1 DDAUX(5,5)=AUX DDAUX(6,6)=GEGE C C CAS AXISYMETRIQUE ET DEFORMATIONS PLANES C ELSE IF(IFOUR2.EQ.0.OR.IFOUR2.EQ.-1.OR.IFOUR2.EQ.-3) THEN DDAUX(1,1)=AUX DDAUX(2,1)=AUX1 DDAUX(1,2)=AUX1 DDAUX(2,2)=AUX DDAUX(3,3)=AUX DDAUX(4,3)=AUX1 DDAUX(3,4)=AUX1 DDAUX(4,4)=AUX C C CAS CONTRAINTES PLANES C ELSE IF(IFOUR2.EQ.-2) THEN DDAUX(1,1)=YUNG DDAUX(3,3)=YUNG ENDIF ENDIF * DO I=1,nstrsl S(I)=SIG0(I)+DSIGT(I) SIGB(I)=S(I) SX(I)=S(I)-SPHER(I) ENDDO C---------CAS DES POUTRES----------------------------------------------- IF(MFRl.EQ.7) THEN ** write(6,*) 'work',(work(ic),ic=1,LW) DIV(2)=1.D0 DIV(3)=1.D0 DO I=1,NCONT S(I) = S(I) *DIV(I) SX(I) = SX(I)*DIV(I) SPHER(I) = SPHER(I) *DIV(I) SPHER1(I) = SPHER1(I)*DIV(I) SPHER2(I) = SPHER2(I)*DIV(I) END DO ENDIF ** if (ib.eq.1 .AND.igau.eq.1) then ** write(ioimp,*) ' SIGi',NSTRSS ** write(ioimp,*) ' S',(s(iof),iof=1,NSTRSS) ** write(ioimp,*) ' SX',(sx(iof),iof=1,NSTRSS) ** endif C----------------------------------------------------------------------- C CALCUL DE LA LIMITE ELASTIQUE SI C----------------------------------------------------------------------- IF (jNPLAS.EQ.1) THEN C* Modele a ECROUISSAGE CINEMATIQUE LINEAIRE : la limite d'elasticite C* est la limite initiale donnee par SIGY ELSE IF (jNPLAS.EQ.4) THEN SI = SLI0 ELSE IF (jNPLAS.EQ.5.OR.jNPLAS.EQ.87) THEN IF (izz.EQ.1) THEN KERRE=75 GOTO 1000 ENDIF C* Modele de CHABOCHE (prise en compte ecrouissage) ELSE IF (jNPLAS.EQ.7 .OR. jNPLAS.EQ.12) THEN RMmRR = (RM - R0) * EXP(-B*EPST) ENDIF c*dbg if (ib.eq.1 .AND.igau.eq.1) then c*dbg write(ioimp,*) 'Limite d elasticite SI=',SI,TRAC(1),EPST c*dbg endif ** * kich : application pression limite trace sigma ** yxsxii = 0.d0 if (icow21.gt.0) then ytr = (sx(1) + sx(2) + sx(3))/3.D0 if (ytr.gt.xlimp) then yxsxii = ytr - xlimp else r_z = ytr + xlimp if (r_z.lt.0.D0) yxsxii = r_z endif if (yxsxii.ne.0.d0) then dsigii = dsigt(1) + dsigt(2) + dsigt(3) if (dsigii.ne.0.D0) then r_z = 3.D0*yxsxii/dsigii do jj = 1,3 s(jj) = s(jj) - (dsigt(jj)*r_z) sx(jj) = sx(jj) - (dsigt(jj)*r_z) enddo else do jj = 1,3 s(jj) = s(jj) - yxsxii sx(jj) = sx(jj) - yxsxii enddo endif endif endif C----------------------------------------------------------------------- C CALCUL DE LA CONTRAINTE EQUIVALENTE SEQ C----------------------------------------------------------------------- * attention en contraintes planes on se declare en 3D * rien besoin de faire dans vonmis0 car IFOUR2 n'est pas utilise * et les contraintes sont dimensionnees a 6 ** if (ib.eq.1 .AND.igau.eq.1) then ** write(ioimp,*) 'VONMISES',SEQ,MFRl,IFOUR2,EP1,ALFA1 ** endif C----------------------------------------------------------------------- C LE CRITERE EST-IL VERIFIE C----------------------------------------------------------------------- ITRY = 1 ELSE PETI=1.1D0*0.5D0*PRECIS*SEQ ENDIF IF (ITRY.EQ.1) THEN * rien a faire on n'a pas plastifie ** if (ib.eq.1 .and. igau.eq.1) then ** write(ioimp,*) 'pas de plastification' ** endif IF (MFRl.EQ.7) THEN DO I=1,NCONT S(I)=S(I)/DIV(I) ENDDO ENDIF DO I=1,NCONT SIGF(I)=S(I) DEFP(I)=0.D0 ENDDO IF(MFRl.EQ.9) THEN DEFP(7)=0.D0 DEFP(8)=0.D0 SIGF(7)=S(7) SIGF(8)=S(8) ENDIF ** if (ib.eq.1 .and. igau.eq.1) then ** write(ioimp,*) 'SIGF',(SIGF(iof),iof=1,nstrsl) ** endif VARF(1)=VAR0(1) IF(jNPLAS.EQ.4.OR.jNPLAS.EQ.7) THEN DO I=1,nstrsl VARF(I+1)=VAR0(I+1) ENDDO ELSE IF(jNPLAS.EQ.12) THEN DO I=1,2*nstrsl VARF(I+1)=VAR0(I+1) ENDDO ELSE IF(jNPLAS.EQ.87) THEN DO I=1,nstrsl VARF(I+1)=DEPST(I) ENDDO ENDIF c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'VARF',EPST,'---',(VARF(iof),iof=2,1+nstrsl) c*dbg endif RETURN ENDIF C----------------------------------------------------------------------- C ON A PLASTIFIE C----------------------------------------------------------------------- NITER=0 c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'niter,phi,si,seq,peti,precis=', c*dbg $ niter,phi,si,seq,peti,precis c*dbg endif PHI0=PHI SI0=SI RR=0.D0 DO I=1,NCONT DSIG(I) =0.D0 DEPSP(I) =0.D0 DSPHER1(I)=0.D0 DSPHER2(I)=0.D0 ENDDO C----------------------------------------------------------------------- C DEBUT DE LA BOUCLE D'ITERATIONS INTERNES C----------------------------------------------------------------------- sx1in=sx(1) sx2in=sx(2) sx3in=sx(3) s1in=s(1) s2in=s(2) iderin=0 10 CONTINUE NITER=NITER+1 C---------CALCUL DE WF1=DF/D(SIGMA)-------------------------------------- C---------ELEMENTS MASSIFS---------------------------------------------- IF(MFRl.EQ.1.OR.MFRl.EQ.31) THEN F(1)=(2.D0*SX(1)-SX(2)-SX(3))/3.D0 F(2)=(2.D0*SX(2)-SX(1)-SX(3))/3.D0 F(3)=(2.D0*SX(3)-SX(1)-SX(2))/3.D0 DO I=4,nstrsl F(I)=SX(I) ENDDO DO I=1,3 WF1(I)=1.5D0*F(I)/SEQ Z1(I)=WF1(I) ENDDO DO I=4,NCONT WF1(I)=3.D0*F(I)/SEQ Z1(I)=1.5D0*F(I)/SEQ ENDDO C---------COQUES MINCES------------------------------------------------- ELSE IF(MFRl.EQ.3.OR.MFRl.EQ.9) THEN IF(IFOUR2.GE.1) THEN WF1(1)=(2.D0*SX(1)-SX(2))/(2.D0*SEQ*EP1) WF1(2)=(2.D0*SX(2)-SX(1))/(2.D0*SEQ*EP1) WF1(3)=3.D0*SX(3)/(SEQ*EP1) ELSE WF1(1)=(2.D0*SX(1)-SX(2))/(2.D0*SEQ*EP1) WF1(2)=(2.D0*SX(2)-SX(1))/(2.D0*SEQ*EP1) ENDIF C---------COQUES EPAISSES----------------------------------------------- ELSE IF(MFRl.EQ.5) THEN F(1)=(2.D0*SX(1)-SX(2))/3.D0 F(2)=(2.D0*SX(2)-SX(1))/3.D0 DO I=3,5 F(I)=SX(I) ENDDO DO I=1,2 WF1(I)=1.5D0*F(I)/SEQ Z1(I)=WF1(I) ENDDO DO I=3,5 WF1(I)=3.D0*F(I)/SEQ Z1(I)=1.5D0*F(I)/SEQ ENDDO C---------POUTRES------------------------------------------------------- ELSE IF(MFRl.EQ.7) THEN DO J=1,NCONT DO I=1,NCONT DDA(I,J)=0.D0 ENDDO ENDDO DDA(1,1)=YUNG DDA(4,4)=0.5D0*YUNG/(1.D0+XNU) DDA(5,5)=YUNG DDA(6,6)=YUNG WF1(1)=SX(1)/SEQ WF1(2)=0.D0 WF1(3)=0.D0 WF1(4)=SX(4)/SEQ WF1(5)=SX(5)/SEQ WF1(6)=SX(6)/SEQ ENDIF DO I=1,NCONT WF2(I)=0.D0 ENDDO IF(MFRl.EQ.7) THEN DO J=1,NCONT XFLO1=WF1(J) DO I=1,NCONT WF2(I)=WF2(I)+XFLO1*DDA(I,J) ENDDO ENDDO ELSE IF((mfr.eq.1.or.mfr.eq.31).and. IFOUR2.eq.-2) then DO J=1,NCONT XFLO1=WF1(J) DO I=1,NCONT WF2(I)=WF2(I)+XFLO1*DDA(I,J) ENDDO ENDDO else DO J=1,NCONT XFLO1=WF1(J) DO I=1,NCONT WF2(I)=WF2(I)+XFLO1*DDAUX(I,J) ENDDO ENDDO endif ENDIF COEF=0.D0 DO I=1,NCONT COEF=COEF+WF1(I)*WF2(I) ENDDO C----------------------------------------------------------------------- C PLASTICITE PARFAITE, ECROUISSAGE ISOTROPE ET CINEMATIQUE ZIEGLER C----------------------------------------------------------------------- IF (jNPLAS.EQ.1.OR.jNPLAS.EQ.4.OR.jNPLAS.EQ.5 $ .OR.jNPLAS.EQ.87) THEN IF (jNPLAS.EQ.4) THEN RP=0.D0 C=HECL ELSE IF (izz.EQ.1) THEN KERRE=75 GOTO 1000 ENDIF IF (jNPLAS.EQ.1) THEN RP=0.D0 C=0.D0 ELSE IF(jNPLAS.EQ.5.OR.jNPLAS.EQ.87) THEN RP=PENTE C=0.D0 ENDIF ENDIF c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'RP,C=',RP,C,EPST c*dbg endif DENOM=COEF+C+RP DELTA=PHI/DENOM DMU=C*DELTA/SEQ DO I=1,NCONT DSIG(I)=-DELTA*WF2(I) DSPHER1(I)=DMU*SX(I) ENDDO * Cas des contraintes planes en massif if ((mfr.eq.1.or.mfr.eq.31).and.IFOUR2.eq.-2) then bb= abs(dsig(3)+ s(3) ) r_z = dsig(3) * cte_cp sx(3)= sx3in - dsig(3) sx(1)= sx1in - r_z sx(2)= sx2in - r_z s(3)= - dsig(3) s(1)= s1in - r_z s(2)= s2in - r_z if (bb.gt.cri0) then if (iderin.eq.0) then niter=niter - 1 endif iderin=iderin+1 if (iderin.gt.50) then write(ioimp,*) ' probleme dans iterations internes' KERRE=2 GO TO 1000 endif go to 10 endif DMU=C*DELTA/SEQ DO I=1,NCONT DSPHER1(I)=DMU*SX(I) ENDDO endif iderin=0 DP=DELTA ELSE C----------------------------------------------------------------------- C MODELE DE CHABOCHE C----------------------------------------------------------------------- C---------UNIQUEMENT POUR LES ELEMENTS MASSIFS-------------------------- XPRO1=0.D0 XPRO2=0.D0 DO I=1,NCONT XPRO1=XPRO1+WF1(I)*SPHER1(I) XPRO2=XPRO2+WF1(I)*SPHER2(I) ENDDO FIP=1.D0+(PSI-1.D0)*EXP(-OME*EPST) DELTA=PHI/DENOM DO I=1,NCONT DSIG(I)=-DELTA*WF2(I) ENDDO DR=B* RMmRR *DELTA DP=DELTA ENDIF RR=RR+DR EPST=MAX(0.D0,EPST) c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'MAJ=',EPST,DP,RR,DR c*dbg endif IF (MFRl.EQ.3.OR.MFRl.EQ.9) THEN IF (IFOUR2.GE.1) THEN DSIG(1)=DSIG(1)*EP1 DSIG(2)=DSIG(2)*EP1 DSIG(3)=DSIG(3)*EP1 DSIG(4)=DSIG(4)*r_z DSIG(5)=DSIG(5)*r_z DSIG(6)=DSIG(6)*r_z ELSE DSIG(1)=DSIG(1)*EP1 DSIG(2)=DSIG(2)*EP1 DSIG(3)=DSIG(3)*r_z DSIG(4)=DSIG(4)*r_z ENDIF ENDIF C mise a jour des contraintes DO I=1,NCONT S(I)=S(I)+DSIG(I) SPHER1(I)=SPHER1(I)+DSPHER1(I) SPHER2(I)=SPHER2(I)+DSPHER2(I) SPHER(I)=SPHER1(I)+SPHER2(I) SX(I)=S(I)-SPHER(I) ENDDO if(IFOUR2.eq.-2.and.(mfr.eq.1.or.mfr.eq.31)) then s(3)=0.d0 endif if (icow21.gt.0) then yxsxii = 0.D0 * kich borne trace sigma ytr = (sx(1) + sx(2) + sx(3))/3.D0 if (ytr.gt.xlimp) then yxsxii = ytr - xlimp else r_z = ytr + xlimp if (r_z.lt.0.D0) yxsxii = r_z endif dsigii = dsigt(1) + dsigt(2) + dsigt(3) if (dsigii.ne.0.D0) then r_z = 3.D0*yxsxii/dsigii do jj = 1,3 s(jj) = s(jj) - (dsigt(jj)*r_z) sx(jj) = sx(jj) - (dsigt(jj)*r_z) enddo else do jj = 1,3 s(jj) = s(jj) - yxsxii sx(jj) = sx(jj) - yxsxii enddo endif endif C---------CONTRAINTES PLANES-------------------------------------------- IF(IFOUR2.EQ.-2) THEN IF(MFRl.EQ.1.OR.MFRl.EQ.31) THEN F(1)=(2.D0*SX(1)-SX(2)-SX(3))/3.D0 F(2)=(2.D0*SX(2)-SX(1)-SX(3))/3.D0 F(3)=(2.D0*SX(3)-SX(1)-SX(2))/3.D0 DO I=4,nstrsl F(I)=SX(I) ENDDO DO I=1,3 WF1(I)=1.5D0*F(I)/SEQ ENDDO DO I=4,nstrsl WF1(I)=3.D0*F(I)/SEQ ENDDO ELSE IF(MFRl.EQ.3.OR.MFRl.EQ.9) THEN AUX=EP1*EP1*EP1*EP1 WF1(1)=(2.D0*SX(1)-SX(2))/(2.D0*SEQ*EP1*EP1) WF1(2)=(2.D0*SX(2)-SX(1))/(2.D0*SEQ*EP1*EP1) WF1(3)=18.D0*ALFA1*(2.D0*SX(3)-SX(4))/(SEQ*AUX) WF1(4)=18.D0*ALFA1*(2.D0*SX(4)-SX(3))/(SEQ*AUX) ENDIF DO I=1,nstrsl DEPSP(I)=DEPSP(I)+DELTA*WF1(I) ENDDO ENDIF C----------------------------------------------------------------------- C TEST C CALCUL DE LA NOUVELLE VALEUR DE PHI C----------------------------------------------------------------------- IF (jNPLAS.EQ.5.OR.jNPLAS.EQ.87) THEN C* Modele de CHABOCHE (prise en compte ecrouissage) ELSE IF (jNPLAS.EQ.7 .OR. jNPLAS.EQ.12) THEN RMmRR = (RM - R0) * EXP(-B*EPST) ELSE IF (jNPLAS.EQ.4) THEN SI=SLI0 ELSE ENDIF PETI=1.D-8 APHI=ABS(PHI) APHI0=ABS(PHI0) *sg TEST=PETI*APHI0 *sg write(ioimp,*) 'niter,phi,phi0,si,seq,rmmrr,test=', *sg $ niter,phi,phi0,si,seq,rmmrr,test IF(NITER.GT.50) THEN if(itracb.eq.0) then itracb=1 go to 2222 endif C write(ioimp,*) ' CCOIN0, APHI, TEST',APHI,TEST C write(ioimp,*) ' CCOIN0, KERRE = 2, NITER =',NITER KERRE=-2 call soucis(268) C GO TO 1000 ENDIF IF (KERRE.LT.0) KERRE = 0 IF (MFRl.EQ.7) THEN DO I=1,NCONT S(I)=S(I)/DIV(I) SPHER1(I)=SPHER1(I)/DIV(I) SPHER2(I)=SPHER2(I)/DIV(I) ENDDO ENDIF C---------TOUTES FORMULATIONS SAUF CONTRAINTES PLANES------------------- IF(IFOUR2.NE.-2) THEN DO I=1,NCONT DS(I)=S(I)-SIGB(I) ENDDO DO I=1,NCONT DEPSE(I)=DEPST(I)+DDEPSE(I) DEPSP(I)=DEPST(I)-DEPSE(I) ENDDO ENDIF DO I=1,nstrsl SIGF(I)=S(I) DEFP(I)=DEPSP(I) ENDDO c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'SIGF',(SIGF(iof),iof=1,nstrsl) c*dbg endif C---------COQUES AVEC CISAILLEMENT TRANSVERSE--------------------------- IF(MFRl.EQ.9) THEN DEFP(7)=0.D0 DEFP(8)=0.D0 SIGF(7)=SIGB(7) SIGF(8)=SIGB(8) ENDIF VARF(1)=EPST IF(jNPLAS.EQ.4.OR.jNPLAS.EQ.7.OR.jNPLAS.EQ.12) THEN DO I=1,nstrsl VARF(I+1)=SPHER1(I) ENDDO IF(jNPLAS.EQ.12) THEN DO I=1,nstrsl VARF(nstrsl+1+I)=SPHER2(I) ENDDO ENDIF ELSE IF(jNPLAS.EQ.87) THEN DO I=1,nstrsl VARF(1+I)=DEPST(I) ENDDO ENDIF KERRE=0 c*dbg if (ib.eq.1 .and. igau.eq.1) then c*dbg write(ioimp,*) 'VARF',EPST,'---',(VARF(iof),iof=2,1+nstrsl) c*dbg endif RETURN ELSE sx1in=sx(1) sx2in=sx(2) s1in=s(1) s2in=s(2) GOTO 10 ENDIF 1000 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales