资源描述:
《C语言程序设计等参元程序流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序需要的主要数据StructFE_COORDS{//定义结构体类型intn;//结点总数double*x;//x[2n];结点坐标,x[n],y[n].};注:前n个为结点的x坐标,后n个为结点的y坐标。structFE_COORDSF_X;//定义结构体变量F_X,来存放结点信息。设为全局变量。程序需要的主要数据structFE_TOPOLOGY{//定义类型longn;//单元总数long*t;//t[4n]单元的节点编码};structFE_TOPOLOGYF_T;/*定义结构体变量F_T,来存放单元信息。可设
2、为全局变量。如第5单元的结点编号为F_T.t[16]—F_T.t[19].*/structFE_PKMATRIX{//定义结构体类型intn;//自由度总数,即总刚方程的阶数int*i;//i[n];总刚矩阵的索引数组,即主元素在k中的位置double*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)-*
3、(F_K.i+i)代表下标为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_STRESS{//F_Slongn;//输出的应力(应变)点总数doub
4、le*x;//x[2n];相应应力点的坐标double*s;//s[3n],应力(应变)值};structFE_STRESSF_S;/*记录的单元应力(应变)信息,包括每个应力点的位置坐标和三个应力(应变)值。*/doubleMAT[5];//定义材料信息doubleE;//材料弹性模量doublev;//泊松比doublet;//厚度doublepx;//x方向的容重doublepy;//y方向的容重平面刚架静力计算程序流程图单元循环单元循环平面刚架静力计算程序流程图单元循环单元循环程序模块设计shortReadda
5、ta_4(char*file)读取平面四结点等参元分析需要的所有数据,如结点信息、单元信息、截面信息、边界支座信息、荷载信息、材料信息等;在此函数中定义全局变量F_X,F_T,F_U,F_P,MAT,并从文件中读取相应的数据。函数所需参数:*file为数据文件名。成功读取数据,函数的返回值为0,数据文件不存在,返回-1;内存出错,返回1。shortKindex_4()建立采用4结点等参元计算平面问题的变带宽一维压缩存储的总刚矩阵的索引数组F_K.i[],即总刚矩阵的主元素k[i][i]被压缩存储后,在F_K.k[]中的
6、位置。定义存储总刚信息的结构体变量F_K,并计算出总刚矩阵F_K.k[]元素的个数,并为之分配存储单元;函数需要的数据:结点信息F_X,单元信息F_T,均为全局变量;返回总刚矩阵的最大半带宽值,如果内存出错,则返回0。voidEkm2d_4()计算变带宽一维压缩存储的总刚度矩阵F_K.k[];所需数据:结点信息F_X,单元信息F_T,截面信息F_AI,材料信息MAT,总刚索引信息F_K,均为全局变量;需调用的函数:voidEvdt2d(double*d),计算弹性矩阵d[5];voidEk2002(double*xy,
7、double*d,double*ek),计算4结点等参元的单元刚度矩阵ek[8*8];voidP_load_4(float*p)计算结构总的荷载向量*p;所需数据:结点信息F_X,单元信息F_T,荷载信息F_P,结构自重,均为全局变量;需调用的函数:voidPbd2002(double*xy,double*pxy,double*ep),计算单元自重引起的等效结点荷载;voidZuv2d(structFE_BOUNDARYu,float*p)根据边界条件修改刚度方程,主元素乘大数法(主元素置1法);*u:记录边界支座条件
8、的结构体变量;*p:结构总的的荷载向量高斯法解方程组intSolvc1(long*n,float*ak,longjn);Solvc1:总刚矩阵三角分解.[ak]=[L][U](Uji=Lij/Lii);正确返回1;当主元素ifk[i][i]<=0,返回-i;voidSolvc2(float*p,long*n,float*ak,in