1 / 27

第八讲 平面钢架程序设计

第八讲 平面钢架程序设计. 第一节 概述 第二节 平面刚架内力和位移计算的框图与程序 第三节 平面刚架程序计算实例. 第一节 概述. 本程序可用于计算. 平面刚架在荷载作用下的结点位移和杆端力 图 3-15 所示的六种固端梁的等效结点荷载 平面和桁架组合结构. 一 · 程序编制说明. 编制说明. 本程序建立整体刚度矩阵时,采用直接刚度法中的 “ 先处理法 ” 。 各单元为等截面杆。当两结点间的梁自然段抗弯刚度不等时,可将截面突变点作为结点处理。 本章根据第一章所述的计算原理和方法,讨论用矩阵位移计算平面刚架结构的程序设计. 计算模型与计算方法.

dustin
Download Presentation

第八讲 平面钢架程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八讲 平面钢架程序设计 第一节 概述 第二节 平面刚架内力和位移计算的框图与程序 第三节 平面刚架程序计算实例

  2. 第一节 概述 本程序可用于计算 • 平面刚架在荷载作用下的结点位移和杆端力 • 图3-15所示的六种固端梁的等效结点荷载 • 平面和桁架组合结构 一·程序编制说明 编制说明 • 本程序建立整体刚度矩阵时,采用直接刚度法中的“先处理法”。 • 各单元为等截面杆。当两结点间的梁自然段抗弯刚度不等时,可将截面突变点作为结点处理。 • 本章根据第一章所述的计算原理和方法,讨论用矩阵位移计算平面刚架结构的程序设计

  3. 计算模型与计算方法 1.计算模型 • 以杆件联结点、支座结点、截面突变和外伸端点作为计算结点,任意两结点间的杆件作为计算单元。在局部坐标系下,单元两端的杆端力、杆端位移列阵如式(1-15)、式(1-16)所示,即:

  4. 在局部坐标系下,单元刚度矩阵如下式所示,即:在局部坐标系下,单元刚度矩阵如下式所示,即:

  5. 2 .坐标变换 e T 杆端力和杆端位移的坐标变换是通过式( 1 - 26 )所示的单元坐标变换矩阵 完成的。 a a é ù cos sin 0 0 0 0 ê ú ê ú - a a sin cos 0 0 0 0 ê ú ê ú 0 0 1 0 0 0 ê ú = e T ê ú a a 0 0 0 cos sin 0 ê ú ê ú - a a 0 0 0 sin cos 0 ê ú ê ú 0 0 0 0 0 1 ë û 局部坐标单元杆端力、杆端位移与整体坐标系下单元杆端力、杆端位移之间 的关系分别为式( 1 - 25 )和式( 1 - 28 ),即 e = e e F T F d = e eT e e T k T = e eT e e k T k T 整体坐标系下的单元刚度矩阵为 e k 这里 为式( 1 - 19 )所示的 6 阶方阵。

  6. 3.支承条件的引入及整体刚度矩阵的组集 整体刚度矩阵的组集采用“直接刚度矩阵法”。整体坐标系下单元刚度矩阵各元素的下标由单元定位数组确定,即在组集整体刚度矩阵之前引入支承条件。 ◇确定单元数组时应注意以下两个问题 (1)支座结点的未知位移分量编号 若单元的某一端与支座相联,则单元支座结点的未知位移分量信息应按表5-1输入 (2)杆件联结点未知位移分量编号 若单元的某一端与其他杆件相联,则应首先根据联结情况确定结点编码,而后再确定与结点相应的单元未知位移分量编码。现将常遇到的几种情况列于表5-2中。

  7. 开始 (1)标题及数组说明 (读入题目序号NO) NO是否为零 结束 (7)子程序READ (2)读入数据并打印 (8)子程序MKE (9)子程序MR (3)形成整体刚度矩阵 (10)子程序MAKE (18)子程序TRAN (19)子程序MULV (4)形成结点荷载 (11)子程序CALM (12)子程序MK (13)子程序PE (5)解方程并打印杆端位移 (14)子程序MULV6 (15)子程序MF (16)子程序SOLV (6)计算并打印杆端力 (17)子程序MADE

  8. 第二节 平面刚架内力和位移计算的框图与程序 一、 程序标识符说明 平面刚架静力分析程序名为 PFSAP (Plane Farme Structural Analysis Program) 。其 主要标识符说明如下 : TITLE(2 0) —— 算力标题。实型数组,输入参数。 NJ —— 结点总数。 ,输入参数。 N —— 结点自由度,即整体刚度矩阵的阶数。 整型变量,输入参数。 NE —— 单元总数。 整型变量,输入参数。 NM —— 单元类型总数。 同类型的单元 E 、 A 、 I 相同。 整型变量,输入参数。 NPJ —— 结点载荷总数。 整型变量,输入参数。 NPF —— 非结点载荷总数。 整型变量,输入参数。 JN ( 3 , 100 ) —— 结点位移号数组。 整型数组,输入参数。 X ( 100 ), Y ( 100 ) —— 结点坐标数组。 实型数组,输入参数。 JE ( 2 , 100 ) —— 单元两端结点号数组。 整型 数组,输入参数。 JEAI ( 100 ) —— 单元类型信息数组, JEAI ( e )为单元的类型号。 同类型的单元 弹性模量、横截面积及极惯性矩均相同。 整型数组,输入参数。

  9. EAI ( 3 , 100 ) —— 各类型单元的物理、几何性质数组, EAI ( 1 , e )、 EAI ( 2 , e )、 EAI e ( 3 , e )分别为第 ○ 号类型单元的弹性模零、横截面集、惯性矩。实型数组,输入 参数。 JPJ ( 3 , 100 ) —— 结点载荷位移号数组, JPJ ( I )为与第 I 各结点行营位移分量的位移 号。整型数组,输入参数。 PJ ( 100 ) —— 结点荷载数值组。 PJ ( I )为第 I 各结点荷载数值。整型数组,输入参数。 e JPF ( 2 , 100 ) —— 非结点荷载作用的单元号及类型数组。 JPF ( 1 , e )为第 ○ 各非结点 e 荷载作用的单元号。 JPF ( 2 , e )为第 ○ 各非结点荷载的类型,其取值 1 至 6 ,对 应图 3 - 15 的 6 种情况。整型数组,输入参数。 e PF ( 2 , 100 ) —— 非结点荷载参数数组。 PF(1 , e) 、 PF ( 2 , e )分别为第 ○ 各非结点载 荷参数 a 、 c 。整型数组,输入参数。 M ( 6 ) —— 单元定位数组。整型数组,输入参数。 K ( 200 , 200 ) —— 结构刚度矩阵数组。实型数组。 KE ( 6 , 6 ) —— 局部坐标系下单元刚度矩阵数组。实型数组。 AKE ( 6 , 6 ) —— 整 体坐标系下单元刚度矩阵数组。实型数组。 AL ( 100 ) —— 单元长度数组。实型数组。 R ( 6 , 6 ) —— 单元坐标转换矩阵。实型数组。

  10. RT ( 6 , 6 ) —— 单元坐标转换矩阵的转置矩阵。实型数组。 P ( 100 ) —— 综合结点荷载数组。实型数组。 FF ( 6 ) —— 局部坐标系下单元杆端力数组。实型数组。 FE ( 6 ) —— 局部坐标系下单元等效荷载数组。实型数组。 AFE ( 6 ) —— 整体坐标系下单元等效荷载数组。实型数组。 D ( 50 ) —— 整体坐标系下自由解点位移数组。实型数组。 ADE ( 6 ) —— 整体坐标系下单元杆端位移数组。实型数组。 DE ( 6 ) —— 局部坐标系下单元杆端位移数组。实型数组。 F ( 3 ) —— 整体坐标系下结点位移数组。实型数组。 NO —— 计算题目的符 号,整型变量,输入参数。 SQRT —— 标准函数,计算非负实数的平方根。 READ —— 子程序,输入原始数据。 MKE —— 子程序,计算局部坐标系下单元刚度矩阵。 MR —— 子程序,计算单元坐标转换矩阵。

  11. 平面刚架静力分析原程序(PFSAP.FOR) 1: C ANALYSIS PROGRAM FOR PLANE FRAME 2: REAL K(200,200), KE(6,6),AKE(6,6),X(100),Y(100),AL(100) 3: & EAI(3,100),PJ(100),PF(2,100) ,R(6,6),P(100),FF(6), 4: & FE(6),D(100),ADE(6),DE(6),RT(6,6),AFE(6),F(3) 5: INTEGER JE(2,100),JN(3,100),JPJ(100),JPF(2,00),M(6), 6: & JEAI(100),NO 7: OPEN(6,FILE=’PFSAP.IN’) 8: OPEN(8,FILE=’PFSAP.OUT’) 9: READ(6,·)NO 10: IF(NO.EQ.0)STOP 11: WRITE(8,(/A5,I3,A1)’)’(NO.=’,NO,’ 12: CALL READ(NJ,N,NE,NM,NPJ,NPF,JN,X,Y,JE, & JEAI,EAI,JPJ,PJ,JPF,PF) 13: DO 5 I=1,N 14: P(I)=0 15: DO 5 J=1,N 16: K(I,J)=0 17: DO 10 IE=1,NE 18: CALL MKE(KE,IE,JE,JEAI,EAI,X,Y,AL) 19: CALL MR(R,IE,JE,X,Y) 20: CALL MAKE(KE,R,AKE) 2:~6: 数组说明 7: 8:定义输入输出设备 9:~11:读题目序号。若序号为零,停止运算,程序结束,否则,将序号打印出来。 18:调用MKE,形成局部坐标系下的单元刚度矩阵。 19:调用MR,形成单元坐标转换矩阵。 20:调用MAKE,形成整体坐标系的单元刚度矩阵。在该子程序中又调用了TRAN和MULV。

  12. 21: 调用CALM,形成单元定位数组。 22: 调用MK子程序,按单元定位数 组给出的编号,“对号入座”组集整 体坐标系下的整体结构刚度矩阵K. 21: CALL CALM(M,IE,JN,JE 22: CALL MK(K,AKE,M) 23: 10 CONTINUE 24: DO 20 IP=1,NP 25: CALL MR(R,JPF(1,IP),JE,X,Y) 26: CALL TRAN(R,RT) 27: CALL PE(FE,IP,JPF,PF,AL) 28: CALL MULV6(RT,FE,AFE) 29: CALL CALM(M,JPF(1,IP),JN,JE) 30: CALL MF(P,AFE,M) 31:20 CONTINUE 32: DO 30 I=1,NP 33:30 P(JPJ(I))=P(JPJ(I))+PJ(I) 34: CALL SLOV(K,P,D,N) 35: WRITE(8,’(/2(26(1H·),A))’)’RESULTS OF CALCULATION’ 36: WRITE(8,40) 37:40 FORMAT(/5X,’NO.N’,4X,’X-DISPLACEMENT’,2X, 38: ‘Y-DISPLACEMENT’,3X,’ANG.ROT.(RAD)’) 39: DO 60 KK=1,NJ 40: DO 50 II=1,3 41: F(II)=0 42: I1=JN(II,KK) 25-30: 分别调用MR,TRAN(单元坐标转换矩阵的转置矩阵), PE(等效结点荷载) ,MULV6(6阶矩阵与6元素列阵相乘) , CALM(单元定位数组),MF(整体坐标系下荷载列阵) 32: 对直接作用在结点上的荷载循环。 33:将直接作用在结点上的荷载按位移编 号累加入P. 35: ~38: 打印计算结果表名和 结点位移表名。 39:~45: 打印各结点的位移值。

  13. 43: 50 IF(I1.GT.0)F(II)=D(I1) 44: 60 WRITE(8,70)KK,F(1),F(2),F(3) 45: 70 FORMAT(I8,2X,3G16.5) 46: WRITE(8,80) 47: 80 FORMAT(/’NO.E’,5X,’N(1),8X,’Q(1),8X,M(1)’, 48: & 8X,’N(2)’,8X,’Q(2),8X,’M(2)’) 49; DO 130 IE=1,NE 50: CALL MADE(IE,JN,JE,D,ADE) 51: CALL MKE(KE,IE,JE,JEAI,EAI,X,Y,AL) 52: CALL MR(R,IE,JE,X,Y) 53: CALL MULV6(R,ADE,DE) 54: CALL MULV6(KE,DE,EF) 55: DO 100 IP=1,NPF 56: IF(JPF(1,IP).EQ.IE) THEN 57: CALL PE(EF,IP,JPF,PF,AL) 58: DO 90 I=1,6 59:90 FE(I)=FF(I)-FE(I) 60: ENDIF 61:100 CONTINUE 62: WRITE(8,110)IE,(FF(I),I=1,6) 63:110 FORMAT(I5,2X,6G12.5) 64:130 CONTINUE 50:~54: 分别调用MADE, MKE,MR,MULV6子程序。 56:~60: 若非结点荷载不为零, 则将由于非结点荷载引起的固 端力取出并存入FF数组。

  14. 65: GOTO 1 66: END (7)子程序READ 67: SUBROUTINE READ(NJ,N,NE,NM,NPJ,NPF,JN,X,Y,JE,JEAI,EAI, 68: & JPJ,PJ,JPF,PF) 69: REAL X(100),Y(100),EAI(3,100),PJ(100),PF(2,100) 70: INTEGER JE(2,100),JN(3,1000),JPJ(100),JPF(2,100),JEAI(100) 71: & TITLE(20) 72: READ(6,’(20A4)’)(TITLE(I),I=1,20) 73: WRITE(8,’(/7X,20A4)’)TITLE 74: READ(6,·)NJ,N,NE,NM,NPJ,NPF 75: WRITE(8,’(/3(5X,A4,1H:I2))’)’NJ=’,NJ, 76: & ‘N=’,N,’NE=’,NE,’NM=’,NM,’NPJ=’,NPJ,’NPF=’,NPF 77: WRITE(8,5) 78:5 FORMAT(/4X,’NO.(1)(2)(3)’,10X,’X’,8X,’Y’) 79: READ(6,10)((JN(J,I),J=1,3),X(I),Y(I),=1,NJ) 80:10 FORMAT(2,(3I5,2G16.4)) 81: DO 20 I=1,NJ 82:20 WRITE(8,’(2X,1H(,I2,1H),3I6,4X,2F10.3)’)I,JN(1,I),JN(2,I), 83: & JN(3,I),X(I),Y(I) 84: WRITE(8,30) 85:30 FORMAT(/10X,’ELEMENT NO.NODE-1 NODE-2 MATERIALS’) 86: READ(6,40)(JE(1,I),JE(2,I),JEAI(I),I=1,NE) 87:40 FORMAT(5(3I5))

  15. 88: DO 50 I=1,NE 89:50 WRITE(8,’(14X,I2,3(7X,I3))’)I,JE(1,I),JE(2,I),JEAI(I) 90: READ(6,*)((EAI(I,J),I=1,3),J=1,NM) 91: WRITE(8,60)(J,(EAI(I,J),I=1,3),J=1.NM) 92:60 FORMAT(/3X,’NO.MAT’,6X,’ELASTIC MODULUS’,8X, 93: & ‘AREA’,5X,’MOMENT OF INERTIA’/(I6,9X,3G16.6)) 94: IF(NPJ.EQ.0) GOTO 90 95: WRITE(8,’(20X,16H NODEL LOADS)’) 96: WRITE( 8,’(16XA)’) NO.DISP.VALUE’ 97: READ(6,70)(JPJ(I),PJ(I),I=1,NPJ) 98:70 FORMAT(5(I5,G16.4)) 99: DO 80 I=1,NP 100:80 WRITE(8,’(14X,I7,F16.3)’) JPJ(I),PJ(I) 101:90 CONTINUE 102: IF(NPF.EQ.0)GOTO 130 103: WRITE(8,’(/20X,16HNON-NODEL LOADS)’) 104: WRITE(8,’(11X,A,8X,A,9X,A)’)’NO.E.NO.LOAD.MODEL’,’A’,’C’ 105: READ(6,100)(JPF(1,J),JPF(2,I),PF(1,I),PF(2,I),I=1,NPF) 106: FORMAT(2(2I5,2G16.4)) 107: DO 110 I=1,NPF 108:110 WRITE(8,120)(JPF(J,I),J=1,2),PF(1,I),PF(2,I) 109:120 FORMAT(6X,2I8,10X,2F10.3) 110:130 CONTINUE 112 END

  16. (8)子程序MKE 113:SUBROUTINE MKE(KE,IE,JE,JEAI,EAI,X,Y,AL) 114: REAL KE(6,6),X(100),Y(100),EAI(3,100),AL(100),L 115: INTEGER JE(2,100),JEAI(100) 116: II=JE(1,IE) 117: JJ=JE(2,IE) 118: MT=JEAI(IE) 119: L=SQRT((X(JJ)-X(II))**+(Y(JJ)-Y(II))**2) 120: AL(IE)=L 121: A1=EAI(1,MT)*EAI(2,MT)/L 122: A2=EAI(1,MT)*EAI(3,MT)/L**3 123: A3=EAI(1,MT)*EAI(3,MT)/L**2 124: A4=EAI(1,MT)*EAI(3,MT)/L 125: KE(1,1)=A1 126: KE(1,4)=-A1 127: KE(2,2)=12*A2 128: KE(2,3)=6*A3 129: KE(2,5)-12*A2 130: KE(2,6)=6*A3 131: KE(3,3)=4*A4 132: KE(3,5)=-6*A3 133: KE(3,6)=2*A4 134: KE(4,4)=A1

  17. 135: KE(5,5)=12*A2 136: KE(5,6)=-6*A3 137: KE(6,6)=4*A4 138: DO 10 I=1,6 139: DO 10 K=I,6 140:10 KE(K,I)=KE(I,K) 141: RETURN 142: END (9)子程序MR 143: SUBROUTINE MR(R,IE,JE,X,Y) 144: REAL R(6,6),X(100),Y(100),L,CX,CY 145: INTEGER JE(2,100) 146: I=JE(1,IE) 147: J=JE(2,IE) 148: L=SQRT((X(J)-X(I))**2+(Y(J)-Y(I))**2) 149: CX=(X(j)-X(I))/L 150: CY=(Y(J)-Y(I))/L 151: DO 10 J=1,6 152: DO 10 I=1,6 153:10 R(I,J)=CX 154: DO 20 I=1,4,3 155: R(I,I)=CX 156: R(I,I+1)=CY 157: R(I+1,I)=-CY

  18. 158: R(I+1,I+1)=CX 159:20 R(I+2,I+2)=1 160: RETURN 161: END (10)子程序MAKE 162: SUBRUTINE MAKE(KE,R,AKE) 163: REAL KE(6,6),R(6,6),RT(6,6),TMP(6,6),AKE(6,6) 164: CALL TRAN(R,RT) 165: CALL MULV(RT,KE,TMP) 166: CALL MULV(TMP,R,AKE) 167: RETURN 168: END (11)子程序CALM 169: SUBROUTINE CALM(M,JE,JN,JE) 170: INTEGER M(6),JN(3,100),JE(2,100),IE 171: DO 10 I=1,3 172: M(I)=JN(I,JE(1,IE)) 173:10 M(I+3)=JN(I,JE(2,IE)) 174: RETURN 175: END (12)子程序MK 176: SUBROUTINE MK(K,AKE,M) 177: REAL K(200,200),AKE(6,6) MAKE子程序需用 TRAN和MULV调用

  19. 178: INTEGER M(6) 179: DO 10 I=1,6 180: DO 10 J=1,6 181: IF(M(I).NE.0.AND.M(J).NE.0) 182: & K(M(I),M(J))=K(M(I),M(J))+AKE(I,J) 183:10 CONTINUE 184: RETURN 185: END (13)子程序PE 186: SUBROUTINE PE(FE,IP,JPF,PF,AL) 187: REAL FE(6),PF(2,100),AL(100),L 188: INTEGER JPF(2,100) 189: A=PF(1,IP) 190: C=PF(2,IP) 191: L=AL(JPF(1,IP)) 192: IND=JPF(2,IP) 193: DO 5 I=1,6 194:5 FE(I)=0 195: GOTO (10,20,30,40,50,60),IND 196:10 FE(2)=(7*A/20+3*C/20)*L 197: FE(3)=(A/20+C/30)*L**2 198: FE(5)=(3*A/20+7*C/20)*L 199: FE(6)=-(A/30+C/20)*L**2

  20. 200: RETURN 201:20 FE(5)=A*C**3*(2*L-C)/2/L**3 202: FE(2)=A*C-FE(5) 203: FE(3)=A*C**2*(6*L*L-8*C*L+3*C*C)/12/L/L 204: FE(6)=-A*C**3*(4*L-3*C)/12/L/L 205: RETURN 206: FE(2)=A*(L-C)**2*(L+C*2)/L**3 207: FE(3)=A*C*(C-L)**2/L**2 208: FE(5)=A-FE(2) 209: FE(6)=-A*C**2*(L-C)/L**2 210: RETURN 211: FE(2)=-6*A*C*(L-C)/L**2 212: FE(3)=A*(L-C)*(L-3*C)/L**2 213: FE(5)=-FE(2) 214: FE(6)=A*C*(3*C-2*L)/L**2 215: RETURN 216: FE(1)=A*(1-C/L) 217: FE(4)=A*C/L 218: RETURN 219: END 220: FE(4)=FE(1) 221: RETURN 222: END 梁长为L的两端固定梁的等效结点荷载。见书57页。

  21. (14)子程序MULV6 223: SUBROUTINE MULV6(A,B,C) 224: REAL C(6),A(6,6),B(6) 225: DO 10 I=1,6 226: C(I)=0.0 227: DO 10 J=1,6 228:10 C(I)=C(I)+A(I,J)*B(J) 229: RETURN 230: END (15)子程序MF 231: SUBROUTINE MF(P,AFE,M) 232: REAL P(100),AFE(6) 233: INTEGER M(6) 234: DO 10 I=1,6 235: IF(M(I).NE.0) P(M(I))=AFE(I)+P(M(i)) 236:10 CONTINUE 237: RETURN 238: END (16)子程序SLOV 239: SUBROUTINE SLOV(AK,P,D,N) 240: REAL AK(200,200),P(100),D(100) 241: DO 5 I=1,100 242:5 DO(I)=P(I)

  22. 243: DO 10 K=1,N-1 244: DO 10 I=K+1,N 245: C=-AK(K,I)/AK(K,K) 246: DO 20 J=I,N 247:20 AK(I,J)=AK(I,J)+C*AK(K,J) 248:10 D(J)=D(I)+C*D(K) 249: D(N)=D(N)/AK(N,N) 250: DO 40 I=N-1,1,-1 251: DO 30 J=I+1,N 252:30 D(I)=D(I)-AK(I,J)*D(J) 253:40 D(I)=D(I)/AK(I,J) 254: RETURN 255: END (17)子程序MADE 256: SUBROUTINE MADE(IE,JN,JE,D,ADE) 257: REAL ADE(6),D(100) 258: INTEGER IE ,JN(3,100),JE(2,100) 259: DO 3 I=1,6 260:3 ADE(I)=0 261:10 DO 10 I=1,3 262: IF(JN(I,JE(1,IE).NE.0) ADE(I)=D(JN(I,JE(1,IE))) 263: IF(JN(I,JE(2,IE).NE.0) ADE(I+3)=D(JN(I,JE(2,IE)))

  23. 264:10 CONTINUE 265: RETURN 266: END (18)子程序TRAN 267: SUBROUTINE TRAN(R,RT) 268: REAL R(6,6),RT(6,6) 269: DO 10 I=1,6 270: DO 10 J=1,6 271:10 RT(I,J)=R(J,I) 272: RETURN 273: END (19)子程序MULV 274: SUBROUTINE MULV(A,B,C) 275: REAL A(6,6),B(6,6),C(6,6) 276: DO 10 I=1,6 277: DO 10 J=1,6 278: C(I,J)=0 279: DO 10 K=1,6 280:10 C(I,J)=C(I,J)+A(I,K)*B(K,J) 281: RETURN 282: END

  24. 子程序PE 程序标题及数组说明 子程序MK 子程序MULV6 读入数据并打印 子程序CALM 子程序MF 形成整体刚度矩阵 子程序MR 子程序SOLV 形成结点荷载 子程序MAKE 子程序MADE 解方程并打印杆端位移 子程序MKE 子程序TRAN 计算并打印杆端力 子程序READ 子程序MULV

More Related