在前面很多文章中讲到了超单元的应用技巧和方法,其中超单元最重要的价值就是通过缩聚模型自由度来缩短求解时间,接下回顾下超单元的主要理论。
一、超单元方法的概念
在一个整体模型中,切割出部分模型(关注区域),将切割的区域模型通过模态、矩阵或传递函数等进行表示,同时提取出相应的矩阵或参数,这一过程称为超单元生成(缩聚)。然后在对整体模型进行分析,此时的整体模型包括生成的超单元模型和剩余的部分模型(也称为残余模型),超单元模型即用这些“表示”来替换切割出来的部分模型;进而将此两部分模型组合成整体模型进行相应的工况分析。这样的一种操作方法或建模方法,我们称之为超单元法,或者叫直接矩阵输入法;这些“表示”即为所谓的超单元。而整体模型除去超单元的部分称为残余结构(剩余结构)。将超单元与残余结构组合进行求解,得到相应的工况结果。换句话讲,即将一个规模较大的模型分解成动态变化部分(或剩余模型)和固定部分(即超单元模型),此时进行整体的求解时可极大的缩短求解时间,进而提升分析效率,可以在有限的时间内做更多的优化分析研究。图1 超单元模型的应用流程
二、超单元方法的意义
1、大幅度降低计算时间、提升分析效率。无论是采用哪种超单元,相比于没有超单元的直接有限元计算方法,整体模型的分析速度及求解效率都能得到大幅提升。2、利用有限的计算资源完成大规模分析。超单元可以大幅度降低整体模型的自由度,所以计算量相对更低,可以用来做一些更为复杂的分析。同时可以在有限的时间内做更多的study。3、避免模型错误带来的额外风险。整体模型中出现错误,需要对整个模型进行重新处理。但是如果超单元出现问题,仅需要对超单元进行修改。4、实现模块化处理。每个超单元都需要单独切割出现进行独立的处理,所以可以实现模型的模块化。5、实现模型的保密。因为超单元不显示具体的信息,仅仅是矩阵或参数表征,所以如果模型可以实现关键信息的保密。6、平台化。可以实现不同模型之间的平台化,通用化等
三、超单元的理论方程
[M]{u}+[c]{u}+[K]{u}={F}+{R} (1)将该方程的自由度通常分为两部分,即超单元内部自由度及界面(或连接)自由度。u0就是我们内部迭代的自由度,ua是和外部连接的边界(自由度)。
(2)
其中,{u0}为内部自由度;{ua}为外部自由度,将(2)式展开可以得到:
(3)
(4)
对于静力学问题,所有的[M]和[c]矩阵均为0,即方程(3)可以简化为:
(5)
(6)
(7)
即将{Ua}前部分采用
表示,等号右边第一项采用
表示,即方程(7)可以表示如下:
(8)
各超单元的{ua}是整个结构的残余结构的分析自由度{uA}的一部分。可以按照一般单元装配成总体矩阵相同的方式,由各超单元的边界矩阵装配得到残余结构的矩阵。然后求解出{uA},再回到各超单元进行数据恢复,先从{uA}中分出{ua},再由方程(6)得到超单元的{u0}与{ua}一起构成超单元的完整自由度集。在得到超单元各节点的位移之后,可以计算如应变、应力、能量等各种所需的物理量。超单元中的静力缩减一般采用GUYAN缩减,即静力缩减与质量和阻尼矩阵无关,只与位移和载荷向量有关,其原理与上述相同。
(9)
将整个自由度分割成o(内部自由度)和a(外部或界面自由度)如式(10)所示,其中带横杠表示矩阵来自整体矩阵一部分,即界面矩阵。
(10)
将式(10)第一行展开,并乘以
,可得式(11)。
(11)
(1)定义
为转换边界(2)定义
为固定边界位移(3)定义
为自由边界位移(4)整体的内部位移为固定位移和自由边界位移之和,即
展开式(10)第二行可得
(12)
将
代入式(12)(1)定义
为转换边界(界面)刚度矩阵。(2)定义
为转换边界(界面)载荷矩阵,通过转换可求得界面自由度位移,如式(13)所示。
(13)
(10)
由此可知,要求解界面点Ua的位移可通过求解内部节点Uo的位移得到,即通过将矩阵的自由度进行缩减,即降维。当求解得到uo后,再通过式(16)可得到界面点的位移Ua结果。
1.4 案例说明
根据下式可知,要求解Uo需要对Kaa求逆,然后再求解得到相应变量。

如:某泊松方程系数矩阵有如形式

Fo=[0;-1.1111;-1.1111;0],Fa=[-2.2222;-2.2222;-2.2222]
在Matlab中实现如下:
1)Matlab中的矩阵求逆可采用inv函数
2)Matlab中的矩阵转置可采用Koa.'或transpose(Koa)
3)Matlab中的矩阵求和和乘积与常规一样,但是当对两个矩阵进行加减运算时,需要确保这两个矩阵具有相同的维度,即它们的行数和列数必须相同。
4)在Matlab中每一列的元素用空格或逗号分隔,而行与行之间则用分号分隔。
4)首先输入Koo、Koa和Kaa的矩阵,同时求Koa的转置得到Kao,以及Kaa的逆矩阵Kaa_1,如下所示。
Koo=[1 0 0 0;-0.1 -1.4 -0.1 0;0 -0.1 -1.4 -0.1;0 0 0 1]
Koa=[0 0 0;0.8 0.8 0;0 0.8 0.8;0 0 0]
Kaa=[-1.6 0 0;0 -1.6 0;0 0 -1.6]
Kao=Koa.'
Kao=[0 0.8 0 0;0 0.8 0.8 0;0 0.8 0 0]
Kaa_1=inv(Kaa)=[-0.6250 0 0;0 -0.6250 0;0 0 -0.6250]
5)其次输入
Fo=[0;-1.1111;-1.1111;0],Fa=[-2.2222;-2.2222;-2.2222]
6)根据输入的各参数求解出Kre和Fre,即
Kre=Koo-Koa*Kaa_1*Kao,得到
Kre = [1.0000 0 0 0;-0.1000 -0.6000 0.3000 0;0 0.3000 -0.6000 -0.1000;0 0 0 1.0000]
Fre=Fo-Koa*Kaa_1*Fa,得到
Fre =[0;-3.3333;-3.3333;0]
7)最后根据缩聚公式进行求解得到Uo,即
Kre_1=inv(Kre),

Uo=Kre_1*Fre

8)根据Uo求解出Ua,即
Ua=Kaa_1*(Fa-Kao*Uo)

9)不采用超单元方法,即直接通过对式(14)求解得到Ua和Uo,即
(14)
Kcc=inv([Koo Koa;Kao Kaa]),得到

再求解{Uo;Ua},即得到
Ud=Kcc*[Fo;Fa]

即Uo=[0;11.1110;11.1110],Ua=[6.9444;12.4999;6.9444]
结论:该结果与超单元缩聚后结果一致,即通过对系统刚度矩阵缩聚可以快速得到内部节点位移Uo,进而得到界面节点Ua,即为静力超单元缩聚的由来。
需要更多详情及代码请点击阅读原文。

【免责声明】本文来自笔记,版权归原作者所有,仅用于学习等,对文中观点判断均保持中立,若您认为文中来源标注与事实不符,若有涉及版权等请告知,将及时修订删除,谢谢大家的关注!