1、ANSYS 中的超单元摘自 htbbzzg 的博客,网易从 8.0 版开始,ANSYS 中增加了超单元功能,本文通过一些实际例子,探讨了 ANSYS 中超单元的具体使用。1. 使用超单元进行静力分析根据 ANSYS 帮助文件,使用超单元的过程可以划分为三个阶段 (称为Pass):(1) 生成超单元模型 (Generation Pass)(2) 使用超单元数据 (Use Pass)(3) 扩展模型 (Expansion Pass)下面以一个例子加以说明:一块板,尺寸为 20402,材料为钢,一端固支,另一端承受法向载荷。首先生成原始模型 se_all.db,即按照整个结构进行分析,以便后面与超单
2、元结果进行比较:首先生成两个矩形,尺寸各为 202。然后定义单元类型 shell63;定义实常数 1 为: 2 (板厚度)。材料性能:弹性模量 E=201000;波松比 =0.3 ;密度 =7.8e-9 ;单位为 mm-s-N-MPa。采用边长 1 划分单元;一端设置位移约束 all,另一端所有 (21 个) 节点各承受 Z 向力 5。计算模型如下图:静力分析的计算结果如下:为了后面比较的方便,分别给出两个 area 上的结果:超单元部分,按照上述步骤操作如下:(1) 生成超单元选择后半段作为超单元,前半段作为非超单元 (主单元)。按照 ANSYS 使用超单元的要求,超单元与非超单元部分的界面
3、节点必须一致 (重合 ),且最好分别的节点编号也相同,否则需要分别对各节点对建立耦合方程,操作比较麻烦。实际上,利用 ANSYS 中提供的 mesh200 单元,对超单元和非超单元的界面实体,按照同一顺序,先于所有其它实体划分单元,很容易满足界面节点编号相同的要求。对于多级超单元的情况,则还要结合其它操作 (如偏移节点号等) 以满足这一要求。对于本例,采用另一办法,即先建立整个模型,然后再划分超单元和非超单元。即:将上述模型分别存为 se_1.db (超单元部分 ) 和 se_main.db (非超单元部分) 两个文件,然后分别处理。对于 se_1.db 模型,按照超单元方式进行处理。由于模型
4、及边界条件已建立,只需删除前半段上的划分,结果就是超单元所需的模型。然后直接进入创建超单元矩阵的操作,首先说明一下创建超单元矩阵的一般步骤:A 进入求解模块:命令:/SoluGUI:Main menu - SolutionB 设置分析类型为 “子结构或部件模态综合 “命令:ANTYPEGUI :Main menu - Solution - Analysis Type - New Analysis选择 Substructuring/CMS (子结构或部件模态综合)C 设置子结构选项命令:SEOPTGUI: Main menu - Solution - Analysis Type - Analys
5、is Options设置内容有:方程求解方法 (波前法 默认,或稀疏矩阵法 推荐);要求生成的矩阵,可以是:刚度矩阵;刚度和质量矩阵;刚度、质量和阻尼矩阵 (稀疏矩阵法不能生成阻尼矩阵);要求输出到 output 窗口的矩阵 (矩阵和载荷矢量或仅输出载荷矢量,默认不输出) ;扩展超单元的方法 (后续操作时,对本超单元扩展时使用的方法 ),默认是回代法(backsubstitution method),需要存储主自由度的三角矩阵 (波前法为sebname.tri,稀疏矩阵法为 sename.LNxx);完全求解方法 (Full resolve method 不存储任何三角矩阵 )。随着问题规模加
6、大,三角矩阵可能很大;完全求解方法不需要三角矩阵,但花费时间较长,且不能重启动子结构分析 (对于不同的载荷矢量 )。质量矩阵公式:是否使用集中质量矩阵,推荐用一致质量矩阵。D 选择主自由度命令:MGUI: Main menu - Solution - Master DOFs - User Selected - Define主自由度是超单元和其它单元之间的界面,必须确保将超单元与其它单元的界面上的所有节点自由度定义为主自由度。假如模型中除了超单元外没有其它单元,也必须定义主自由度。在将超单元用于动力分析时,主自由度的动力特性应能代表超单元的动力特性。对于在使用超单元时将被定义为约束或施加载荷的节
7、点,应该定义为主自由度 (如果它们也位于当前的超单元中)。对于大挠度问题或使用 SETRAN 命令的情况,主节点的 6 个自由度都应作为主自由度。本例中选择超单元外端面上所有节点的所有自由度作为主自由度。一般情况均推荐选择相应主节点的 All 自由度。E 在超单元上施加载荷作为超单元的结构可以施加任意载荷,但要记住:程序会生成一个载荷矢量,其中包含了施加的所有载荷。对于每个载荷步,在超单元文件中写一个等效的载荷矢量,最多可以写 31 个载荷矢量。在超单元结构中可以使用非零位移约束,并作为载荷矢量的一部分。求解后对超单元进行结果扩展时,对于有非零位移的载荷步,其数据库必须匹配,否则需再次施加非零
8、位移约束后再进行结果扩展。可以在使用超单元时再定义载荷和约束,此时应注意将相应节点选为主自由度节点。同样也可以在使用超单元时再定义惯性力 (加速度或角速度 ),但在超单元部分要生成质量矩阵。如果在使用超单元时需要对其进行旋转,推荐这样做,因为超单元的载荷矢量是随着超单元一起转动的。注意:如果生成质量矩阵,推荐在使用超单元时再施加约束,但要注意将约束节点选为主自由度。如果要施加加速度载荷,建议再生成超单元时施加,而不要施加到简缩的质量矩阵上。对于有大转动的问题,推荐在使用超单元时再施加约束。F 设置载荷步选项在生成超单元的阶段,唯一有效的载荷步选项是设置阻尼。以上内容设置完毕,存储模型并求解。对
9、于本例,首先选择新的求解类型:设置分析选项:定义主自由度:然后将模型存盘并求解。求解后将生成超单元文件 se_1.sub。(2) 使用超单元使用超单元的过程是:A 建立新模型对于本例,将 se_1.db 文件存盘,点击 File - Clear 扩展超单元的方法 (后续操作时,对本超单元扩展时使用的方法 ),采用默认的回代法(backsubstitution method)。质量矩阵公式:采用推荐的一致质量矩阵。D 选择主自由度命令:MGUI: Main menu - Solution - Master DOFs - User Selected- Define选择超单元外端面上所有节点的所有自
10、由度作为主自由度。E 在超单元上施加载荷对于模态分析不需施加载荷。F 设置载荷步选项对于模态分析,无需载荷步设置。以上内容设置完毕,存储模型并求解,求解后将生成超单元文件se_m1.sub。(2) 使用超单元使用超单元的过程是:A 建立新模型对于本例,将 se_m1.db 文件存盘,点击 File - Clear & Start New . 菜单项,修改 Jobname 为 se_m2,Resume 模型。此时读入的模型仍是个完整的模型,在前处理的 Mesh 下,清除后半段上的网格,得到非超单元部分的有限元模型。为了使用超单元,同样还需要定义单元类型 Matrix50 (超单元)。在对非超单元
11、部分建模时,必须确保其界面节点与超单元模型的界面节点精确匹配且最好节点编号也完全一致。对于本例,由于超单元模型与非超单元模型都是由同一个整体模型修改而来,故其界面节点的位置和编号都是完全相同的。B 读入超单元矩阵首先设置单元属性为 Superelement:命令: TypeGUI: Main menu - Preprocessor - Modeling - Create - Elements - Elem Attributes - Type - Superelements然后读入超单元矩阵 se_1.sub:命令: SEGUI: Main menu - Preprocessor - Modeling - Create - Elements - Superelements - From .SUB File在 Jobname of matrix file 中输入 se_m1,然后 OK:读入 se_m1.sub 文件,自动与非超单元部分组装到一起。可以通过 Utility 菜单的 List - Other - Superelem Data 列出超单元se_m1 的数据:求解后存盘,再进行后处理:下表列出了整个结构和超单元方法求出的前 20 阶频率: