自由度号。将此程序稍加扩充就可考虑9种线性约束方程.不论 要处理的是哪种约束方程,分析人员都需输人(这些)常数并标识 (这些)自由度号。标识自由度号的方法是间接地指定该参数所在 处的结点及其局部参数号.方程式中的系数是直接指定的。子程 序1NCEQ针对每类约束的每个方程读入两套数据。这些数据包 括受约束的自由度号的标识(结点号、参数号)以及对应的约束方 程的系数。这个例行程序的输入格式列于书末附录的开头处。 上节已概路说明本程序允许使用3种线性约束方壟。不难将 其扩充为9种(或更多种)线性约束方程。对任一种已知线性约束 方程,都必须定义一个整数数组NDX和一个浮点数组CEQ.这 两个数组的行数相同.当然,行数等于约束中的最大自由度数整 数数组的每一行所包括的是:出现在每一个特定约束方程中的各 结点参数的系统自由度号.浮点数组的行所包括的是:出现在该 约束方程中的对应的一组系数.列数等于结点约束方程的总数 自由度号可通过方程式(11)由输入数据算出,而输入的系数 则需加以修改使得方程中第一个参数的系数为1.例如,一个2 型约束方程AD,+BD=C变成D十aDb,式中a≈B A,b=C/A.这样,对这种类型的每一个方程式,只需要存人两 个整数(j和)和两个浮点数(a和b)即可.一般说来,这两 个数组中的行数等于约束类型的数国,如何利用这些数据,将在 81节讨论 该课题所需要的各种特性,由子程序 INPROP(书末附录)输 人,如果有结点特性,则读入每一结点的结点号和对应的特性与 此类似,若要输入单元的特性,则要读人每个单元的单元号和对应 特性,最后,整个系统的各种各样的杂项特性也要读入。用户也 可以规定结点和单元的特性是均质的,这样在许多间题中,可以 大大减少所需的数据量书末的附录提供了详细的输人指令,以 后还要在实际问题中举例说明这些特性的应用。 在某些实际问题中,初始强迫力向量(系统的列矩阵)的各项 不是零。在这种情况下,分析人员必须将这种非零初始值的作用 31
输入进去。子程序 INVECT将这些作用读入,然后将整个初始 载荷向量打印出来.这个子程序及其对应的输人指令请见附录 在子程序NⅤECT中,每个规定的系数都有一个起识别作用的 参数号和系统结点号附在一起,要将后面这两个号转换成系统的 自由度号,此计算用方程(1.1执行,并编人子程序 DEGPAR中 以备他用, 有非常多的实际问题,其中边界条件并不直接涉及结点参数 通常的情况是:在某个单元的边界的某个特定区段上,有通量穿 越过去,或者有分布力作用.例如在传热问题中,规定热通量的分 量穿过部分边界;而在应力分析问题中,在部分结构表面可能有压 强作用,通常,这些类型的边界条件会对系统矩阵发生作用。这 种作用的汁算,与单元方阵和列阵的计算密切相关。这两种矩阵 在42节和53节中讨论。如何将通量的作用加到系统矩阵中去, 这个问题与72节中提出的方法密切相关。 子程序 INFLUX(连同其输人格式见书末附录)读入每一边 界段的通量型边界条件数据通量作用的实际计算由名为 BFLUX 的子程序执行,此子程序随问题而变,以后还要讨论。如果指定的 边界段上有LBN个结点,而每个结点有NG个参数,则子程 序 BFLUX利用FLUX的NG个分量来计算通量对该边界段上 NFLUX(=LN*NG)个系统自由度的作用。因为 BFLUX中 的实际计算随不同的用途而变,分析人员可自行选择,把指定的通 量分量换算成该边界段的法向分量和切向分量,不非得是坐标方 向的分量。 练习题 1·有些程序能够检查出连续数据输入中的空觖,生成补充数据就可以 填补这种空缺其方法是在与空触两端交接的数据集之间进行线性插值.编 写一个能补充数据的输入子程序,要求如下: a)通过线性插值对所缺坐标进行赋值置定边界代码等于空缺前的最 后一个数值.并且 32·
(b)从与空铁两端交接的单元关联结点表出发,用逐次递增法对所觖单 元关联结点表进行值 2.结构分析可能求对好几种强迫力向量(系统列阵)求解,对INv CT进行修改以虑NRHS个这种向,即将cC扩展成炬形数组,你认 为在控制变量和存储指示码方面会产生什么相应的变化? 3.对二次(或三次)元,最好使被略去的边中(或第三点)坐标位于边界角 点同的直线上。绵写一个例行程序来计算这种坐标.需要改变 INPUT吗 4.在规定特性时,并术逐一规定村料的标号和每种材料的各种特性,后 面的应用实例将说明如何故到这一点。试写出应进行哪些修改才能把这些 特性的输人直按包括进去? 5.对1型结点约束赋值为:结点值是零;这是常有的情况.写出一种 NCEQ把隐含的零值赋省略的1型约束,如有必要,可将1BC或其他量 值包括到自变最表中 6有些程序只许用L型结点边界代码.因此,一个结点的第I号参数 其KoDE(1)是零或1.只有代码为琴的自由度需要有一个方程式标号。编 写一个例行程序来生成-个数组,比方叫iDEQ(NG,M),内容是:对于一 切1≤NG和J≤M,指出第J号结点的第I号参数的方程式标号;若该参 数被指定受1型约束,则其方程式标号IDEQ(I,J)为零 7利用数组1DEQ生成一个单元的位置数组,比如叫LM(NGN,NE), 其中LM(1J,K)所包含的是;第K号单元上第J号局部结点第1号自由 度的方程式标号
第三章单元的预备计算 3.引言 把问题的基本参数和特性输入后,就可以执行某些有用的预 备计算,计算系统方程组半带宽的大小就是重要的-步,为计算 系统方程组所需要的存储量,这个半带宽是必不可少的数据。它 可用来检查继续进行计算的可行性。这种计算要求能识别与典型 单元相联的结点号(单元的关联结点号),这一运算由子程序 LNODES执行。这个子程序从整个系统的单元关联结点表中提 取某特定单元的N个单元关联结点.如图3.1所示,把这N个单 元的关联结点存人一个列矩阵,叫作 LNODE MENSIO LNODE(NJ EM ENT DES【LID: 图3.L子程序 LNODE S 这个初步计算对于程序各部分的簿记管理很重要。运算情况 示于图3.2,一旦(由子程序 LNODES)从输入数据中提出某单 元的单元关联结点,就要对这些结点进行扫描,以确定结点号的最 大差值.把这个差值代人方程(12),以确定与该单元相关的半 常宽,此处并未考虑约束条件的作用.这些初步运算由图3.3的子 程序 ELBAND执行,此子程序是根据图34编制的 确定系统方程组最大半带宽的数值的工作虽然简单但却重 要,这一工作由图35所示的子程序 SYSBAN执行,检查每个单
foNSPACE 结点 结点 边界代码结点坐标 全部单元 的关联结点 图3·2典型网格数据 SUB POUTINE ELBAND (N, NG. I BN LNODEJ 毒,非; EL EH ENT BAN OHI DTH CAL CULAT I ON LNOSET ELE HENPE INC IDENC F A SYHMETRI DIAGONAL 2ciNiMesS f= LNODE【I GO TO 20 LNoE(JNI香1 iBM≤NEM ENO 图3.3子程序 ELBAND 元的半带宽,找出系统中的最大(半带宽)值后予以保留。系统方 程组在总存储量中所占百分比一般很大,当由上述方法求得系统 方程组的半带宽以及知道系统自由度的总数后,就可很容易地确 定这种带状的对称方程组的存储要求,结点参数约束方程可能会 增加系统方程组的半带宽这要根据如何实施这种约束而定 针对所研究的特定问题,在实际生成单元矩阵之前,必须先进 行几项基本运算,为简单起见,假设所研究的问题是线性的,其泛 函是二次式,与每一单元相连的各结点的空间位置坐标是必须要 35·