ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:248.24KB ,
资源ID:8004462      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8004462.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通过程序实现梁双向受弯承载力计算.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

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

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

3、输2。在数据的录入过程中,长度均要求按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

4、;else Xjj=tx+(b-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.1

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

6、分开讨论,此处a3对应最大三角形状态时钢筋合力,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时,思想同上;1

7、3. 返回c值为SOLVE的函数值,继续主函数,定义了重心坐标和俩个方向的弯矩;通过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,RN

8、UM; /L表示钢筋的应变,S表示钢筋的力,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)

9、*(BETA-1/kx)+BETA*BETA/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); else xx=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

10、-kx*BETA)+kx/ky); yy=h*(1-(1-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=My

11、x+Sn+j*(b-Xn+j); Mux=Cc*(h-yy)+Mxs+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请依次输

12、入钢筋x方向和y方向外排钢筋重心距离边缘厚度tx和ty(单位mm)txty; couttx=txmm ty=tymmendl; cout请输入截面x方向和y方向的弯矩比值TanTan; coutTan=Tanendl; cout请输入混凝土抗压强度设计值fc(单位MPa)fc; coutfc=fcMPaendl; cout梁上下截面均只考虑单排配筋的情况endl; cout请输入上排钢筋的根数n; cout是否需要单独输入每根钢筋的数据,是请输1,否请输2Y; if(Y=1) for(int j=1;j=n;j+) cout请从右往左依次输入上排第j根钢筋的弹性模量Es(单位MPa)屈服强度f

13、y(单位MPa)和直径R(单位mm)Esj-1fyj-1Rj-1; cout上排第j根钢筋的Es=Esj-1MPa fy=fyj-1MPa R=Rj-1mmendl; else if(Y=2) cout请依次输入上排钢筋的弹性模量Es(单位MPa)屈服强度fy(单位MPa)和直径R(单位mm)Es0fy0R0; for(int j=1;j=n;j+) Esj-1=Es0; fyj-1=fy0; Rj-1=R0; cout上排钢筋的Es=Es0MPa fy=fy0MPa R=R0mmendl; else cout输入错误,请重新开始endl; cout请输入下排钢筋的根数m; cout是否需要单

14、独输入每根钢筋的数据,是请输1,否请输2Y; if(Y=1) for(int j=1;j=m;j+) cout请从右往左依次输入下排第j根钢筋的弹性模量Es(单位MPa)屈服强度fy(单位MPa)和直径R(单位mm)Esn+j-1fyn+j-1Rn+j-1; cout下排第j根钢筋的Es=Esn+j-1MPa fy=fyn+j-1MPa R=Rn+j-1mmendl; else if(Y=2) cout请依次输入下排钢筋的弹性模量Es(单位MPa)屈服强度fy(单位MPa)和直径R(单位mm)EsnfynRn; for(int j=1;j=m;j+) Esn+j-1=Esn; fyn+j-1=

15、fyn; Rn+j-1=Rn; cout下排钢筋的Es=EsnMPa fy=fynMPa R=Rnmmendl; else cout输入错误,请重新开始endl; if(fc=27.6)BETA=0.85; /1psi=0.0069MPa else BETA=0.85-0.05*(fc-27.6)/(6.9);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

16、; Sj=Fsj*Asj; s=s+Sj; return s; /返回值为所有钢筋的合力int SOLVE() float a1,a2,a3,a4; if(kx=ky) a3=YLJS(1/BETA,b/(BETA*Tan*h); a4=YLJS(Tan/BETA,b/(BETA*h); Cc=0.425*fc*ky*h*(2*BETA-1/kx)*b; else a3=YLJS(Tan/BETA,b/(h*BETA); a4=YLJS(1/BETA,b/(h*BETA*Tan); Cc=0.425*fc*BETA*kx*b*(2*BETA-1/ky)*h; a3=a3+0.425*fc*BE

17、TA*ky*h*BETA*kx*b; a4=a4+Cc; int c=a3*a4; if(c=0&a3=0) c=1; cout混凝土受压区面积为三边形=0&a40) c=3; cout混凝土受压区面积为五边形endl; else c=2; cout混凝土受压区面积为四边形endl; if(c=1) a1=0,a2=0.5; kx=0.5; do a3=0; kx=kx+a2*a1; a2=a2*0.5; coutkx=0) a1=-1; else a1=1; a3=a3/1000; while(fabs(a3)=2&kx=ky) kx=(Tan/BETA+1/BETA)*0.5; ky=kx

18、*b/(Tan*h); do kx=kx+0.001*a1; Cc=0.425*fc*ky*h*(2*BETA-1/kx)*b; a3=Cc+YLJS(kx,ky); if(a3=0) a1=-1; else a1=1; a3=a3/1000; while(fabs(a3)=2); else ky=(1/(BETA*Tan)+1/BETA)*0.5; kx=ky*Tan*h/b; a1=0; do ky=ky+0.001*a1; Cc=0.425*fc*BETA*kx*b*(2*BETA-1/ky)*h; a3=Cc+YLJS(kx,ky); if(a3=0) a1=-1; else a1=1

19、; a3=a3/1000; while(fabs(a3)=2); return 2; else a1=0,a2=5; kx=5; do a3=0; kx=kx+a2*a1; a2=a2*0.5; ky=kx*b/(Tan*h); Cc=b*h*(1-0.5*(1-kx*BETA+kx/ky)*(1-ky*BETA+ky/kx); a3=Cc+YLJS(kx,ky); if(a3=0) a1=-1; else a1=1; a3=a3/1000; while(fabs(a3)=2&kx1); return 3; 三 例题计算根据帕克的钢筋混凝土结构中的例子利用上面的程序进行计算;1.原题数据和计算结果2.运行程序没有错误,有18个警告,对本程序运行没用影响。3程序界面4输入数据5.最终的计算结果因为程序语言中增加了输出kx的语句,所以可以看到kx取值的变化,(从0.5到0.729492)最终当kx=0.729的时候,循环停止,这和书上的0.73是一致的;计算出的截面重心位置为xx=52.50mm,yy=52.50mm;Mux=Muy=48.63KNm与书上的结果均吻合,验证了程序的有效性。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2