defmat
C DEFMAT SOURCE JB251061 22/12/21 21:15:03 11521 C DEFMAT SOURCE BP208322 17/03/01 21:16:57 9325 . IVAMAT,IB,IGAU,CMATE,MATE,LUNI1,LUNI2, . WRK1,WRK5,WRK0,WR00,WTRAV,CMASS,CRIGI,COB, . XMOB,BID,BID2,KERR0) * ********************************************************* * ENTREES ********************************************************* * * NMATT : nombre de composantes matériau * NSTRS : nombre de composantes des contraintes * MFR : formulation de l'élément * INPLAS : numéro du matériau inélastique * IVAMAT : pointeur sur un segment mptval de materiau * IB : numéro de l'élément * IGAU : numéro du point de Gauss * CMATE : nom du matériau * MATE : numéro du matériau * LUNI1 : booléen pour le matériau ACIER_UNI * LUNI2 : booléen pour le matériau ACIER_UNI * TXR : cosinus directeur des axes locaux pour l'ACIER_UNI * (WTRAV) * ********************************************************* * SORTIES ********************************************************* * * SIG0 : contraintes effectives (WRK1) * EPST0 : deformations totales au debut du pas (WRK5) * XMAT : composantes matériaux (WRK0) * CMASS : élément de réduction de la masse * CRIGI : élément de réduction de la rigidité * TYMAT : type des composantes materiau (WR00) * COB : porosité (éventuelle) * BID : * BID2 : * KERR0 : indicateur d'erreur * ********************************************************* * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMLREEL * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * SEGMENT WRK0 REAL*8 XMAT(NCXMAT) ENDSEGMENT * SEGMENT WR00 CHARACTER*16 TYMAT(NCXMAT) REAL*8 XMAT1(NCXMAT),XMAT2(NCXMAT) ENDSEGMENT * SEGMENT WRK1 REAL*8 DDHOOK(LHOOK,LHOOK),SIG0(NSTRS),DEPST(NSTRS) REAL*8 SIGF(NSTRS),VAR0(NVARI),VARF(NVARI) REAL*8 DEFP(NSTRS),XCAR(ICARA) ENDSEGMENT * SEGMENT WRK5 REAL*8 EPIN0(NSTRS),EPINF(NSTRS),EPST0(NSTRS) ENDSEGMENT * SEGMENT WTRAV REAL*8 DDAUX(LHOOK,LHOOK),VALMAT(NUMAT) REAL*8 VALCAR(NUCAR),DSIGT(NSTRS) REAL*8 TXR(IDIM,IDIM),DDHOMU(LHOOK,LHOOK) REAL*8 XLOC(3,3),XGLOB(3,3) REAL*8 D1HOOK(LHOOK,LHOOK),ROTHOO(LHOOK,LHOOK) ENDSEGMENT * DIMENSION CRIGI(12),CMASS(12) DIMENSION BID(*),BID2(*) LOGICAL LUNI1,LUNI2 CHARACTER*8 CMATE * * on recupere les constantes du materiau * * * >>>>>>>>>> cas des materiaux orthotropes plastiques decouples * c mistral : IF ((INPLAS.EQ.67).OR.(INPLAS.EQ.68).OR.(INPLAS.EQ.94)) THEN c mistral. MPTVAL=IVAMAT DO IC=1,NMATT MELVAL=IVAL(IC) IAUX=MELVAL IF(IAUX.NE.0) THEN IF(TYVAL(IC)(1:8).NE.'POINTEUR') THEN IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(IC)=VELCHE(IGMN,IBMN) ELSE IBMN=MIN(IB,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) XMAT(IC)=IELCHE(IGMN,IBMN) ENDIF ELSE XMAT(IC)=0.D0 IF(TYVAL(IC)(1:8).EQ.'POINTEUR') XMAT(IC)=0 ENDIF END DO GOTO 1000 ENDIF * * >>>>>>>>>> cas du SIC_SIC * IF (INPLAS.EQ.88) THEN MPTVAL=IVAMAT DO IC=1,NMATT MELVAL=IVAL(IC) IAUX=MELVAL IF(IAUX.NE.0) THEN IF(TYVAL(IC)(1:8).NE.'POINTEUR') THEN IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(IC)=VELCHE(IGMN,IBMN) ELSE IBMN=MIN(IB,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) XMAT(IC)=IELCHE(IGMN,IBMN) ENDIF ELSE XMAT(IC)=0.D0 IF(TYVAL(IC)(1:8).EQ.'POINTEUR') XMAT(IC)=0 ENDIF END DO GOTO 1000 ENDIF * * cas des poutres en formulation section * IF ((MFR.EQ.7.OR.MFR.EQ.13).AND. 1 CMATE.EQ.'SECTION') THEN MPTVAL=IVAMAT DO IC=1,NMATT MELVAL=IVAL(IC) IAUX=MELVAL IF(IAUX.NE.0)THEN IBMN=MIN(IB,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) XMAT(IC)=DBLE(IELCHE(IGMN,IBMN)) IF(IC.EQ.1) IPM=IELCHE(IGMN,IBMN) IF(IC.EQ.2) IPC=IELCHE(IGMN,IBMN) ELSE XMAT(IC)=DBLE(0) ENDIF END DO IF (INPLAS.EQ.0) THEN MLREEL = NINT(XMAT(3)) IF(MLREEL.EQ.0)THEN ELSE SEGACT, MLREEL SEGDES, MLREEL ENDIF ENDIF * * >>>>>>>>>> cas des materiaux elastiques isotropes * ou unidirectionnels ELSE IF(MATE.EQ.1.OR.MATE.EQ.4) THEN MPTVAL=IVAMAT IF(INPLAS.EQ. 9.OR.INPLAS.EQ.28.OR.INPLAS.EQ.36. & OR.INPLAS.EQ.42.OR.INPLAS.EQ.65. & OR.INPLAS.EQ.66.OR.INPLAS.EQ.74) THEN * * pour les modeles beton et ubiquitous * et ceux dont on ne remodifie pas l'ordre * DO 1105 IC=1,NMATT MELVAL=IVAL(IC) IAUX=MELVAL IF(IAUX.NE.0)THEN IF(VELCHE(/1)+VELCHE(/2).NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(IC)=VELCHE(IGMN,IBMN) ELSE IF(IELCHE(/1)+IELCHE(/2).NE.0) THEN IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) XMAT(IC)=DBLE(IELCHE(IGMN,IBMN)) ENDIF ELSE XMAT(IC)=0.D0 ENDIF * print *,'defmat XMAT(',IC,')=',XMAT(IC) 1105 continue * ELSE * * pour les autres modeles : * on a les noms : e,nu,puis le reste des obligatoires * puis les facultatives qui se terminent par rho et alph * d'apres un rangement dans idmatr * dans le remplissage de xmat, on veut e,nu,rho,alph * puis la suite. d'ou ce qui suit .... * am 9/11/93 a reprendre !! * am 28/7/95 le commentaire ci dessus est FAUX si l'on a des * proprietes facultatives en plus de rho et alph * car dans ce cas les facultatives COMMENCENT par * rho et alph. a reprendre !!!!!!!! * DO 1106 IC=1,NMATT IF ((MFR.EQ.1.OR.MFR.EQ.3.OR.MFR.EQ.31 + .OR.MFR.EQ.33).AND.IFOUR.EQ.-2) THEN IF(IC.LE.2.OR.IC.EQ.NMATT) JC=IC IF(IC.GT.2.AND.IC.LT.NMATT-2) JC=IC+2 IF(IC.EQ.NMATT-2) JC=3 IF(IC.EQ.NMATT-1) JC=4 C ELSEIF(MFR.EQ.53)THEN III=1 IF(IC.LE.III.OR.IC.EQ.NMATT) JC=IC IF(IC.GT.III.AND.IC.LT.NMATT-2) JC=IC+2 IF(IC.EQ.NMATT-2) JC=III+1 IF(IC.EQ.NMATT-1) JC=III+2 ELSEIF(INPLAS.EQ.64)THEN C GURSON2 IF(IC.LE.2) JC=IC IF(IC.GT.2.AND.IC.LT.15) JC=IC+2 IF(IC.EQ.15) JC=3 IF(IC.EQ.16) JC=4 ELSE IF(IC.LE.2) JC=IC IF(IC.GT.2.AND.IC.LT.NMATT-1) JC=IC+2 IF(IC.EQ.NMATT-1) JC=3 IF(IC.EQ.NMATT) JC=4 ENDIF MELVAL=IVAL(IC) IAUX=MELVAL IF(IAUX.NE.0)THEN IF(TYVAL(IC)(1:8).NE.'POINTEUR')THEN IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(JC)=VELCHE(IGMN,IBMN) TYMAT(JC)=TYVAL(IC) ELSE IBMN=MIN(IB,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) XMAT(JC)=IELCHE(IGMN,IBMN) TYMAT(JC)=TYVAL(IC) ENDIF ELSE XMAT(JC)=0.D0 TYMAT(JC)='REAL*8 ' ENDIF * PRINT *,'XMAT(',JC,')=',XMAT(JC) 1106 continue * * rearrangement pour certaines lois cas elastique isotrope * IF(INPLAS.EQ.64) THEN C gurson2 XSRMA=XMAT(3) XMAT(3)=XMAT(17) XMAT(17)=XMAT(4) XMAT(4)=XSRMA ENDIF C IF (INPLAS.EQ.7) THEN * chaboche 1 C IF(XMAT(10).NE.0.OR.XMAT(11).NE.0)THEN C INPLAS=8 C ENDIF IF (INPLAS.EQ.2) THEN IF (XMAT(6).NE.0) THEN INPLAS=27 XMAT(5)=XMAT(6) ENDIF ENDIF C IF (INPLAS.EQ.12) THEN * chaboche 2 C IF(XMAT(12).NE.0.OR.XMAT(13).NE.0)THEN C INPLAS=13 C ENDIF IF (INPLAS.EQ.14) THEN IF(XMAT(8).NE.0.OR.XMAT(9).NE.0)THEN INPLAS=18 XMAT(5)=XMAT(8) XMAT(6)=XMAT(9) ENDIF ENDIF ENDIF * * rearrangement pour certaines formulations * * milieu poreux cas elastique isotrope * IF (MFR.EQ.33) THEN IF(IFOUR.EQ.-3.OR.IFOUR.EQ.1) THEN KERR0=99 GO TO 1000 ENDIF COB=XMAT(5) XMOB=XMAT(6) DO 1992 IC=1,NMATT-12 XMAT(4+IC)=XMAT(6+IC) 1992 continue * * calcul des contraintes effectives * DO 1993 IC=1,3 IF(IFOUR.EQ.-2.AND.IC.EQ.3) GO TO 1993 SIG0(IC) =SIG0(IC) + COB* EPST0(NSTRS) 1993 continue ENDIF * * rearrangement pour les materiaux unidirectionnels * en plasticite * * ce qui suit est limité au coq2 et au dst * * on met v1x et v1y à la place de rho et alph * on met nu à 0. et on se decale ( on ignore les axes ) * * dans le cas des coq2, il faut aller chercher les contraintes * dans la direction ad-hoc. inutile pour le dst. * on se limite au cas axisymetrique ? * IF (MATE.EQ.4.AND.INPLAS.NE.0.AND.INPLAS.NE.74) THEN * ppu if(mele.ne.44.and.mele.ne.93) go to 1000 XMAT(3)=XMAT(2) XMAT(2)=0.D0 DO 1995 IC=4,NMATT-1 XMAT(IC) = XMAT(IC+1) 1995 CONTINUE * * coq2 : on change les contraintes de repere * les variables internes sont dans le repere unidirectionnel * IF (MELE.EQ.44) THEN DO 1996 I=1,NSTRS BID(I)=SIG0(I) BID2(I)=DSIGT(I) 1996 CONTINUE * ELSEIF(LUNI1)THEN V1X=TXR(1,1)*XMAT(3)+TXR(1,2)*XMAT(4) V1Y=TXR(2,1)*XMAT(3)+TXR(2,2)*XMAT(4) XMAT(3)=V1X XMAT(4)=V1Y ELSEIF(LUNI2)THEN ELSE GOTO 1000 * ENDIF ENDIF * ENDIF * * >>>>>>>>>> fin du traitement du materiau * 1000 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales