📄 pmkj2.for
字号:
CC*****************************************************************************
CC 平面刚架有限元计算主程序----可考虑节点和支座位移
CC*****************************************************************************
PROGRAM PMKJ
CC SM(6,6)
COMMON/ONE/X(30),Y(30),A(60),ZI(60),KAKOM(60,2),SM(6,6),
* HEN(6,6),TSM(100,100)
COMMON//INDEX(100),DIS(100),WS(6),WD(6),REAC(100),
* NOKX(20),NOKY(20),NOKZ(20),F(100),NNOKX(20),NNOKY(20),NNOKZ(20),
CC *****NNOKX(20),NNOKY(20),NNOKZ(20)
CC *****WYKX(20),WYKY(20),WYKZ(20)
DIMENSION WYKX(20),WYKY(20),WYKZ(20)
OPEN(3,FILE='CON2')
OPEN(4,FILE='PT2')
READ(3,*)NODT,NELT,KOX,KOY,KOZ,KKOX,KKOY,KKOZ,NF
DO 20 I=1,NELT
20 READ(3,*)(KAKOM(I,J),J=1,2),A(I),ZI(I)
DO 30 I=1,NODT
30 READ(3,*)X(I),Y(I)
READ(3,*) E
IF(KOX.EQ.0) GOTO 26
READ(3,*)(NOKX(I),I=1,KOX)
26 IF(KOY.EQ.0) GOTO 27
READ(3,*)(NOKY(I),I=1,KOY)
27 IF(KOZ.EQ.0) GOTO 28
READ(3,*)(NOKZ(I),I=1,KOZ)
28 IF(KKOX.EQ.0) GOTO 29
READ(3,*)(NNOKX(I),WYKX(I),I=1,KKOX)
29 IF(KKOY.EQ.0) GOTO 36
READ(3,*)(NNOKY(I),WYKY(I),I=1,KKOY)
36 IF(KKOZ.EQ.0) GOTO 31
READ(3,*)(NNOKZ(I),WYKZ(I),I=1,KKOZ)
31 NT=NODT*3
DO 35 I=1,NT
35 F(I)=0.0
DO 40 I=1,NF
READ(3,*) NO,FX,FY,ZM
F(3*NO-2)=FX
F(3*NO-1)=FY
40 F(3*NO)=ZM
WRITE(4,50)NODT,NELT,KOX,KOY,KOZ,KKOX,KKOY,KKOZ,NF
50 FORMAT(1H0,2X,5HNODT=,I3,2X,5HNELT=,I3,2X,4HKOX=,I3,2X,4HKOY=,
* I3,2X,4HKOZ=,I3,2X,5HKKOX=,I3,2X,5HKKOY=,I3,2X,5HKKOZ=,I3,
* 2X,3HNF=,I3)
WRITE(4,55)
55 FORMAT(1H0,1X,'******NODE NO.,AREA,MOMENT OF INTERTIA*******')
WRITE(4,65)(I,(KAKOM(I,J),J=1,2),A(I),ZI(I),I=1,NELT)
65 FORMAT(1H0,I5,6X,2I4,1X,F10.3,5X,E15.4)
WRITE(4,70)E
70 FORMAT(1H0,5X,'YOUNG,S,MODULUS=',F10.0)
WRITE(4,71)
71 FORMAT(1H0,1X,'******FIXED NODAL POINT(X-DIRECTION)*******')
WRITE(4,72)(NOKX(I),I=1,KOX)
72 FORMAT(1H0,20I5)
WRITE(4,73)
73 FORMAT(1H0,1X,'******FIXED NODAL POINT(Y-DIRECTION)*******')
WRITE(4,72)(NOKY(I),I=1,KOY)
WRITE(4,74)
74 FORMAT(1H0,1X,'******FIXED NODAL POINT(SLOPE)******')
WRITE(4,72)(NOKZ(I),I=1,KOZ)
CC -------------------------------------------------------------
WRITE(4,78)
78 FORMAT(1H0,'**HAVE DISPLACEMENT NODAL POINT(X-DIRECTION)**')
WRITE(4,79) (NNOKX(I),WYKX(I),I=1,KKOX)
79 FORMAT(1X,I5,E15.4)
WRITE(4,80)
80 FORMAT(1H0,'**HAVE DISPLACEMENT NODAL POINT (Y-DIRECTION)**')
WRITE(4,79)(NNOKY(I),WYKY(I),I=1,KKOY)
WRITE(4,81)
81 FORMAT(1H0,'***HAVE DISPLACEMENT NODAL POINT(SLOPE)***')
WRITE(4,79) (NNOKZ(I),WYKZ(I),I=1,KKOZ)
CC -------------------------------------------------------------
WRITE(4,75)
75 FORMAT(1H0,1X,'*******DIMENSION(X,Y) AND FORCES(FX,FY,ZM)*****')
WRITE(4,76)
76 FORMAT(1H0,1X,'NODE NO.',5X,4HX(I),6X,4HY(I),10X,5HFX(I),5X,
* 5HFY(I),4X,6HMOMENT)
WRITE(4,77)(I,X(I),Y(I),F(3*I-2),F(3*I-1),F(3*I),I=1,NODT)
77 FORMAT(1H0,I5,5X,2F10.3,5X,3F10.3)
DO 100 I=1,100
DO 100 J=1,100
100 TSM(I,J)=0.0
DO 110 NE=1,NELT
NE1=NE
NE2=NE
CALL BEMSX(E,NE1,NODT,NELT)
110 CALL ASMAT(NE2,2,3,NT,NELT,6)
IF(KKOX.EQ.0) GOTO 600
DO 500 I=1,KKOX
N=3*NNOKX(I)-2
F(N)=1.0E11*WYKX(I)*TSM(N,N)
TSM(N,N)=1.0E11*TSM(N,N)
500 CONTINUE
600 IF(KKOY.EQ.0) GOTO 601
DO 501 I=1,KKOY
N=3*NNOKY(I)-1
F(N)=1.0E11*WYKY(I)*TSM(N,N)
TSM(N,N)=1.0E11*TSM(N,N)
501 CONTINUE
601 IF(KKOZ.EQ.0) GOTO 602
DO 502 I=1,KKOZ
N=3*NNOKZ(I)
F(N)=1.0E11*WYKZ(I)*TSM(N,N)
TSM(N,N)=1.0E11*TSM(N,N)
502 CONTINUECC ---------------------------------------------------------
602 DO 115 I=1,NT
115 INDEX(I)=I
IF(KOX.EQ.0) GOTO 116
DO 120 I=1,KOX
N=3*NOKX(I)-2
120 INDEX(N)=0
116 IF(KOY.EQ.0) GOTO 121
DO 125 I=1,KOY
N=3*NOKY(I)-1
125 INDEX(N)=0
121 IF(KOZ.EQ.0) GOTO 126
DO 127 I=1,KOZ
N=3*NOKZ(I)
127 INDEX(N)=0
126 MM=0
DO 130 I=1,NT
IF(INDEX(I).EQ.0) GOTO 130
MM=MM+1
INDEX(MM)=I
130 CONTINUE
DO 135 I=1,MM
IA=INDEX(I)
F(I)=F(IA)
DO 135 J=1,MM
JA=INDEX(J)
135 TSM(I,J)=TSM(IA,JA)
DO 140 I=1,NT
140 DIS(I)=0
CALL MATINV(MM)
DO 141 I=1,MM
REAC(I)=0.0
DO 141 K=1,MM
141 REAC(I)=REAC(I)+TSM(I,K)*F(K)
DO 143 I=1,MM
IA=INDEX(I)
143 DIS(IA)=REAC(I)
DO 150 I=1,NT
150 REAC(I)=0.0
DO 155 NE=1,NELT
NE1=NE
CALL BEMSX(E,NE1,NODT,NELT)
DO 160 I=1,2
IA=KAKOM(NE,I)
WD(3*I-2)=DIS(3*IA-2)
WD(3*I-1)=DIS(3*IA-1)
160 WD(3*I)=DIS(3*IA)
DO 165 I=1,6
WS(I)=0.0
CC WS(I)为第NE个单元的两端节点的节点反力 ,SM为单刚矩阵
DO 165 K=1,6
165 WS(I)=WS(I)+SM(I,K)*WD(K)
DO 170 I=1,2
IA=KAKOM(NE,I)
DO 170 J=1,3
IR=3*(IA-1)+J
IW=3*(I-1)+J
170 REAC(IR)=REAC(IR)+WS(IW)
DO 155 I=1,6
TSM(NE,I)=0.0
DO 155 K=1,6
155 TSM(NE,I)=TSM(NE,I)+HEN(I,K)*WS(K)
WRITE(4,200)
200 FORMAT(1H0,'*********DISPLACEMENT AND REACTION*********')
WRITE(4,205)
205 FORMAT(1H0,2X,8HNODE NO.,9X,1HU,14X,1HV,10X,5HSLOPE,13X,2HRX,13X
* ,2HRY,12X,3HRZM)
WRITE(4,210)(I,DIS(3*I-2),DIS(3*I-1),DIS(3*I),REAC(3*I-2),
* REAC(3*I-1),REAC(3*I),I=1,NODT)
210 FORMAT(1H0,I5,5X,6E15.4)
WRITE(4,215)
215 FORMAT(1H0,'**********NODAL FORCE OF ELEMENT***********')
WRITE(4,220)
220 FORMAT(1H0,1X,'ELEM.NO.',2X,8HNODE NO.,5X,11HAXIAL FORCE,4X,
* 11HSHEAR FORCE,3X,14HBENDING MOMENT,7X,11HAXIAL FORCE,4X
* ,11HSHEAR FORCE,3X,14HBENDING MOMENT)
DO 221 NE=1,NELT
IA=KAKOM(NE,1)
IB=KAKOM(NE,2)
221 WRITE(4,225)NE,IA,IB,(TSM(NE,J),J=1,6)
225 FORMAT(1H0,I5,6X,I3,2X,I3,1X,6E15.4)
END
SUBROUTINE BEMSX(E,NE,NODT,NELT)
COMMON/ONE/X(30),Y(30),A(60),ZI(60),KAKOM(60,2),SM(6,6),HEN(6,6)
* ,TSM(100,100)
DIMENSION W(6,6)
I=KAKOM(NE,1)
J=KAKOM(NE,2)
AL=SQRT((X(J)-X(I))**2+(Y(J)-Y(I))**2)
IF(AL.EQ.0) AL=0.1E-50
CS=(X(J)-X(I))/AL
SN=(Y(J)-Y(I))/AL
DO 10 I=1,6
DO 10 J=1,6
SM(I,J)=0.0
10 HEN(I,J)=0.0
HEN(1,1)=CS
HEN(1,2)=SN
HEN(2,1)=-SN
HEN(2,2)=CS
HEN(3,3)=1.0
DO 15 I=1,3
DO 15 J=1,3
15 HEN(I+3,J+3)=HEN(I,J)
EA=E*A(NE)
EI=E*ZI(NE)
SM(1,1)=EA/AL
SM(2,2)=12.0*EI/AL**3
SM(3,2)=-6.0*EI/AL**2
SM(3,3)=4.0*EI/AL
SM(4,1)=-EA/AL
SM(4,4)=SM(1,1)
SM(5,2)=-SM(2,2)
SM(5,3)=-SM(3,2)
SM(5,5)=SM(2,2)
SM(6,2)=SM(3,2)
SM(6,3)=2.0*EI/AL
SM(6,5)=-SM(3,2)
SM(6,6)=SM(3,3)
DO 20 I=1,6
DO 20 J=1,I
20 SM(J,I)=SM(I,J)
DO 25 I=1,6
DO 25 J=1,6
W(I,J)=0.0
DO 25 K=1,6
25 W(I,J)=W(I,J)+HEN(K,I)*SM(K,J)
DO 30 I=1,6
DO 30 J=1,6
SM(I,J)=0.0
DO 30 K=1,6
30 SM(I,J)=SM(I,J)+W(I,K)*HEN(K,J)
RETURN
END
SUBROUTINE ASMAT(NE,NOD,NHEN,NT,NELT,NS)
COMMON/ONE/X(30),Y(30),A(60),ZI(60),KAKOM(60,2),SM(6,6),
* HEN(6,6),TSM(100,100)
DO 10 I=1,NOD
DO 10 J=1,NOD
KI=(KAKOM(NE,I)-1)*NHEN
KJ=(KAKOM(NE,J)-1)*NHEN
IS=(I-1)*NHEN
JS=(J-1)*NHEN
DO 10 K=1,NHEN
DO 10 L=1,NHEN
KIK=KI+K
KJL=KJ+L
ISK=IS+K
JSL=JS+L
10 TSM(KIK,KJL)=TSM(KIK,KJL)+SM(ISK,JSL)
RETURN
END
SUBROUTINE MATINV(NN)
COMMON/ONE/X(30),Y(30),A(60),ZI(60),KAKOM(60,2),SM(6,6),
* HEN(6,6),TSM(100,100)
DIMENSION IND(100)
DO 102 K=1,NN
102 IND(K)=K
DO 103 K=1,NN
W=0.0
DO 104 I=K,NN
IF(ABS(TSM(I,1)).LE.W) GO TO 104
W=ABS(TSM(I,1))
IR=I
104 CONTINUE
IF(IR.EQ.K) GOTO 106
DO 107 J=1,NN
W=TSM(K,J)
TSM(K,J)=TSM(IR,J)
107 TSM(IR,J)=W
M=IND(K)
IND(K)=IND(IR)
IND(IR)=M
106 W=TSM(K,1)
IF(W.EQ.0) W=0.1E-10
DO 108 J=1,NN-1
108 TSM(K,J)=TSM(K,J+1)/W
TSM(K,NN)=1.0/W
DO 109 I=1,NN
IF(I.EQ.K) GO TO 109
W=TSM(I,1)
IF(W.EQ.0.1E-40) W=0.0
DO 110 J=1,NN-1
110 TSM(I,J)=TSM(I,J+1)-W*TSM(K,J)
TSM(I,NN)=-W*TSM(K,NN)
109 CONTINUE
103 CONTINUE
DO 111 K=1,NN-1
IF(K.EQ.IND(K)) GO TO 111
DO 112 I=K+1,NN
IF(K.NE.IND(I)) GO TO 112
IR=I
GO TO 114
112 CONTINUE
114 DO 115 J=1,NN
W=TSM(J,K)
TSM(J,K)=TSM(J,IR)
115 TSM(J,IR)=W
IND(IR)=IND(K)
IND(K)=K
111 CONTINUE
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -