基于C语言的材料力学模型计算实现(弯曲应力篇)

本章节的研究对象是集中载荷与均匀分布荷载模型,在C语言程序中输入数据,借助Microsoft Excel电子表格对数据进行可视化处理,作出模型的剪力图与弯矩图,让用户更直观地看到模型受力情况。

弯曲应力可视化程序算法流程图如下:

Part 1.剪力图与弯矩图的可视化

例题3.试利用荷载集度、剪力和弯矩间的微分关系作左图所示梁的剪力图和弯矩图。

解题思想与算法:

A.头文件与宏定义、全局变量声明部分:

#include<stdio.h>
#include<math.h>
#define N 5 
double M[N];//外力偶矩 
double F[N];//均匀集中力 
double f[N];//分布力 
double l[N-1];//各段长度 
double L=0.0;//总长 
double Fs;//总力 
double Ms;//总力偶矩 
double x=0.0;
int Number;
double F_Data;
double M_Data;

B.主函数与外部函数部分:

(1).按照提示输入对应数据.

按受力情况来分,左图的梁可分为AC与CB两段,在程序中,字母标记方式仍为:以O为原点,按照分段情况依次标记A、B、C等字母,如右图所示,OA对应AC段,AB对应CB段,基于=0与=0原理求解,由﹒2m-2kN﹒1.5m=0可得=1.5kN。按要求界面提示输入对应参数。

运行界面:

代码片段:

int main(){
	char Letter[N]={'O','A','B','C','D'};
	printf("请输入所分段数(<=4):");
	scanf("%d",&Number);
	printf("请按一定方向依次输入连续各段长度与分布力情况.格式:长度,分布力(用英文逗号隔开).\n");
	for(int i=0;i<Number;i++){
		printf("%c%c段:",Letter[i],Letter[i+1]);
		scanf("%lf,%lf",&l[i],&f[i]); 
	}
	printf("请输入各点受集中力与外力偶矩(以顺时针为正)情况.格式:集中力,外力偶矩(用英文逗号隔开).\n");
	for(int i=0;i<Number;i++){
		printf("%c点:",Letter[i]);
		scanf("%lf,%lf",&F[i],&M[i]);
	}

(2).程序计算剪应力:分布力(斜率)*距离+集中力(常数);计算弯矩:剪应力的积分+外力偶矩(常数)。将用户输入的每段距离分为20等份(也可以根据用户需要分为若干等份),创建名为“弯曲应力数据”的Excel表格,将座标x、剪应力、弯矩数据分别导入表格1~3列。程序界面不会输出任何计算结果,程序结束。

代码片段:

FILE *fp;
	fp=fopen("弯曲应力数据.xls","w");//建立“弯曲应力数据”Excel文件
	fprintf(fp,"x\tFs\tM\n");//在文件中输入对应参数名
	fprintf(fp,"0\t0\t0\n");//图像的闭合性,Fs从零开始 
	for(int i=0;i<Number;i++)Ms=M[i]+Ms;
	for(int i=0;i<Number;i++){
		if(i<1){Fs=F[0];}
		else{Fs=Fs+F[i];} 
		fprintf(fp,"%lf\t%lf\t%lf\n",x,Fs,Ms);
		for(int j=0;j<20;j++){//各段取20等份,计算对应x座标的数据
			x=x+l[i]/20;
			if(i<1){F_Data=f[i]*x+F[i];
		    M_Data=0.5*f[i]*x*x+F[i]*x+Ms;
			}
		    else{F_Data=f[i]*(x-L)+Fs;
		    M_Data=0.5*f[i]*(x-L)*(x-L)+Fs*(x-L)+Ms;
			}
		    fprintf(fp,"%lf\t%lf\t%lf\n",x,F_Data,M_Data);
		}
		if(i<1){Fs=f[i]*l[i]+F[i];
		Ms=0.5*f[i]*l[i]*l[i]+F[i]*l[i]+Ms;
		}
		else{Ms=0.5*f[i]*l[i]*l[i]+Fs*l[i]+Ms;
		Fs=f[i]*l[i]+Fs;
		}
		L=L+l[i];
		fprintf(fp,"%lf\t%lf\t%lf\n",L,Fs,Ms);
    }
    fprintf(fp,"%lf\t0\t%lf\n",L,Ms);
    fclose(fp);//保存并关闭文件
	return 0; 
}

(3).用Excel处理数据:打开Excel后,点击“插入”,点击图表并选择散点图,选择一种合适的图表样式,如果不想被过多数据点干扰可选择“带平滑线的散点图”。例如,可得到如下图所示的剪力图与弯矩图,蓝线与x轴包围的部分表示剪力图,橙线与x轴包围的部分表示弯矩图。另外,还可以通过显示座标数据等功能找出对应的极值点,进一步处理数据。

Part 2.弯曲应力可视化程序的应用

变式5.由工字形钢制成的简支梁受力如图所示。已知材料的许用弯曲正应力[σ]=170MPa,许用切应力=100MPa。试选择工字钢号码。

解题思路:对A点约束反力进行分析,基于=0与=0原理求解得:约束反力FA=113.12kN。按照界面提示输入参数,打开程序生成的Excel表格,插入图表,找到扭矩图曲线对应的最高点(极大值点),选择显示其对应纵轴座标,得到Mmax约为83.97kN﹒m。最后按照题目要求进行计算,得出结果。

运行界面:

Excel处理结果:

结论:

弯曲应力篇对简单力学模型的剪力图、弯矩图实现了可视化的效果,使用支持MATLAB、Python等语言的IDE也能更方便地实现这种效果。最后一篇blog会对扭转变形、拉压变形、弯曲应力几篇内容进行总结,欢迎继续阅读QAQ~

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章