You are on page 1of 7

!

======================================================================
! MAIN PROGRAM FOR CONTINOUS BEAM
! ======================================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
OPEN (5,FILE='CBEAMF1.txt',STATUS='UNKNOWN')
OPEN (6,FILE='CBEAMF1.out',STATUS='UNKNOWN')
101 READ(5,*)ISN,ITS,NLS
102 CALL SDATA1
103 CALL STIFF1
104 CALL BANFAC
LN=0
105 LN=LN+1
106 CALL LDATA1
107 CALL LOADS1
108 CALL BANSOL
109 CALL RESULT1
IF(NLS.GT.LN) THEN
GO TO 105
ELSE
GO TO 111
ENDIF
111 STOP
END

! ==============================================================
SUBROUTINE SDATA1
! ==============================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
! -----------------------------------------------------------------
! * WRITE TITLE
! -----------------------------------------------------------------
WRITE(6,*)'PROGRAME FOR CONTINUOUS BEAM'
WRITE(6,901) 'ISN','ITS','NLS'
901 FORMAT(A5,A5,A5)
WRITE(6,902) ISN,ITS,NLS
902 FORMAT(I5,I5,I5)
WRITE(6,*)'STRUCTURAL PARAMETERS'
WRITE(6,903) 'M','N','NJ','NR','NRJ','E'
903 FORMAT(A5,A5,A5,A5,A5,A5)
READ(5,*)M,NR,NRJ,E
NJ=M+1
ND=2*NJ
N=ND-NR
WRITE(6,904) M,N,NJ,NR,NRJ,E
904 FORMAT(I5,I5,I5,I5,I5,I6)
WRITE(6,*)'MEMBER INFORMATION'
WRITE(6,905)
905 FORMAT(1X,'MEMBER',4X,'EL',8X,'ZI')
MD=4
NB=4
DO 10 J=1,M
READ (5,*)I,EL(I),ZI(I)

1
WRITE(6,906) I,EL(I),ZI(I)
906 FORMAT(I5,3X,F8.2,3X,F8.2)
10 CONTINUE
WRITE(6,*)'JOINT RESTRAINTS'
WRITE(6,907)
907 FORMAT(1X,'JOINT',3X,'JR1',5X,'JR2')
DO 20 J=1,ND
JRL(J)=0
20 CONTINUE
DO 30 J=1,NRJ
READ(5,*) K,JRL(2*K-1),JRL(2*K)
! WRITE(6,908) K,JRL(2*K-1),JRL(2*K)
! 908 FORMAT(I5,3X,I4,3X,I4)
30 CONTINUE
DO 36 J=1,NJ
WRITE(6,908) J,JRL(2*J-1),JRL(2*J)
908 FORMAT(I5,3X,I4,3X,I4)
36 CONTINUE
N1=0
DO 40 J=1,ND
N1=N1+JRL(J)
IF(JRL(J).GT.0) GO TO 103
ID(J)=J-N1
GO TO 40
103 ID(J)=N+N1
40 CONTINUE
! WRITE(6,*)(ID(I),I=1,ND)
RETURN
END

! =====================================================================
SUBROUTINE STIFF1
! =====================================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
NB=4
MD=4
ND=2*NJ
! WRITE(6,*),N,NB,MD,M,ND
! WRITE(6,*)(ID(I),I=1,ND)
DO 1 J=1,N
DO 1 K=1,NB
SFF(J,K)=0.0
1 CONTINUE
DO 5 I=1,M
SCM1=4.0*E*ZI(I)/EL(I)
SCM2=1.5*SCM1/EL(I)
SCM3=2.0*SCM2/EL(I)
SM(I,1,1)=12*E*ZI(I)/EL(I)**3
SM(I,1,2)=6*E*ZI(I)/EL(I)**2
SM(I,1,3)=-12*E*ZI(I)/EL(I)**3
SM(I,1,4)=6*E*ZI(I)/EL(I)**2
SM(I,2,2)=4*E*ZI(I)/EL(I)
SM(I,2,3)=-6*E*ZI(I)/EL(I)**2
SM(I,2,4)=2*E*ZI(I)/EL(I)
SM(I,3,3)=12*E*ZI(I)/EL(I)**3
SM(I,3,4)=-6*E*ZI(I)/EL(I)**2
SM(I,4,4)=4*E*ZI(I)/EL(I)
DO 55 Y=1,4
DO 56 W=Y,4
SM(I,W,Y)=SM(I,Y,W)
56 CONTINUE

2
55 CONTINUE
! WRITE(6,*)'SM'
! WRITE(6,52)((SM(I,O,P),P=1,4),O=1,4)
52 FORMAT(4E12.3/)
IM(4*I-3)=2*I-1
IM(4*I-2)=2*I
IM(4*I-1)=2*I+1
IM(4*I)=2*I+2
DO 4 J=1,MD
I1=IM(J+4*I-4)
IF(JRL(I1).GT.0) GO TO 4
DO 3 K=J,MD
I2=IM(K+4*I-4)
IF(JRL(I2).GT.0) GO TO 3
IR=ID(I1)
IC=ID(I2)
IF(IR.LT.IC) GO TO 2
ITEM=IR
IR=IC
IC=ITEM
2 IC=IC-IR+1
! WRITE(6,*)IR,IC
SFF(IR,IC)=SFF(IR,IC)+SM(I,J,K)
3 CONTINUE
4 CONTINUE
5 CONTINUE
! WRITE(6,*)'SFF'
! WRITE(6,50)((SFF(I,J),J=1,NB),I=1,N)
50 FORMAT(4E12.3/)
RETURN
END

! ==============================================================
SUBROUTINE BANFAC
! ==============================================================

COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
! NB=4
IF(SFF(1,1).LE.0) RETURN
DO 750 J=2,N
J1=J-1
J2=J-NB+1
IF(J2.LT.1) J2=1
IF(J1.EQ.1) GO TO 730
DO 720 I=2,J1
I1=I-1
IF(I1.LT.J2) GO TO 720
SUM=SFF(I,J-I+1)
DO 711 K=J2,I1
1 SUM=SUM-SFF(K,I-K+1)*SFF(K,J-K+1)
711 CONTINUE
SFF(I,J-I+1)=SUM

3
720 CONTINUE
730 SUM=SFF(J,1)
DO 740 K=J2,J1
TEMP=SFF(K,J-K+1)/SFF(K,1)
SUM=SUM-TEMP*SFF(K,J-K+1)
740 SFF(K,J-K+1)=TEMP
IF(SUM.LE.0) RETURN
SFF(J,1)=SUM
750 CONTINUE
! WRITE(6,*)'SFF2'
! WRITE(6,50)((SFF(I,J),J=1,NB),I=1,N)
!50 FORMAT(4E12.3/)
RETURN
END

! ========================================================================
SUBROUTINE LDATA1
! ========================================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
! OPEN (UNIT=6,FILE='CBEAMF1.OUT',STATUS='UNKNOWN')
! OPEN (UNIT=5,FILE='CBEAMF1.txt',STATUS='UNKNOWN')
WRITE(6,*)'LOADING NO.',LN
WRITE(6,52)'NLJ','NLM'
52 FORMAT(A10,A10)
READ(5,*) NLJ,NLM
WRITE(6,*)NLJ,NLM
IF (NLJ.EQ.0) GOTO 90

WRITE(6,*)'ACTION AT JOINTS'
WRITE(6,50)'JOINT','AJ1','AJ2'
50 FORMAT(A10,A20,A20)
DO 30 J=1,NLJ
READ (5,*) K,AJ(2*K-1),AJ(2*K)

30 WRITE(6,*) K,' ',AJ(2*K-1),AJ(2*K)


90 CONTINUE
IF (NLM .EQ.0) GOTO 80
WRITE(6,*)'ACTIONS AT ENDS OF RESTRAINED MEMBERS DUE TO LOADS'
WRITE(6,51)'ELEMENT','AML1','AML2','AML3','AML4'
51 FORMAT(A10,A15,A15,A15,A15)
DO 60 J=1,NLM
READ(5,*) I,AML(1,I),AML(2,I),AML(3,I),AML(4,I)
WRITE(6,*) I,' ',AML(1,I),AML(2,I),AML(3,I),AML(4,I)
60 LML(I)=1
80 CONTINUE
RETURN
END

! =======================================================================
SUBROUTINE LOADS1
! =======================================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E

4
IF(NLM.EQ.0)GO TO 20
DO 10 I=1,M
IF (LML(I).EQ.0) GO TO 10
AE(2*I-1)=AE(2*I-1)-AML(1,I)
AE(2*I)=AE(2*I)-AML(2,I)
AE(2*I+1)=AE(2*I+1)-AML(3,I)
AE(2*I+2)=AE(2*I+2)-AML(4,I)
10 CONTINUE
20 CONTINUE
DO 30 J=1,ND
JR=ID(J)
AC(JR)=AJ(J)+AE(J)
30 CONTINUE
RETURN
END

! =======================================================================================
SUBROUTINE BANSOL
! =======================================================================================
! This subroutine accepts the upper band of the factored (banded)
! stiffness matrix U(stored in a rectangular form)from subroutine BANFAC,
! and solves for the unknowns(which are the free displacements)
! It's basically the solution that concludes the Modified CHOLESKY method
! of solving systems of linear equations
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E

DO 2 I=1,N
J=I-NB+1
IF(I.LE.NB) J=1
SUM=AC(I)
K1=I-1
IF(J.GT.K1) GO TO 2
DO 1 K=J,K1
1 SUM=SUM-SFF(K,I-K+1)*DF(K)
2 DF(I)=SUM

DO 3 I=1,N
3 DF(I)=DF(I)/SFF(I,1)
DO 5 I1=1,N
I=N-I1+1
J=I+NB-1
IF(J.GT.N) J=N
SUM=DF(I)
K2=I+1
IF(K2.GT.J) GO TO 5
DO 4 K=K2,J
4 SUM=SUM-SFF(I,K-I+1)*DF(K)
5 DF(I)=SUM

5
RETURN
END

! ====================================================================
SUBROUTINE RESULT1
! ====================================================================
COMMON/BEAM1/ISN,ITS,NLS,NLJ,NLM,LDS,K,N,M,NJ,NR,NRJ,E,NB,ND,LN,MD
COMMON/BEAM2/EL(20),ZI(20),JRL(42),ID(42),SFF(20,20),SM(12,12,12),
. IM(40),AJ(100),AML(100,100),LML(20),AE(30),AC(30),
. AMD(30),DM(30),DJ(30),AM(30),AR(30),DF(50),
. A(100,100),B(50),U(50,50),X(50),SUM,I1,TEMP
INTEGER M,N,NJ,NR,NRJ,E
! NB=4
! MD=4
! ND=2*NJ
J=N+1
DO 2 K=1,ND
JE=ND-K+1
IF (JRL(JE).EQ.0) GO TO 1
DJ(JE)=0.0
GO TO 2
1 J=J-1
DJ(JE)=DF(J)
2 CONTINUE
WRITE(6,*)'JOINT DISPLACEMENTS'
WRITE(6,91) 'JOINT','DJ1','DJ2'
91 FORMAT(A10,A20,A20)
DO 3 J=1,NJ
WRITE(6,*) J,' ',DJ(2*J-1),' ',DJ(2*J)
3 CONTINUE

WRITE(6,*)'MEMBER END-ACTIONS'
WRITE(6,22) 'MEMBER','AM1','AM2','AM3','AM4'
22 FORMAT(A10,A15,A15,A15,A15)
! WRITE(6,*)'AJ'
! WRITE(6,*)(AJ(I),I=1,ND)
! WRITE(6,*)'DJ'
! WRITE(6,*)(DJ(I),I=1,16)
! WRITE(6,*)'IM'
! WRITE(6,*)(IM(I),I=1,16)

DO 6 I=1,M
DO 5 J=1,MD
AMD(J)=0.0
DO 4 K=1,MD
I1=IM(K+4*I-4)
DM(K)=DJ(I1)
4 AMD(J)=AMD(J)+SM(I,J,K)*DM(K)
! WRITE(6,*)'CHECK'
! WRITE(6,*)'DM'
! WRITE(6,*)(DM(K),K=1,4)
AM(J)=AML(J,I)+AMD(J)
I2=IM(J+4*I-4)
IF (JRL(I2).EQ.0) GO TO 5
AR(I2)=AR(I2)+AMD(J)
5 CONTINUE
6 WRITE(6,*) I,' ',AM(1),AM(2),AM(3),AM(4)
DO 7 J=1,ND
IF (JRL(J).EQ.0) GO TO 7
AR(J)=AR(J)-AJ(J)-AE(J)
7 CONTINUE

6
WRITE(6,*)'SUPPORT REACTIONS'
WRITE(6,233)'JOINT','AR1','AR2'
233 FORMAT(A10,A10,A20)

DO 8 J=1,NJ
J1=2*J-1;J2=2*J
N1=JRL(J1)+JRL(J2)
IF (N1.EQ.0) GO TO 8
WRITE(6,*)J,' ',AR(J1),AR(J2)
8 CONTINUE
RETURN
END

You might also like