齐次线性方程的形式为
| (912) |
变量
可以是任意整数,即线性方程可以包含任意多项。为了存储这些方程(也称为MPC),使用一维场ipompc和包含三列的二维场nodempc。对于MPC i,场ipompc的第i行包含场nodempc中MPC i定义开始的行:如果
则MPC第一项的自由度对应于节点中的方向
中的
。该项的系数存储在
中。
的值
是场nodempc中包含MPC下一项信息的行。这一直持续到
,这意味着场nodempc第k行中的项是MPC i的最后一项。
例如,考虑以下MPC:
| (913) |
其中
表示节点编号10的全局x方向的位移,其他项类似。假设此MPC是方程编号
。那么该方程的存储方式可能如图168所示。
MPC中的第一项是特殊的,因为它被视为从属项。在有限元计算中,相应于这种从属项的自由度被表示为其他项的函数,并从方程组中移除。因此,不能对从属项的自由度施加其他约束。MPC从属项的自由度以与SPC类似的方式进行编目。为此,使用一维场ikmpc按数值顺序包含从属自由度,以及包含相应MPC编号的一维场ilmpc。这些场的含义与ikboun和ilboun完全类似,详细信息请参阅上一节。
此外,MPC被标记。MPC i的标签存储在
中。这是一个由20个字符组成的单词组成的一维场(FORTRAN中:character*20)。该标签用于表征MPC的类型。目前使用以下类型:
MEANROT、PLANE和STRAIGHT MPC由*MPC关键词卡触发,RIGID MPC由*RIGID BODY关键词卡触发,CYCLIC MPC由*CYCLIC SYMMETRY MODEL卡触发。SUBCYCLIC MPC不是由用户显式触发的,而是由程序内部确定的。
请注意,非齐次MPC可以通过引入新的自由度(引入新的虚拟节点)并通过SPC将非齐次项分配给它来简化为齐次MPC。非线性MPC可以通过线性化转化为线性MPC [24]。在CalculiX中,这目前针对PLANE MPC、STRAIGHT MPC、USER MPC和RIGID BODY定义完成。请注意,局部坐标中的SPC简化为线性MPC。
最后,还有变量icascade。它用于检查MPC自上次迭代以来是否发生了变化。这可能发生在非线性MPC(例如系数有时为零有时不为零)或接触条件下。尚未涵盖这一点。迄今为止,icascade假定取值为零,即MPC预计不会在迭代之间变化。(待续)