- 0
- 0
- 约3.03千字
- 约 16页
- 2019-06-10 发布于广东
- 举报
程序需要的主要数据 Struct FE_COORDS { // 定义结构体类型 int n; //结点总数 double *x; // x[2n];结点坐标,x[n],y[n]. }; 注:前n个为结点的x坐标,后n个为结点的y坐标。 struct FE_COORDS F_X ; // 定义结构体变量F_X ,来存放结点信息。设为全局变量。 程序需要的主要数据 struct FE_TOPOLOGY { // 定义类型 long n; // 单元总数 long *t; // t[4n] 单元的节点编码 }; struct FE_TOPOLOGY F_T; /* 定义结构体变量F_T ,来存放单元信息。 可设为 全局变量。 如第5单元的结点编号为 F_T.t[16] — F_T.t[19]. */ struct FE_PKMATRIX { //定义结构体类型 int n; // 自由度总数,即总刚方程的阶数 int *i; // i[n];总刚矩阵的索引数组,即 主元素在k中的位置 double *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_STRESS { // F_S long n; // 输出的应力(应变)点总数 double *x; // x[2n]; 相应应力点的坐标 double *s; // s[3n] ,应力(应变)值 }; struct FE_STRESS F_S; /* 记录的单元应力(应变)信息,包括每个应力点的位置坐标和三个应力(应变)值。 */ double MAT[5]; // 定义材料信息 double E ; // 材料弹性模量 double v; // 泊松比 double t; // 厚度 double px; // x方向的容重 double py; // y方向的容重 程序模块设计 short Readdata_4(char *file) 读取平面四结点等参元分析需要的所有数据,如结点信息、单元信息、截面信息、边界支座信息、荷载信息、材料信息等; 在此函数中定义全局变量F_X,F_T,F_U,F_P,MAT,并从文件中读取相应的数据。 函数所需参数:*file为数据文件名。 成功读取数据,函数的返回值为0,数据文件不存在,返回-1;内存出错,返回1。 short Kindex_4( ) 建立采用4结点等参元计算平面问题的变带宽一维压缩存储的总刚矩阵的索引数组F_K.i[],即 总刚矩阵的主元素k[i][i]被压缩存储后,在F_K.k[]中的位置。 定义存储总刚信息的结构体变量F_K,并计算出总刚矩阵F_K.k[]元素的个数,并为之分配存储单元; 函数需要的数据:结点信息F_X,单元信息F_T,均为全局变量; 返回总刚矩阵的最大半带宽值,如果内存出错,则返回0。 void Ekm2d_4( ) 计算变带宽一维压缩存储的总刚度矩阵F_K.k[]; 所需数据:结点信息F_X, 单元信息F_T,截面信息F_AI, 材料信息MAT,总刚索引信息F_K,均为全局变量; 需调用的函数: void Evdt2d (double *d),计算弹性矩阵 d[5] ; void Ek2002(double * xy,double *d, double *ek),计算4结点等参元的单元刚
原创力文档

文档评论(0)