资源描述:
《fortran语言有限元程序分析平面钢架》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、程序框图:程序特点:问题类型:可用于计算结构力学的平面刚架问题单元类型:直接利用杆单元载荷类型:节点载荷及非节点载荷,其中非节点载荷包括均布荷载和垂直于杆件的集中荷载材料性质:所有杆单元几何性质相同,口由相同的均匀材料组成方程求解:结构刚度矩阵采用满阵存放,Gauss消元过程采用《数值分析》屮的列主元素消去法输入文件:按先处理法的要求,由手工生成输入数据文件1•主要变量:ne:单元个数nj:结点个数n:自由度e:弹性模量(单位:KN/m2)a:杆截面积zi:惯性矩np:结点荷载个数nf:非结点荷载个数x(nj):存放结点的x轴坐标y(nj):存放结点的y轴坐标ij(ne,2):存放单
2、元结点编号,其中ij(nj,l)存放起始结点编号,ij(nj,2)存放终止结点编号jn(nj,3):存放结点位移编号,以组成单元定位数组pj(np,3):存放结点荷载信息,其中pj(np,l)存放结点荷载作用结点号,pj(np,2)存放荷载方向代码(1—x方向;2—y方向;3—转角),pj(np,3)存放荷载大小pf(ne,4):存放非结点荷载信息,其中pf(ne,l)存放荷载作用单元号,pf(ne,2)存放荷载代码(1—均布荷载,2—垂直集中荷载),pf(ne,3)存放荷载大小,pf(ne,4)荷载作用距离(均布荷载,集中荷载均以单元起始结点为计算起始位置)。2.子例行子程序哑元信
3、息:第一部分:基本部分I.subroutinelsc(Length&Sin&Cos):输入哑元:m(单元号),nj,ne,x,y,ij输出哑元:bl(杆件长度),si(正弦值),co(余弦值)II.subroutineelv(ElementLocationVector):输入哑元:m,ne,nj,ij,jn输出哑元:lv(单元定位数组)III.subroutineesm(ElementStiffnessMatrix):输入哑元:e,a,zi,bl,si,co输岀哑元:ek(整体坐标系下的单刚矩阵)IV.subroutineeff(ElementFixed-endForces)输入哑元
4、:i,pf,nf,bl输岀哑元:fo(局部坐标系下单元固端力)第二部分:主程序直接调用部分I.subroutinetsm(TotalStiffnessMatrix计算总刚矩阵)输入哑元:ne,nj,n,e,x,y,ij,a,zi,jn输出哑元:tkII.subroutinejlp(JointLoadVector计算结点荷载)输入哑元:ne,nj,n,np,nf,x,y,ij,jn,pj,pf输岀哑元:p(结点荷载列矩阵)III.subroutinegauss(带列主元素消去的高斯法)输入(输岀)哑元:tk,p,n;(注意,算岀位移后,直接存储単结点荷载列矩阵)IV.subroutin
5、emvn(Member-endforcesofelements计算各单元的杆端力)输入哑元:ne,nj,n,nf,e,x,y,ij,a,zi,jn,pf,p3.文件管理:源程序文件:pff.for程序需读入的数据文件:input.txt程序输岀的数据文件:output2.数据文件格式:【输入文件格式】:栏目格式说明实际需输入的数据基本模型数据第1行,每两个数之间用“,”号隔开单元个数,结点个数,总自由度,弹性模量,杆截面积,惯性矩,结点荷载个数,非结点荷载个数结点位置信息第2行,每两个数之间用“,”号隔开依次输入各结点的坐标(x,y)单元结点信息每输入一个单元换行(回车),两个数之间
6、用“,”号隔开依次输入各单元的起点结点号和终点结点号结点约束信息每输入一个结点换行(回车),两个数之间用“,”号隔开按先处理法要求,输入各结点编号结点荷载信息每个结点荷载成一行,每两个数之间用“,”号隔开每行依次输入荷载作用的结点号,荷载方向代码,荷载大小(参考“主要变量”的叙述)非结点荷载信息每个非结点荷载成一行,每两个数之间用“,”号隔开每行依次输入荷载作用单元,荷载代码,荷载大小,荷载作用''长度"(参考“主要向量”的叙述)【输出文件格式】:1.第1部分:每行数据依次为:结点号,结点X方向位移,结点y方向位移,结点转角位移2.第2部分:每行数据依次为:单元号,J,Fyi,%•,
7、Fxj,Fyj,M.源程序:programPFFimplicitnonerealtk(lOO,lOO),x(5O),y(5O),p(lOO),pj(5O,3),pf(5O,4)integerij(5O,2),jn(5O,3)integerne,nj,n,np,nfreale,a,ziopen(l,file=ninput.txt,',status=,,oldn)open(2,file二"output,txt",status=”old”)read(l,*)ne