- 0
- 0
- 约3.13千字
- 约 15页
- 2019-06-10 发布于广东
- 举报
程序需要的主要数据 struct ND_COORD { // 定义结构体类型 int n; //结点总数 float *x; // 结点坐标 }; // *x相当于 x[2n]; x[n],y[n].前n个为结点的x坐标,后n个为结点的y坐标。 struct ND_COORD F_X; // 定义结构体变量F_X ,来存放结点信息。可设为全局变量。 如*(F_X.x+i), *(F_X.x+n+i),代表结点i的x,y坐标。 程序需要的主要数据 struct FE_INFO { // 定义结构体类型 int n; // 单元总数 int *t; // t[2n]] 单元的节点编码 int *b; // b[n]] 单元的截面编码 }; struct FE_INFO F_T; /* 定义结构体变量F_T ,来存放单元信息。可设为全局变量。 如第5单元的结点分别为F_T.t[8],F_T.t[9],截面编号为F_T.b[4] */ struct FE_PKMATRIX { //定义结构体类型 int n; // 自由度总数,即总刚方程的阶数 int *i; // i[n];总刚矩阵的索引数组,即 主元素在k中的位置 float *k; // k[i[n-1]+1] 变半带宽一维压缩存储的总刚矩阵 }; struct FE_PKMATRIX F_K; /* 定义结构体变量F_X ,来存放总刚矩阵的信息。 如*(F_K.i+i),代表下标为i行主元素在压缩存储总刚F_K.k[]中的位置, nd=*(F_X.i+i+1)- *(F_K.i+i)代表下标为i行非0元素的个数。 struct FE_BOUNDARY { //定义结构体类型 int n; // 约束总数或结点荷载数 int *node; // 约束对应的结点编号 int *attr; // 约束的方向值; 1-x方向; // 2--y方向,3—转动方向 double *value; //沉降值或 荷载值 }; struct FE_BOUNDARY F_U,F_P; /* 定义结构体变量F_U,F_P ,分别来存放边界约束和结点荷载的信息。 */ struct FE_LOAD { // 定义结构体类型 int n; // 非结点荷载总数 int *e; // e[n],荷载作用的单元编号 int *attr; //attr[n], 荷载类型编号 double *f; //f[3n],常数c,a,G。 }; struct FE_LOAD F_F; /* 定义结构体变量F_F ,来存放单元非结点荷载的信息。 */ struct FE_AREA_INTER { // 定义结构体类型 int n; // 截面類型數 double *A; // 截面面积 double *I; // 截面惯性矩。 }; struct FE_AREA_INTER F_AI; /* 定义结构体变量F_AI ,来存放各类截面面积和惯性矩。 */ 程序模块设计 int Readdata_2(char *file) 读取平面刚架有限元分析需要的所有数据,如结点信息、单元信息、截面信息、边界支座信息、荷载信息、材料信息等; 在此函数中定义全局变量F_X,F_T,F_U,F_P,F_AI,F_F,E0,并从文件中读取相应的数据。 函数所需参数:*file为数据文件名。 成功读取数据,函数的返回值为0,数据文件不存在,返回-1;内存出错,返回1。 int Kindex_2( ) 建立采用2结点梁单元计算平面刚架的变带宽一维压缩存储的总刚矩阵的索引数组F_K.i[],即 总刚矩阵的主元素k[i][i]被压缩存储后,在F_K.k[]中的位置。 记录总刚信息的结构体变量F_K在此定义,并计算出总刚矩阵F_K.k[]元素的个数,并为之分配存储单元; 函数需要的数据:结点信息F_X,单元信息F_T,均为全局变量; 返回总刚矩阵的最大半带宽值,如果内存出错,则返回0。 void Ekbeam_2( ) 计算平面刚架变带宽一维压缩存储的总刚度矩阵F_K.k[]; 所需数据:结点信息F_X, 单元信息F_T,截面信息F_AI, 材料信息E0,总刚信息F_K,均为全局变量; 需调用的函数: void E_Proporty(int nb, float *
原创力文档

文档评论(0)