ddis
C DDIS SOURCE BP208322 17/03/01 21:16:57 9325 C SUBROUTINE DDIS : L'INITIALISATION ET L'APPEL DES LOI DE COMPORTEMENT C========================================================================= 1 IGAU,EPAIST,MELE,NPINT,NBPGAU,NBGMAT,NELMAT,SECT, 2 LHOOK,CRIGI,NMATT,INDLEG,IPWRKG,WRKGL,WRK0,WRK1,KERRE) C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC SMCOORD C *********************************************************************** * INITIALISATION ET APPEL DES LOIS DE COMPORTEMENT * *********************************************************************** * * ENTREES : * WRK0 SEGMENT DE TRAVAIL CONTENANT LES CARACTERISTIQUES * MATERIAUX * WRK1 SEGMENT DE TRAVAIL CONTENANT LES EFFORTS, LES DEPLACEMENTS * ET LA MATRICE DE HOOK * NMATT NOMBRE DE COMPOSANTES DE PROPRIETES DE MATERIAU * INDLEG CODAGE DES, TYPES DE LOI DE COMPORTEMENT RETENUS * WRKGL SEGMENT CONTENANT LES LOIS DE COMPORTEMENT DE LA SECTION * IPWRKG SEGMENT DE POINTEUR SUR LES LOIS CONTENUES DANS WRKGL * KERRE INDICATEUR D'ERREUR * WTRAV SEGMENT DE TRAVAIL CONTENANT LES TABLEAUX UTILISES POUR * LE CALCUL DE LA MATRICE DE HOOKE ELASTIQUE (SS-PROGRAMME CALSIG) * * N2EL = NBRE D ELEMENTS DANS SEGMENT DE HOOKE * N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE * MFR = NUMERO DE LA FORMULATION * IFOU = OPTION DE CALCUL * IB = NUMERO DE L ELEMENT COURANT * IGAU = NUMERO DU POINT COURANT * EPAIST= EPAISSEUR * NBPGAU= NBRE DE POINTS DE GAUSS * MELE = NUMERO DE L ELEMENT FINI * NPINT = NBRE DE POINTS D INTEGRATION * NBGMAT= NBRE DE POINTS DANS SEGMENT DE CARACTERISTIQUES * NELMAT= NBRE D ELEMENTS DANS SEGMENT DE CARACTERISTIQUES * SECT = SECTION * LHOOK = TAILLE DE LA MATRICE DE HOOKE * * SORTIES : * WRK1 SEGMENT DE TRAVAIL CONTENANT SOLLICITATIONS CORRIGEES * AU COURS DU PAS DE TEMPS CONSIDERE * KERRE INDICATEUR D'ERREUR * *********************************************************************** * * ATTENTION : * (ELEF1,ELDEP1) ET (ELEF2,ELDEP2) DEFINISSENT LE DOMAINE DE * COMPORTEMENT ELASTIQUE LINEAIRE PUR DE L'ELEMENT * CES COUPLES DE VALEURS DOIVENT DONC ETRE COHERENTS AVEC LA * MATRICE DE RIGIDITE DE L'ELEMENT (INERTIE ET MODULE D'YOUNG) * * CES DEUX COUPLES DE VALEURS SONT A DECLARER DANS LES OPTIONS A * 5 OU 7 POINTS (4 OU 6 POUR LA COMPRESSION) * * LES COUPLES (YEF1,YDEP1) ET (YEF2,YDEP2) TENANT COMPTE DE * L'ENDOMMAGEMENT SONT A RENTRER DANS L'OPTION 6 OU 7 POINTS * ********************************************************************** C DIMENSION ICOMP(3),DD(5),IDP(3),CRIGI(12) C SEGMENT WRK0 REAL*8 XMAT(NCXMAT) ENDSEGMENT C 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 C SEGMENT WRKGL REAL*8 TLOICO(NBLOI) ENDSEGMENT C SEGMENT IPWRKG POINTEUR IPOL(3).WRKGL ENDSEGMENT C 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 C C CHARACTER*8 CMATE C C INITIALISATIONS C JJ=0 DO 40 II = 1,3 IDP(II) = 0 40 ICOMP(II) = 0 DO 41 II = 1,5 41 DD(II) = 0.0 XLUNG = SQRT((XCOOR(1)-XCOOR(5))**2 + (XCOOR(2)-XCOOR(6))**2 + 1 (XCOOR(3)-XCOOR(7))**2) C C RECUPERATION DES COURBES ET DECODAGE DE INDLEG C DO 55 II = 1,2 IF(INDLEG.GE.100)THEN ICOMP(3) = ICOMP(3) + 1 INDLEG = INDLEG - 100 END IF 55 CONTINUE DO 56 II = 1,2 IF(INDLEG.GE.10)THEN ICOMP(2) = ICOMP(2) + 1 INDLEG = INDLEG - 10 END IF 56 CONTINUE IF(INDLEG.GE.1) ICOMP(1) = 1 C C CALCUL DE L'INCREMENT DE CONTRAINTES C 1 N2EL,N2PTEL,MFR,IFOU,IB,IGAU,EPAIST,NBPGAU, 2 MELE,NPINT,NBGMAT,NELMAT,SECT,LHOOK,TXR,XLOC, 3 XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI,DSIGT,IRTD) * IF(IRTD.NE.1) THEN KERRE=69 GOTO 998 ENDIF * C C C RECUPERATION DES EFFORTS PRECEDANTS ET DES INCREMENTS C DO 57 II = 1,6 57 SIGF(II) = SIG0(II) + DSIGT(II) C C C COMPRESSION C C RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT. C IF (ICOMP(1).EQ.0)THEN GO TO 100 ELSE JJ=JJ+1 NBLOI = IPOL(JJ).TLOICO(/1) * IF (NBLOI.EQ .12) THEN YEFC2=(-1.*TLOICO(1)) YDEPC2=(-1.*TLOICO(2)) ELEFC2=(-1.* TLOICO(3)) ELDEPC2=(-1.*TLOICO(4)) ELEFC1=(-1.*TLOICO(7)) ELDEPC1=(-1.*TLOICO(8)) YEFC1=(-1.*TLOICO(9)) YDEPC1=(-1.*TLOICO(10)) UEFC1 =(-1.*TLOICO(11)) UDEPC1 =(-1.*TLOICO(12)) ELSE YEFC2=(-1.*TLOICO(1)) YDEPC2=(-1.*TLOICO(2)) ELEFC2=(-1.*TLOICO(1)) ELDEPC2=(-1.*TLOICO(2)) ELEFC1=(-1.*TLOICO(5)) ELDEPC1=(-1.*TLOICO(6)) YEFC1=(-1.*TLOICO(5)) YDEPC1=(-1.*TLOICO(6)) UEFC1=(-1.*TLOICO(7)) UDEPC1=(-1.*TLOICO(8)) ENDIF * IFLAGC = INT(VAR0(2)) RRC = VAR0(3) EFMXC = VAR0(4) DEPMXC = VAR0(5) EFMNC = VAR0(6) DEPMNC = VAR0(7) DEPC = VAR0(8) XINT = VAR0(9) PLASC = VAR0(10) * RR1 = (ELEFC1 - ELEFC2)/(ELDEPC1 - ELDEPC2) EFC = SIG0(1) VAREFC = DSIGT(1) VARDPC = VAREFC / RR1 C C APPEL DE LA LOI DE COMPORTEMENT C VARDP0 = VARDPC IF((ABS(VARDP0)).GE.1.0E-9)THEN 1 YEFC1,YDEPC1,YEFC2,YDEPC2,UEFC1,UDEPC1, 2 EFC,VARDPC,DEPC,DEPEC,DEPMXC,EFMXC, 3 DEPMNC,EFMNC,XINT,RRC) VARF(2) = IFLAGC VARF(3) = RRC VARF(4) = EFMXC VARF(5) = DEPMXC VARF(6) = EFMNC VARF(7) = DEPMNC VARF(8) = DEPC VARF(9) = XINT SIGF(1) = EFC DEPE = EFC / RR1 VARDEP = DEPC - DEPE DD(1) = VARDEP - PLASC DEFP(1) = DD(1) VARF(10) = VARDEP ELSE DEFP(1) = DEFP(1) DO 51 II = 2,10 51 VARF(II) = VAR0(II) END IF END IF C C C FLEXION C C RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT. C 100 IF (ICOMP(2).EQ.0)THEN GO TO 200 ELSE JJ=JJ+1 NBLOI = IPOL(JJ).TLOICO(/1) * IF (NBLOI.EQ .14) THEN UEFF1 = (-1.*TLOICO(1)) UDEPF1 = (-1.*TLOICO(2)) YEFF1 = (-1.*TLOICO(3)) YDEPF1 = (-1.*TLOICO(4)) ELEFF1 = (-1.*TLOICO(5)) ELDEPF1 = (-1.*TLOICO(6)) ELEFF2 = (-1.*TLOICO(9)) ELDEPF2 = (-1.*TLOICO(10)) YEFF2 = (-1.*TLOICO(11)) YDEPF2 = (-1.*TLOICO(12)) UEFF2 = (-1.*TLOICO(13)) UDEPF2 = (-1.*TLOICO(14)) ELSE UEFF1 = (-1.*TLOICO(1)) UDEPF1 = (-1.*TLOICO(2)) YEFF1 = (-1.*TLOICO(3)) YDEPF1 = (-1.*TLOICO(4)) ELEFF1 = (-1.*TLOICO(3)) ELDEPF1 = (-1.*TLOICO(4)) ELEFF2 = (-1.*TLOICO(7)) ELDEPF2 = (-1.*TLOICO(8)) YEFF2 = (-1.*TLOICO(7)) YDEPF2 = (-1.*TLOICO(8)) UEFF2 = (-1.*TLOICO(9)) UDEPF2 = (-1.*TLOICO(10)) ENDIF * IFLAGF = INT(VAR0(11)) RRF = VAR0(12) EFMXF = VAR0(13) DEPMXF = VAR0(14) EFMNF = VAR0(15) DEPMNF = VAR0(16) X0F = VAR0(17) DEPF = VAR0(18) PLASF = VAR0(19) * RR2 = (ELEFF1 - ELEFF2)/(ELDEPF1 - ELDEPF2) M2 = ICOMP(2) + 4 EFF = SIG0(M2) VAREFF = DSIGT(M2) VARDPF = VAREFF / RR2 C C APPEL DE LA LOI DE COMPORTEMENT C VARDP0 = VARDPF IF(ABS(VARDP0).GT.1.0E-9)THEN 1 YEFF1,YDEPF1,YEFF2,YDEPF2,UEFF1,UDEPF1, 2 UEFF2,UDEPF2,EFF,VARDPF,DEPF,DEPEF, 3 DEPMXF,DEPMNF,EFMXF,EFMNF,X0F,RRF) VARF(11) = IFLAGF VARF(12) = RRF VARF(13) = EFMXF VARF(14) = DEPMXF VARF(15) = EFMNF VARF(16) = DEPMNF VARF(17) = X0F VARF(18) = DEPF SIGF(M2) = EFF DEPE = EFF / RR2 VARDEP = DEPF - DEPE IF(M2.EQ.6)THEN DD(2) = VARDEP - PLASF DD(5) = (VARDEP - PLASF) / XLUNG ELSE DD(3) = -1.0 * (VARDEP - PLASF) DD(4) = (VARDEP - PLASF) / XLUNG END IF VARF(19) = VARDEP ELSE DO 52 II = 11,19 52 VARF(II) = VAR0(II) END IF END IF C C C CISAILLEMENT C C RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT. C 200 IF(ICOMP(3).EQ.0)THEN GO TO 300 ELSE JJ= JJ+1 NBLOI = IPOL(JJ).TLOICO(/1) * IF (NBLOI.EQ.14) THEN UEFT1 = (-1 * TLOICO(1)) UDEPT1 = (-1 * TLOICO(2)) YEFT1 = (-1 * TLOICO(3)) YDEPT1 = (-1 * TLOICO(4)) ELEFT1 = (-1 * TLOICO(5)) ELDEPT1 = (-1 * TLOICO(6)) ELEFT2 = (-1 * TLOICO(9)) ELDEPT2 = (-1 * TLOICO(10)) YEFT2 = (-1 * TLOICO(11)) YDEPT2 = (-1 * TLOICO(12)) UEFT2 = (-1 * TLOICO(13)) UDEPT2 = (-1 * TLOICO(14)) ELSE UEFT1 = (-1 * TLOICO(1)) UDEPT1 = (-1 * TLOICO(2)) YEFT1 = (-1 * TLOICO(3)) YDEPT1 = (-1 * TLOICO(4)) ELEFT1 = (-1 * TLOICO(3)) ELDEPT1 = (-1 * TLOICO(4)) ELEFT2 = (-1 * TLOICO(7)) ELDEPT2 = (-1 * TLOICO(8)) YEFT2 = (-1 * TLOICO(7)) YDEPT2 = (-1 * TLOICO(8)) UEFT2 = (-1 * TLOICO(9)) UDEPT2 = (-1 * TLOICO(10)) ENDIF * IFLAGS = INT(VAR0(20)) RRS = VAR0(21) EFMXS = VAR0(22) DEPMXS = VAR0(23) EFMNS = VAR0(24) DEPMNS = VAR0(25) X01S = VAR0(26) X02S = VAR0(27) FINS = VAR0(28) EFLIMS = VAR0(29) DEPS = VAR0(30) PLASS = VAR0(31) * RR3 = (ELEFT1 - ELEFT2)/(ELDEPT1 - ELDEPT2) M3 = ICOMP(3) + 1 EFS = SIG0(M3) VAREFS = DSIGT(M3) VARDPS =VAREFS / RR3 C C APPEL DES LOIS DE COMPORTEMENT C VARDP0 = VARDPS C WRITE (6,*) 'RR entree=',RRS C WRITE (6,*) 'EF entree=',EFS C WRITE (6,*) 'DEP entree=',DEPS C WRITE (6,*) 'VARDEP entree=', VARDPS C WRITE (6,*) 'IFLAG entree=' , IFLAGS IF(ABS(VARDP0).GT.1.E-9)THEN 1 YEFT1,YDEPT1,YEFT2,YDEPT2,UEFT1,UDEPT1, 2 UEFT2,UDEPT2,EFS,VARDPS,DEPS,EFLIMS, 3 DEPMXS,DEPMNS,EFMXS,EFMNS,X01S,X02S,FINS,RRS) VARF(20) = IFLAGS VARF(21) = RRS VARF(22) = EFMXS VARF(23) = DEPMXS VARF(24) = EFMNS VARF(25) = DEPMNS VARF(26) = X01S VARF(27) = X02S VARF(28) = FINS VARF(29) = EFLIMS VARF(30) = DEPS SIGF(M3) = EFS C WRITE (6,*) 'RR sortie=',RRS C WRITE (6,*) 'EF sortie=',EFS C WRITE (6,*) 'DEP sortie=',DEPS C WRITE (6,*) 'VARDEP sortie=', VARDPS C WRITE (6,*) 'IFLAG sortie=' , IFLAGS DEPE = EFS / RR3 VARDEP = DEPS - DEPE C WRITE (6,*) 'VARDEP PLAST sortie=' , VARDEP IF(M3.EQ.2)THEN DD(2) = DD(2) + VARDEP - PLASS DD(5) = DD(5) + (VARDEP - PLASS) / XLUNG ELSE DD(3) = DD(3) + VARDEP - PLASS DD(4) = DD(4) + (VARDEP - PLASS) / XLUNG END IF VARF(31) = VARDEP ELSE DO 53 II = 20,31 53 VARF(II) = VAR0(II) END IF END IF C C MISE A JOUR DES VARIABLES INTERNES C 300 DEFP(2) = DEFP(2) + DD(2) DEFP(3) = DEFP(3) + DD(3) DEFP(5) = DEFP(5) + DD(4) DEFP(6) = DEFP(6) + DD(5) VARF(1) = VAR0(1) + SQRT(DD(1)**2 + DD(2)**2 + DD(3)**2) C C MISE A JOUR DE L'INDICE D'ERREUR C IF(IDP(1).NE.0) KERRE = -1 IF(IDP(2).NE.0) KERRE = KERRE - 2 IF(IDP(3).NE.0) KERRE = KERRE - 4 C 998 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales