Download dohota.eso

Back to the list

   1 : C DOHOTA    SOURCE    FANDEUR   09/09/23    21:15:09     6374           
   2 :       SUBROUTINE DOHOTA(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,TRAC,
   3 :      &                  LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL,XPREC,DTPS,
   4 :      &                  IFOU,LHOOK,DDHOOK,IRET)
   5 : *_______________________________________________________________________
   6 : *
   7 : *  entrees :
   8 : *  --------
   9 : *
  10 : *     ivamat  pointeur sur un segment mptval contenant les materiaux
  11 : *     nmatt   nombre de composantes du materiau
  12 : *     ivacon  pointeur sur un segment mptval contenant les contraintes
  13 : *     nstrs   nombre de composantes de contraintes
  14 : *     ivari   pointeur sur un segment mptval contenant les variables
  15 : *             internes
  16 : *     nvart   nombre de composantes de variables internes
  17 : *     trac    courbe de traction
  18 : *     ltrac   taille du tableau trac
  19 : *     alpha   coefficient alpha pour les coques minces
  20 : *     ep1     epaisseur pour les coques minces
  21 : *     igau    numero du point de gauss ou l'on veut le mat. de hooke
  22 : *     il      numero de l'element ou l'on veut le mat. de hooke
  23 : *     mate    numeror du materiau lineaire
  24 : *     mapl    numero du materiau plastique
  25 : *     xprec   flottant precision
  26 : *     dtps    flottant pas de temps pour les modeles visqueux
  27 : *     ifou    option ifour de ccoptio
  28 : *     lhook   taille de la matrice de hooke
  29 : *
  30 : *  sorties :
  31 : *  --------
  32 : *
  33 : *     ddhook  matrice de hooke tangente pour l'element ib
  34 : *     iret    = 1 si ok
  35 : *             = 0 si formulation indisponible
  36 : *             = -1 si hors courbe
  37 : *
  38 : *     passage aux nouveaux chamelem par jm campenon le 05/91
  39 : *_______________________________________________________________________
  40 : *
  41 :       IMPLICIT INTEGER(I-N)
  42 :       IMPLICIT REAL*8(A-H,O-Z)
  43 : *
  44 : -INC CCOPTIO
  45 : -INC SMCHAML
  46 : *
  47 :       SEGMENT MPTVAL
  48 :         INTEGER IPOS(NS)    ,NSOF(NS)
  49 :         INTEGER      IVAL(NCOSOU)
  50 :         CHARACTER*16 TYVAL(NCOSOU)
  51 :       ENDSEGMENT
  52 : *
  53 :       SEGMENT WRK5
  54 :          INTEGER NTRAT,NTRAC
  55 :       ENDSEGMENT
  56 : *
  57 :       SEGMENT WTRAV
  58 :          REAL*8 TXR(IDIM,IDIM)
  59 :       ENDSEGMENT
  60 : *
  61 :       PARAMETER(XZER=0.D0,UN=1.D0,DEUX=2.D0,TROIS=3.D0)
  62 :       PARAMETER(CINQ=5.D0,SIX=6.D0,HUIT=8.D0,XNEUF=9.D0,DOUZE=12.D0)
  63 :       PARAMETER(UNTIER=.33333 33333 33333D0,TRDEMI=1.5D0)
  64 :       PARAMETER(DETIER=.66666 66666 66666D0,UNDEMI=0.5D0)
  65 :       PARAMETER(UNQU=.25D0)
  66 : *
  67 :       DIMENSION DDHOOK(LHOOK,*)
  68 :       DIMENSION TRAC(*)
  69 : 
  70 :       DIMENSION XSTRS(12),XVARI(12)
  71 :       DIMENSION DDF(8),DDG(8),DHDF(8),DHDG(8)
  72 :       DIMENSION PMATRIC(6,6),GMATRIC(6,6),GDMATR(6,6),GINV(6,6),COEF3(6)
  73 : *     matrice P pour le modele viscoplastique parfait
  74 : *     la matrice sert a passer de la contrainte a la contrainte deviatorique
  75 :       DATA PMATRIC /2.D0,-1.D0,-1.D0,0.D0,0.D0,0.D0,
  76 :      &              -1.D0,2.D0,-1.D0,0.D0,0.D0,0.D0,
  77 :      &              -1.D0,-1.D0,2.D0,0.D0,0.D0,0.D0,
  78 :      &               0.D0, 0.D0,0.D0,6.D0,0.D0,0.D0,
  79 :      &               0.D0, 0.D0,0.D0,0.D0,6.D0,0.D0, 
  80 :      &               0.D0, 0.D0,0.D0,0.D0,0.D0,6.D0/
  81 : *
  82 :       DATA COEF3 /1.D0,1.D0,1.D0,2.D0,2.D0,2.D0/ 
  83 : *_______________________________________________________________________
  84 : *
  85 : *       formulation coques minces
  86 : *       (formulation massive dans dohot1.eso)
  87 : *_______________________________________________________________________
  88 : *
  89 :       ENTRY DOHOT3(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,
  90 :      &                 TRAC,LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL,
  91 :      &                 XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET)
  92 : *
  93 : * Transformation des efforts generalises en contraintes :
  94 : *
  95 :       MFR=3
  96 :       XXHH=XZER
  97 :       SIGY=XZER
  98 :       ALP =XZER
  99 : *
 100 :       IRET=1
 101 :       ALPHAP=ALPHA*SIX/EP1
 102 :       ALPH2=ALPHAP*ALPHAP
 103 :       ALPH4=ALPH2*ALPH2
 103 :       CALL ZERO(DDHOOK,LHOOK,LHOOK)
 104 : *
 105 : *     materiau elastique isotrope plastique parfait et bilineaire
 106 : *
 107 :       IF(MATE.EQ.1) THEN
 108 :          MPTVAL=IVAMAT
 109 :          MELVAL=IVAL(1)
 110 :          IGMN=MIN(IGAU,VELCHE(/1))
 111 :          IBMN=MIN(IB  ,VELCHE(/2))
 112 :          YOU =VELCHE(IGMN,IBMN)
 113 : *
 114 :          MELVAL=IVAL(2)
 115 :          IGMN=MIN(IGAU,VELCHE(/1))
 116 :          IBMN=MIN(IB  ,VELCHE(/2))
 117 :          XNU =VELCHE(IGMN,IBMN)
 118 : *
 119 :          IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN
 120 :            MELVAL=IVAL(3)
 121 :            IGMN=MIN(IGAU,VELCHE(/1))
 122 :            IBMN=MIN(IB  ,VELCHE(/2))
 123 :            SIGY = VELCHE(IGMN,IBMN)
 124 : *
 125 :            IF (MAPL.EQ.3) THEN
 126 :              MELVAL=IVAL(4)
 127 :              IGMN=MIN(IGAU,VELCHE(/1))
 128 :              IBMN=MIN(IB  ,VELCHE(/2))
 129 :              ALP = VELCHE(IGMN,IBMN)
 130 :            ELSE IF (MAPL.EQ.4) THEN
 131 :              MELVAL=IVAL(4)
 132 :              IGMN=MIN(IGAU,VELCHE(/1))
 133 :              IBMN=MIN(IB  ,VELCHE(/2))
 134 :              XXHH = VELCHE(IGMN,IBMN)
 135 :            ENDIF
 136 :          ENDIF
 137 : *
 138 : * Transformation des efforts generalises en contraintes :
 139 : *
 140 :          MPTVAL=IVACON
 141 :          DO 70 ICOMP=1,NSTRS
 142 :            MELVAL=IVAL(ICOMP)
 143 :            IGMN=MIN(IGAU,VELCHE(/1))
 144 :            IBMN=MIN(IB  ,VELCHE(/2))
 145 :            XSTRS(ICOMP) = VELCHE(IGMN,IBMN)
 146 :   70     CONTINUE
 146 :          CALL EFCONT(EP1,0.D0,NSTRS,XSTRS)
 147 : *
 148 :          MPTVAL=IVARI
 149 :          MELVAL=IVAL(1)
 150 :          IGMN=MIN(IGAU,VELCHE(/1))
 151 :          IBMN=MIN(IB  ,VELCHE(/2))
 152 :          EPS = VELCHE(IGMN,IBMN)
 153 : *
 154 : * Transformation des vints generalisees en vints :
 155 : *
 156 :          IF (NVART.EQ.NSTRS+1) THEN
 157 :             DO 80 ICOMP=1,NSTRS
 158 :                MELVAL=IVAL(1+ICOMP)
 159 :                IGMN=MIN(IGAU,VELCHE(/1))
 160 :                IBMN=MIN(IB  ,VELCHE(/2))
 161 :                XVARI(ICOMP) = VELCHE(IGMN,IBMN)
 162 :   80        CONTINUE
 162 :             CALL EFCONT(EP1,0.D0,NSTRS,XVARI)
 163 : * Calcul des contraintes effectives
 164 :             DO ICOMP=1,NSTRS
 165 :               XSTRS(ICOMP) = XSTRS(ICOMP) - XVARI(ICOMP)
 166 :             ENDDO
 167 :          ENDIF
 168 : *
 168 :          CALL PENTE(EPS,YOU,SIGY,XXHH,ALPHA,ALP,TRAC,LTRAC,XSTRS,
 169 :      &              NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL)
 170 : *
 171 :          IF(ILOGEL.EQ.-1) THEN
 172 :             IRET=-1
 173 :             RETURN
 174 :          ENDIF
 175 : *
 176 : *        matrice tangente
 177 : *
 178 :          AUX1=YOU/(UN - XNU* XNU)
 179 :          AUX2=XNU*AUX1
 180 :          AUX3=YOU*UNDEMI/(UN+XNU)
 181 :          AUX4=UNTIER/(UN-XNU*XNU)
 182 :          EP2=EP1*EP1/SIX
 183 :          EP3=EP1*EP1*EP1/DOUZE
 184 :          EP4=EP3/TROIS
 185 : *
 186 :          IF (IFOU.EQ.2.OR.IFOU.EQ.1) THEN
 187 : *
 188 :             DDHOOK(1,1)=AUX1*EP1
 189 :             DDHOOK(2,2)=AUX1*EP1
 190 :             DDHOOK(1,2)=AUX2*EP1
 191 :             DDHOOK(2,1)=AUX2*EP1
 192 :             DDHOOK(3,3)=AUX3*EP1
 193 : *
 194 :             DDHOOK(4,4)=AUX1*EP3
 195 :             DDHOOK(5,5)=AUX1*EP3
 196 :             DDHOOK(4,5)=AUX2*EP3
 197 :             DDHOOK(5,4)=AUX2*EP3
 198 :             DDHOOK(6,6)=AUX3*EP3
 199 : *
 200 : *           on retranche le partie deviateur
 201 : *
 202 :             IF (ILOGEL.EQ.1) THEN
 203 :                XSTRS(1)=XSTRS(1)*EP1
 204 :                XSTRS(2)=XSTRS(2)*EP1
 205 :                XSTRS(3)=XSTRS(3)*EP1
 206 :                XSTRS(4)=XSTRS(4)*EP2
 207 :                XSTRS(5)=XSTRS(5)*EP2
 208 :                XSTRS(6)=XSTRS(6)*EP2
 209 : *
 210 :                UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)-
 211 :      &              XSTRS(1)))*AUX4
 212 :                VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)-
 213 :      &              XSTRS(2)))*AUX4
 214 :                WM=XSTRS(3)/(UN+XNU)
 215 : *
 216 :                UF=(DEUX*XSTRS(4)-XSTRS(5)+XNU*(DEUX*XSTRS(5)-
 217 :      &            XSTRS(4)))*AUX4
 218 :                VF=(DEUX*XSTRS(5)-XSTRS(4)+XNU*(DEUX*XSTRS(4)-
 219 :      &            XSTRS(5)))*AUX4
 220 :                WF=XSTRS(6)/(UN+XNU)
 221 : *
 222 :                UM=UM*EP1
 223 :                VM=VM*EP1
 224 :                WM=WM*EP1
 225 : *
 226 :                UF=UF*EP3*ALPH2
 227 :                VF=VF*EP3*ALPH2
 228 :                WF=WF*EP3*ALPH2
 229 : *
 230 :                XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2)
 231 :                XXX1=XSTRS(4)*XSTRS(4)+XSTRS(5)*XSTRS(5)
 232 :                XXXA=XXXX*EP1+XXX1*ALPH4*EP3
 233 :                XXXB=XXXX*EP1+XXX1*ALPH2*EP4
 234 : *
 235 :                YYYY=XSTRS(1)*XSTRS(2)
 236 :                YYY1=XSTRS(4)*XSTRS(5)
 237 :                YYYA=YYYY*EP1+YYY1*ALPH4*EP3
 238 :                YYYB=YYYY*EP1+YYY1*ALPH2*EP4
 239 : *
 240 :                ZZZZ=XSTRS(3)*XSTRS(3)
 241 :                ZZZ1=XSTRS(6)*XSTRS(6)
 242 :                ZZZA=ZZZZ*EP1+ZZZ1*ALPH4*EP3
 243 :                ZZZB=ZZZZ*EP1+ZZZ1*ALPH2*EP4
 244 : *
 245 :                A= CINQ*XXXA - HUIT*YYYA
 246 :                B= CINQ*YYYA - DEUX*XXXA
 247 :                C= DETIER*(XXXA-YYYA)+DEUX*ZZZA
 248 :                D= (A+DEUX*XNU*B)*AUX4  +  SIX*ZZZA/(UN+XNU)
 249 : *
 250 :                XNUM=TROIS*YOU*(YOU-YOUTA)
 251 :                DENOM=DEUX*YOUTA*C  + ( YOU - YOUTA ) * D
 252 :                BETA=XNUM/DENOM
 253 : *
 254 :                DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM
 255 :                DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM
 256 :                DDHOOK(3,1)=DDHOOK(3,1)-BETA*WM*UM
 257 : *
 258 :                DDHOOK(4,1)=           -BETA*UF*UM
 259 :                DDHOOK(5,1)=           -BETA*VF*UM
 260 :                DDHOOK(6,1)=           -BETA*WF*UM
 261 : *
 262 :                DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM
 263 :                DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM
 264 :                DDHOOK(3,2)=DDHOOK(3,2)-BETA*WM*VM
 265 : *
 266 :                DDHOOK(4,2)=           -BETA*UF*VM
 267 :                DDHOOK(5,2)=           -BETA*VF*VM
 268 :                DDHOOK(6,2)=           -BETA*WF*VM
 269 : *
 270 :                DDHOOK(1,3)=DDHOOK(1,3)-BETA*UM*WM
 271 :                DDHOOK(2,3)=DDHOOK(2,3)-BETA*VM*WM
 272 :                DDHOOK(3,3)=DDHOOK(3,3)-BETA*WM*WM
 273 : *
 274 :                DDHOOK(4,3)=           -BETA*UF*WM
 275 :                DDHOOK(5,3)=           -BETA*VF*WM
 276 :                DDHOOK(6,3)=           -BETA*WF*WM
 277 : *
 278 :                DDHOOK(1,4)=           -BETA*UM*UF
 279 :                DDHOOK(2,4)=           -BETA*VM*UF
 280 :                DDHOOK(3,4)=           -BETA*WM*UF
 281 : *
 282 :                DDHOOK(4,4)=DDHOOK(4,4)-BETA*UF*UF
 283 :                DDHOOK(5,4)=DDHOOK(5,4)-BETA*VF*UF
 284 :                DDHOOK(6,4)=DDHOOK(6,4)-BETA*WF*UF
 285 : *
 286 :                DDHOOK(1,5)=           -BETA*UM*VF
 287 :                DDHOOK(2,5)=           -BETA*VM*VF
 288 :                DDHOOK(3,5)=           -BETA*WM*VF
 289 : *
 290 :                DDHOOK(4,5)=DDHOOK(4,5)-BETA*UF*VF
 291 :                DDHOOK(5,5)=DDHOOK(5,5)-BETA*VF*VF
 292 :                DDHOOK(6,5)=DDHOOK(6,5)-BETA*WF*VF
 293 : *
 294 :                DDHOOK(1,6)=           -BETA*UM*WF
 295 :                DDHOOK(2,6)=           -BETA*VM*WF
 296 :                DDHOOK(3,6)=           -BETA*WM*WF
 297 : *
 298 :                DDHOOK(4,6)=DDHOOK(4,6)-BETA*UF*WF
 299 :                DDHOOK(5,6)=DDHOOK(5,6)-BETA*VF*WF
 300 :                DDHOOK(6,6)=DDHOOK(6,6)-BETA*WF*WF
 301 :             ENDIF
 302 : *
 303 :          ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1) THEN
 304 : *
 305 :             DDHOOK(1,1)=AUX1*EP1
 306 :             DDHOOK(2,2)=AUX1*EP1
 307 :             DDHOOK(1,2)=AUX2*EP1
 308 :             DDHOOK(2,1)=AUX2*EP1
 309 : *
 310 :             DDHOOK(3,3)=AUX1*EP3
 311 :             DDHOOK(4,4)=AUX1*EP3
 312 :             DDHOOK(3,4)=AUX2*EP3
 313 :             DDHOOK(4,3)=AUX2*EP3
 314 : *
 315 : *           on retranche la partie deviateur
 316 : *
 317 :             IF(ILOGEL.EQ.1) THEN
 318 :                XSTRS(1)=XSTRS(1)*EP1
 319 :                XSTRS(2)=XSTRS(2)*EP1
 320 :                XSTRS(3)=XSTRS(3)*EP2
 321 :                XSTRS(4)=XSTRS(4)*EP2
 322 : *
 323 :                UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)-
 324 :      &             XSTRS(1)))*AUX4
 325 :                VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)-
 326 :      &             XSTRS(2)))*AUX4
 327 : *
 328 :                UF=(DEUX*XSTRS(3)-XSTRS(4)+XNU*(DEUX*XSTRS(4)-
 329 :      &             XSTRS(3)))*AUX4
 330 :                VF=(DEUX*XSTRS(4)-XSTRS(3)+XNU*(DEUX*XSTRS(3)-
 331 :      &             XSTRS(4)))*AUX4
 332 : *
 333 :                UM=UM*EP1
 334 :                VM=VM*EP1
 335 : *
 336 :                UF=UF*EP3*ALPH2
 337 :                VF=VF*EP3*ALPH2
 338 : *
 339 :                XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2)
 340 :                XXX1=XSTRS(3)*XSTRS(3)+XSTRS(4)*XSTRS(4)
 341 :                XXXA=XXXX*EP1+XXX1*ALPH4*EP3
 342 :                XXXB=XXXX*EP1+XXX1*ALPH2*EP4
 343 : *
 344 :                YYYY=XSTRS(1)*XSTRS(2)
 345 :                YYY1=XSTRS(3)*XSTRS(4)
 346 :                YYYA=YYYY*EP1+YYY1*ALPH4*EP3
 347 :                YYYB=YYYY*EP1+YYY1*ALPH2*EP4
 348 : *
 349 :                A= CINQ*XXXA - HUIT*YYYA
 350 :                B= CINQ*YYYA - DEUX*XXXA
 351 :                C= DETIER*(XXXA-YYYA)
 352 :                D= (A+DEUX*XNU*B)*AUX4
 353 : *
 354 :                XNUM=TROIS*YOU*(YOU-YOUTA)
 355 :                DENOM=DEUX*YOUTA*C  + ( YOU - YOUTA ) * D
 356 :                BETA=XNUM/DENOM
 357 : *
 358 :                DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM
 359 :                DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM
 360 : *
 361 :                DDHOOK(3,1)=           -BETA*UF*UM
 362 :                DDHOOK(4,1)=           -BETA*VF*UM
 363 : *
 364 :                DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM
 365 :                DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM
 366 : *
 367 :                DDHOOK(3,2)=           -BETA*UF*VM
 368 :                DDHOOK(4,2)=           -BETA*VF*VM
 369 : *
 370 :                DDHOOK(1,3)=           -BETA*UM*UF
 371 :                DDHOOK(2,3)=           -BETA*VM*UF
 372 : *
 373 :                DDHOOK(3,3)=DDHOOK(3,3)-BETA*UF*UF
 374 :                DDHOOK(4,3)=DDHOOK(4,3)-BETA*VF*UF
 375 : *
 376 :                DDHOOK(1,4)=           -BETA*UM*VF
 377 :                DDHOOK(2,4)=           -BETA*VM*VF
 378 : *
 379 :                DDHOOK(3,4)=DDHOOK(3,4)-BETA*UF*VF
 380 :                DDHOOK(4,4)=DDHOOK(4,4)-BETA*VF*VF
 381 : *
 382 :             ENDIF
 383 :          ELSE
 384 :             IRET=0
 385 :          ENDIF
 386 :       ELSE
 387 :          IRET=0
 388 :       ENDIF
 389 : *
 390 :       RETURN
 391 : *_______________________________________________________________________
 392 : *
 393 : * formulation coques epaisses
 394 : *_______________________________________________________________________
 395 : *
 396 :       ENTRY DOHOT5(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,TRAC,LTRAC,
 397 :      &             IGAU,IB,MATE,MAPL,XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET)
 398 : *
 399 :       MFR=5
 400 :       XXHH =XZER
 401 :       ALPSS=XZER
 402 :       SIGY =XZER
 403 :       ALP  =XZER
 404 : *
 405 :       IRET=1
 405 :       CALL ZERO(DDHOOK,LHOOK,LHOOK)
 406 : *
 407 : *     materiau elastique isotrope plastique parfait
 408 : *
 409 :       IF(MATE.EQ.1) THEN
 410 :          MPTVAL=IVAMAT
 411 :          MELVAL=IVAL(1)
 412 :          IGMN=MIN(IGAU,VELCHE(/1))
 413 :          IBMN=MIN(IB  ,VELCHE(/2))
 414 :          YOU =VELCHE(IGMN,IBMN)
 415 : *
 416 :          MELVAL=IVAL(2)
 417 :          IGMN=MIN(IGAU,VELCHE(/1))
 418 :          IBMN=MIN(IB  ,VELCHE(/2))
 419 :          XNU =VELCHE(IGMN,IBMN)
 420 : *
 421 :          IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN
 422 :             MELVAL=IVAL(3)
 423 :             IGMN=MIN(IGAU,VELCHE(/1))
 424 :             IBMN=MIN(IB  ,VELCHE(/2))
 425 :             SIGY = VELCHE(IGMN,IBMN)
 426 : *
 427 :             IF (MAPL.EQ.3) THEN
 428 :               MELVAL=IVAL(4)
 429 :               IGMN=MIN(IGAU,VELCHE(/1))
 430 :               IBMN=MIN(IB  ,VELCHE(/2))
 431 :               ALP = VELCHE(IGMN,IBMN)
 432 :             ELSE IF (MAPL.EQ.4) THEN
 433 :               MELVAL=IVAL(4)
 434 :               IGMN=MIN(IGAU,VELCHE(/1))
 435 :               IBMN=MIN(IB  ,VELCHE(/2))
 436 :               XXHH = VELCHE(IGMN,IBMN)
 437 :             ENDIF
 438 :          ENDIF
 439 : *
 440 :          MPTVAL=IVACON
 441 :          DO 90 ICOMP=1,NSTRS
 442 :             MELVAL=IVAL(ICOMP)
 443 :             IGMN=MIN(IGAU,VELCHE(/1))
 444 :             IBMN=MIN(IB  ,VELCHE(/2))
 445 :             XSTRS(ICOMP) = VELCHE(IGMN,IBMN)
 446 :   90     CONTINUE
 447 : *
 448 :          MPTVAL=IVARI
 449 :          MELVAL=IVAL(1)
 450 :          IGMN=MIN(IGAU,VELCHE(/1))
 451 :          IBMN=MIN(IB  ,VELCHE(/2))
 452 :          EPS = VELCHE(IGMN,IBMN)
 453 : *
 454 :          IF(NVART.EQ.NSTRS+1) THEN
 455 :             DO 100 ICOMP=1,NSTRS
 456 :                MELVAL=IVAL(1+ICOMP)
 457 :                IGMN=MIN(IGAU,VELCHE(/1))
 458 :                IBMN=MIN(IB  ,VELCHE(/2))
 459 :                XSTRS(ICOMP)= XSTRS(ICOMP) - VELCHE(IGMN,IBMN)
 460 :  100        CONTINUE
 461 :          ENDIF
 462 : *
 462 :          CALL PENTE(EPS,YOU,SIGY,XXHH,ALPSS,ALP,TRAC,LTRAC,XSTRS,
 463 :      &              NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL)
 464 : *
 465 :          IF(ILOGEL.EQ.-1) THEN
 466 :             IRET=-1
 467 :             RETURN
 468 :          ENDIF
 469 : *
 470 : *        matrice tangente / contraintes planes
 471 : *
 472 :          IF(IFOU.EQ.2) THEN
 473 :             AUX1=YOU/(UN - XNU* XNU)
 474 :             AUX2=XNU*AUX1
 475 :             AUX3=YOU*UNDEMI/(UN+XNU)
 476 :             AUX31=YOU*UNDEMI/(UN+XNU)/1.2D0
 477 :             AUX4=UNTIER/(UN-XNU*XNU)
 478 : *
 479 :             DDHOOK(1,1)=AUX1
 480 :             DDHOOK(2,2)=AUX1
 481 :             DDHOOK(1,2)=AUX2
 482 :             DDHOOK(2,1)=AUX2
 483 :             DDHOOK(3,3)=AUX3
 484 : *
 485 :             DDHOOK(4,4)=AUX31
 486 :             DDHOOK(5,5)=AUX31
 487 : *
 488 : *           on retranche la partie deviateur
 489 : *
 490 :             IF(ILOGEL.EQ.1) THEN
 491 :                U =(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)-
 492 :      &             XSTRS(1)))*AUX4
 493 :                V =(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)-
 494 :      &             XSTRS(2)))*AUX4
 495 :                W =XSTRS(3)/(UN+XNU)
 496 : *
 497 :                XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2)
 498 :                YYYY=XSTRS(1)*XSTRS(2)
 499 :                ZZZZ=XSTRS(3)*XSTRS(3)
 500 : *
 501 :                A= CINQ*XXXX - HUIT*YYYY
 502 :                B= CINQ*YYYY - DEUX*XXXX
 503 :                C= DETIER*(XXXX-YYYY)+DEUX*ZZZZ
 504 :                D= (A+DEUX*XNU*B)*AUX4  +  SIX*ZZZZ/(UN+XNU)
 505 : *
 506 :                XNUM=TROIS*YOU*(YOU-YOUTA)
 507 :                DENOM=DEUX*YOUTA*C + ( YOU - YOUTA ) * D
 508 :                BETA=XNUM/DENOM
 509 : *
 510 :                DDHOOK(1,1)=DDHOOK(1,1)-BETA*U*U
 511 :                DDHOOK(2,1)=DDHOOK(2,1)-BETA*V*U
 512 :                DDHOOK(3,1)=DDHOOK(3,1)-BETA*W*U
 513 : *
 514 :                DDHOOK(1,2)=DDHOOK(1,2)-BETA*U*V
 515 :                DDHOOK(2,2)=DDHOOK(2,2)-BETA*V*V
 516 :                DDHOOK(3,2)=DDHOOK(3,2)-BETA*W*V
 517 : *
 518 :                DDHOOK(1,3)=DDHOOK(1,3)-BETA*U*W
 519 :                DDHOOK(2,3)=DDHOOK(2,3)-BETA*V*W
 520 :                DDHOOK(3,3)=DDHOOK(3,3)-BETA*W*W
 521 :             ENDIF
 522 :          ELSE
 523 :             IRET=0
 524 :          ENDIF
 525 :       ELSE
 526 :          IRET=0
 527 :       ENDIF
 528 : *
 529 :       RETURN
 530 : *_______________________________________________________________________
 531 : *
 532 : * formulation coques cisaillement transverse
 533 : *_______________________________________________________________________
 534 : *
 535 :       ENTRY DOHOT9(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,
 536 :      &                 TRAC,LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL,
 537 :      &                 XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET)
 538 : *
 539 :       MFR=9
 540 :       XXHH=XZER
 541 :       SIGY=XZER
 542 :       ALP =XZER
 543 :       ALPHAP=ALPHA*SIX/EP1
 544 :       ALPH2=ALPHAP*ALPHAP
 545 :       ALPH4=ALPH2*ALPH2
 546 : *
 546 :       CALL ZERO(DDHOOK,LHOOK,LHOOK)
 547 : *
 548 : *     materiau elastique isotrope plastique parfait et bilineaire
 549 : *
 550 :       IF(MATE.EQ.1) THEN
 551 :          MPTVAL=IVAMAT
 552 :          MELVAL=IVAL(1)
 553 :          IGMN=MIN(IGAU,VELCHE(/1))
 554 :          IBMN=MIN(IB  ,VELCHE(/2))
 555 :          YOU =VELCHE(IGMN,IBMN)
 556 : *
 557 :          MELVAL=IVAL(2)
 558 :          IGMN=MIN(IGAU,VELCHE(/1))
 559 :          IBMN=MIN(IB  ,VELCHE(/2))
 560 :          XNU =VELCHE(IGMN,IBMN)
 561 : *
 562 :          IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN
 563 :             MELVAL=IVAL(3)
 564 :             IGMN=MIN(IGAU,VELCHE(/1))
 565 :             IBMN=MIN(IB  ,VELCHE(/2))
 566 :             SIGY = VELCHE(IGMN,IBMN)
 567 : *
 568 :             IF (MAPL.EQ.3) THEN
 569 :               MELVAL=IVAL(4)
 570 :               IGMN=MIN(IGAU,VELCHE(/1))
 571 :               IBMN=MIN(IB  ,VELCHE(/2))
 572 :               ALP = VELCHE(IGMN,IBMN)
 573 :             ELSE IF (MAPL.EQ.4) THEN
 574 :               MELVAL=IVAL(4)
 575 :               IGMN=MIN(IGAU,VELCHE(/1))
 576 :               IBMN=MIN(IB  ,VELCHE(/2))
 577 :               XXHH = VELCHE(IGMN,IBMN)
 578 :             ENDIF
 579 :          ENDIF
 580 : *
 581 :          MPTVAL=IVACON
 582 :          DO 180 ICOMP=1,NSTRS
 583 :             MELVAL=IVAL(ICOMP)
 584 :             IGMN=MIN(IGAU,VELCHE(/1))
 585 :             IBMN=MIN(IB  ,VELCHE(/2))
 586 :             XSTRS(ICOMP) = VELCHE(IGMN,IBMN)
 587 :  180     CONTINUE
 588 : *
 589 :          MPTVAL=IVARI
 590 :          MELVAL=IVAL(1)
 591 :          IGMN=MIN(IGAU,VELCHE(/1))
 592 :          IBMN=MIN(IB  ,VELCHE(/2))
 593 :          EPS = VELCHE(IGMN,IBMN)
 594 : *
 595 :          IF (NVART.EQ.NSTRS+1) THEN
 596 :             DO 190 ICOMP=1,NSTRS
 597 :                MELVAL=IVAL(1+ICOMP)
 598 :                IGMN=MIN(IGAU,VELCHE(/1))
 599 :                IBMN=MIN(IB  ,VELCHE(/2))
 600 :                XSTRS(ICOMP)= XSTRS(ICOMP) - VELCHE(IGMN,IBMN)
 601 :  190        CONTINUE
 602 :          ENDIF
 603 : *
 603 :          CALL PENTE(EPS,YOU,SIGY,XXHH,ALPHA,ALP,TRAC,LTRAC,XSTRS,
 604 :      &              NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL)
 605 : *
 606 :          IF(ILOGEL.EQ.-1) THEN
 607 :             IRET=-1
 608 :             RETURN
 609 :          ENDIF
 610 : *
 611 : *        matrice tangente / tridimensionnel
 612 : *
 613 :          IF(IFOU.EQ.2) THEN
 614 :             AUX1=YOU/(UN - XNU* XNU)
 615 :             AUX2=XNU*AUX1
 616 :             AUX3=YOU*UNDEMI/(UN+XNU)
 617 :             AUX4=UNTIER/(UN-XNU*XNU)
 618 :             EP2=EP1*EP1/SIX
 619 :             EP3=EP1*EP1*EP1/DOUZE
 620 :             EP4=EP3/TROIS
 621 : *
 622 :             DDHOOK(1,1)=AUX1*EP1
 623 :             DDHOOK(2,2)=AUX1*EP1
 624 :             DDHOOK(1,2)=AUX2*EP1
 625 :             DDHOOK(2,1)=AUX2*EP1
 626 :             DDHOOK(3,3)=AUX3*EP1
 627 : *
 628 :             DDHOOK(4,4)=AUX1*EP3
 629 :             DDHOOK(5,5)=AUX1*EP3
 630 :             DDHOOK(4,5)=AUX2*EP3
 631 :             DDHOOK(5,4)=AUX2*EP3
 632 :             DDHOOK(6,6)=AUX3*EP3
 633 : *
 634 :             DDHOOK(7,7)=AUX3*EP1/1.2D0
 635 :             DDHOOK(8,8)=AUX3*EP1/1.2D0
 636 : *
 637 : *           on retranche la partie deviateur
 638 : *
 639 :             IF(ILOGEL.EQ.1) THEN
 640 :                XSTRS(1)=XSTRS(1)*EP1
 641 :                XSTRS(2)=XSTRS(2)*EP1
 642 :                XSTRS(3)=XSTRS(3)*EP1
 643 :                XSTRS(4)=XSTRS(4)*EP2
 644 :                XSTRS(5)=XSTRS(5)*EP2
 645 :                XSTRS(6)=XSTRS(6)*EP2
 646 : *
 647 :                UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)-
 648 :      &             XSTRS(1)))*AUX4
 649 :                VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)-
 650 :      &             XSTRS(2)))*AUX4
 651 :                WM=XSTRS(3)/(UN+XNU)
 652 : *
 653 :                UF=(DEUX*XSTRS(4)-XSTRS(5)+XNU*(DEUX*XSTRS(5)-
 654 :      &            XSTRS(4)))*AUX4
 655 :                VF=(DEUX*XSTRS(5)-XSTRS(4)+XNU*(DEUX*XSTRS(4)-
 656 :      &            XSTRS(5)))*AUX4
 657 :                WF=XSTRS(6)/(UN+XNU)
 658 : *
 659 :                UM=UM*EP1
 660 :                VM=VM*EP1
 661 :                WM=WM*EP1
 662 : *
 663 :                UF=UF*EP3*ALPH2
 664 :                VF=VF*EP3*ALPH2
 665 :                WF=WF*EP3*ALPH2
 666 : *
 667 :                XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2)
 668 :                XXX1=XSTRS(4)*XSTRS(4)+XSTRS(5)*XSTRS(5)
 669 :                XXXA=XXXX*EP1+XXX1*ALPH4*EP3
 670 :                XXXB=XXXX*EP1+XXX1*ALPH2*EP4
 671 : *
 672 :                YYYY=XSTRS(1)*XSTRS(2)
 673 :                YYY1=XSTRS(4)*XSTRS(5)
 674 :                YYYA=YYYY*EP1+YYY1*ALPH4*EP3
 675 :                YYYB=YYYY*EP1+YYY1*ALPH2*EP4
 676 : *
 677 :                ZZZZ=XSTRS(3)*XSTRS(3)
 678 :                ZZZ1=XSTRS(6)*XSTRS(6)
 679 :                ZZZA=ZZZZ*EP1+ZZZ1*ALPH4*EP3
 680 :                ZZZB=ZZZZ*EP1+ZZZ1*ALPH2*EP4
 681 : *
 682 :                A= CINQ*XXXA - HUIT*YYYA
 683 :                B= CINQ*YYYA - DEUX*XXXA
 684 :                C= DETIER*(XXXA-YYYA)+DEUX*ZZZA
 685 :                D= (A+DEUX*XNU*B)*AUX4  +  SIX*ZZZA/(UN+XNU)
 686 : *
 687 :                XNUM=TROIS*YOU*(YOU-YOUTA)
 688 :                DENOM=DEUX*YOUTA*C  + ( YOU - YOUTA ) * D
 689 :                BETA=XNUM/DENOM
 690 : *
 691 :                DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM
 692 :                DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM
 693 :                DDHOOK(3,1)=DDHOOK(3,1)-BETA*WM*UM
 694 : *
 695 :                DDHOOK(4,1)=           -BETA*UF*UM
 696 :                DDHOOK(5,1)=           -BETA*VF*UM
 697 :                DDHOOK(6,1)=           -BETA*WF*UM
 698 : *
 699 :                DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM
 700 :                DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM
 701 :                DDHOOK(3,2)=DDHOOK(3,2)-BETA*WM*VM
 702 : *
 703 :                DDHOOK(4,2)=           -BETA*UF*VM
 704 :                DDHOOK(5,2)=           -BETA*VF*VM
 705 :                DDHOOK(6,2)=           -BETA*WF*VM
 706 : *
 707 :                DDHOOK(1,3)=DDHOOK(1,3)-BETA*UM*WM
 708 :                DDHOOK(2,3)=DDHOOK(2,3)-BETA*VM*WM
 709 :                DDHOOK(3,3)=DDHOOK(3,3)-BETA*WM*WM
 710 : *
 711 :                DDHOOK(4,3)=           -BETA*UF*WM
 712 :                DDHOOK(5,3)=           -BETA*VF*WM
 713 :                DDHOOK(6,3)=           -BETA*WF*WM
 714 : *
 715 :                DDHOOK(1,4)=           -BETA*UM*UF
 716 :                DDHOOK(2,4)=           -BETA*VM*UF
 717 :                DDHOOK(3,4)=           -BETA*WM*UF
 718 : *
 719 :                DDHOOK(4,4)=DDHOOK(4,4)-BETA*UF*UF
 720 :                DDHOOK(5,4)=DDHOOK(5,4)-BETA*VF*UF
 721 :                DDHOOK(6,4)=DDHOOK(6,4)-BETA*WF*UF
 722 : *
 723 :                DDHOOK(1,5)=           -BETA*UM*VF
 724 :                DDHOOK(2,5)=           -BETA*VM*VF
 725 :                DDHOOK(3,5)=           -BETA*WM*VF
 726 : *
 727 :                DDHOOK(4,5)=DDHOOK(4,5)-BETA*UF*VF
 728 :                DDHOOK(5,5)=DDHOOK(5,5)-BETA*VF*VF
 729 :                DDHOOK(6,5)=DDHOOK(6,5)-BETA*WF*VF
 730 : *
 731 :                DDHOOK(1,6)=           -BETA*UM*WF
 732 :                DDHOOK(2,6)=           -BETA*VM*WF
 733 :                DDHOOK(3,6)=           -BETA*WM*WF
 734 : *
 735 :                DDHOOK(4,6)=DDHOOK(4,6)-BETA*UF*WF
 736 :                DDHOOK(5,6)=DDHOOK(5,6)-BETA*VF*WF
 737 :                DDHOOK(6,6)=DDHOOK(6,6)-BETA*WF*WF
 738 :             ENDIF
 739 :          ELSE
 740 :             IRET=0
 741 :          ENDIF
 742 :       ELSE
 743 :          IRET=0
 744 :       ENDIF
 745 : *
 746 :       RETURN
 747 :       END
 748 : 
 749 :  

© Cast3M 2003 - All rights reserved.
Disclaimer