资源描述:
《c语言程序设计刚架程序流程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序需要的主要数据structND_COORD{//定义结构体类型intn;//结点总数float*x;//结点坐标};//*x相当于x[2n];x[n],y[n].前n个为结点的x坐标,后n个为结点的y坐标。structND_COORDF_X;//定义结构体变量F_X,来存放结点信息。可设为全局变量。如*(F_X.x+i),*(F_X.x+n+i),代表结点i的x,y坐标。程序需要的主要数据structFE_INFO{//定义结构体类型intn;//单元总数int*t;//t[2n]]单元的节点编码int*b;//b[n]]单元的截面编码};structFE_INFOF_T;/*定义结构
2、体变量F_T,来存放单元信息。可设为全局变量。如第5单元的结点分别为F_T.t[8],F_T.t[9],截面编号为F_T.b[4]*/structFE_PKMATRIX{//定义结构体类型intn;//自由度总数,即总刚方程的阶数int*i;//i[n];总刚矩阵的索引数组,即主元素在k中的位置float*k;//k[i[n-1]+1]变半带宽一维压缩存储的总刚矩阵};structFE_PKMATRIXF_K;/*定义结构体变量F_X,来存放总刚矩阵的信息。如*(F_K.i+i),代表下标为i行主元素在压缩存储总刚F_K.k[]中的位置,nd=*(F_X.i+i+1)-*(F_K.i+i)
3、代表下标为i行非0元素的个数。structFE_BOUNDARY{//定义结构体类型intn;//约束总数或结点荷载数int*node;//约束对应的结点编号int*attr;//约束的方向值;1-x方向;//2--y方向,3—转动方向double*value;//沉降值或荷载值};structFE_BOUNDARYF_U,F_P;/*定义结构体变量F_U,F_P,分别来存放边界约束和结点荷载的信息。*/structFE_LOAD{//定义结构体类型intn;//非结点荷载总数int*e;//e[n],荷载作用的单元编号int*attr;//attr[n],荷载类型编号double*f;
4、//f[3n],常数c,a,G。};structFE_LOADF_F;/*定义结构体变量F_F,来存放单元非结点荷载的信息。*/structFE_AREA_INTER{//定义结构体类型intn;//截面類型數double*A;//截面面积double*I;//截面惯性矩。};structFE_AREA_INTERF_AI;/*定义结构体变量F_AI,来存放各类截面面积和惯性矩。*/平面刚架静力计算程序流程图平面刚架静力计算程序流程图程序模块设计intReaddata_2(char*file)读取平面刚架有限元分析需要的所有数据,如结点信息、单元信息、截面信息、边界支座信息、荷载信息、材料
5、信息等;在此函数中定义全局变量F_X,F_T,F_U,F_P,F_AI,F_F,E0,并从文件中读取相应的数据。函数所需参数:*file为数据文件名。成功读取数据,函数的返回值为0,数据文件不存在,返回-1;内存出错,返回1。intKindex_2()建立采用2结点梁单元计算平面刚架的变带宽一维压缩存储的总刚矩阵的索引数组F_K.i[],即总刚矩阵的主元素k[i][i]被压缩存储后,在F_K.k[]中的位置。记录总刚信息的结构体变量F_K在此定义,并计算出总刚矩阵F_K.k[]元素的个数,并为之分配存储单元;函数需要的数据:结点信息F_X,单元信息F_T,均为全局变量;返回总刚矩阵的最大半
6、带宽值,如果内存出错,则返回0。voidEkbeam_2()计算平面刚架变带宽一维压缩存储的总刚度矩阵F_K.k[];所需数据:结点信息F_X,单元信息F_T,截面信息F_AI,材料信息E0,总刚信息F_K,均为全局变量;需调用的函数:voidE_Proporty(intnb,float*x,double*d),计算截面相应的参数d[4],即杆长l,抗拉刚度EA/l、抗弯刚度EI/l、杆与整体坐标的夹角;voidEk1002(double*d,double*ek),计算2结点梁单元的单元坐标表示的单元刚度矩阵ek[6*6];voidCoorchang(doublearf,double*e
7、k),把单元局部坐标的单元刚度ek[6][6]矩阵转换到整体坐标下;voidP_load_2(float*p)计算刚架总的荷载向量*p;所需数据:结点信息F_X,单元信息F_T,荷载信息F_P,F_F,均为全局变量;需调用的函数:voidP_Unode(intid,double*lap,double*d,double*ep),计算单元非结点荷载引起的等效结点荷载;voidE_Proporty(intnb,float*x,