有限元教材PFF程序使用说明(C++版).pdf
《有限元教材PFF程序使用说明(C++版).pdf》由会员分享,可在线阅读,更多相关《有限元教材PFF程序使用说明(C++版).pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.8 平面刚架程序设计平面刚架程序设计 1.8.1 程序说明及总流程图程序说明及总流程图 依据前述平面刚架矩阵位移法原理,本节使用 Visual C+6.0 编译器编制了平面刚架先处理法计算程序 PFF,该程序未使用 C+面向对象的编程方法,而仍沿用兼容 C 的结构化程序设计方法,以便和本科生先修课程 C 语言相容。本程序不建议使用 TC+3.0 及更低版本的编译器编译。一一PFF 的主要功能和特点的主要功能和特点(1)输入单元编号、结点编号和结点位移分量统一编码,单元材料信息;(2)先处理法形成结构刚度矩阵和综合结点荷载列阵;(3)Gauss 消元法解线性代数方程组;(4)计算并输出结点位
2、移和单元杆端力;二二PFF 的使用方法的使用方法(1)输入输出数据文件 PFF 从原始数据文件中读取结构的离散化信息,经计算后,将结果输出到结果数据文件中。运行编译好的 PFF 可执行程序,会提示“Please input primary data file name!”,这时输入事先准备好的原始数据文件名,回车后,提示“Please input calculation result file name!”,输入一个文件名,PFF 会自动以该文件名生成结果数据文件。原始数据文件最好同 PFF 可执行程序放置在同一文件夹中,结果数据文件不应是已有的文件,而必须由 PFF 自动生成。两文件建议使用
3、英文和数字命名。在输入文件名时,应包含后缀。C 语言以 0 为数组各维的开始下标,称为 0 基数组;而一般习惯是以 1 为数组各维的开始下标,称为 1 基数组。PFF 源程序编制时,仍以 C 语言为标准,使用 0 基数组,即 PFF程序内部处理机制是 0 基的。但是为方便读者,原始数据文件和输出数据文件则按一般习惯,使用 1 基数组对结点、单元、结点位移分量、结点荷载和非结点荷载进行编号,即 PFF 程序外部表现是 1 基的。(2)原始数据文件的格式 下面依行序说明原始数据文件输入数据的含义:总体信息 ne,nj,n,np,nf,e ne单元总数;nj结点总数;n结点位移未知量总数;np结点荷
4、载总数;nf非结点荷载总数;e弹性模量 结点坐标(xi,yi)(i=0;inj;i+)xi结点 i+1 的 x 坐标;yi结点 i+1 的 y 坐标。依结点编号顺序,先 x 坐标,后 y 坐标,存储所有结点坐标。每个结点坐标占一行。单元信息(iji0,iji1,ai,zii)(i=0;ine;i+)iji0单元 i+1 的始结点码;iji1单元 i+1 的末结点码;ai单元 i+1 的截面积;zii单元 i+1 的截面惯性矩。依单元编号顺序,存储各单元的始末结点及截面积 A 和惯性矩 I。结点位移分量统一编码(jnij(j=0;j3;j+)(i=0;inj;i+)jnij结点 i+1 的结点位
5、移分量统一编码。依结点编号的顺序,存储各结点的结点位移分量统一编码。每结点位移分量均按 u、v、的顺序依次输入,被约束的位移分量输 0,未被约束的位移分量则顺序编号输入。结点荷载(pjij(j=0;j3;j+)(i=0;inp;i+)pjij第 i+1 号结点荷载;其中 pji0第 i+1 号结点荷载作用的结点编号。pji1第 i+1 号结点荷载作用的方向代码,整体坐标系 x、y 和转角方向分别用 1.0,2.0 和 3.0 表示。pji2第 i+1 号结点荷载的大小,带符号,与整体坐标系一致(力偶顺时针)为正,反之为负。依上面的顺序,存储全部结点荷载。非结点荷载(pfij(j=0;j4;j+
6、)(i=0;i0 i=0,np-1 l!=0 pl=pji2 nf0 i=0,nf-1 m=int(pfi0)调用 lsc 调用 eff 调用 elv 按式(1-24)求EeF j=0,5 l=lvj l!=0 pl=pl+pej 否 是 第一步:处理结点荷载 否(无非结点荷载)是 否(无结点荷载)是 否 是 11 返回对结点荷载循环 荷载作用结点号 对非结点荷载循环 荷载作用单元号 求单元 m 的常数 荷载方向代码 荷载定位编码 结点荷载送入 F 求PeF 形成单元定位向量 EeF存入数组 pe6 对eEF的分量循环 EeF的第 j 个分量在F中的地址 排除定位向量的零分量 将eEF叠加到F
7、 第二步:处理非结点荷载 图 1.19 子程序 jlp 的框图 m=0,ne-1 调用 lsc 调用 esm 调用 elv i=0,5 l=lvi d(i)=0.0 l!=0 是 否 di=pl eee FKeeFTFnf0 i=0,nf-1 l=int(pfi0)m=l 11调用 eff 得 fo6 j=0,5 fj=fj+foj 2否(无非结点荷载)是 否 是 形成单元定位向量 对e 六个分量循环 若l0,则l是e 中第 i 个位移分量 取单元杆端位移 存在数组 fd6中 存在数组 f6中 对单元循环 叠加单元固端力求单元固端力 若 m=l,则荷载作用在单元m上荷载作用单元号eF求Ke 2
8、对单元循环 求单元常数 eF第一步:计算由结点位移引起的杆端力 第二步:有非结点荷载的单元,还需叠加单元固端力 图 1.20 子程序 mvn 的框图(计算杆端力部分)1.8.3 算例及源程序算例及源程序 一算例一算例 下面以一个例子,说明原始数据文件的输入方法,以及结果数据文件的含义。例例 1.4 已知如图 1.21a 所示的刚架,各杆,。为该刚架准备 PFF 程序使用的原始数据文件。72=3 10 kN/mE20.16mA 40.002mI 3m3m6m6m20kN m15kN10kN5kN/m1xy31(1,2,3)2(0,0,0)3(4,5,6)4(4,5,7)5(8,9,10)6(0,
9、0,11)7(12,0,13)245(a)(b)结构离散化 图 1.21 解解 按本章 1.2.1 的方法进行离散化,对单元、结点和结点位移未知量进行编号,如图1.21b 所示。接下来建立一个文本文件,按上述原始数据文件的格式,输入原始数据如下(右侧为注释,不输入)ne,nj,n,np,nf,e 5,7,13,2,2,3.0e7(xi,yi)(i=0;inj;i+)0,0 6,0 0,6 0,6 6,6 0,12 6,12(iji0,iji1,ai,zii)(i=0;ine;i+)1,2,0.16,0.002 1,3,0.16,0.002 4,5,0.16,0.002 3,6,0.16,0.0
10、02 5,7,0.16,0.002(jnij(j=0;j3;j+)(i=0;inj;i+)1,2,3 0,0,0 4,5,6 4,5,7 8,9,10 0,0,11 12,0,13(pjij(j=0;j3;j+)(i=0;inp;i+)1,3.0,-20.0 3,1.0,10.0(pfij(j=0;j4;j+)(i=0;inf;i+)1,2,15.0,3.0 5,1,5.0,6.0 结果数据文件的含义结果数据文件的含义 仍以例 1.4 为例,PFF 输出的结果数据文件如下(括号中的汉字部分为说明):PLANE FRAME STRUCTURE ANALYSIS(总体信息)NE=5,NJ=7,N=
11、13,NP=2,NF=2,E=3e+007 COORDINATES OF JOINT(结点坐标信息)Joint x y (结点号)(x坐标)(y坐标)1 0 0 2 6 0 3 0 6 4 0 6 5 6 6 6 0 12 7 6 12 INFORMATION OF ELEMENTS(单元信息)Element Joint-i Joint-j A ZI (单元号)(始结点号)(末结点号)(横截面积)(截面惯性矩)1 1 2 0.16 0.002 2 1 3 0.16 0.002 3 4 5 0.16 0.002 4 3 6 0.16 0.002 5 5 7 0.16 0.002 INFORMAT
12、ION OF JOINT DEGREES OF FREEDOM(结点位移分量统一编码)Joint u v ceta (结点号)(u方向)(v方向)(方向)1 1 2 3 2 0 0 0 3 4 5 6 4 4 5 7 5 8 9 10 6 0 0 11 7 12 0 13 JOINT LOAD(结点荷载)Joint XYM Load (结点号)(方向代码)(荷载大小)1 3 -20 3 1 10 NON-JOINT LOAD(非结点荷载)Element Type Load c (单元号)(荷载类型)(荷载大小)(荷载位置参数c)1 2 15 3 5 1 5 6(以上六部分直接来自原始数据文件,
13、可作校核用)(以下两部分为计算结果)JOINT DISPLACEMENTS(结点位移)Joint u v ceta (节点号)(u方向)(v方向)(方向)1 -1.6151e-005 -1.6406e-005 6.6171e-004 2 0.0000e+000 0.0000e+000 0.0000e+000 3 -6.7499e-003 -1.7578e-005 2.9077e-004 4 -6.7499e-003 -1.7578e-005 -1.4939e-003 5 -6.7874e-003 1.8750e-005 3.0061e-003 6 0.0000e+000 0.0000e+000
14、 -1.8329e-003 7 -3.8324e-002 0.0000e+000 6.0061e-003 MEMBER-END FORCES OF ELEMENTS(单元杆端内力)(注意正符号规定不同于传统位移法,轴力剪力与单元坐标系一致时为正)(i 代表单元始端,j 代表单元末端)Element FN FQ M(单元号)(杆端轴力)(杆端剪力)(杆端弯矩)1(i)-12.9212 -0.937619 15.0542 (j)12.9212 -14.0624 24.3201 2(i)0.937619 -12.9212 -35.0542 (j)-0.937619 12.9212 -42.4729
15、3(i)30 15 0 (j)-30 -15 90 4(i)-14.0624 7.07882 42.4729 (j)14.0624 -7.07882 0 5(i)15 -30 -90 (j)-15 0 0 根据结果数据文件,可绘出结构的内力图,如图 1.22 所示。15.0524.3235.0542.4790.0090.0022.5022.500.9414.0612.9215.007.0830.0012.920.9430.0014.0615.00图(kN)图(kNm)MFQ(a)(b)图(kN)(c)NF 图 1.22 例 1.4 所示结构内力图 二二PFF 的源程序的源程序 PFF 源程序中
16、,凡是“/*”和“*/”之间,以及同一行内“/”之后的内容,均为注释内容,不会被编译、执行。/*STATIC ANALYSIS FOR PLANE FRAME*/*(METHOD OF FORMER TREATMENT)*/#include stdio.h#include math.h#include stdlib.h FILE*fpin,*fpout;const int ARRSIZE=50;/Array size const int JDOF=3;/Joint degree of freedom const int JPE=2;/Joints per element /*Main prog
17、ram reads the control parameters and organizes*/*the whole calculation by calling subroutines.*/main()char indat30,outdat30;int ne,nj,n,np,nf;double e;double xARRSIZE,yARRSIZE,aARRSIZE,ziARRSIZE,pjARRSIZE3,pfARRSIZE4;double pJDOF*ARRSIZE,tkJDOF*ARRSIZEJDOF*ARRSIZE;int ijARRSIZEJPE,jnARRSIZEJDOF;int
18、input(int ne,int nj,int np,int nf,double*x,double*y,int(*ij)JPE,double*a,double*zi,int(*jn)JDOF,double(*pj)3,double(*pf)4);int tsm(int ne,int nj,int n,double e,double*x,double*y,int(*ij)JPE,double*a,double*zi,int(*jn)JDOF,double(*tk)JDOF*ARRSIZE);int jlp(int ne,int nj,int n,int np,int nf,double*x,do
19、uble*y,int(*ij)JPE,int(*jn)JDOF,double(*pj)3,double(*pf)4,double*p);int gauss(double(*a)JDOF*ARRSIZE,double*b,int n);int mvn(int ne,int nj,int n,int nf,double e,double*x,double*y,int(*ij)JPE,double*a,double*zi,int(*jn)JDOF,double(*pf)4,double*p);printf(Please input primary data file name!n);scanf(%s
20、,indat);if(fpin=fopen(indat,r)=NULL)printf(Cannot open input file.n);return(1);printf(Please input calculation result file name!n);scanf(%s,outdat);if(fpout=fopen(outdat,w)=NULL)printf(Cannot open result file.n);return(1);fscanf(fpin,%d,%d,%d,%d,%d,%lg,&ne,&nj,&n,&np,&nf,&e);fprintf(fpout,PLANE FRAM
21、E STRUCTURE ANALYSISnn);fprintf(fpout,NE=%d NJ=%d N=%d NP=%d NF=%d E=%lgn,ne,nj,n,np,nf,e);input(ne,nj,np,nf,x,y,ij,a,zi,jn,pj,pf);tsm(ne,nj,n,e,x,y,ij,a,zi,jn,tk);jlp(ne,nj,n,np,nf,x,y,ij,jn,pj,pf,p);gauss(tk,p,n);mvn(ne,nj,n,nf,e,x,y,ij,a,zi,jn,pf,p);fclose(fpin);fclose(fpout);printf(nCalculation
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限元 教材 PFF 程序 使用说明 C+
限制150内