安徽建筑工程学院计算结构力学8

上传人:n**** 文档编号:89217069 上传时间:2019-05-21 格式:PPT 页数:61 大小:662.50KB
返回 下载 相关 举报
安徽建筑工程学院计算结构力学8_第1页
第1页 / 共61页
安徽建筑工程学院计算结构力学8_第2页
第2页 / 共61页
安徽建筑工程学院计算结构力学8_第3页
第3页 / 共61页
安徽建筑工程学院计算结构力学8_第4页
第4页 / 共61页
安徽建筑工程学院计算结构力学8_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《安徽建筑工程学院计算结构力学8》由会员分享,可在线阅读,更多相关《安徽建筑工程学院计算结构力学8(61页珍藏版)》请在金锄头文库上搜索。

1、计算结构力学,第八章 结构分析程序设计,8-1 概述:程序设计的基本概念与要点,至此,我们已完成了结构矩阵分析杆系有限元法基本原理的教学内容,本章主要介绍计算机实现过程。 程序设计:当人们需要计算机完成科学计算,数据处理等计算工作时,必须事先恰当地安排好计算步骤,每一步的计算内容以及在什么条件下进行这一部分计算,这就是所谓编制计算机程序。,程序设计应注意以下几点: 保证程序的正确性,可通过考题校验 使程序具有高效率,并尽可能降低费用,求解方程组最费机时(80%左右),应设计再解功能 使程序便于调试、修改、扩充和完善,既要有通用性,又要留下可扩充修改的窗口,从结构矩阵分析原理到最终计算机实现解决

2、具体问题,主要有以下过程模块,用框图可表示为:,8-2 结构分析程序设计的框图设计,根据结构方程组的建立与求解来进行程序设计 结构方程组的建立与求解是结构分析的核心问题,如建立结构方程组的有限元方法,解线性代数方程组的消元分解法,这两个方法一经确定,程序设计的大致思路与过程也就基本确定了。,1. 编程要点,由单元定位向量组织整体流程图的运行实施 从形成结构方程组K=P过程中K与P的形成,到计算结构内力和反力的过程,都离不开MW的组织。 应具有良好的通用性 本程序的编制特点是利用特殊结点的约束信息,可模拟六种类型的杆系结构,故具有广泛的适用性。,2. 设计流程图,3. 框 图 设 计,4. 本程

3、序设计的模块功能介绍,模块:具有单一的独立的功能块,由子程序或自定义函数所组成。,模块可根据其功能进一步划分,依次分解成较低级的模块,模块之间通过调用而组成一个协同的程序;这种可通过自上而下进行分解,并可通过自上而下的调用,一级一级地组成程序是程序设计的重要方法。,各个模块的功能在很大程度上是独立的,因而不同的模块可以由不同的人来完成。例如,不太了解矩阵力学的人也可以设计消元分解及正消回代的子程序SUB. NXFJ。 模块的相互独立性不仅方便程序设计,也方便程序调试。调试时自下而上一块一块地进行。这时主要着重调试模块接口和上一级模块,而不必调试已通过的模块。 亦可以根据模块功能组成其它程序。,

4、本程序的模块设有三个级别:0、1、2 0级表示各个程序均可调用 1级仅供2级调用。,5. 本程序的静力计算功能 (1)结构形式:可对六种类型的杆系进行计算分析 连续梁桁架排架刚架框排架梁、桁组合结构。可由JTX(4,NJT)进行分类。 (2)材料:各向同性,按EI(EA)进行分组,分组数为NAI,(3)荷载类型 结点荷载信息 NPJ:受载结点数 需输入结点荷载信息数组PJZ(NPJ,2),NPJ行,2列: 第一列输JD.x,第二列输大小(与坐标一致为正,反之为负)。 JD是结点号,x是方向(1为X向, 2为Y向, 3为z向)。,单元荷载信息 单元荷载信息数组PMZ(NPM,3): NPM:受载

5、单元数 NPM行,3列,第一列输M.L:第M单元,第L类荷载; 第二列输荷载位置(距始端距离x) 第三列输荷载大小(与坐标一致为正,反之为负),L类:共六类,见讲义附表(P63)或参考教材表 5-1(P131),程序PSTDY的子程序SUB.DXL中留有 用户入口,可接入这六种以外的荷载。,8-3 单元定位向量的主线作用,从程序设计框图可以看出:程序设计的每一个环节都离不开单元定位向量,故它在程序设计中起到组织者的作用。我们称之为主线作用。,回顾:单元定位向量是按单元结点编号顺序由结点的未知量编号所组成的一个列向量。可由JW(3,NJ)直接生成,其作用主要有:,1.装备结构刚度矩阵 (1)按方

6、阵存贮SUB.KJX1 DO 10 I=1,6 L=MW(I) IF (L.LE.0) GOTO 10 DO 20 J=1,6 K=MW(J) IF (K.LE.0) GOTO 20 ZK(L,K)=ZK(L,K)+DK(I,J) 20 CONTINUE 10 CONTINUE,思考题:若形成上三角阵如何改动 (2)一维变带宽上三角按行存贮SUB.KJX DO 10 I=1,6 L=MW(I) IF (L.LE.0) GOTO 10 II=KD(L) DO 20 J=1,6 K=MW(J) IF (K.LE.L) GOTO 20 IJ=II-L+K ZK(IJ)=ZK(IJ)+DK(I,J)

7、20 CONTINUE 10 CONTINUE,2.形成P 见PSTDY中SUB.YDX 3.单元位移的形成 见PSTDY中SUB.YWY 由(存在P中,存在D(NE,6)中 4.FjRj亦由MW的第j个分量是否为零来判断,见PSTDY中SUB.QDL,5.在KD数组中求带宽亦用到MW 见PSTDY中SUB.QKD 带宽公式: NDK=单元两端未知量编号最大差值+1 6.更为重要的是单元定位向量还体现了单元间的相互联接,以及对结构边界条件的处理,如主从关系、无效未知量的处理等,可通过对特殊结点的约束信息数组JTX(4,NJT)来模拟实际结构中的复杂关系。换句话说,我们在程序的功能中所提到的六种

8、类型的杆系结构,程序设计中最后的区别形式就是MW,这点尤为重要。,对各种类型的结构,我们设计了统一的单元刚度矩阵形式,由MW来直接装配总刚! 六种类型杆系结构的JTX数组 1.连续梁,2.桁架,3.排架,4.框架,5.框排架,6.框排架,根据各程序模块的功能,本程序设计了下列控制变量与循环变量: NE单元总数 NJ结点总数 NJT特殊结点数 NJZ支座结点数 NAIEA或EI的分组数 NPJ结点荷载数 NPM单元荷载数,8-4 变量与数组设计,N未知量总数 M单元序号 LOAD荷载分组序号 I、J单元刚度矩阵的行列号 L,K结构刚度矩阵的行列号 II,LL对角线元素地址 N1-KD数组的个数,

9、 NZY结构刚度矩阵的元素数,整型数组有 JH(2,NE)单元两端的结点号 MW(6)单元定位向量 JW(3,NJ)结构结点未知量编号 JTX(4,NJT)特殊结点信息, JZH(NJZ)支座维点号 NLX(2,NL)每组荷载信息,即NPJ数和NPM数 NAI(1,NE)截面特性分组号 KD(NI)结构刚阵一维存贮时主元素地址;,双精度实型数组 X(NJ)结点坐标值 Y(NJ)结点坐标值 SL(NE)单元长度 CX(NE)单元的cos SY(NE)单元的sin EA(NAI)单元的EA EI(NAI)单元的EI XS(7)整体坐标系下各单元的7个常数, XSA(NE,7)整体坐标系下各单元的7

10、个常数,DK(6,6)单元刚度矩阵, T(6,6)坐标变换矩阵, ZK(NZY)结构刚度矩阵,一维存贮 P(N)荷载列阵 D(NE,6)单元两端的结点位移,后存结点力 F(6)单元结点力 FE(6)等效结点力 FG(6)整体坐标系下的单元结点力 DG(6)整体坐标系下单元结点位移 FLZ(NJZ,3)支座反力 PMZ(NPM,3)单元荷载信息 PJZ(NPJ,2)结点荷载信息,在采用FORTRAN语言编制程序时,一定要摘清楚数据如何传递。鉴于FORTRAN语言的模块化性质,各程序的数据一般可通过下列三种方式进行传递: 哑实结合 COMMON块 数据文件 方法还可运用在机器设备与外部设备(终端)

11、的数据传递,如本程序设计就采用2个OPEN语句,建立了输入、输出数据文件。 我们在这里介绍的程序设计各子程序间的数据传递均采用方法 。,8-5 数据传递与动态数组设计,子程序的一般形式为 SUBROUTINE QJW(NJ,NJT,JTX,JW,N) RETURN END 其中括号内的NJ,N即为形式参数或称为虚拟变量,或称哑元。它可以是变量名字、数组名字或数组元素。,1、哑实结合的数据传递方式,子程序中的形式参数没有确切的数值,这就是虚拟变量的由来。只有在调用该子程序时,才对形式参数赋值,或赋予其实在的存贮空间。 如:CALL QJW(NJ,NJT,JTX,JW,N) 这时NJ,N称为实在参

12、数(实元)。注意:形式参数和实在参数的类型应一致,个数应相等,但参数名可以不相同。,形式参数的作用可分为两种: 一种是从主程序或其它子程序来赋值的,也就是通过哑实结合接收从外面输入的数据,作为本子程序计算的依据,好象是加工厂的原料一样 另一种是本程序模块计算的结果,通过哑实结合传递到调用处,这是向外传递的数据,好象是加工厂的产品一样。如: 子程序:SUB. QJW(NJ,NJT,JTX,JW,N) 主程序:CALL QJW(NJ,NJT,JTX,JW,N),动态数组又称为可调数组,如:JH(2,NE)、JW(3,NJ)JTX(4,NJT)、ZK(NZY)等,由于这里NE、NJ、NJT,NZY等

13、均为数组变量,没有确切的数字,即数组的大小未能得到确切的定义,因而可调数组在主程序中是不允许出现的。 在主程序中只能出现确切定义的数组,如我们在前二个大作业里所介绍的数组如JH(2,20)、ZK(50,50)等,这样才能在在DIMENSION语句中予以确切定义。,2、主程序中动态数组的设计,根据子程序的形式参数(哑元)的定义,在子程序中可以出现动态数组,但必须在调用时进行哑实结合,才能进行运算。 由于在实际计算中大多数数组的大小是随具体问题的不同而变化的,但在主程序中又不允许出现动态数组,这就给我们在DIMENSION语句中如何定义数组带来不少困难:既受到计算机内存的限制又应使数组有足够的存贮

14、空间,这对于在微机上解决大型工程问题显得更重要。,我们知道,二维或高维数组在计算机内部都是按列存放的,即在计算机内部都是按一维数组 的方式来存贮的,这表示数组变量之间存在一定的关系,如对于:JH220数组: JH(2,3)JH(6),JH(1,4)JH(7), 这说明数组一经定义,这种关系便确定,计算机立即“了解”。此外,一个数组变量(下标变量)的下标值加1,就是紧跟在它后面的下标值,这叫做数组变量(下标变量)的后继函数,计算机的处理功能使程序会自动按后继函数找到下一个元素,这叫做下标的自动后继性质。,如在主程序DIMENSION语句中定义说明了JH(2,20),则在调用时实元用JH或JH(1

15、,1)或JH(1)调用的效果是相同的,如在主程序中用一维定义说明了JH(40),则用JH或JH(1)调用效果亦是相同。至于调用的JH具体形式,则由子程序对可调数组JH(2,NE)进行说明确定,换句话说,利用下标的自动后继性质,采用首元素调用,即可在主程序中出现动态数组。 根据算例的需要,我们在主程序中仅开设了整、实二个大数组: 整:IA(1000),暂定其大小NIA=1000 实:A(10000),暂定其大小NA=10000,然后按照程序中所要出现数组名字顺序,定出每个数组的第个元素地址,由所输入的变量或巳确定的变量确定这一点并不难,参考下图: 整:,实:,JH(2,NE)的第一个元素地址为I

16、A(1) NLX(2,NL)的第一个元素地址为IA(K1),这里 (K1)=1+2*NE JW(3,NJ)的第一个元素地址为IA(K2),这里 (K2)=K1+2*NL 对于各双精度实型数组在A中第一个元素地址亦可由图方便推出。如将某数组的第一个元素作为实元调用,通过哑实结合过程中的下标自动后继,当子程序哑元表中相应的哑元为动态数组时,便可完全按照子程序中该数组的DIMENSION语句的定义在主程序相应数组中得到反映,即在主程序中实现了动态数组。,由此可知,只要找出控制各数组大小的一些变量,即可确定各数组的第一个元素。仔细研究这些变量,发现其中某些变量(如N,N1,NZY)等可通过另一些变量由程序计算确定,我们

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号