Download fibstr.eso

Back to the list

   1 : C FIBSTR    SOURCE    CHAT      12/04/06    21:15:14     7348           
   2 : C FIBSTR  
   3 :       SUBROUTINE FIBSTR (XXMAT,DEPS,SIG0,VAR0,SIGF,VARF)
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-H,O-Z)
   6 : -INC CCREEL
   7 : 
   8 :       DIMENSION XXMAT(*),DEPS(3),SIG0(3),VAR0(37),SIGF(3),VARF(37)
   9 : C----------------------------------------------------------------------
  10 : C
  11 : C     COMPORTEMENT DE FIBRE DE STRUT
  12 : C
  13 : C----------------------------------------------------------------------
  14 : C     Joao Guedes et Pierre Pegon (ISPRA) Juillet/Decembre 1993
  15 : C----------------------------------------------------------------------
  16 : C
  17 : c
  18 : C
  19 : C      DEPS(1) EPXX    SIG0(1) SIGF(1) SMXX
  20 : C      DEPS(2) GAXY    SIG0(2) SIGF(2) SMXY
  21 : C      DEPS(3) GAXZ    SIG0(3) SIGF(3) SMXZ
  22 : C
  23 : C                      VAR0(1) VARF(1) EPSO
  24 : C                      VAR0(2) VARF(2) MAX. STRAIN EVER REACHED
  25 : C                      VAR0(3) VARF(3) MIN. STRAIN EVER REACHED
  26 : C                      VAR0(4) VARF(4) MIN. STRESS EVER REACHED
  27 : C                      VAR0(5) VARF(5) TANGENT MODULUS
  28 : C                      VAR0(6) VARF(6) DISCHARGE TANGENT MODULUS
  29 : C
  30 : C----------------------------------------------------------------------
  31 : c
  32 :        DIMENSION EPSON(5), SIGMA(5)
  33 : C
  34 :        DIMENSION XH0(1,1),WUP(1,50),YUP(1,50),DES(1)
  35 : C
  36 :        DATA UN/1.D0/
  37 : C
  38 :        ITM = 50
  39 : C
  40 : C
  41 : C
  42 : C ------- STRUTS
  43 : C
  44 : C----------------------------------------
  45 : C      JFACT -> Max. number of bissections for the int. equil.
  46 : C----------------------------------------
  47 :        JFACT = 8
  48 : C
  49 :        FC___ = XXMAT( 5)
  50 :        EZERO = XXMAT( 6)
  51 :        FLT__ = XXMAT( 7)
  52 :        ALFA1 = XXMAT( 8)
  53 :        OMEG1 = XXMAT( 9)
  54 :        ZETA_ = XXMAT(10)
  55 :        STR85 = XXMAT(11)
  56 :        TRAFA = XXMAT(12)
  57 :        FTPL_ = XXMAT(4+21)
  58 :        FACT1 = 3.00D0
  59 :        FACT2 = 20.0D0
  60 :        FACLO = XXMAT(4+22)
  61 :        FACX2 = XXMAT(4+23)
  62 : C
  63 : C
  64 : C
  65 :        IF (TRAFA .LT. 1.0D0) THEN
  66 :           WRITE (*,*) ' ERROR; TRAFA < 1.0 '
  67 :           STOP
  68 :        ENDIF
  69 : C
  70 :        ALFOM = ALFA1 * OMEG1
  71 : C
  72 :        IF (ZETA_ .LE. 0.D0) THEN
  73 : C
  74 : C ------- COMPUTING PROPERTIES OF CONFINED CONCRETE -------
  75 : C
  76 :           IF (ALFOM .LT. 1.0D-1) THEN
  77 :              BETAC = 1.000D0 + 2.50D0 * ALFOM
  78 :           ELSE
  79 :              BETAC = 1.125D0 + 1.25D0 * ALFOM
  80 :           ENDIF
  81 : C
  82 :           FC___ = BETAC * FC___
  83 :           EZERO = BETAC * BETAC * EZERO
  84 :           ZETA_ = (BETAC-0.85D0) / (BETAC*(0.1D0*ALFOM+0.003D0-EZERO))
  85 :        ENDIF
  86 : C
  87 :        YOUNG = 2.0D0 * FC___ / EZERO
  88 : C
  89 :        EPS85 = (1.0D0-STR85/FC___ ) / ZETA_ + EZERO
  90 :        EPS85 = -1.0D0 * EPS85 / EZERO
  91 : C
  92 :        DAMG1 = 1.0D0 - VARF(32)
  93 :        DAMG2 = 1.0D0 - VARF(33)
  94 : C
  95 : C
  96 : C ------- TEST AND...
  97 : C
  98 :        IF (VAR0(5) .GT. FC___) GOTO 20
  99 : C
 100 : C
 101 : C ------- STIRRUP
 102 : C
 103 :        EYOUN = XXMAT(4+8+ 1)
 104 :        FSY__ = XXMAT(4+8+ 2)
 105 :        FSU__ = XXMAT(4+8+ 3)
 106 :        EPSH_ = XXMAT(4+8+ 4)
 107 :        EPSU_ = XXMAT(4+8+ 5)
 108 :        ROFAC = XXMAT(4+8+ 6)
 109 :        BFACT = XXMAT(4+8+ 7)
 110 :        A1FAC = XXMAT(4+8+ 8)
 111 :        A2FAC = XXMAT(4+8+ 9)
 112 : C
 113 :        ROSTI = XXMAT(4+8+10)
 114 : C
 115 :        FACLD = 0.0D0
 116 :        A6FAC = 0.0D0
 117 :        CFACT = 0.0D0
 118 :        AFACT = 0.0D0
 119 : C
 120 : C
 121 :        THETA = XXMAT(4+8+11) * xpi / 180.0D0
 122 : C
 123 :        VARF(25) = VAR0(25) + DEPS(2)
 124 : C
 125 :        FACAR = (1.0D0 + DTAN(THETA)) / 2.0D0
 126 :        TRAFA = TRAFA * DTAN(THETA)
 127 : C
 128 :        ET___ = FLT__ / (2.0D0 * FC___ / EZERO)
 129 :        FTRAF = 1.0D0
 130 : C+JG
 131 : C       IF (VARF(28) .LT. (FTRAF*ET___)) THEN
 132 : C        FLT__ = 10.0 * FC___ 
 133 : C       ELSEIF (VAR0(28) .LT. (FTRAF*ET___)) THEN
 134 : C          FACCC = (VAR0(28) - (FTRAF*ET___)) / (VAR0(28) - VARF(28))
 135 : C          SHEXY = DABS(VAR0(25) + FACCC * (VARF(25) - VAR0(25)))
 136 : C          EPTRA = VAR0(12+2) * (DSIN(THETA))**2 +
 137 : C     .            (FTRAF*ET___) * (DCOS(THETA))**2 +
 138 : C     .            (DTAN(SHEXY) * DSIN(2.0*THETA)) / 2.0
 139 : C          FLT__ = (2.0 * FC___ / EZERO) * EPTRA
 140 : C       ELSE
 141 : C          FLT__ = 0.0
 142 : C       ENDIF
 143 : C
 144 : C       ET___ = FLT__ / (2.0 * FC___ / EZERO)
 145 : C+JG
 146 :        DELTG = 1.0D0
 147 : C
 148 : C
 149 : C
 150 :  888   EPME1 = (VARF(28) - VAR0(28)) / DELTG
 151 :        EPME2 = (VARF(29) - VAR0(29)) / DELTG
 152 : C
 153 :        SHEXY = (VARF(25) - VAR0(25)) / DELTG
 154 : C
 155 :        EPSOT = (DTAN(SHEXY)) * (DSIN(2.D0*THETA)) / 2.0D0
 156 : C
 157 : C
 158 :        IT = -1
 159 : C
 160 :        DFI = VAR0(12+2)
 161 : C
 162 :        DO 10 ITB = 1, ITM
 163 : C
 164 :           EPSZZ = DFI - VAR0(12+2)
 165 : C
 166 : C
 167 :           EPSM1 = EPSZZ*((DSIN(THETA))**2) + EPME1*((DCOS(THETA))**2)
 168 :           EPSM2 = EPSZZ*((DSIN(THETA))**2) + EPME2*((DCOS(THETA))**2)
 169 : C
 170 : C
 171 :           EPS1S = EPSM1 - EPSOT
 172 :           EPS2S = EPSM2 + EPSOT
 173 : C
 174 : C ------- STRUT NUMBER 1
 175 : C
 176 :           FLT_1 = FLT__
 177 :  111      ET__1 = FLT_1 / (2.0D0 * FC___ / EZERO)
 178 : C
 179 :           EPSOS = EPS1S / EZERO
 180 :           EPSO1 = VAR0(1) / EZERO
 181 :           EPMAX = VAR0(2) / EZERO
 182 :           EPMIN = VAR0(3) / EZERO
 183 :           STMI1 = VAR0(4) / FC___
 184 :           STRE1 = VAR0(5) / FC___
 185 :           TANGD = VAR0(6)
 186 : C
 187 : C
 188 :           EPS11 = EPSO1 + EPSOS
 189 : C
 190 : C
 190 :           CALL NEWBE2
 191 :      .       ( FC___, EZERO, EPS85, ZETA_, FLT_1, FTPL_,
 192 :      .         TRAFA, EPS11, EPSO1, EPMAX, EPMIN, STR11,
 193 :      .         STRE1, STMI1, TANG1, TANGD, FACT1, FACT2,
 194 :      .         FACX2, FACLO, EPLA1, ET__1 )
 195 : C
 196 :           VARF(1) = EPS11 * EZERO
 197 :           VARF(2) = EPMAX * EZERO
 198 :           VARF(3) = EPMIN * EZERO
 199 :           VARF(4) = STMI1 * FC___
 200 :           VARF(5) = STR11 * FC___
 201 :           VARF(6) = TANGD
 202 : C
 203 :           STR11 = STR11 * FACAR * DAMG1 * FC___
 204 :           TANG1 = TANG1 * FACAR * DAMG1
 205 : C
 206 : C ------- STRUT NUMBER 2
 207 : C
 208 :           FLT_1 = FLT__
 209 :  222      ET__1 = FLT_1 / (2.0D0 * FC___ / EZERO)
 210 : C
 211 :           EPSOS = EPS2S / EZERO
 212 :           EPSO1 = VAR0(6+1) / EZERO
 213 :           EPMAX = VAR0(6+2) / EZERO
 214 :           EPMIN = VAR0(6+3) / EZERO
 215 :           STMI2 = VAR0(6+4) / FC___
 216 :           STRE1 = VAR0(6+5) / FC___
 217 :           TANGD = VAR0(6+6)
 218 :           EPS22 = EPSO1 + EPSOS
 219 : C
 220 : C
 220 :           CALL NEWBE2
 221 :      .       ( FC___, EZERO, EPS85, ZETA_, FLT_1, FTPL_,
 222 :      .         TRAFA, EPS22, EPSO1, EPMAX, EPMIN, STR22,
 223 :      .         STRE1, STMI2, TANG2, TANGD, FACT1, FACT2,
 224 :      .         FACX2, FACLO, EPLA1, ET__1 )
 225 : C
 226 :           VARF(6+1) = EPS22 * EZERO
 227 :           VARF(6+2) = EPMAX * EZERO
 228 :           VARF(6+3) = EPMIN * EZERO
 229 :           VARF(6+4) = STMI2 * FC___
 230 :           VARF(6+5) = STR22 * FC___
 231 :           VARF(6+6) = TANGD
 232 : C
 233 :           STR22 = STR22 * FACAR * DAMG2 * FC___
 234 :           TANG2 = TANG2 * FACAR * DAMG2
 235 : C
 236 : C ------- STIRRUP
 237 : C
 238 :           IFLAG = IABS(NINT(VAR0(12+1)))
 239 : C
 240 :           STRAI = VAR0(12+2) + EPSZZ
 241 :           RFACT = VAR0(12+3)
 242 :           EPSO3 = VAR0(12+12+7)
 243 : C
 244 :           DO IFACT = 1, 2
 245 :              EPSON(IFACT) = VAR0(12+3+IFACT)
 246 :              SIGMA(IFACT) = VAR0(12+7+IFACT)
 247 :           END DO
 248 : C
 249 :           EPSON(3) = VAR0(12+ 2)
 250 :           SIGMA(3) = VAR0(12+12)
 251 : C
 252 :           DO IFACT = 4, 5
 253 :              EPSON(IFACT) = VAR0(12+2+IFACT)
 254 :              SIGMA(IFACT) = VAR0(12+6+IFACT)
 255 :           END DO
 256 : C
 256 :           CALL STEEL1
 257 :      .          ( EYOUN, FSY__, FSU__, EPSH_, EPSU_, ROFAC, BFACT,
 258 :      .            A1FAC, A2FAC, FACLD, A6FAC, CFACT, AFACT, IFLAG,
 259 :      .            STRAI, RFACT, EPSON, SIGMA, TANG3, STR33)
 260 : C
 261 :           VARF(12+ 1) = DBLE(IFLAG)
 262 :           VARF(12+ 2) = STRAI
 263 :           VARF(12+ 3) = RFACT
 264 :           VARF(12+12) = STR33
 265 :           VARF(12+12+7) = EPSON(3)
 266 : C
 267 :           DO IFACT = 1, 2
 268 :              VARF(12+3+IFACT) = EPSON(IFACT)
 269 :              VARF(12+7+IFACT) = SIGMA(IFACT)
 270 :           END DO
 271 : C
 272 :           DO IFACT = 4, 5
 273 :              VARF(12+2+IFACT) = EPSON(IFACT)
 274 :              VARF(12+6+IFACT) = SIGMA(IFACT)
 275 :           END DO
 276 : C
 277 : C
 278 :              RESID = STR33 * ROSTI + 
 279 :      .              (STR11 + STR22) * ((DSIN(THETA))**2)
 280 :              XJACO = TANG3 * ROSTI +
 281 :      .              (TANG1 * (DSIN(THETA))**2 +
 282 :      .               TANG2 * (DCOS(THETA))**2) * (DSIN(THETA))**2
 283 : C
 284 :           IF (DABS(RESID) .GT. (FC___ * 1D-10)) THEN
 285 :              IF (ITB .GT. ITM) GOTO 10
 286 : C
 287 :              IF (DABS(XJACO) .LT. (EYOUN * ROSTI * 1D-8)) THEN
 288 : C                WRITE (*,*) ' XJACO = 0.0 !!!!'
 289 :                 XJACO = DSIGN((EYOUN * ROSTI * 1D-8) , XJACO)
 290 :              ENDIF
 291 : CD0
 292 :              IF (ITB .EQ. 1) XH0(1,1) = 1.0D0 / XJACO
 293 : C
 293 :              CALL MATVE1(XH0,RESID,1,1,DES,2)
 293 :              CALL MULVEC(DES,DES,-UN,1)
 293 :              CALL PLVECT(DFI,UN,DES,UN,1,DFI)
 294 : C
 295 :              IF (DABS(DFI) .GT. EPSU_) GOTO 666
 296 :           ELSE
 297 :              IF (EPS1S .LT. -EZERO .OR. EPS2S .LT. -EZERO) GOTO 666
 298 : C
 299 :              GOTO 999
 300 :           ENDIF
 301 :   10   CONTINUE
 302 : C
 303 :  666   IF (DELTG .LT. (2D0**JFACT)) THEN
 304 :           DELTG = DELTG * 2.0D0
 305 :           GOTO 888
 306 :        ENDIF
 307 : C
 308 :   20   WRITE (*,*) 'DID NOT CONVERGE AFTER 100 STEPS'
 309 : C
 310 :        VARF(  5) =  1.0D0 * FC___ * 1.0D20
 311 :        VARF(6+5) = -1.0D0 * FC___ * 1.0D20
 312 :        DEPS(2)   =  1.0D18
 313 : C
 314 :        STR11 = VARF(  5)
 315 :        STR22 = VARF(6+5)
 316 : C
 317 :        GOTO 555
 318 : C
 319 :  999   IF (DELTG .GT. 1.0D0 .AND. DELTG .LE. (2D0**JFACT)) THEN
 320 :           DO 777 ICOUN = 1, 24
 321 :              VAR0(ICOUN) = VARF(ICOUN)
 322 :  777      CONTINUE
 323 : C
 324 :           VAR0(25) = VAR0(25) + SHEXY
 325 :           VAR0(28) = VAR0(28) + EPME1
 326 :           VAR0(29) = VAR0(29) + EPME2
 327 : C
 328 :           DELTG = 1.0D0
 329 :           GOTO 888
 330 :        ENDIF
 331 : C
 332 :  555   GAMME = YOUNG /2.0D0 * ((DSIN(2.0D0*THETA))**2) * FACAR
 333 : C------------------------------------------------------
 334 : C      STRESSES
 335 : C------------------------------------------------------
 336 :        SIGF(1) = 0.0D0
 337 :        SIGF(2) = (STR22 - STR11) * DSIN(THETA) * DCOS(THETA)
 338 :        SIGF(3) = SIG0(3) + GAMME * DEPS(3)
 339 : C------------------------------------------------------
 340 : C      TANGENT STIFFNESS
 341 : C------------------------------------------------------
 342 : C      DERZZ -> Derivative of "EPSZZ" with respect to shear strain
 343 : C      DERME -> Derivative of "EPMED" with respect to shear strain
 344 : C------------------------------------------------------
 345 :        DERZZ = (TANG1 - TANG2) * ((DSIN(THETA))**3) * DCOS(THETA)
 346 :      .      / ((TANG1 + TANG2) * ((DSIN(THETA))**4) + TANG3 * ROSTI)
 347 : C
 348 :        DERME = ((TANG1 - TANG2) / (TANG1 + TANG2)) * DTAN(THETA)
 349 : C
 350 :        DERZZ = 0.0D0
 351 :        DERME = 0.0D0
 352 : CD0
 353 :        VARF(27) = (TANG2 + TANG1) * (DSIN(2.0D0*THETA) / 2.0D0
 354 :      .                             / DCOS(VARF(25)))**2
 355 :      .          + (TANG2 - TANG1) * (((DSIN(THETA))**2) * DERZZ
 356 :      .                             + ((DCOS(THETA))**2) * DERME)
 357 :      .                              * DSIN(2.0D0*THETA) / 2.0D0
 358 : C
 359 :  1000  RETURN
 360 :        END
 361 :  
 362 :  
 363 :  
 364 :  
 365 :  

© Cast3M 2003 - All rights reserved.
Disclaimer