首页/文章/ 详情

一文搞懂静力超单元方法的公式详细推导,结果一致

2月前浏览519


在前面很多文章中讲到了超单元的应用技巧和方法,其中超单元最重要的价值就是通过缩聚模型自由度来缩短求解时间,接下回顾下超单元的主要理论。

一、超单元方法的概念

什么是超单元法,什么是超单元?
在一个整体模型中,切割出部分模型(关注区域),将切割的区域模型通过模态、矩阵或传递函数等进行表示,同时提取出相应的矩阵或参数,这一过程称为超单元生成(缩聚)。然后在对整体模型进行分析,此时的整体模型包括生成的超单元模型和剩余的部分模型(也称为残余模型),超单元模型即用这些“表示”来替换切割出来的部分模型;进而将此两部分模型组合成整体模型进行相应的工况分析。
这样的一种操作方法或建模方法,我们称之为超单元法,或者叫直接矩阵输入法;这些“表示”即为所谓的超单元。而整体模型除去超单元的部分称为残余结构(剩余结构)。将超单元与残余结构组合进行求解,得到相应的工况结果。换句话讲,即将一个规模较大的模型分解成动态变化部分(或剩余模型)和固定部分(即超单元模型),此时进行整体的求解时可极大的缩短求解时间,进而提升分析效率,可以在有限的时间内做更多的优化分析研究。

图1 超单元模型的应用流程

二、超单元方法的意义

为什么要采用超单元法?
1、大幅度降低计算时间、提升分析效率。无论是采用哪种超单元,相比于没有超单元的直接有限元计算方法,整体模型的分析速度及求解效率都能得到大幅提升。
2、利用有限的计算资源完成大规模分析。超单元可以大幅度降低整体模型的自由度,所以计算量相对更低,可以用来做一些更为复杂的分析。同时可以在有限的时间内做更多的study。
3、避免模型错误带来的额外风险。整体模型中出现错误,需要对整个模型进行重新处理。但是如果超单元出现问题,仅需要对超单元进行修改。
4、实现模块化处理。每个超单元都需要单独切割出现进行独立的处理,所以可以实现模型的模块化。
5、实现模型的保密。因为超单元不显示具体的信息,仅仅是矩阵或参数表征,所以如果模型可以实现关键信息的保密。
6、平台化。可以实现不同模型之间的平台化,通用化等

图2 超单元的意义及优势

三、超单元的理论方程

1.1 动力学方程
对于超单元来讲,其动力学方程可以写成以下形式。
[M]{u}+[c]{u}+[K]{u}={F}+{R} (1)
将该方程的自由度通常分为两部分,即超单元内部自由度及界面(或连接)自由度。u0就是我们内部迭代的自由度,ua是和外部连接的边界(自由度)。
图3 超单元自由度的分类
则进一步可以将方法(1)分解为以下形式:

(2)

其中,{u0}为内部自由度;{ua}为外部自由度,将(2)式展开可以得到:

(3)

(4)

对于静力学问题,所有的[M]和[c]矩阵均为0,即方程(3)可以简化为:

(5)

可以用{ua}表示{u0}为:

(6)

将(6)代入(4),可得到:

(7)

即将{Ua}前部分采用 表示,等号右边第一项采用 表示,即方程(7)可以表示如下:

(8)

各超单元的{ua}是整个结构的残余结构的分析自由度{uA}的一部分。可以按照一般单元装配成总体矩阵相同的方式,由各超单元的边界矩阵装配得到残余结构的矩阵。然后求解出{uA},再回到各超单元进行数据恢复,先从{uA}中分出{ua},再由方程(6)得到超单元的{u0}与{ua}一起构成超单元的完整自由度集。
在得到超单元各节点的位移之后,可以计算如应变、应力、能量等各种所需的物理量。
1.2 静力缩聚(Guyan缩减)
超单元中的静力缩减一般采用GUYAN缩减,即静力缩减与质量和阻尼矩阵无关,只与位移和载荷向量有关,其原理与上述相同。
对于静力学问题可以表述为:

      (9)

将整个自由度分割成o(内部自由度)和a(外部或界面自由度)如式(10)所示,其中带横杠表示矩阵来自整体矩阵一部分,即界面矩阵。

     (10)

将式(10)第一行展开,并乘以 ,可得式(11)。

 (11)

(1)定义 为转换边界
(2)定义 为固定边界位移
(3)定义 为自由边界位移
(4)整体的内部位移为固定位移和自由边界位移之和,即 展开式(10)第二行可得

 (12)

代入式(12)
(1)定义 为转换边界(界面)刚度矩阵。
(2)定义 为转换边界(界面)载荷矩阵,通过转换可求得界面自由度位移,如式(13)所示。

(13)

1.3 静力缩聚方程的另一种形式
    直接将式(10)进行展开,可得如下形式
(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,即为静力超单元缩聚的由来。

需要更多详情及代码请点击阅读原文。


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


来源:CAE之家
静力学通用MATLAB理论装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-08
最近编辑:2月前
CAE之家
硕士 | CAE仿真负责人 个人著作《汽车NVH一本通》
获赞 1179粉丝 6682文章 1049课程 20
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈