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