有限元单元刚度矩阵

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

实现功能:输入欲求的单元号,得到该单元的面积和该单元刚度矩阵;输入完所有的单元号,得到所有的单元刚度矩阵后,直接得到半带宽存储的数组。(所有的单元刚度矩阵和半带宽数组分别存在所有单元的刚度矩阵.txt和SK矩阵.txt)第1单元面积为:0.5000

弹性模量、泊松比和厚度分别为:100.0000 0.3000 0.1000

单元1单元的应力矩阵

-109.8901 -32.9670 109.8901 0.0000 0.0000 32.9670

-32.9670 -109.8901 32.9670 0.0000 0.0000 109.8901

-38.4615 -38.4615 0.0000 38.4615 38.4615 0.0000

第1单元的单元刚度阵为

7.4176 3.5714 -5.4945 -1.9231 -1.9231 -1.6484

3.5714 7.4176 -1.6484 -1.9231 -1.9231 -5.4945

-5.4945 -1.6484 5.4945 0.0000 0.0000 1.6484

-1.9231 -1.9231 0.0000 1.9231 1.9231 0.0000

-1.9231 -1.9231 0.0000 1.9231 1.9231 0.0000

-1.6484 -5.4945 1.6484 0.0000 0.0000 5.4945

半带宽存储的数组

7.4176 3.5714 -1.9231 -1.6484 -5.4945 -1.9231

7.4176 -1.9231 -5.4945 -1.6484 -1.9231 0.0000

9.8901 -2.3810 -4.9451 4.7619 -3.0220 -0.4579

9.8901 4.7619 -4.9451 -0.7326 0.5495 0.0000

20.8791 -2.3810 0.5495 -2.3810 -10.989 1.6484

13.7363 -2.3810 -3.0220 1.9231 -3.8462 0.0000

3.4341 1.1905 -0.9615 1.9231 0.0000 0.0000

5.2198 1.6484 -2.7473 0.0000 0.0000 0.0000

11.9506 -3.5714 0.0000 0.0000 0.0000 0.0000

6.5934 0.0000 0.0000 0.0000 0.0000 0.0000

#include

#define jds 5

#define d 2

main()

{int nj,ne,i,j,k,a,n,*lnd;

int JDS[3];xj,yj,xo,yo;

float B[3][6],b1[3][6];D[3][3],E,u,t;S[3][6],s1[6][3];K[6][6];Kk[2*jds][2*jds]={{0}};

float SK[2*jds][(d+1)*2]={{0}};

float x1,x2,x3,y1,y2,y3,ae,*xy;

FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp7;

fp1=fopen("节点坐标.txt","r"); fp2=fopen("单元节点编号.txt","r");fp3=fopen("材料参数.txt","r");

fp4=fopen("输出结果.txt","a"); fp5=fopen("节点总数和单元总数.txt","r");fp7=fopen("SK矩阵.txt","w"); fscanf(fp5,"%d",&nj);

fscanf(fp5,"%d",&ne);

xy=(float*)malloc(nj*2*sizeof(float));

lnd=(int*)malloc(ne*3*sizeof(int));

for(i=0;i

for(j=0;j<2;j++)

fscanf(fp1,"%f",&xy[i*2+j]);

for (i=0;i

for (j=0;j<3;j++)

fscanf(fp2,"%d",&lnd[i*3+j]);

for(n=0;n

printf("请输入所求的单元号:");

scanf("%d",&a);

i=lnd[(a-1)*3+0],j=lnd[(a-1)*3+1],k=lnd[(a-1)*3+2];

JDS[0]=i;JDS[1]=j;JDS[2]=k;

x1=xy[(i-1)*2+0];y1=xy[(i-1)*2+1];x2=xy[(j-1)*2+0];y2=xy[(j-1)*2+1];x3=xy[(k-1)*2+0];y3=xy[(k-1)*2+1]; ae=0.5*((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1));

printf("第%d单元的面积为:%7.4f\n",a,ae);

fprintf(fp4,"\n第%d单元面积为:%7.4f ",a,ae);

b1[0][0]=y2-y3,b1[0][2]=y3-y1;b1[0][4]=y1-y2,b1[1][1]=x3-x2;b1[1][3]=x1-x3,b1[1][5]=x2-x1;

b1[2][0]=b1[1][1],b1[2][1]=b1[0][0];b1[2][2]=b1[1][3],b1[2][3]=b1[0][2];

b1[2][4]=b1[1][5],b1[2][5]=b1[0][4];b1[1][0]=0,b1[0][1]=0, b1[1][2]=0,b1[0][3]=0,b1[1][4]=0,b1[0][5]=0; for(i=0;i<3;i++)

for(j=0;j<6;j++)

B[i][j]=(0.5/ae)*b1[i][j];

fscanf(fp3,"%f %f %f",&E,&u,&t);

printf("弹性模量、泊松比和厚度分别为:%7.4f %7.4f %7.4f\n",E,u,t);

fprintf(fp4,"\n弹性模量、泊松比和厚度分别为:%7.4f %7.4f %7.4f",E,u,t);

D[0][0]=E/(1-u*u), D[0][1]=E*u/(1-u*u), D[0][2]=0;

D[1][0]=E*u/(1-u*u),D[1][1]=E/(1-u*u), D[1][2]=0;

D[2][0]=0, D[2][1]=0, D[2][2]=E*(1-u)/(2*(1-u*u));

for(i=0;i<3;i++)

for(j=0;j<6;j++)

for(k=0,S[i][j]=0;k<3;k++)

S[i][j]=S[i][j]+D[i][k]*B[k][j];

printf("第%d单元的应力矩阵为:\n",a);

fprintf(fp4,"\n单元%d单元的应力矩阵\n",a);

for(i=0;i<3;i++)

{for(j=0;j<6;j++)

{printf("%7.4f ",S[i][j]);

fprintf(fp4,"%7.4f ",S[i][j]);}

fprintf(fp4,"\n");printf("\n");}

for(i=0;i<3;i++)

for(j=0;j<6;j++)

s1[j][i]=S[i][j];

for(i=0;i<6;i++)

{for(j=0;j<6;j++)

for(k=0, K[i][j]=0;k<3;k++)

相关文档
最新文档