通过程序实现梁双向受弯承载力计算.doc

上传人:ni****g 文档编号:560876545 上传时间:2022-10-23 格式:DOC 页数:11 大小:361.01KB
返回 下载 相关 举报
通过程序实现梁双向受弯承载力计算.doc_第1页
第1页 / 共11页
通过程序实现梁双向受弯承载力计算.doc_第2页
第2页 / 共11页
通过程序实现梁双向受弯承载力计算.doc_第3页
第3页 / 共11页
通过程序实现梁双向受弯承载力计算.doc_第4页
第4页 / 共11页
通过程序实现梁双向受弯承载力计算.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《通过程序实现梁双向受弯承载力计算.doc》由会员分享,可在线阅读,更多相关《通过程序实现梁双向受弯承载力计算.doc(11页珍藏版)》请在金锄头文库上搜索。

1、通过程序实现梁双向受弯承载力计算以下内容包括三个部分:程序说明,源程序,例题计算。一 本作业通过C+程序编写,首先是程序说明部分。1 整个程序的运算可以实现截面上下排(单排)任意配筋的计算,(双排布筋未考虑);2 根据混凝土受压区图形为三角形,四边形,五边形时,通过循环前进行判断,得出受压区具体的图形,从而进行计算;3 程序一开始定义了一全局常量NUM=100,可以控制数组的大小,它表示最多布置钢筋数为100,实际工程中基本不会超过这个值,可以通过对它修改,实现对所有数组长度的修改;4 一开始定义了在计算过程中需要的各种变量b, h, kx, ky, tx, ty, Tan, fc, BETA

2、, Cc分别表示截面的宽度b,高度h,混凝土受压区边长比例kx,ky,中和轴同y轴夹角大小Tan,混凝土圆柱体抗压强度fc,混凝土受压区高度修正系数BETA,混凝土受压区合力Cc;同时还定义了一系列数组用于储存钢筋的相关值:AsNUM, LNUM, SNUM, FsNUM, EsNUM, fyNUM, RNUM,分别表示钢筋的面积,应变,力,应力,弹模,屈服强度,直径;5 input()函数表示数据的录入,分别输入截面尺寸,材料常数等数据,在输入钢筋的特征常数时,考虑到经常一排钢筋采用相同的钢筋,所以设置了一个选项:是否需要单独输入每根钢筋的数据,是请输1,否请输2。在数据的录入过程中,长度均

3、要求按mm输入,其他应按MPa输入,这在输入数据前都通过输出相关语句进行了提醒;6 定义了一个float YLJS(float KX, float KY)函数,实现计算钢筋的应变,并返回所有钢筋的合力为函数值,方便了后面的计算;7 定义了一个int SOLVE()函数,可以判断受压区图形形状,并通过循环计算出实际的中和轴位置,(得到符合题目要求的kx,ky的值);8 在主函数中,首先调用input()函数,输入数据,通过一个for循环for(int jj=0;jjn+m;jj+)if(jj=n-1) Xjj=tx+(b-2*tx)*jj/(n-1),Yjj=ty;else Xjj=tx+(b-

4、2*tx)*(jj-n)/(m-1),Yjj=h-ty;计算出各钢筋距离截面右上角的位置后,将得到的值放入X和Y,其中n表示上排钢筋数,m表示下排钢筋数;9 定义了一个整数c,通过它判断受压区的面积,为1时为三角形,2时为四边形,3时为五边形;10 在调用SOLVE()函数时,会调用YLJS函数:float YLJS(float KX, float KY)float s=0; for(int j=0;j=fyj/Esj) if(Lj=0) Fsj=fyj; else Fsj=fyj*(-1); else Fsj=Lj*Esj; /压为正,拉为负 Asj=3.14*Rj*Rj/4;Sj=Fsj*

5、Asj;s=s+Sj;return s; 在函数的一开始s用来表示各个钢筋的合力,一开始赋初值0,通过循环叠加得到,钢筋的力通过应力乘以面积得到,应力则是根据应变得到,根据平截面假定,通过公式计算出,同时通过if语句,使得钢筋的应变不会超过它弹性的最大应变,最后函数返回值为s; 11. 调用SOLVE()函数,在SOLVE函数中首先定义了a1,a2,a3,a4四个变量,用来方便后面计算中中间数据的存贮,首先分别计算出当受压区面积恰好为最大三角形和最大四边形时候混凝土的压力Cc和钢筋的力S;因为kx大于ky和kx小于ky时候,计算不一样,所以通过if语句,分开讨论,此处a3对应最大三角形状态时钢

6、筋合力,a4和Cc分别对应最大四边形时钢筋和混凝土合力;接着计算俩种状态下的钢筋和混凝土的合力之和,分别储存到a3和a4中,当a3大于0时,说明混凝土受压区面积过大,则受压区图形必为三角形,当a4小于0时,则说明受压区面积过小,受压区图形必为五边形,当a3*a4小于0时,则受压区面积为四边形; 12. 当c=1时对应三角形,采用二分法进行循环,当最后的a3的绝对值小于 2MPa时,循环停止,得到对应的kx和ky;当c=2时为四边形的状态,根据kx和ky的大小,判断梯形的上下底边的方向,并通过对kx(或ky)递增的思想得到对应的值;当c=3时,思想同上;13. 返回c值为SOLVE的函数值,继续

7、主函数,定义了重心坐标和俩个方向的弯矩;通过c的不同,计算四种图形对应的重心坐标;14. 分别计算每根钢筋俩个方向的弯矩,通过叠加得到最终截面能承受的弯矩Mux和Muy,输出结果。二 函数源程序代码#include#includeconst int NUM=100; /定义一全局常量 用来控制数组的容量;float b,h,kx,ky,tx,ty,Tan,fc,BETA,Cc; /Tan表示中和轴和y轴夹角的正切值,BETA即为混凝土受压区高度修正系数,Cc为混凝土的合力float AsNUM,LNUM,SNUM,FsNUM,EsNUM,fyNUM,RNUM; /L表示钢筋的应变,S表示钢筋的

8、力,Fs表示钢筋应力,ES表示钢筋弹模,fy表示钢筋屈服强度,R表示钢筋直径int n,m; /分别表示上下排钢筋的根数float XNUM,YNUM; /表示钢筋的位置void input(); /数据输入函数声明;float YLJS(float,float); /计算钢筋的应力;int SOLVE();int main() input(); / 数据的录入;for(int jj=0;jjn+m;jj+) if(jj=ky)xx=(BETA-1/kx+BETA/(3*kx)*b/(2*BETA-1/kx);yy=ky*h*(BETA-1/kx)*(BETA-1/kx)+BETA*BETA/

9、kx-2*BETA*BETA/(3*kx*kx)/(2*BETA-1/kx);else if (c=2&kxky)xx=kx*b*(BETA-1/ky)*(BETA-1/ky)+BETA*BETA/ky-2*BETA*BETA/(3*ky*ky)/(2*BETA-1/ky);yy=(BETA-1/ky+BETA/(3*ky)*h/(2*BETA-1/ky); elsexx=b*(1-(1-ky*BETA+ky/kx)*(1-kx*BETA+kx/ky)*(2+kx*BETA-kx/ky)/3)/(2-(1-ky*BETA+ky/kx)*(1-kx*BETA)+kx/ky);yy=h*(1-(1

10、-ky*BETA+ky/kx)*(1-kx*BETA+kx/ky)*(2+ky*BETA-ky/kx)/3)/(2-(1-ky*BETA+ky/kx)*(1-kx*BETA)+kx/ky);float Mxs=0,Mxx=0,Mys=0,Myx=0; /Mxs,Mys,Mxx,Myx分别表示上部钢筋和下部钢筋x和y方向的和弯矩;for(int i=0;in;i+)Mxs=Mxs+Si*(h-Yi);Mys=Mys+Si*(b-Xi);for(int j=0;jm;j+) Mxx=Mxx+Sn+j*(h-Yn+j);Myx=Myx+Sn+j*(b-Xn+j);Mux=Cc*(h-yy)+Mxs+

11、Mxx; Muy=Cc*(b-xx)+Mys+Myx; coutxx=xxmm yy=yymmendl; coutMux=Mux/1e6KNm Muy=Muy/1e6KNmendl;return 0;void input() /数据输入函数;for(int i=0;iNUM;i+) /数组初始化;Asi=0;Li=0;Si=0;Fsi=0;Esi=0;fyi=0;Ri=0;Xi=Yi=0; cout请依次输入梁截面宽度b和高度h(单位mm)bh;coutb=bmm h=hmmendl;cout请依次输入钢筋x方向和y方向外排钢筋重心距离边缘厚度tx和ty(单位mm)txty;couttx=txmm ty=tymmendl;cout请输入截面x方向和y方向的弯矩比值TanTan;coutTan=Tanendl;cout请输入混凝土抗压强度设计值fc(单位MPa)fc;coutfc=fcMPaendl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号