有限元程序设计作业.doc
文本预览下载声明
有限元程序设计作业
2.1 平面刚架结构的程序设计
1、程序源代码
注明程序每一部分的功能
2、计算对象,单元及节点编码在图上标注,已知条件,需要求解的内容
计算题目可以自行选择
3、所选桁架算例如下:
确定节点1的水平、竖直位移,以及每一个杆的应力。
弹性模量E=200Gpa,截面面积为A=6×10-4m2。
4、总刚度矩阵以及程序
#include stdio.h
#include math.h
#define N 2
#define M 2
#define X 4
#define P 3
#define Q 2
/*N:结点数
M:自由度
X:总刚节点数
P:杆数量
Q:杆:2,梁:3*/
int MATNO1[P]={1,1,1};//定义
float PROPS[P][2]={{210,400},{210,400},{210,400}};
float IA1[P][N]={{1,2},{1,3},{1,4}};
float XY[X][2] ={{0,0},{3,0},{44,{0,3}};
float ekzong[M*X][M*X]={0};
float ek1[M*2][M*2]={0};
float ek2[M*2][M*2]={0};
float ek3[M*2][M*2]={0};
void main()
{
void Estif1(int mm,float ek1[4][4]);
void jiedangang();
void hecheng();
int m,n,p,q,i,j;
float ek1[4][4]={0};
jiedangang();
void Estif1(int mm,float ek1[4][4]);
void jiedangang();
void hecheng();
int m,n,p,q,i,j;
float ek1[4][4]={0};
printf(总刚:\n);
for(i=0;i4;i++)//合成总刚
for(j=0;j4;j++)//叠加第一次
{
ekzong[i][j]=ek1[i][j];
}
for(i=0;i6;i++)//叠加第二次
{
if(i=2i4)
continue;
for(j=0;j6;j++)
{
if(j=2j4)
continue;
if(i=2j=2)
ekzong[i][j]=ekzong[i][j]+ek2[i-2][j-2];
else if(i=2j2)
ekzong[i][j]=ekzong[i][j]+ek2[i-2][j];
else if(i2j=2)
ekzong[i][j]=ekzong[i][j]+ek2[i][j-2];
else
ekzong[i][j]=ekzong[i][j]+ek2[i][j];
}
}
for(i=0;i8;i++)//叠加第三次
{
if(i=2i6)
continue;
for(j=0;j8;j++)
{
if(j=2j6)
continue;
if(i=2j=2)
ekzong[i][j]=ekzong[i][j]+ek3[i-4][j-4];
else if(i=2j2)
ekzong[i][j]=ekzong[i][j]+ek3[i-4][j];
else if(i2j=2)
ekzong[i][j]=ekzong[i][j]+ek3[i][j-4];
else
ekzong[i][j]=ekzong[i][j]+ek3[i][j];
}
}
for(m=0;m8;m++)//输出总刚
{
for(n=0;n8;n++)
{
printf(%f\t,ekzong[m][n]);
}
printf(\n);
}
}
void Estif1(int mm,float ek1[4][4])
{
int i,j,lmat;
显示全部