C语言程序设计等参元程序流程.ppt
程序需要的主要数据,Struct FE_COORDS/定义结构体类型 int n;/结点总数 double*x;/x2n;结点坐标,xn,yn.;注:前n个为结点的x坐标,后n个为结点的y坐标。struct FE_COORDS F_X;/定义结构体变量F_X,来存放结点信息。设为全局变量。,程序需要的主要数据,struct FE_TOPOLOGY/定义类型 long n;/单元总数 long*t;/t4n 单元的节点编码;struct FE_TOPOLOGY F_T;/*定义结构体变量F_T,来存放单元信息。可设为 全局变量。如第5单元的结点编号为 F_T.t16 F_T.t19.*/,struct FE_PKMATRIX/定义结构体类型 int n;/自由度总数,即总刚方程的阶数 int*i;/in;总刚矩阵的索引数组,即 主元素在k中的位置 double*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_STRESS/F_S long n;/输出的应力(应变)点总数 double*x;/x2n;相应应力点的坐标 double*s;/s3n,应力(应变)值;struct FE_STRESS F_S;/*记录的单元应力(应变)信息,包括每个应力点的位置坐标和三个应力(应变)值。*/,double MAT5;/定义材料信息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,即 总刚矩阵的主元素kii被压缩存储后,在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),计算弹性矩阵 d5;void Ek2002(double*xy,double*d,double*ek),计算4结点等参元的单元刚度矩阵 ek8*8;,void P_load_4(float*p),计算结构总的荷载向量*p;所需数据:结点信息F_X,单元信息F_T,荷载信息F_P,结构自重,均为全局变量;需调用的函数:void Pbd2002(double*xy,double*pxy,double*ep),计算单元自重引起的等效结点荷载;,void Zuv2d(struct FE_BOUNDARY u,float*p),根据边界条件修改刚度方程,主元素乘大数法(主元素置1法);*u:记录边界支座条件的结构体变量;*p:结构总的的荷载向量,高斯法解方程组,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-荷载向量,函数返回时,存放结点位移,void Str2d_4(double*w,struct FE_STRESS*s),计算所有单元高斯点的应力向量F_S;所需数据:结点位移信息*w,单元信息F_T,节点信息,F_X,均为全局变量;*s,所有单元高斯点的应力向量;调用函数:void Str2002(double*xu,double*d,double*p,double*sr),计算4节点等参元的单元高斯点应力向量。,8.void Stn2d_4(double*w,struct FE_STRESS*s),计算所有单元高斯点的应变向量F_S;所需数据:结点位移信息*w,单元信息F_T,节点信息,F_X,均为全局变量;*s,所有单元高斯点的应变向量;调用函数:void Stn2002(double*xu,double*d,double*p,double*sr),计算4节点等参元的单元高斯点应变向量。,