C FIBSTR SOURCE PV 22/04/21 22:38:01 11344 C FIBSTR SUBROUTINE FIBSTR (XXMAT,DEPS,SIG0,VAR0,SIGF,VARF) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCREEL DIMENSION XXMAT(*),DEPS(3),SIG0(3),VAR0(37),SIGF(3),VARF(37) C---------------------------------------------------------------------- C C COMPORTEMENT DE FIBRE DE STRUT C C---------------------------------------------------------------------- C Joao Guedes et Pierre Pegon (ISPRA) Juillet/Decembre 1993 C---------------------------------------------------------------------- C c C C DEPS(1) EPXX SIG0(1) SIGF(1) SMXX C DEPS(2) GAXY SIG0(2) SIGF(2) SMXY C DEPS(3) GAXZ SIG0(3) SIGF(3) SMXZ C C VAR0(1) VARF(1) EPSO C VAR0(2) VARF(2) MAX. STRAIN EVER REACHED C VAR0(3) VARF(3) MIN. STRAIN EVER REACHED C VAR0(4) VARF(4) MIN. STRESS EVER REACHED C VAR0(5) VARF(5) TANGENT MODULUS C VAR0(6) VARF(6) DISCHARGE TANGENT MODULUS C C---------------------------------------------------------------------- c DIMENSION EPSON(5), SIGMA(5) C DIMENSION XH0(1,1),WUP(1,50),YUP(1,50),DES(1), RESID(1), DFI(1) C DATA UN/1.D0/ C ITM = 50 C C C C ------- STRUTS C C---------------------------------------- C JFACT -> Max. number of bissections for the int. equil. C---------------------------------------- JFACT = 8 C FC___ = XXMAT( 5) EZERO = XXMAT( 6) FLT__ = XXMAT( 7) ALFA1 = XXMAT( 8) OMEG1 = XXMAT( 9) ZETA_ = XXMAT(10) STR85 = XXMAT(11) TRAFA = XXMAT(12) FTPL_ = XXMAT(4+21) FACT1 = 3.00D0 FACT2 = 20.0D0 FACLO = XXMAT(4+22) FACX2 = XXMAT(4+23) C C C IF (TRAFA .LT. 1.0D0) THEN WRITE (*,*) ' ERROR; TRAFA < 1.0 ' STOP ENDIF C ALFOM = ALFA1 * OMEG1 C IF (ZETA_ .LE. 0.D0) THEN C C ------- COMPUTING PROPERTIES OF CONFINED CONCRETE ------- C IF (ALFOM .LT. 1.0D-1) THEN BETAC = 1.000D0 + 2.50D0 * ALFOM ELSE BETAC = 1.125D0 + 1.25D0 * ALFOM ENDIF C FC___ = BETAC * FC___ EZERO = BETAC * BETAC * EZERO ZETA_ = (BETAC-0.85D0) / (BETAC*(0.1D0*ALFOM+0.003D0-EZERO)) ENDIF C YOUNG = 2.0D0 * FC___ / EZERO C EPS85 = (1.0D0-STR85/FC___ ) / ZETA_ + EZERO EPS85 = -1.0D0 * EPS85 / EZERO C DAMG1 = 1.0D0 - VARF(32) DAMG2 = 1.0D0 - VARF(33) C C C ------- TEST AND... C IF (VAR0(5) .GT. FC___) GOTO 20 C C C ------- STIRRUP C EYOUN = XXMAT(4+8+ 1) FSY__ = XXMAT(4+8+ 2) FSU__ = XXMAT(4+8+ 3) EPSH_ = XXMAT(4+8+ 4) EPSU_ = XXMAT(4+8+ 5) ROFAC = XXMAT(4+8+ 6) BFACT = XXMAT(4+8+ 7) A1FAC = XXMAT(4+8+ 8) A2FAC = XXMAT(4+8+ 9) C ROSTI = XXMAT(4+8+10) C FACLD = 0.0D0 A6FAC = 0.0D0 CFACT = 0.0D0 AFACT = 0.0D0 C C THETA = XXMAT(4+8+11) * xpi / 180.0D0 C VARF(25) = VAR0(25) + DEPS(2) C FACAR = (1.0D0 + TAN(THETA)) / 2.0D0 TRAFA = TRAFA * TAN(THETA) C ET___ = FLT__ / (2.0D0 * FC___ / EZERO) FTRAF = 1.0D0 C+JG C IF (VARF(28) .LT. (FTRAF*ET___)) THEN C FLT__ = 10.0 * FC___ C ELSEIF (VAR0(28) .LT. (FTRAF*ET___)) THEN C FACCC = (VAR0(28) - (FTRAF*ET___)) / (VAR0(28) - VARF(28)) C SHEXY = ABS(VAR0(25) + FACCC * (VARF(25) - VAR0(25))) C EPTRA = VAR0(12+2) * (SIN(THETA))**2 + C . (FTRAF*ET___) * (COS(THETA))**2 + C . (TAN(SHEXY) * SIN(2.0*THETA)) / 2.0 C FLT__ = (2.0 * FC___ / EZERO) * EPTRA C ELSE C FLT__ = 0.0 C ENDIF C C ET___ = FLT__ / (2.0 * FC___ / EZERO) C+JG DELTG = 1.0D0 C C C 888 EPME1 = (VARF(28) - VAR0(28)) / DELTG EPME2 = (VARF(29) - VAR0(29)) / DELTG C SHEXY = (VARF(25) - VAR0(25)) / DELTG C EPSOT = (TAN(SHEXY)) * (SIN(2.D0*THETA)) / 2.0D0 C C IT = -1 C DFI(1) = VAR0(12+2) C DO 10 ITB = 1, ITM C EPSZZ = DFI(1) - VAR0(12+2) C C EPSM1 = EPSZZ*((SIN(THETA))**2) + EPME1*((COS(THETA))**2) EPSM2 = EPSZZ*((SIN(THETA))**2) + EPME2*((COS(THETA))**2) C C EPS1S = EPSM1 - EPSOT EPS2S = EPSM2 + EPSOT C C ------- STRUT NUMBER 1 C FLT_1 = FLT__ 111 ET__1 = FLT_1 / (2.0D0 * FC___ / EZERO) C EPSOS = EPS1S / EZERO EPSO1 = VAR0(1) / EZERO EPMAX = VAR0(2) / EZERO EPMIN = VAR0(3) / EZERO STMI1 = VAR0(4) / FC___ STRE1 = VAR0(5) / FC___ TANGD = VAR0(6) C C EPS11 = EPSO1 + EPSOS C C CALL NEWBE2 . ( FC___, EZERO, EPS85, ZETA_, FLT_1, FTPL_, . TRAFA, EPS11, EPSO1, EPMAX, EPMIN, STR11, . STRE1, STMI1, TANG1, TANGD, FACT1, FACT2, . FACX2, FACLO, EPLA1, ET__1 ) C VARF(1) = EPS11 * EZERO VARF(2) = EPMAX * EZERO VARF(3) = EPMIN * EZERO VARF(4) = STMI1 * FC___ VARF(5) = STR11 * FC___ VARF(6) = TANGD C STR11 = STR11 * FACAR * DAMG1 * FC___ TANG1 = TANG1 * FACAR * DAMG1 C C ------- STRUT NUMBER 2 C FLT_1 = FLT__ 222 ET__1 = FLT_1 / (2.0D0 * FC___ / EZERO) C EPSOS = EPS2S / EZERO EPSO1 = VAR0(6+1) / EZERO EPMAX = VAR0(6+2) / EZERO EPMIN = VAR0(6+3) / EZERO STMI2 = VAR0(6+4) / FC___ STRE1 = VAR0(6+5) / FC___ TANGD = VAR0(6+6) EPS22 = EPSO1 + EPSOS C C CALL NEWBE2 . ( FC___, EZERO, EPS85, ZETA_, FLT_1, FTPL_, . TRAFA, EPS22, EPSO1, EPMAX, EPMIN, STR22, . STRE1, STMI2, TANG2, TANGD, FACT1, FACT2, . FACX2, FACLO, EPLA1, ET__1 ) C VARF(6+1) = EPS22 * EZERO VARF(6+2) = EPMAX * EZERO VARF(6+3) = EPMIN * EZERO VARF(6+4) = STMI2 * FC___ VARF(6+5) = STR22 * FC___ VARF(6+6) = TANGD C STR22 = STR22 * FACAR * DAMG2 * FC___ TANG2 = TANG2 * FACAR * DAMG2 C C ------- STIRRUP C IFLAG = IABS(NINT(VAR0(12+1))) C STRAI = VAR0(12+2) + EPSZZ RFACT = VAR0(12+3) EPSO3 = VAR0(12+12+7) C DO IFACT = 1, 2 EPSON(IFACT) = VAR0(12+3+IFACT) SIGMA(IFACT) = VAR0(12+7+IFACT) END DO C EPSON(3) = VAR0(12+ 2) SIGMA(3) = VAR0(12+12) C DO IFACT = 4, 5 EPSON(IFACT) = VAR0(12+2+IFACT) SIGMA(IFACT) = VAR0(12+6+IFACT) END DO C CALL STEEL1 . ( EYOUN, FSY__, FSU__, EPSH_, EPSU_, ROFAC, BFACT, . A1FAC, A2FAC, FACLD, A6FAC, CFACT, AFACT, IFLAG, . STRAI, RFACT, EPSON, SIGMA, TANG3, STR33) C VARF(12+ 1) = DBLE(IFLAG) VARF(12+ 2) = STRAI VARF(12+ 3) = RFACT VARF(12+12) = STR33 VARF(12+12+7) = EPSON(3) C DO IFACT = 1, 2 VARF(12+3+IFACT) = EPSON(IFACT) VARF(12+7+IFACT) = SIGMA(IFACT) END DO C DO IFACT = 4, 5 VARF(12+2+IFACT) = EPSON(IFACT) VARF(12+6+IFACT) = SIGMA(IFACT) END DO C C RESID(1) = STR33 * ROSTI + . (STR11 + STR22) * ((SIN(THETA))**2) XJACO = TANG3 * ROSTI + . (TANG1 * (SIN(THETA))**2 + . TANG2 * (COS(THETA))**2) * (SIN(THETA))**2 C IF (ABS(RESID(1)) .GT. (FC___ * 1D-10)) THEN IF (ITB .GT. ITM) GOTO 10 C IF (ABS(XJACO) .LT. (EYOUN * ROSTI * 1D-8)) THEN C WRITE (*,*) ' XJACO = 0.0 !!!!' XJACO =SIGN((EYOUN * ROSTI * 1D-8) , XJACO) ENDIF CD0 IF (ITB .EQ. 1) XH0(1,1) = 1.0D0 / XJACO C CALL MATVE1(XH0,RESID,1,1,DES,2) CALL MULVEC(DES,DES,-UN,1) CALL PLVECT(DFI,UN,DES,UN,1,DFI) C IF (ABS(DFI(1)) .GT. EPSU_) GOTO 666 ELSE IF (EPS1S .LT. -EZERO .OR. EPS2S .LT. -EZERO) GOTO 666 C GOTO 999 ENDIF 10 CONTINUE C 666 IF (DELTG .LT. (2D0**JFACT)) THEN DELTG = DELTG * 2.0D0 GOTO 888 ENDIF C 20 WRITE (*,*) 'DID NOT CONVERGE AFTER 100 STEPS' C VARF( 5) = 1.0D0 * FC___ * 1.0D20 VARF(6+5) = -1.0D0 * FC___ * 1.0D20 DEPS(2) = 1.0D18 C STR11 = VARF( 5) STR22 = VARF(6+5) C GOTO 555 C 999 IF (DELTG .GT. 1.0D0 .AND. DELTG .LE. (2D0**JFACT)) THEN DO 777 ICOUN = 1, 24 VAR0(ICOUN) = VARF(ICOUN) 777 CONTINUE C VAR0(25) = VAR0(25) + SHEXY VAR0(28) = VAR0(28) + EPME1 VAR0(29) = VAR0(29) + EPME2 C DELTG = 1.0D0 GOTO 888 ENDIF C 555 GAMME = YOUNG /2.0D0 * ((SIN(2.0D0*THETA))**2) * FACAR C------------------------------------------------------ C STRESSES C------------------------------------------------------ SIGF(1) = 0.0D0 SIGF(2) = (STR22 - STR11) * SIN(THETA) * COS(THETA) SIGF(3) = SIG0(3) + GAMME * DEPS(3) C------------------------------------------------------ C TANGENT STIFFNESS C------------------------------------------------------ C DERZZ -> Derivative of "EPSZZ" with respect to shear strain C DERME -> Derivative of "EPMED" with respect to shear strain C------------------------------------------------------ DERZZ = (TANG1 - TANG2) * ((SIN(THETA))**3) * COS(THETA) . / ((TANG1 + TANG2) * ((SIN(THETA))**4) + TANG3 * ROSTI) C DERME = ((TANG1 - TANG2) / (TANG1 + TANG2)) * TAN(THETA) C DERZZ = 0.0D0 DERME = 0.0D0 CD0 VARF(27) = (TANG2 + TANG1) * (SIN(2.0D0*THETA) / 2.0D0 . / COS(VARF(25)))**2 . + (TANG2 - TANG1) * (((SIN(THETA))**2) * DERZZ . + ((COS(THETA))**2) * DERME) . * SIN(2.0D0*THETA) / 2.0D0 C 1000 RETURN END