基於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~

 

 

 

 

 

 

 

 

 

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