一、任务已完成如下了任务:1.增加荷载类型(原来程序中只有集中力和均布力)。2.计算指定截面的弯矩和剪力。3.计算指定截面的弯矩影响线。4.计算指定截面的剪力影响线。5.计算指定支座的反力影响线。6.计算均布活荷作用下的弯矩包络图。7.计算均布活荷作用下的剪力包络图。二添加的子程序框图1.计算指定截面的弯矩流程图开始求出只有杆端弯矩时截面的弯矩(左右侧弯矩)I=非结点荷载的个数(NF)荷载是否作用在此单元I=I+1调用SCWX子程序输出左右侧弯矩结束根据不同荷载类型(ID),按简支梁求出截面的左右侧弯矩,再叠加上原有弯矩I=I+1NNYY调出杆端弯矩,所求截面所在单元及其在单元中的位置2.计算指定截面的弯矩流程图3.支座反力计算的流程图开始求出只有杆端弯矩时截面的剪力(左右侧剪力)I=非结点荷载的个数(NF)荷载是否作用在此单元I=I+1调用SCWX子程序输出左右剪力结束根据不同荷载类型(ID),按简支梁求出截面的左右侧剪力,再叠加上原有剪力I=I+1NNYY调出杆端弯矩,所求截面所在单元及其在单元中的位置开始调入所求支座对应的节点号计算支座左侧引起的支座反力FX1计算支座右侧引起的支座反力FX2FX=FX1+FX2输出支座反力结束3.1计算左侧荷载引起的支座反力的流程图开始I=非结点荷载的个数(NF)荷载是否作用在此单元I=I+1结束根据不同荷载类型(ID),按简支梁求出引起的支座反力,再叠加上原有的支座反力I=I+1NNYY所求支座反力的序号是否为1调出所求支座的序号NYFX1=03.2计算右侧荷载引起的支座反力的流程图开始I=非结点荷载的个数(NF)荷载是否作用在此单元I=I+1结束根据不同荷载类型(ID),按简支梁求出引起的支座反力,再叠加上原有的支座反力I=I+1NNYY所求支座反力的序号是否为NJ调出所求支座的序号NYFX2=04.弯矩影响线的流程图开始调用截面所在单元及其在单元中的位置单位荷载作用的单元NN=1NN=NEI=20单元是否作用在支座处I=I+1Y调用求截面弯矩的程序I=I+1NN=NN+1NYNY输出MX=0X=I*L/20结束N5.剪力影响线流程图开始调用截面所在单元及其在单元中的位置单位荷载作用的单元NN=1NN=NEI=20单元是否作用在支座处I=I+1Y调用求截面左右侧剪力的程序I=I+1NN=NN+1NYNY输出FXZ=FXY=0X=I*L/20结束N6.支座反力的影响线开始调用截面所在单元及其在单元中的位置单位荷载作用的单元NN=1NN=NEI=20单元是否作用在支座处I=I+1Y调用求支座反力的程序I=I+1NN=NN+1NYNY输出FX=0X=I*L/20结束N是否作用在所求支座处NYI=I+1输出FX=17.弯矩包络图的流程图(注:对于弯矩的求解运用叠加原理,对每一跨荷载引起连续梁的内力进行叠加)开始计算隔跨布置均布活荷载所引起的截面内力,用矩阵WX(NE,21)来存储。计算另一种隔跨布置均布活荷载所引起的截面内力,用矩阵WXX(NE,21)来存储。比较WX(NE,21)与WXX(NE,21),如果WXX对应的元素比WX大,则将WXX对应的元素赋值给WX对于引起支座最大负弯矩的均布活荷载引起的各截面弯矩用WXX(NE,21)来存储,再与WX比较,如果WXX对应的元素比WX大,则将WXX对应的元素赋值给WX(WX即为各截面的最大弯矩)。按行输出WX(NE,21)最大弯矩计算隔跨布置均布活荷载所引起的截面内力,用矩阵WX(NE,21)来存储。计算另一种隔跨布置均布活荷载所引起的截面内力,用矩阵WXX(NE,21)来存储。比较WX(NE,21)与WXX(NE,21),如果WXX对应的元素比WX小,则将WXX对应的元素赋值给WX对于引起支座最大负弯矩的均布活荷载引起的各截面弯矩用WXX(NE,21)来存储,再与WX比较,如果WXX对应的元素比WX小,则将WXX对应的元素赋值给WX(WX即为各截面的最小弯矩)。按行输出WX(NE,21)最小弯矩结束8.剪力包络图的流程图(此时所加的荷载与求弯矩包络图时的荷载相同,对于剪力的求解运用叠加原理,对每一跨荷载引起连续梁的内力进行叠加):开始计算隔跨布置均布活荷载所引起的截面内力,用矩阵FX(NE,21)来存储。计算另一种隔跨布置均布活荷载所引起的截面内力,用矩阵FXX(NE,21)来存储。比较FX(NE,21)与FXX(NE,21),如果FXX对应的元素比FX大,则将FXX对应的元素赋值给FX对于引起支座截面最大剪力的均布活荷载引起的各截面剪力用FXX(NE,21)来存储,再与FX比较,如果FXX对应的元素比FX大,则将FXX对应的元素赋值给WX(WX即为各截面的最大弯矩)。按行输出FX(NE,21)最大剪力计算隔跨布置均布活荷载所引起的截面内力,用矩阵FX(NE,21)来存储。计算另一种隔跨布置均布活荷载所引起的截面内力,用矩阵FXX(NE,21)来存储。比较FX(NE,21)与FXX(NE,21),如果FXX对应的元素比FX小,则将FXX对应的元素赋值给FX对于引起支座最大剪力的均布活荷载引起的各截面剪力用FXX(NE,21)来存储,再与FX比较,如果FXX对应的元素比FX小,则将FXX对应的元素赋值给FX(FX即为各截面的最小剪力)。按行输出FX(NE,21)最小剪力结束三程序功能本程序可以解决任意跨数连续梁在集中力偶,集中力以及任意分布的均布荷载作用下连续梁的内力(包括剪力和弯矩)以及支座反力的求解问题;可以解决不同跨的截面惯性矩不同的问题,但要求连续梁的弹性模量相同以及任意一跨内惯性矩保持不变;也可以计算在单位荷载作用下指定截面的弯矩,剪力以及引起某支座的反力的数据并结合Excel求出对应的弯矩,剪力和支座反力影响线;还可以用于求解在均布荷载作用下各截面最大,最小的剪力与弯矩的数据并结合Excel求出弯矩和剪力包络图。四使用说明4.1建立文本文档用于存储初始数据,文本文档应按顺序输入连续梁以及荷载的具体情况,应分别按以下顺序输入:支承类型,节点荷载个数,非节点荷载个数,弹性模量;杆长,惯性矩;节点荷载大小,对应未知数序号(如没有节点荷载可不用输入);非结点荷载值,起点位置,终点位置,单元号,荷载类型号(如没有非节点荷载可不用输入);所求弯矩对应截面所在单元以及在单元中的位置;所求剪力对应截面所在单元以及在单元中的位置;所求支座反力的节点号;弯矩影响线对应截面所在单元以及对应截面在单元中的位置;剪力影响线对应截面所在单元以及对应截面在单元中的位置;支座反力影响线对应的节点号。具体数据如下:支承类型1:两端铰接支承类型2:左端固结,右端铰接支承类型3:左端铰接,右端固结支承类型4:两端固结对于集中荷载(如集中力,集中力偶),起点位置,终点位置输入相同的数据(即作用点的位置),对于均匀分布荷载对应起始点以及终止点的位置。4.2力的正负号规定:外荷载:竖向荷载以向上为正,向下为负;弯矩以逆时针为正,顺时针为负。杆端弯矩以顺时针为正,以逆时针为负。各截面的内力:弯矩以下侧受拉为正,上侧受拉为负;剪力使隔离体产生顺时针旋转为正,产生逆时针旋转为负。4.3由于数组定义数组大小的限制,本程序最多可以解决20跨连续梁的结构,对于一般情况都能满足要求。4.4单位的规定:力的单位:KN力偶单位:KN*m长度单位:m4.5荷载类型的规定:1.集中力2.集中力偶3.任意均布荷载五.源程序如下连续梁静力计算程序PROGRAMLXLDIMENSIONGC(20),GX(20),PJ(20,2),PF(10,5),DK(2,2),P(45)DIMENSIONF0(2),WY(2),F(2),ZK1(45),ZK2(45),GDM(20,2)character*12dat0,dat1write(*,*)'输入:初始数据文件名'read(*,10)dat0write(*,*)'输入:计算结果数据文件名'read(*,10)dat110format(A12)open(8,file=dat0,status='old')open(9,file=dat1,status='new')write(9,11)11format(8X,'*************连续梁内力计算*****************')READ(8,*)NE,NZ,NP,NF,E0WRITE(9,12)NE,NZ,NP,NF,E012FORMAT(1X,'单元数=',6x,I3,5x,'支承类型=',I3,5x,'节点荷载个数='I3,/,11x,'非节点荷载个数=',5x,I3,'弹性模量=',F12.4)NJ=NE+1CALLSRSJ(NE,NP,NF,GC,GX,PJ,PF,N,X,NN,XX,K,M,XL,MM,XLL,KK)CALLXCP(NJ,NP,NF,NE,P,PJ,PF,F0,GC)CALLJCZK(NE,NJ,E0,ZK1,ZK2,DK,GC,GX)CALLZCCL(NZ,NJ,ZK1,ZK2,P)CALLFCQJ(NJ,ZK1,ZK2,P)CALLSCWY(NJ,P)CALLGDL(NE,NJ,NF,E0,P,WY,F,F0,DK,PF,GC,GX,GDM)CALLSCGDL(GDM,NE)CALLJMM(NF,GC,GDM,N,X,PF,NE,WXZ,WXY)CALLSCWX(WXZ,WXY)CALLJMF(NF,GC,GDM,NN,XX,PF,NE,FXZ,FXY)CALLSCFX(FXZ,FXY)CALLZZFL(NF,GC,GDM,K,PF,NE)CALLMIL(GC,NE,NJ,E0,GX,M,XL,NZ)CALLFIL(GC,NE,NJ,E0,GX,MM,XLL,NZ)CALLZZFLIL(GC,NE,NJ,E0,GX,KK,NZ)CALLWBLT(GC,NE,NJ,E0,GX,NZ)CALLFBLT(GC,NE,NJ,E0,GX,NZ)ENDC************************************c输入初始数据SRSJ子程序C************************************SUBROUTINESRSJ(NE,NP,NF,GC,GX,PJ,PF,N,X,NN,XX,K,M,XL,MM,XLL,KK)DIMENSIONGC(NE),GX(NE),PJ(NP,2),PF(NF,5)CGC(NE):杆长GX(NE):惯性矩C结点荷载:PJ(NP,1)=荷载大小PJ(NP,2)=对应未知数序号C非结点荷载:PF(NE,1)=荷载大小PF(NE,2)=荷载起始点位置PF(NE,3)=荷载终点位置PF(NE,4)=单元号PF(NE,5)=荷载类型号C截面的弯矩,剪力:N=单元号X=所求截面在单元中的位置WRITE(9,11)11FORMAT(1X,'杆长,惯性矩GC(NE),GX(NE)')READ(8,*)(GC(I),GX(I),I=1,NE)write(9,12)(GC(I),GX(I),I=1,NE)12FORMAT(10X,2F8.3)IF(NP.GT.0)THENWRITE(9,22)22FORMAT(1X,'节点荷载大小,对应未知数序号PJ(I,1),PJ(I,2)')READ(8,*)(PJ(I,1),PJ(I,2),I=1,NP)write(9,23)(PJ(I,1),PJ(I,2),I=1,NP)23FORMAT(1X,2F8.3)ENDIFIF(NF.GT.0)THENWRITE(9,33)33FORMAT(1X,'非结点荷载值,起点位置,终点位置,单元号,荷载类型号')READ(8,*)((PF(I,J),J=1,5),I=1,NF)WRITE(9,34)((PF(I,J),J=1,5),I=1,NF)34FORMAT(1X,5F8.3)ENDIFwrite(9,35)35format(1x,'所求弯矩对应截面所在单元,在单元中的位置')read(8,*)N,Xwrite(9,36)N,X