Download cddis.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer