01T (1+1)-17 Q。L (1+1) L IT 0 然而,这些方科并未满足强制边界条件(L)一T一孙;也就是说 s是奇异的。用上这个条件之后,缩减后的方程是 Q。L 12]r 0 L 或S,T,一C。解之叮得T灬SC,其中 21 s 2L11 故得 xo+ox-L)+c∠2-x2》2 Q。L 8(3 24{}+,{ 这些是正确的结点值,关 于这一点,只要求出式 n 1.15)分别在x〓0和 x=L/2处的值,就可以得 到证实。因此,我们的有 限元解给出一个插值解, 也就是说,它恰好对结点 处的值进行指值,而在其 他点处却是近似的。对齐 次问题,Qb=0,有限元解 图1,7一个二元系统的解 在全部点上都是正确的 这些特点为其他有限元间 题所共有.正确解和有限元解都画在图17上请注意在每一个
单元内的至少一个点上,导数也是正确的。最佳导数取样点的问 题以后再讨论.可以证明,对这种微分算符,中心点的导数估值可 准确到O(四2),而其他点只准确到O(),本例中,当QQ 时,中心点的导数是正确的 练习县 1.用归纳法推导方程(1,1) 2编排自由度号码的另一种方法是:先把全部结点的第i个参数编上 号然后再编第(i+1)个参数.用归纳法推导出最后的方程式来,此方程 应与方程(1.1)相似.方程(13)仍保持原样吗? 3在各单元上都增加边中结点后,重复图L5所示的图形组装 令NG=3重绘图1.2.算出1=4J2的自由度号 5求出图1.1各结点的最大和最小单元关联度(即与该结点相连的单元 数)再求出一个结点的最大结点关联度 6针对图1.8中的3个三角彩元,画出完整多项式各项的P三角 形 △A 图1.8三角形单元族的前三个单元 7.以下各问题中很可能用哪些未知量作结点参数?需要给出哪些特性 数据?请列表说明之. (a)线性应力分折 (b)热传导. (c)位流 (d)流体动力学 (e)磁场 8使用一种局部坐标系统,0≤≤1,以便用H,()〓(1-r)和
H(r)=r代替方程(1,12),式中x(r)mHx+H,、用这个系统计算 方程〔1.1)的值 当Q沿单元线性变化时,求出单元矩阵S·和C 10.当单元的大小均匀一致地减小时,如何用数值法算出单元中心点导 数的收敛率?就此问题提出建议。 11.重绘图17,只考虑完全正确和有限元解的特定部分。 18·
第二章控制和输人阶段 21引言 在实际应用有限元法时,需要用到一台计算机,同时还要做大 的程序设计工作,如果一个想要使用有狠元的人被白手起家, 从零开始地设计整个程序,那么他所面临的将是一个冗长的、困难 的、难以实现的任务,因此,必须尽一切可能地利用前人在程序设 计方面的已有成果和知识.已经编出了一些大型的有限元计算机 程序,有些早期的程序是花了大量的人力和物力才研制出来的, 但是这些程序专业化程度很高,只针对某类计算机,而且难于修 改,因此很快就过时了。 最理想的有限元程序应该是通用的,这种程序在设计时,应考 虑到易于用户的理解、修改和更新。用户也最好能熟悉程序的内 部功能,这样才能充分地发挥程序的内在潜力,避免使用不当。达 到这些理想目标的最好办法是使程序由几个积木块(也就是模块) 组成,一般说来,任何一种功能,只要在某种程度上是重复执行的 (或者具有某种特殊的教学价值的),都应该隔离出来而编成一个 单独的子程序(即模块),而原来的程序设计者也应该有意识地努 力使这种子程序的功能非常明确。利用这一概念,就可以建立一 个程序库库中存有许多这种积木块这样,在解决某一问题时,用 户就有可能从库中选用一些合适的子程序,再加上用户自己编的 子程序,将二者组装起来,满足用户的特殊需要.当然,这样的一个 由有限元子程序凑成的系统通常都需要一个简单的主程序,其功 能就是以应有的顺序调用各种所需的子程序 采用模块式方法来编制有限元程序具有许多优点。从教学观 点来看,学习有限元的学生每次只需要掌握一个基本概念就能容
易地掌握有限元法中所通用的一些编程概念,这种模块式方法也 能更方便地把有限元法用到各种各样的分析领域,如月于热 传导流体流动、求解微分方程。当用户在一项新的应用领域中从 事分析吋,模块法也可以使得用户听必需编写的算法程序减到最 小量。然而,更为重要的是,当出现各种新型有限元、新型解题祛、 新型输入输出子程序和其他新设施时,因为这种程序是模块式的, 即使用户不是原设计者本人,也可以把这些新东西编进去而不会 使原来的程序过时,本书所提供的各种积木式程序,正是作者为 达到这些目标而研究制订的,这些程序力求简短、独立,以便尽可 能具有通用性。作者也已努力缩短求解时间和减小存储容量 一个典型的有限元程序需要存储大量的矩阵,包括结点的空 间坐标、单元的关联结点、单元的矩阵系统方程式等等一般说来, 典型矩阵的大小可以由其控制参数(结点数、单元数、等等)和/或 者由输入数据(单元的关联结点等)来确定。这一情况使编程者可 以有效地利用现成的磁心存储器遗憾的是,大多数程序并不利用 这一可供选用的方法,相反地,却断然对每个数组的大小死规定 个最大值。也就是说,这种程序对结点、单元、边界条件等的最大 数目规定一个上限值,通常,一个典型的问题中,最多只达到一到 两个这种上限值,这样一来,其他矩阵的可用容量就比需要的大, 存储容量就被浪费掉.当然,可以改变上限值的大小,但这样做通 常要修改程序中的好几条维数说明语句和几个子程序,现在讲解 种方法,可以对这些矩阵的存储实行半动态的地址分配.第 步,先确定单独一个向量的维数,其大小应能容纳一般问题所需的 全部矩阵,其次,针对每个所研究的问题,利用控制参数和输入数 据计算每个矩阵的大小。然后,如图2.1的例题所示,定义一套地 址指示码,用来确定所要存的每个矩阵的第一个系数在存储向量 中的位置.用这种方法,用户所需担心的上限值就只有一个,那就 是这个单独存储向量的维数,而通常这个上限值本身又是由用户 所用算机的大八来控制的。只需要更换一张维数卡片就可以修改 现用积木式程序的磁心内存容量,缺点是必须进行一项额外的“簿