弯矩曲率程序 - 范文中心

弯矩曲率程序

10/09

#include

#include

#include

float abstr(float); /*定义名为abstr 的函数,指定功能在代码最后*/ int sign(float); /*定义名为sign 的函数,指定功能在代码最后*/ void main(void)

{

float m[300],c[300],p[300],d[300]; /*定义一维单精度浮点型变量数组,数组长度为300,m:弯矩;c:曲率;p:外力;d:挠度*/

float mom[100],coc[100]; /*定义一维单精度浮点型变量数组,数组长度为300,mom:纵梁方向距梁端n*da处弯矩;coc:对应曲率*/

int i; /*定义为整型变量*/

for(i=0;i

c[i]=0.0;

p[i]=0.0;

d[i]=0.0;

}

for(i=0;i

{mom[i]=0.0;

coc[i]=0.0;

}

//*****Enter Data To Store In Input.dat*****

FILE *file1,*file2,*file3;

float fy,es,esh; /*定义钢筋屈服强度,钢筋弹性模量,钢筋的极限拉应变*/

float fc,fct; /*定义混凝土抗压强度,抗拉强度*/

float as1,as; /*定义抗压钢筋面积,抗拉钢筋面积*/

float l,a,b,h; /*定义梁跨长,作用点到左端距离,截面宽、高*/ float ao[2]; /*钢筋中心到梁顶距离*/

intsn,ln,st; /*定义截面划分条带数,a 长度上的分段数,钢筋型号*/

file1=fopen("input.dat","r"); /*从input.dat 中读取相应数据*/

fscanf(file1,"%f%f%f",&fy,&es,&esh);

fscanf(file1,"%f%f",&fc,&fct);

fscanf(file1,"%f%f",&as1,&as);

fscanf(file1,"%f%f%f%f",&l,&a,&h,&b);

fscanf(file1,"%f%f",&ao[0],&ao[1]);

fscanf(file1,"%d%d%d",&sn,&ln,&st);

//*****End of Inputing Data*****

float dc=0.0000002,de=0.00005,ee,em; /*定义曲率增量,应变增量,截面中间处应变,应变

的中间变量*/

float sf1=0.0,sf2=0.0,dsf; /*定义截面合力sf1,sf2,截面合力修正值dsf*/

float ffc=0.0,fs=0.0; /*定义混凝土合力,钢筋合力*/

float mi=0.0,mic,mis; /*定义某一条带的弯矩,混凝土截面内的合弯矩,截面钢筋合弯矩*/

float z,e,s,r; /*定义条带到截面中间的距离,应变,应力,反力*/ float eo,eu,cc=0.0; /*定义混凝土达到极限强度时的应变,破坏时的应变,cc 为计算挠度时曲率变量,只对cc 赋初值0.0*/

float lp,hh,hn,aas,etop; /*塑性铰长度的一半,hh 未定义,分成sn 个条带后每条带的高度,钢筋面积的中间变量,梁顶混凝土应变*/

float esy,da; /*定义钢筋的屈服应变,梁纵向弹性区段分段ln 后每段长度*/

float dd,dsn,dl; /*均为挠度中间变量*/

float mm,mo,co,dp,tan; /*弯矩中间变量,外力作用点处弯矩,对应曲率,

外力变化量,屈服点处弯矩与曲率的比值*/

intj,k,n,ii,jj;

int jmax1=500,jmax2=0,jmax3=0; /*定义jmax1,jmax2,jmax3三个整型变量并赋初值*/

esy=fy/es; /*计算钢筋的屈服应变*/

hn=h/sn; /*计算h 高度的截面所分成的条带数*/ eu=-0.004; /*定义混凝土破坏时的应变为-0.004*/

e=-0.002; /*给条带应变赋初值*/

ee=-0.0001; /*给截面中间处应变赋初值*/

j=0;

ii=0;

do /*do-while循环,用于将曲率与算得的截面和弯矩一一对应*/

{j++;

c[j]=c[j-1]+dc;

do /*do-while循环,计算某一曲率下的混凝土与钢

筋的合弯矩,并保证钢筋混凝土截面内合力为0*/

{ii++;

mic=0.0;

mis=0.0; /*给混凝土和钢筋的弯矩赋初值为0*/

//*****Calculate The Force Of Concrete*****

ffc=0.0; /*给混凝土合力赋初值为0*/

for(i=0;i

{z=h/2-i*hn-hn/2; /*求每一条带到截面中间的距离*/

e=ee+z*c[j]; /*以截面中间处应变为基准计算每一条带中心处应变,原代码左端为"ee" 有误*/

if(e>0.00015) s=0.0; /*if语句,用来判断每一条带中心处应变所在范围,从而选择对应公式计算该处应力*/

else if(e>0.0001) s=fct;

else if(e>0.0) s=(2*fct*e)/(e+0.0001);

else if(e>eo) s=-0.85*fc*(2*e/eo-(e/eo)*(e/eo));

else if(e>eu) s=-0.85*fc*(1-100*(eo-e));

else s=0.0;

ffc=ffc+s*b*(h/sn); /*将每一条带中心的混凝土受力叠加求合力*/

mic=mic+s*b*z*(h/sn); /*将每一条带中心的混凝土弯矩叠加求合弯矩*/ }

//*****Calculate The Force Of Steel*****

fs=0.0; /*钢筋合力初值为0.0*/

for(k=0;k

{

z=ao[k]-h/2; /*钢筋距上边缘的距离*/

e=ee+z*c[j]; /*截面曲率为c[j]时钢筋的应变,其中ee 为截面中心的应变,为

保证截面合力为0,会做调整*/

if(abstr(e)

else if(abstr(e)

变的符号确定应力符号的函数*/

else s=sign(e)*(fy+0.01*es*(abstr(e)-esh)); /*钢筋硬化后钢筋应力的计算*/ if(z

else aas=as; /*把受拉钢筋的截面面积赋给变量aas*/

if(abstr(e)>esy) dc=0.0000003; /*钢筋屈服后的曲率增量*/

fs=fs+s*aas; /*截面钢筋合力*/

mis=mis+s*aas*z; /*截面钢筋合弯矩*/

}

if(ii==1) /*从此处到计算mm 之前,是在计算判断赋给截面中心应变的增量是多少时,截面的合力接近0*/

{

sf1=ffc+fs; /*截面合力*/

ee=ee+de; /*第一次计算截面内力后给ee 一个增量,然后再次计算得到截面内力,

用两次的计算结果计算ee 的合理增量*/

em=de; /*把初定的变量de 赋给em ,参与后边的计算*/

}

else

{

sf2=ffc+fs; /*用ee+de计算的截面合力*/

dsf=sf2-sf1; /*两次计算的截面合力差*/

em=-sf2*em/dsf; /*计算合理的ee 增量,也就是使截面合力趋近0时的ee 增量*/ if(em==0.0) em=de; /*如果计算的增量为0, 则第一次赋给ee 的增量是合理的*/ ee=ee+em; /*计算合理的截面中心处的应变*/

sf1=sf2; /*将最后一次计算的合力sf2赋给上一次计算的合力sf1*/ }

mm=mic+mis; /*截面合弯矩*/

}while(abstr(sf2)>=0.1); /*当截面合力的误差大于0.1时重新再次计算截面的合力*/ if(e>esy)

{

if(j

}

etop=ee-(h/2-hn/2)*c[j]; /*顶部条带中心的最大应变*/

m[j]=mm; /*把合弯矩赋给数组m[j]*/

if(m[j]>=mi) /*如果弯矩一直增大,则把弯矩赋给m[i],用于下一次比较,同

时将j 赋给jmax2*/

{

mi=m[j];

jmax2=j;

}

}

while(etop>=1.2*eu); /*顶部应变的代数值不小于1.2*eu时,增加曲率,进行下一次计算*/

jmax3=j; /*曲率增加的总次数j 赋给jmax3*/

//*****Put Out The Answer of Moment And Curvature*****//

file2=fopen("out1.dat","w");

for(j=0;j

{

fprintf(file2,"%18.8g,%18.8g\n",c[j],m[j]);

}

fclose(file2);

if(st==1) lp=0.35*h; /*钢筋类型为1时,塑性铰一半的长度*/

if(st==2) lp=0.5*h; /*钢筋类型为2时,塑性铰一半的长度*/

tan=m[jmax1]/c[jmax1]; /*弯矩曲率图斜率*/

da=a/ln; /*长度为a 的梁分成ln 段后每段的长度*/

dc=0.00000022; /*计算荷载-挠度关系时的曲率增量*/

j=0;

do

{

cc=cc+dc;

j=j+1;

if(cc

{

i=-1;

do /*当满足条件i

{

i++;

if((c[i]c[i+1])) /*判断截面计算曲率在已经求出的曲率列表中的位置*/ mm=m[i]+((cc-c[i])*(m[i+1]-m[i]))/(c[i+1]-c[i]); /*假设弯矩曲率在相邻值间是线性变化的,

求该曲率对应的弯矩*/

}

while(i

段的关系*/

r=mm/a; /*计算支座反力*/

p[j]=(mm*l)/(a*(l-a)); /*根据合弯矩计算作用的集中荷载*/

for(n=1;n

{

mom[n]=r*n*da; /*当计算长度为n*da时,计算截面的弯矩*/ jj=-1;

do /*当计算长度为n*da时,计算截面的曲率*/ {

jj++;

if((m[jj]

}

while(jj

d[j]=d[j]+dd; /*挠度叠加后写到挠度数组中*/

}

}

else if(cc

{

dsn=0.0; /*定义dsn 初始等于0*/

i=-1;

do /*当满足条件i

if((c[i]

曲率对应的弯矩*/

}

while(i

于上升阶段*/

r=mm/a; /*计算支座反力*/

p[j]=(mm*l)/(a*(l-a)); /*根据合弯矩计算作用的集中荷载*/

da=(a-lp)/ln; /*减去塑性铰的一半以后a 长度上的每一小段的长度*/ for(n=1;n

{mom[n]=r*n*da; /*当计算长度为n*da时,计算截面的弯矩*/

for(jj=0;jj

{if((m[jj]

coc[n]=c[jj]+((mom[n]-m[jj])*(c[jj+1]-c[jj]))/(m[jj+1]-m[jj]); /*计算截面的曲率*/ }

dd=coc[n]*da*(n*da-da/2); /*共轭梁法计算计算截面的挠度*/

dsn=dsn+dd; /*挠度叠加后得到最后值即为除塑性铰区域的挠度*/ }

mo=r*a; /*截面弯矩*/

for(jj=jmax1;jj

{if((m[jj]

}

dl=co*lp*(a-lp/2); /*塑性铰区域的挠度,原代码为aa 有误*/

d[j]=dsn+dl; /*塑性铰区域和非塑性铰区域挠度的叠加*/

}

else

{

dsn=0.0; /*定义初始值为0*/

i=-1;

do /*计算到了下降段以后的弯矩挠度*/

{i++;

if((c[i]

while(i

r=mm/a;

p[j]=(mm*l)/(a*(1-a));

dp=p[j-1]-p[j];

da=(a-lp)/ln;

for(n=1;n

{mom[n]=dp*n*da; /*次阶段跟上阶段意思一样*/ coc[n]=mom[n]/tan;

dd=coc[n]*da*(n*da-da/2);

dsn=dsn+dd;

}

dl=dc*lp*(a-lp/2);

d[j]=d[j-1]-dsn+dl; /*计算此阶段的挠度总值*/

}

}while(cc

file3=fopen("out2.dat","w");/*以写的方式打开out2.dat*/

for(j=0;j

{fprintf(file3,"%15.4f,%15.4f\n",d[j],p[j]); /*打印d[j],p[j]*/

}

}

int sign(float num)

{

int q;

if(num

if(num>=0.0)q=1; /*定义sign*/ return q;

}

floatabstr(float x)

{

if(x>=0)

x=x;

else x=-x;

return x;

} /*定义abstr*/


相关内容

  • 基于性能的抗震设计
    土木工程研究进展与施工方法课程报告八 讲座题目: 基于性能的抗震设计理论及方法 报告人: 李建中教授 基于性能的抗震设计理论及方法 在12月15号的土木工程研究进展课上,来自同济大学桥梁系的李建中教授为我们介绍了基于性能的桥梁抗震设计理论最 ...
  • 混凝土结构原理知识点
    1,混凝土结构包括素混凝土结构,钢筋混凝土结构,预应力混凝土结构,和其他形式的加劲混凝土结构. 2/混凝土和钢筋共同工作的条件是: (1)钢筋与混凝土之间有良好的粘结力,使两者结合为整体. (2)钢筋与混凝土两者之间线胀系数几乎相同, 3. ...
  • 锅炉压力容器的制造毕业设计
    辽河石油职业技术学院高职学生毕业论文 摘 要 一直以来锅炉和压力容器的焊接就面临着复杂而艰巨的技术难题,压力容器 又是涉及多行业.多学科的综合性产品,其建造技术涉及到冶金.机械加工.腐蚀与防腐.无损检测及安全防护等众多行业. 随着冶金.机械 ...
  • 混凝土结构基本原理课程教学大纲
    <混凝土结构基本原理>课程教学大纲 一. 课程名称:混凝土结构基本原理 二. 学分:4 三. 先修课程:<理论力学>.<材料力学>.<结构力学>.<建筑材料>.<房屋建筑学& ...
  • 新型活塞异形销孔加工方法
    第37卷增刊 2003年11月 上海交通大学学报 JO U RN A L O F SHAN G HAI JI AO T ON G U N IV ERSI T Y Vol. 37Su p. Nov. 2003 文章编号:1006-2467(2 ...
  • 悬臂施工预拱度的研究
    第9卷第13期2009年7月1671・1819(2009)13-3909-04 科学技术与工程 ScienceTechnologyandEngineering V01.9No.13 July2009 @2009Sci.Tech.En剐tg. ...
  • 应变式称重传感器设计
    应变式称重传感器设计 摘 要 粘贴式电阻应变计广泛应用于当今高精度测力与称重传感器的制造中.本篇文章为帮助称重传感器设计者计算出称重传感器尺寸大小,从而为获得唯一需要的输出作了充分的准备.设计者既可以运用有限元分析法经计算机程序(如果可能) ...
  • 土木工程力学(本)综合习题
    土木工程力学(本)综合练习一 一. 判断题 1 图示为刚架的虚设力状态,按此力状态及位移计算公式可求出A处的转角.( × ) 二. 单项选择题 1.简支梁某截面K弯矩影响纵坐标yK的物理意义是( C ). A MK影响线 (× ) A 单位 ...
  • 11无损探伤检测程序
    旅大10-1油田综合调整工程项目老平台适应性改造工程服务 无损探伤程序 目 录 1 范围----------------------------------------2 2 适用规范和标准------------------------- ...
  • 荷载试验现场实施
    3.1.1静载试验测点的布设 1.应变测点的布设 桥梁应变测试断面见附图1,即S1-S2,共两个断面,即距支座中心约6.65m 处(约L/4处).断面跨中(L/2)断面,应变测点布置在各空心板底面,详见附图一.主要荷载试验工况分别测试中载工 ...