⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmkj2.for

📁 平面框架有限元计算程序
💻 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 + -