非线性分析作业(偏压构件非线性分析)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业2:对一压弯钢筋混凝土或预应力混凝土构件的截面进行全过程分析 答:钢筋混凝土压弯构件的全过程分析 1. 计算假定 1)平截面假定

梁正截面变形后仍保持平面,截面应变为直线分布,不考虑钢筋与混凝土之间的相对位移。从理论上来讲平截面假定仅适用于跨高比较大的连续均质弹性材料的构件。对由混凝土及钢筋组成的构件,由于材料的非均质性,以及混凝土开裂,特别是在纵筋屈服,受压区高度减小而临近破坏的阶段,在开裂截面上的平截面假定已不能适用。但是,考虑到构件破坏是产生在某一区段长度内的,而且试验结果表明,只要应变量测标距有一定长度,量测的截面平均应变值从加荷开始直到构件破坏,都能较好地符合平截面假定。

2)钢筋的应力-应变关系应采用单向加载下,反复加载下的不同情况而定。 3)混凝土应力-应变关系选用单轴作用下的混凝土本构关系模型,且在混凝土

的受压区带有下降段。 4)不考虑剪切变形的影响。 2.编程计算举例

1)计算构件及计算简图

钢筋混凝土梁截面配筋及计算简图如下所示,混凝土等级为C30,抗压强度为

20.1ck f M Pa =,抗拉强度为 2.01tk f M Pa =。钢筋等级为HRB335,屈服强度335yk f M P a =,轴力N=150kN 。

2)计算程序

程序采用C 语言编写。采用分级加应变,先迭代求受压区高度,再求对应的外弯矩、曲率,得到弯矩、曲率数据通过excel 处理得到弯矩—曲率关系图。

具体程序如下:

#include "stdio.h"

#include "conio.h"

#include

main()

{

FILE *fs1;

FILE *fs2;

FILE *fs3;

FILE *fs4;

int n=10000,n0,n1, n2, i,j ; (将截面分成10000份,n0为受压区条带数,,n1、 n2为钢筋跟数。)

float as1=35,as2=35,pa=3.14159265;

float h,b,d,d1,d2,t1,t2,t3,t4,x, y,s,s1,s2,s3,s4,s5,f1,As1,As2, c,M,M1,M2,r,sy,fy,l=3000,w,N=150000,s0=0.00025,st,c1,a,e,a1=0,e

1=0.0033,c2,t5,t6,t7,s6,s7;(a、e、a1、e1均为二分法迭代区间值。) printf("input h,b,fy,d1,d2,n1,n2:\n");

scanf("%f%f%f%f%f%d%d",&h,&b,&fy,&d1,&d2,&n1,&n2);

d=h/n;

x=10000; (初始受压区高度迭代值。)

sy=fy/200000;

As1=pa*n1*d1*d1/4;

As2=pa*n2*d2*d2/4;

fs1=fopen( "r.txt ", "w ");

fs2=fopen( "M.txt ", "w ");

fs3=fopen( "w.txt ", "w ");

fs4=fopen( "n0.txt ", "w ");

c1=10000;

j=1;

while(((c1*c1)>100000)&&(j<1000)) (由于受压区在程序中的离散性,为防止循环无法终止,控制循环次数j。)

{ c1=20.1*h*b*(1-(1-s0/0.002)*(1-s0/0.002))+200000*(As1+As2)*s0-N ;

s0=s0+0.000001;

if(c1>=0)

e1=s0;

else

a1=s0;

s0=a1+(e1-a1)/2; (用二分法迭代确定初始状态截面应变。)j=j+1;

}

printf("s0=%10.8f:\n",s0);

j=1;

c2=10000;

a1=0;

e1=0.0033;

st=0.0001;

while(((c2*c2)>100000)&&(j<1000))

{

t1=0;

for(i=1;i

{

s5=(h-i*d)*st/h;

t1=t1+20.1*d*b*(1-(1-s5/0.002)*(1-s5/0.002));

}

s6=(h-as2)*st/h;

t3=200000*s6*As2;

s7=as1*st/h;

t4=200000*s7*As1;

c2=t1+t3+t4-N;

if(c2>=0)

e1=st;

else

a1=st;

st=a1+(e1-a1)/2; j=j+1;

}

printf("st=%10.8f:\n",st);

s=s0+0.000001;

while(s<0.0033)

{

c=1000000;

j=1;

x=5000;

a=0;

e=20000;

while(((c*c)>50000)&&(j<5000)) (迭代受压区高度循环。){ n0=x*n/h;

if(n0>n)

n0=n;

else

n0=n0;

t1=0;

for(i=1;i

{

s1=(x-i*d)*s/x;

if(s1<0.002)

t1=t1+20.1*d*b*(1-(1-s1/0.002)*(1-s1/0.002));

else

相关文档
最新文档