记”,因为这是为规定地址指示码,以分配各矩阵的存储地址所必 不可少的一项工作 在有些情况下,利用重叠写法,也有可能额外地节省存储容 量。参照图2.1所示,3个有代表 性的矩阵是:A(3×3),B(1×5), C(2×1).设在矩阵B生成、存储 及全部利用完毕后,才需要生成和 矩阵A 存矩阵C,因此,为节省存储空 同,可将矩阵C的地址指示码定为 ←12=+33 15 I3-12.这样儆的结果就可把矩阵 c的系数及以后的矩阼存储在矩阵 矩阵B B曾占用过而新近腾出来的地方 e3=2+15 txt 也可以编一个 FORTRAN程 一I4=:÷21 序以获得真正的动态存储分配功 矩阵C 存储问量 能,见参考资料[17],但此处不再讨 论其细节, 肉2.1一种高效矩阵存储法 22对主要程序段的控制 主控程序和数据输入例行程序对用户很重要。这两种程序对 程序使用的难易程度及其分析功能的范围大小都有重大影响.但 是,这两者却因程序的不同前大不相同,例如,像 PAFEC)这种 大型商用程序包,往往有专用的控制宏指令、自由格式输人及大量 的图形以简化使用方法,增加方便。其他小型程序系统可能有专 门的宏指令以简化数据输入命令. Taylor1在 Zienkiewicz所 著的教科书附录中所提出的就是这种程序的一例。其他的一些程 序经常使用更经典的方式,即固定格式的数据输入,本节 MODEL 程序中所采用的就是这种方式, MODEL中例行程序所讨论的点是要说明有限元分析系统 中所进行的各种典型计算.本书把如何与用户接口的细节问题奴
在次要地位。然而,用户在考虑一个大型商用程序时,大概需要把 以上主次关系颠倒过来。 对 MODEL选定这些做法后,主控程序和输人例行程序的工 作细节在现阶段对读者就大概不那么重要了,但是为了完整起见, 附录列出了用于这些阶段的输入格式和子程序。 启动 [的铺器滑零 r+算并纽装单元短阵 回控制数据 ↑[计算断后矩阵偌有一一“_存 开始数组示吗 否 后的单 空间坐尔 拓扑和边界代码数 是 结点边界条件用于系统方程 匚约柬方程数据 特性数据 解系统方程 初始条件 输出结点参数 通条件 解后计算 C确定半带宽二 轴助存情 出果 数组指示死核对组数 !1l 否 <最后的单 图22一个典型分析序列 图22所示流程图可以说明由主程序 MODEL所控制的几 个重大步骤。理解这些运算之间的关系是很重要的。到1点为止 22
是前半部分,这几个步骤所处理的是:置系统初值、选定所用输入 方式、读入并打印输人数据、分配存储地址以容纳后阶段将产生的 信息。为便于将来参考,图2.3所列的主要子程序是控制图22所 列的对应程序段的 图22从1点到2点的各步骤处理单元矩阵的生成、设定在 以后二次计算中要用到的数据、组装系统矩阵满足解方程前必须 的指定边界条供,从2点到3点为解系统方程式(因式分解),得 出未知结点参数。如果需要进行附加计算,则从存储器中提取所 帶的辅助数据,执行解后计算。 如果该问题要考虑材料非线性或几何非线性,则需增加一种 额外的循环,图22中1与3两点间所示就是其一。例如,在温度 计算中,若考虑导热率是随温度而变的,则需对每个单元的导热率 先作初步估计,算出结点温度后,得到更准的导热率并与原估计值 进行比较,如果全部单元的导热率与原估计值很按近,误差在合理 范围内,则算出来的温度是可以采用的;否则,必须重新预估导热 率并重新计算。 随时间而变的线性问题,每走一个时间步(长),都需要从2点 到3点循环一次.还可能有其他组合情况,如非线性动态分析问 题,要在每一个时间步长结束时,对材料特性进行迭代运算。所 以,如果要设计成通用性很强的程序,则主控程序的逻辑就可能很 复杂 图23所列各种主要子程序 ASYMBL, APLYBC, FACTOR, SOLVE和POsT在以后几章再详细讨论.从名称和从閡2.2, 3的对比,就可想象出这些子程序的主要功能.组装段控制程序 ASYMBL要用好几个子程序,我们将在第三、四章讨论,且在第七 章详细讨论。然而,此处列出图2.4,其目的一是要概述其主要运 算,再就是要识别一些例行程序的相对功能位置,这些例行程序将 在后面几章提出第四章讨论生成单元矩阵时所用的典型步骤,从 第十章开始,再专门补充细节,图25所示是单元生成控制段 GENELM的运算流程图,并标出一些要用到的子程序
动 ZEROA ZEROr tm-ww-lASYMBL MODEL APLYBC SET. FI I PUT FACTOR. SOLVE INPROP WRTPT, WRTELM I (MODEL) INVECT POS INFLUX SYSBAN 图23与图2.2程序段有关的子程序 由于通用等参元的生成需要在编制程序时考虑一些特殊因 素,所以在第五章中专门讨论。控制等参元生成的程序称为【SO PAR,这个程序中的主要步骤示于图26,该图也标出了典型的例 行程序,这些例行程序以后再提供.从图26可以看到,等参元的 生成通常需要知道单元的插值(或形状)方程以及数值积分,这 方面的问题在第六章中讲 24
启动 开始单元循环 恢复单元结点: LNODE 生成对应 系统方程号: NDXEL 生成单元方阵、列阵、边界通量 矩阵和解后矩阵: GENELM 把单元矩阵加进系统 方程组: STORSO, STORCL 否 最后的 单元 返回 图24一个典型的组装忧程图 第七章提供组装过程后,第八章讨论如何应用算法语言把边 界约束条件加到结点自由度上去.如图23中的 APLYBC就是 一个控制边界约束的例行程序,其运算流程图示于图27.正如以 后所讨论的那样,约束的类型由线性约束方程中所出现的自由度 25