有限元第9章有限元法程序设计 联系客服

发布时间 : 星期一 文章有限元第9章有限元法程序设计更新完毕开始阅读e2510e9e0812a21614791711cc7931b765ce7b84

个人收集整理 仅供参考学习

5.效率。

合理解决运行时间和内存的矛盾。不要为提高效率而牺牲程序的清晰性和可读性。 为了提高程序的可读性和整体质量,类似以上所讲的这些最基本的“条条框框”应当加以遵守。当然,一个良好的程序设计风格,需要在长期的编程实践中有意识地培养和训练才能形成。

9.1.3 程序调试

为了验证程序的正确性,有两种截然不同的极端方法可供采用。一种是深入每一个模块内部,使“所有的工作都过一遍筛子”,通过对程序的结构和语句的系统研究来检验它的正确性,这种方法也称作白箱法;另一种验证程序正确性的方法是不需要对模块作深入了解,只须通过一系列试算题的实际计算结果来判断该模块是否正确,这种方法也称作黑箱法。在理论上前者可以不通过计算机的运行来检验程序的正确性,而后者则不必了解程序的结构即能考核程序的正确性。然而只有研究了程序的结构后,才能提出一个用少量的考试题,即能检验程序正确性的方案。最小量考试便是一例,此时只要用一组考试题便能保证程序中的每一个语句至少被执行一次。

程序的调试工作是一项细致而繁重的工作,需要认真而耐心地去做。调试一般分为下以几个步骤:

(1)分调(亦称单元调试)——分别调试每个模块。 (2)联调(亦称集成调试)——将模块组合起来调试。 (3)验收——确认程序正确。

模块调试(分调)分为渐增式和非渐增式两种方式。

渐增式是在调试好N个模块时,再调试N+1个模块。非渐增式是分别独立调试每一个模块,然后将它们联合成一个系统。

调试顺序可以自顶而下,也可以自底而上。哪一种更好呢?采用自顶而下的顺序,能较早地调好系统整体,特别是软件接口上的问题能较早暴露,但是调试起来比较困难。采用自底而上的顺序实施起来比较容易,但是软件接口问题暴露得较晚。因此,这两种

9

个人收集整理 仅供参考学习

调试顺序各有优缺点,而且其中一个的优点正好是另一个的缺点,最好结合起来使用,根据程序结构的具体情况,灵活地加以确定。

调试中若发现错误要认真分析。纠错需要一定的经验和技巧,必须勤思考,不可蛮干。正确的做法是采用原因排除或回溯两种方法。原因排除法是先经过思考,提出出错的可能原因,然后进行必要的测试,一个个排除,最后找出出错的真正原因。回溯是从出错的地方一步一步向前查,直到查出出错的地方为止。有时通俗地称这种方法叫“顺藤摸瓜”。回溯法一般适用于小程序。

VC的集成开发环境(IDE)为程序员提供了一系列优秀的调试工具,熟练地使用这些调试工具对于提高工作效率是十分有利的。

9.2 平面杆系结构静力分析程序设计

9.2.1 程序功能的确定和模块划分

本章将要介绍的平面杆系结构静力分析程序,是一个示例性的小程序,目的是用来说明有限元法程序设计方法,因此,并不追求程序功能的完整和强大,将程序的功能限定为:可以用来对一般平面杆系结构作静力分析。结构可以是刚架,桁架,或由刚架单元和桁架单元组成的组合结构。载荷除一般载荷外,还可对温度改变和支座位移进行计算。程序的解题规模只决定于计算机内存大小。

根据程序的功能规定,平面杆系静力分析程序划分为一个主模块和15个子模块。此外还设计了若干个辅助模块,供有关模块调用,如矩阵运算模块和二维数组的动态内存分配和释放模块等。模块层次图如图9.2所示,程序流程图则如图9.3所示。

10

个人收集整理 仅供参考学习

1.0 2.0 计算对角 元地址 3.0 组装总 刚度矩阵 4.0 组装总 载荷向量 5.0 解方程求 节点位移 6.0 计算杆 端内力 7.0 计算支 座应力 8.0 输出节 点位移 9.0 输出杆 端内力 10.0 输出支 座反力 主模块 计算节点 自由度编号

3.1 4.1 3.2 计算刚架 单元单刚 计算单元 固端力和 等效节点力 6.1 计算桁架 单元内力 6.2 计算刚架 单元内力 计算桁架 单元单刚 图 9.2 平面杆系静力分析模块图

11

个人收集整理 仅供参考学习

开 始 计算节点自由度编号

组装总载荷向量

输出节点位移、

结 束 图 9.3 流程图

9.2.2 结构的基本属性描述

我们将大量使用结构类型(struct)变量对平面杆系结构的基本属性进行描述。之所以选择结构类型是基于以下两点考虑:首先,结构类可以把类型不同但在逻辑上联系

杆端力和支座反力 计算杆端力和支座反力 解方程求节点位移 组装总刚 计算对角元地址 12