Download ddis.eso

Back to the list

   1 : C DDIS      SOURCE    CHAT      05/01/12    22:38:00     5004           
   2 : C   SUBROUTINE DDIS : L'INITIALISATION ET L'APPEL DES LOI DE COMPORTEMENT 
   3 : C=========================================================================
   4 :        SUBROUTINE DDIS(NSTRS,CMATE,N2EL,N2PTEL,WTRAV,MFR,IFOU,IB,
   5 :      1           IGAU,EPAIST,MELE,NPINT,NBPGAU,NBGMAT,NELMAT,SECT,
   6 :      2      LHOOK,CRIGI,NMATT,INDLEG,IPWRKG,WRKGL,WRK0,WRK1,KERRE)
   7 : C
   8 :       IMPLICIT INTEGER(I-N)
   9 :        IMPLICIT REAL*8(A-H,O-Z)
  10 : C
  11 : -INC CCOPTIO
  12 : -INC SMCOORD
  13 : C
  14 : ***********************************************************************
  15 : *        INITIALISATION ET APPEL DES LOIS DE COMPORTEMENT             *
  16 : ***********************************************************************
  17 : *
  18 : * ENTREES :
  19 : * WRK0 SEGMENT DE TRAVAIL CONTENANT LES CARACTERISTIQUES
  20 : * MATERIAUX
  21 : * WRK1 SEGMENT DE TRAVAIL CONTENANT LES EFFORTS, LES DEPLACEMENTS
  22 : * ET LA MATRICE DE HOOK
  23 : * NMATT NOMBRE DE COMPOSANTES DE PROPRIETES DE MATERIAU
  24 : * INDLEG CODAGE DES, TYPES DE LOI DE COMPORTEMENT RETENUS
  25 : * WRKGL SEGMENT CONTENANT LES LOIS DE COMPORTEMENT DE LA SECTION
  26 : * IPWRKG SEGMENT DE POINTEUR SUR LES LOIS CONTENUES DANS WRKGL
  27 : * KERRE INDICATEUR D'ERREUR
  28 : * WTRAV SEGMENT DE TRAVAIL CONTENANT LES TABLEAUX UTILISES POUR
  29 : * LE CALCUL DE LA MATRICE DE HOOKE ELASTIQUE (SS-PROGRAMME CALSIG)
  30 : *
  31 : * N2EL  = NBRE D ELEMENTS DANS SEGMENT DE HOOKE
  32 : * N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE
  33 : * MFR   = NUMERO DE LA FORMULATION
  34 : * IFOU  = OPTION DE CALCUL
  35 : * IB    = NUMERO DE L ELEMENT COURANT
  36 : * IGAU  = NUMERO DU POINT COURANT
  37 : * EPAIST= EPAISSEUR
  38 : * NBPGAU= NBRE DE POINTS DE GAUSS
  39 : * MELE  = NUMERO DE L ELEMENT FINI
  40 : * NPINT = NBRE DE POINTS D INTEGRATION
  41 : * NBGMAT= NBRE DE POINTS DANS SEGMENT DE CARACTERISTIQUES
  42 : * NELMAT= NBRE D ELEMENTS DANS SEGMENT DE CARACTERISTIQUES
  43 : * SECT  = SECTION
  44 : * LHOOK = TAILLE DE LA MATRICE DE HOOKE
  45 : *
  46 : * SORTIES :
  47 : * WRK1 SEGMENT DE TRAVAIL CONTENANT SOLLICITATIONS CORRIGEES 
  48 : * AU COURS DU PAS DE TEMPS CONSIDERE
  49 : * KERRE INDICATEUR D'ERREUR
  50 : *
  51 : ***********************************************************************
  52 : *
  53 : * ATTENTION : 
  54 : * (ELEF1,ELDEP1) ET (ELEF2,ELDEP2)  DEFINISSENT LE DOMAINE DE
  55 : * COMPORTEMENT ELASTIQUE LINEAIRE PUR DE L'ELEMENT
  56 : * CES COUPLES DE VALEURS DOIVENT DONC ETRE COHERENTS AVEC LA 
  57 : * MATRICE DE RIGIDITE DE L'ELEMENT (INERTIE ET MODULE D'YOUNG)
  58 : *
  59 : * CES DEUX COUPLES DE VALEURS SONT A DECLARER DANS LES OPTIONS A
  60 : * 5 OU 7 POINTS (4 OU 6 POUR LA COMPRESSION)
  61 : *
  62 : * LES COUPLES (YEF1,YDEP1) ET (YEF2,YDEP2) TENANT COMPTE DE
  63 : * L'ENDOMMAGEMENT SONT A RENTRER DANS L'OPTION 6 OU 7 POINTS
  64 : *
  65 : **********************************************************************
  66 : C
  67 :        DIMENSION ICOMP(3),DD(5),IDP(3),CRIGI(12)
  68 : C
  69 :       SEGMENT WRK0                                                              
  70 :        REAL*8 XMAT(NCXMAT)                                                      
  71 :       ENDSEGMENT                                                                
  72 : C                                                                               
  73 :       SEGMENT WRK1                                                              
  74 :         REAL*8 DDHOOK(LHOOK,LHOOK),SIG0(NSTRS),DEPST(NSTRS)
  75 :         REAL*8 SIGF(NSTRS),VAR0(NVARI),VARF(NVARI)
  76 :         REAL*8 DEFP(NSTRS),XCAR(ICARA)                                          
  77 :       ENDSEGMENT
  78 : C      
  79 :        SEGMENT WRKGL
  80 :          REAL*8 TLOICO(NBLOI)
  81 :        ENDSEGMENT
  82 : C
  83 :        SEGMENT IPWRKG
  84 :          POINTEUR IPOL(3).WRKGL
  85 :        ENDSEGMENT
  86 : C
  87 :       SEGMENT WTRAV                                                              
  88 :         REAL*8 DDAUX(LHOOK,LHOOK),VALMAT(NUMAT)
  89 :         REAL*8 VALCAR(NUCAR),DSIGT(NSTRS)
  90 :         REAL*8 TXR(IDIM,IDIM),DDHOMU(LHOOK,LHOOK)
  91 :         REAL*8 XLOC(IDIM,IDIM),XGLOB(IDIM,IDIM)
  92 :         REAL*8 D1HOOK(LHOOK,LHOOK),ROTHOO(LHOOK,LHOOK)
  93 :       ENDSEGMENT
  94 : C
  95 : C
  96 :        CHARACTER*8 CMATE
  97 : C
  98 : C   INITIALISATIONS
  99 : C
 100 :        JJ=0
 101 :        DO 40 II = 1,3
 102 :        IDP(II) = 0
 103 : 40     ICOMP(II) = 0
 104 :        DO 41 II = 1,5
 105 : 41     DD(II) = 0.0
 106 :        XLUNG = SQRT((XCOOR(1)-XCOOR(5))**2 + (XCOOR(2)-XCOOR(6))**2 +
 107 :      1               (XCOOR(3)-XCOOR(7))**2)
 108 : C
 109 : C    RECUPERATION DES COURBES ET DECODAGE DE INDLEG
 110 : C
 111 :        DO 55 II = 1,2
 112 :           IF(INDLEG.GE.100)THEN
 113 :              ICOMP(3) = ICOMP(3) + 1
 114 :              INDLEG = INDLEG - 100
 115 :           END IF
 116 : 55     CONTINUE
 117 :        DO 56 II = 1,2
 118 :           IF(INDLEG.GE.10)THEN
 119 :              ICOMP(2) = ICOMP(2) + 1
 120 :              INDLEG = INDLEG - 10
 121 :           END IF
 122 : 56     CONTINUE
 123 :        IF(INDLEG.GE.1) ICOMP(1) = 1
 124 : C
 125 : C CALCUL DE L'INCREMENT DE CONTRAINTES
 126 : C
 126 :        CALL CALSIG(DEPST,DDAUX,NSTRS,CMATE,VALMAT,VALCAR,
 127 :      1     N2EL,N2PTEL,MFR,IFOU,IB,IGAU,EPAIST,NBPGAU,
 128 :      2        MELE,NPINT,NBGMAT,NELMAT,SECT,LHOOK,TXR,XLOC,
 129 :      3         XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI,DSIGT,IRTD)
 130 : *
 131 :        IF(IRTD.NE.1) THEN
 132 :           KERRE=69
 133 :           GOTO 998
 134 :        ENDIF
 135 : *
 136 : C
 137 : C
 138 : C   RECUPERATION DES EFFORTS PRECEDANTS ET DES INCREMENTS
 139 : C
 140 :        DO 57 II = 1,6
 141 : 57     SIGF(II) = SIG0(II) + DSIGT(II)
 142 : C
 143 : C
 144 : C   COMPRESSION
 145 : C
 146 : C   RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT.
 147 : C
 148 :        IF (ICOMP(1).EQ.0)THEN
 149 :           GO TO 100
 150 :        ELSE
 151 :           JJ=JJ+1
 152 :           NBLOI  = IPOL(JJ).TLOICO(/1)
 153 : *
 154 :           IF (NBLOI.EQ .12) THEN
 155 :           YEFC2=(-1.*TLOICO(1))
 156 :           YDEPC2=(-1.*TLOICO(2))
 157 :           ELEFC2=(-1.* TLOICO(3))
 158 :           ELDEPC2=(-1.*TLOICO(4))
 159 :           ELEFC1=(-1.*TLOICO(7))
 160 :           ELDEPC1=(-1.*TLOICO(8))
 161 :           YEFC1=(-1.*TLOICO(9))
 162 :           YDEPC1=(-1.*TLOICO(10))
 163 :           UEFC1 =(-1.*TLOICO(11))
 164 :           UDEPC1 =(-1.*TLOICO(12))
 165 :           ELSE
 166 :           YEFC2=(-1.*TLOICO(1))
 167 :           YDEPC2=(-1.*TLOICO(2))
 168 :           ELEFC2=(-1.*TLOICO(1))
 169 :           ELDEPC2=(-1.*TLOICO(2))
 170 :           ELEFC1=(-1.*TLOICO(5))
 171 :           ELDEPC1=(-1.*TLOICO(6))
 172 :           YEFC1=(-1.*TLOICO(5))
 173 :           YDEPC1=(-1.*TLOICO(6))
 174 :           UEFC1=(-1.*TLOICO(7))
 175 :           UDEPC1=(-1.*TLOICO(8))
 176 :           ENDIF
 177 : *
 178 :           IFLAGC = INT(VAR0(2))
 179 :           RRC = VAR0(3)
 180 :           EFMXC = VAR0(4)
 181 :           DEPMXC = VAR0(5)
 182 :           EFMNC = VAR0(6)
 183 :           DEPMNC = VAR0(7)
 184 :           DEPC = VAR0(8)
 185 :           XINT = VAR0(9)
 186 :           PLASC = VAR0(10)
 187 : *
 188 :           RR1 = (ELEFC1 - ELEFC2)/(ELDEPC1 - ELDEPC2)
 189 :           EFC = SIG0(1)
 190 :           VAREFC = DSIGT(1)
 191 :           VARDPC = VAREFC / RR1
 192 :           
 193 : C
 194 : C   APPEL DE LA LOI DE COMPORTEMENT
 195 : C
 196 :           VARDP0 = VARDPC
 197 :           IF((ABS(VARDP0)).GE.1.0E-9)THEN
 197 :           CALL DCMP(IFLAGC,IDP(1),ELEFC1,ELDEPC1,ELEFC2,ELDEPC2,
 198 :      1              YEFC1,YDEPC1,YEFC2,YDEPC2,UEFC1,UDEPC1,
 199 :      2              EFC,VARDPC,DEPC,DEPEC,DEPMXC,EFMXC,
 200 :      3              DEPMNC,EFMNC,XINT,RRC)
 201 :              VARF(2) = IFLAGC
 202 :              VARF(3) = RRC
 203 :              VARF(4) = EFMXC
 204 :              VARF(5) = DEPMXC
 205 :              VARF(6) = EFMNC
 206 :              VARF(7) = DEPMNC
 207 :              VARF(8) = DEPC
 208 :              VARF(9) = XINT
 209 :              SIGF(1) = EFC
 210 :              DEPE = EFC / RR1
 211 :              VARDEP = DEPC - DEPE
 212 :              DD(1) = VARDEP - PLASC
 213 :              DEFP(1) = DD(1)
 214 :              VARF(10) = VARDEP
 215 :           ELSE
 216 :              DEFP(1) = DEFP(1)
 217 :              DO 51 II = 2,10
 218 : 51           VARF(II) = VAR0(II)
 219 :           END IF
 220 :        END IF
 221 : C
 222 : C
 223 : C   FLEXION
 224 : C
 225 : C   RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT.
 226 : C
 227 : 100     IF (ICOMP(2).EQ.0)THEN 
 228 :              GO TO 200
 229 :         ELSE
 230 :           JJ=JJ+1
 231 :           NBLOI = IPOL(JJ).TLOICO(/1)
 232 : *
 233 :           IF (NBLOI.EQ .14) THEN
 234 :           UEFF1 = (-1.*TLOICO(1))
 235 :           UDEPF1 = (-1.*TLOICO(2))
 236 :           YEFF1 = (-1.*TLOICO(3))
 237 :           YDEPF1 = (-1.*TLOICO(4))
 238 :           ELEFF1 = (-1.*TLOICO(5))
 239 :           ELDEPF1 = (-1.*TLOICO(6))
 240 :           ELEFF2 = (-1.*TLOICO(9))
 241 :           ELDEPF2 = (-1.*TLOICO(10))
 242 :           YEFF2 = (-1.*TLOICO(11))
 243 :           YDEPF2 = (-1.*TLOICO(12))
 244 :           UEFF2 = (-1.*TLOICO(13))
 245 :           UDEPF2 = (-1.*TLOICO(14))
 246 :           ELSE
 247 :           UEFF1 = (-1.*TLOICO(1))
 248 :           UDEPF1 = (-1.*TLOICO(2))
 249 :           YEFF1 = (-1.*TLOICO(3))
 250 :           YDEPF1 = (-1.*TLOICO(4))
 251 :           ELEFF1 = (-1.*TLOICO(3))
 252 :           ELDEPF1 = (-1.*TLOICO(4))
 253 :           ELEFF2 = (-1.*TLOICO(7))
 254 :           ELDEPF2 = (-1.*TLOICO(8))
 255 :           YEFF2 = (-1.*TLOICO(7))
 256 :           YDEPF2 = (-1.*TLOICO(8))
 257 :           UEFF2 = (-1.*TLOICO(9))
 258 :           UDEPF2 = (-1.*TLOICO(10))
 259 :           ENDIF
 260 : *
 261 :           IFLAGF = INT(VAR0(11))
 262 :           RRF = VAR0(12)
 263 :           EFMXF = VAR0(13)
 264 :           DEPMXF = VAR0(14)
 265 :           EFMNF = VAR0(15)
 266 :           DEPMNF = VAR0(16)
 267 :           X0F = VAR0(17)
 268 :           DEPF = VAR0(18)
 269 :           PLASF = VAR0(19)
 270 : *
 271 :           RR2 = (ELEFF1 - ELEFF2)/(ELDEPF1 - ELDEPF2) 
 272 :           M2 = ICOMP(2) + 4
 273 :           EFF = SIG0(M2)
 274 :           VAREFF = DSIGT(M2)
 275 :           VARDPF = VAREFF / RR2 
 276 : C
 277 : C   APPEL DE LA LOI DE COMPORTEMENT
 278 : C
 279 :           VARDP0 = VARDPF
 280 :           IF(ABS(VARDP0).GT.1.0E-9)THEN
 280 :           CALL DTAK(IFLAGF,IDP(2),ELEFF1,ELDEPF1,ELEFF2,ELDEPF2,
 281 :      1              YEFF1,YDEPF1,YEFF2,YDEPF2,UEFF1,UDEPF1,
 282 :      2              UEFF2,UDEPF2,EFF,VARDPF,DEPF,DEPEF,
 283 :      3              DEPMXF,DEPMNF,EFMXF,EFMNF,X0F,RRF)
 284 :              VARF(11) = IFLAGF
 285 :              VARF(12) = RRF
 286 :              VARF(13) = EFMXF
 287 :              VARF(14) = DEPMXF
 288 :              VARF(15) = EFMNF
 289 :              VARF(16) = DEPMNF
 290 :              VARF(17) = X0F
 291 :              VARF(18) = DEPF
 292 :              SIGF(M2) = EFF
 293 :              DEPE = EFF / RR2
 294 :              VARDEP = DEPF - DEPE
 295 :              IF(M2.EQ.6)THEN
 296 :                 DD(2) = VARDEP - PLASF
 297 :                 DD(5) = (VARDEP - PLASF) / XLUNG
 298 :              ELSE
 299 :                 DD(3) = -1.0 * (VARDEP - PLASF)
 300 :                 DD(4) = (VARDEP - PLASF) / XLUNG
 301 :              END IF
 302 :              VARF(19) = VARDEP
 303 :           ELSE
 304 :              DO 52 II = 11,19
 305 : 52           VARF(II) = VAR0(II)
 306 :           END IF
 307 :        END IF
 308 : C      
 309 : C
 310 : C   CISAILLEMENT
 311 : C
 312 : C   RECUPERATION DE LA LOI DE COMPORTEMENT ET VARIABLES INT.
 313 : C
 314 : 200     IF(ICOMP(3).EQ.0)THEN
 315 :                  GO TO 300
 316 :         ELSE
 317 :           JJ= JJ+1
 318 :           NBLOI = IPOL(JJ).TLOICO(/1)
 319 : *
 320 :           IF (NBLOI.EQ.14) THEN
 321 :           UEFT1 = (-1 * TLOICO(1))
 322 :           UDEPT1 = (-1 * TLOICO(2))
 323 :           YEFT1 =  (-1 * TLOICO(3))
 324 :           YDEPT1 = (-1 * TLOICO(4))
 325 :           ELEFT1 = (-1 * TLOICO(5))
 326 :           ELDEPT1 = (-1 * TLOICO(6))
 327 :           ELEFT2 = (-1 * TLOICO(9))
 328 :           ELDEPT2 = (-1 * TLOICO(10))
 329 :           YEFT2 = (-1 * TLOICO(11))
 330 :           YDEPT2 = (-1 * TLOICO(12))
 331 :           UEFT2 = (-1 * TLOICO(13))
 332 :           UDEPT2 = (-1 * TLOICO(14))
 333 :           ELSE
 334 :           UEFT1 = (-1 * TLOICO(1))
 335 :           UDEPT1 = (-1 * TLOICO(2))
 336 :           YEFT1 = (-1 * TLOICO(3))
 337 :           YDEPT1 = (-1 * TLOICO(4))
 338 :           ELEFT1 = (-1 * TLOICO(3))
 339 :           ELDEPT1 = (-1 * TLOICO(4))
 340 :           ELEFT2 = (-1 * TLOICO(7))
 341 :           ELDEPT2 = (-1 * TLOICO(8))
 342 :           YEFT2 = (-1 * TLOICO(7))
 343 :           YDEPT2 = (-1 * TLOICO(8))
 344 :           UEFT2 = (-1 * TLOICO(9))
 345 :           UDEPT2 = (-1 *  TLOICO(10))
 346 :           ENDIF
 347 : *
 348 :           IFLAGS = INT(VAR0(20))
 349 :           RRS = VAR0(21)
 350 :           EFMXS = VAR0(22)
 351 :           DEPMXS = VAR0(23)
 352 :           EFMNS = VAR0(24)
 353 :           DEPMNS = VAR0(25)
 354 :           X01S = VAR0(26)
 355 :           X02S = VAR0(27)
 356 :           FINS = VAR0(28)
 357 :           EFLIMS = VAR0(29)
 358 :           DEPS = VAR0(30)
 359 :           PLASS = VAR0(31)
 360 : *
 361 :           RR3 = (ELEFT1 - ELEFT2)/(ELDEPT1 - ELDEPT2)
 362 :           M3 = ICOMP(3) + 1
 363 :           EFS = SIG0(M3)
 364 :           VAREFS = DSIGT(M3)
 365 :           VARDPS =VAREFS / RR3
 366 : C
 367 : C   APPEL DES LOIS DE COMPORTEMENT
 368 : C
 369 :           VARDP0 = VARDPS
 370 : C        WRITE (6,*) 'RR entree=',RRS
 371 : C        WRITE (6,*) 'EF entree=',EFS
 372 : C        WRITE (6,*) 'DEP entree=',DEPS
 373 : C        WRITE (6,*) 'VARDEP entree=', VARDPS
 374 : C        WRITE (6,*) 'IFLAG entree=' , IFLAGS
 375 :           IF(ABS(VARDP0).GT.1.E-9)THEN
 375 :           CALL DTAI(IFLAGS,IDP(3),ELEFT1,ELDEPT1,ELEFT2,ELDEPT2,
 376 :      1               YEFT1,YDEPT1,YEFT2,YDEPT2,UEFT1,UDEPT1,
 377 :      2               UEFT2,UDEPT2,EFS,VARDPS,DEPS,EFLIMS,
 378 :      3               DEPMXS,DEPMNS,EFMXS,EFMNS,X01S,X02S,FINS,RRS)
 379 :              VARF(20) = IFLAGS
 380 :              VARF(21) = RRS
 381 :              VARF(22) = EFMXS
 382 :              VARF(23) = DEPMXS
 383 :              VARF(24) = EFMNS
 384 :              VARF(25) = DEPMNS
 385 :              VARF(26) = X01S
 386 :              VARF(27) = X02S
 387 :              VARF(28) = FINS
 388 :              VARF(29) = EFLIMS
 389 :              VARF(30) = DEPS
 390 :              SIGF(M3) = EFS
 391 : C        WRITE (6,*) 'RR sortie=',RRS
 392 : C        WRITE (6,*) 'EF sortie=',EFS
 393 : C        WRITE (6,*) 'DEP sortie=',DEPS
 394 : C        WRITE (6,*) 'VARDEP sortie=', VARDPS
 395 : C        WRITE (6,*) 'IFLAG sortie=' , IFLAGS
 396 :              DEPE = EFS / RR3
 397 :              VARDEP = DEPS - DEPE
 398 : C        WRITE (6,*) 'VARDEP PLAST sortie=' , VARDEP
 399 :              IF(M3.EQ.2)THEN
 400 :                 DD(2) = DD(2) + VARDEP - PLASS
 401 :                 DD(5) = DD(5) + (VARDEP - PLASS) / XLUNG
 402 :              ELSE
 403 :                 DD(3) = DD(3) + VARDEP - PLASS
 404 :                 DD(4) = DD(4) + (VARDEP - PLASS) / XLUNG
 405 :              END IF
 406 :              VARF(31) = VARDEP
 407 :           ELSE
 408 :              DO 53 II = 20,31
 409 : 53           VARF(II) = VAR0(II)
 410 :           END IF
 411 :        END IF
 412 : C
 413 : C MISE A JOUR DES VARIABLES INTERNES
 414 : C
 415 : 300    DEFP(2) = DEFP(2) + DD(2)
 416 :        DEFP(3) = DEFP(3) + DD(3)
 417 :        DEFP(5) = DEFP(5) + DD(4)
 418 :        DEFP(6) = DEFP(6) + DD(5)
 419 :        VARF(1) = VAR0(1) + SQRT(DD(1)**2 + DD(2)**2 + DD(3)**2)
 420 : C
 421 : C MISE A JOUR DE L'INDICE D'ERREUR
 422 : C
 423 :        IF(IDP(1).NE.0) KERRE = -1
 424 :        IF(IDP(2).NE.0) KERRE = KERRE - 2
 425 :        IF(IDP(3).NE.0) KERRE = KERRE - 4
 426 : C
 427 :  998   RETURN
 428 :        END
 429 :  

© Cast3M 2003 - All rights reserved.
Disclaimer