资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
程序需要的主要数据struct ND_COORD / 定义结构体类型int n; /结点总数float *x; / 结点坐标;/ *x相当于 x2n; xn,yn.前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; / t2n 单元的节点编码 int *b; / bn 单元的截面编码 ; struct FE_INFO F_T; /* 定义结构体变量F_T ,来存放单元信息 。可设为全局变量。 如第5单元的结点分别为F_T.t8,F_T.t9, 截面编号为F_T.b4 */struct FE_PKMATRIX /定义结构体类型int n; / 自由度总数,即总刚方程的阶 数int *i; / in;总刚矩阵的索引数组, 即 主元素在k中的位置float *k; / kin-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; / en,荷载作用的单元编 号 int *attr; /attrn, 荷载类型编号double *f; /f3n,常数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 。2.int Kindex_2( ) 建立采用2结点梁单元计算平面刚架的变带宽 一维压缩存储的总刚矩阵的索引数组F_K.i ,即 总刚矩阵的主元素kii被压缩存储后, 在F_K.k中的位置。 记录总刚信息的结构体变量F_K在此定义,并 计算出总刚矩阵F_K.k元素的个数,并为之 分配存储单元; 函数需要的数据:结点信息F_X,单元信息 F_T,均为全局变量; 返回总刚矩阵的最大半带宽值,如果内存出错 ,则返回0。3.void Ekbeam_2( ) 计算平面刚架变带宽一维压缩存储的总刚度矩阵 F_K.k; 所需数据:结点信息F_X, 单元信息F_T,截面信 息F_AI, 材料信息E0,总刚信息F_K,均为全局 变量; 需调用的函数: void E_Proporty(int nb, float *x,double *d),计算截 面相应的参数 d4 ,即杆长l,抗拉刚度EA/l、抗弯刚 度EI/l、杆与整体坐标的夹角; void Ek1002(double *d, double *ek),计算2结点梁 单元的单元坐标表示的单元刚度矩阵 ek6*6; void Coorchang(double arf, double *ek),把单元局 部坐标的单元刚度ek66矩阵转换到整体坐标下;4.void P_load_2(float *p) 计算刚架总的荷载向量 *p ; 所需数据:结点信息F_X, 单元信息F_T,荷载 信息F_P,F_F,均为全局变量; 需调用的函数: void P_Unode(int id,double *lap,double *d,double *ep),计算单元非结点荷载引起的等效结 点荷载; void E_Proporty(int nb, float *x,double *d),计 算截面相应的参数 d4 ,即杆长l,抗拉刚度EA/l 、抗弯刚度EI/l、杆与整体坐标的夹角; void P_Guduan(int id,double *lap,double *pe); 计算单元固定力向量;5.void BoundProcess(struct FE_BOUNDARY u,float *p) 根据边界条件修改刚度方程,主元素乘 大数法 (主元素置1法 ); * u: 记录边界支座条件的结构体变量; *p: 结构总的的荷载向量6.高斯法解方程组 int Solvc1(long *n, float *ak, long jn) ; Solvc1: 总刚矩阵三角分解. ak=LU (Uji=Lij/Lii); 正确返回1;当主元素 if kii = 0,返回-i; void Solvc2(float *p, long *n, float *ak, int jn) Solvc2: 回代求解. ak 一维压缩存储的总刚矩阵F_K.k. njn-总刚矩阵索引数组; jn-总刚方程的阶数 pjn-荷载向量,函数返回时,存放结点位移7.void Ele_Force(float *force,float *p) 计算所有单元的杆端力*force ; 所需数据:结点信息F_X, 单元信息F_T, 荷载信息,F_F,均为全局变量;*p,所有 结点位移向量; 调用函数:void Eforce_2(double arf, double *ek, double *up),计算2节点梁单元 的单元杆端力向量
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号