首页/文章/ 详情

使用超单元进行拓扑优化-OS-T:2070

16小时前浏览53
您的每一次点赞和在看,都是对我工作的认可和鼓励,更是激励我不断前行、持续更新内容的强大动力。您的支持是我不懈追求卓越和创新的源泉。
在产品开发中,我们经常面临需要对复杂结构进行优化设计的挑战。这时,使用超单元(Superelement)技术就显得非常必要,使用超单元的必要性有以下几点:
1. 复杂结构简化:对于包含数百万甚至更多自由度的复杂结构,直接进行优化分析计算代价高昂,超单元可以将复杂结构中的指定部分预先计算并简化,从而简化整个优化过程。
2. 计算效率:在进行拓扑优化时,需要进行多次迭代计算。超单元技术通过减少每次迭代所需的计算量,显著提高了计算效率。
3. 设计灵活性:超单元允许设计师专注于关键区域的设计,而不必从头开始处理整个结构,这增加了设计的灵活性。
使用超单元的优势:
1. 减少计算时间:通过减少模型的自由度,超单元可以显著减少所需的计算时间。
2. 降低硬件要求:较小的模型尺寸意味着需要的计算资源更少,降低了对硬件的要求。
3. 提高设计迭代速度:设计师可以更快地测试不同的设计概念,加速产品开发流程。
4. 优化复杂区域:超单元使得对复杂或关键区域进行详细的优化成为可能,而不必担心整个模型的计算负担。
5. 更好的设计洞察:通过超单元技术,设计师可以更深入地了解结构性能,从而做出更明智的设计决策。
超单元技术为复杂结构的优化设计提供了一种高效、灵活且实用的解决方案。在本教程中,我们将通过一个简单的悬臂梁有限元模型示例,展示如何应用静态缩减法(static Reduction)来简化有限元模型。此外,您还将学习如何对这一简化后的模型进行拓扑优化。
在开始之前,请将本教程中使用的文件复 制到您的工作目录。
http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-2070/cantilever_full.zip
图1.无缩减的全悬臂梁模型优化问题可以表示为:
Objective:最小化柔度。
Constraints:可设计体积的上限限制为40%。
Design variables:设计空间中每个Element的密度。
图2.全悬臂梁模型的拓扑优化结果
在这个过程中,我们将会使用静态缩减方法,它允许我们从整体模型中提取并简化特定的部分,这些部分在OptiStruct中被称为超单元。为了定义这些超单元的边界自由度,我们需要使用ASET或ASET1关键字。这些关键字指定了超单元与模型其余部分连接的自由度集 合,也就是那些将被直接矩阵输入所替代的自由度。
值得注意的是,随着ASET定义数量的增加,静态缩减的准确性会提高,但同时计算成本也会增加。例如,尽管静态缩减可以减小需要求解的矩阵的规模,但如果缩减后的矩阵(DMIG)非常稠密,那么求解时间可能会超过求解原始模型的稀疏矩阵的时间。因此,合理选择ASET定义对于利用DMIG进行有效分析至关重要。
为了防止缩减矩阵过于密集,应仔细选择ASET条目(见下图),而不是为设计空间和非设计空间之间的所有边界节点创建ASET条目。由于本教程使用的问题体积较小,因此选择ASET条目可能不会影响求解时间。
图3.ASET用于悬臂梁模型

一、启动HyperMesh并设置OptiStruct用户配置文件

1.启动HyperMesh。
此时将打开User Profile对话框。
2.选择OptiStruct,然后单击OK。
这将加载用户配置文件。它包括相应的模板、宏菜单和导入阅读器,将HyperMesh的功能缩减为与生成OptiStruct模型相关的功能。

二、打开模型

1.单击File>Open>Model
2.选择保存到工作目录的cantilever_full.hm文件。
3.单击Open
 cantilever_full.hm数据库将加载到当前HyperMesh会话中,替换任何现有数据。

三、生成超单元

3.1创建ASET Load Collector
1.创建Load Collector 。    
a)在Model Browser中,右键单击并从上下文菜单中选择Create>Load Collector
默认Load Collector显示在Entity Editor中。
b)对于Name ,输入Asets
c)将Card Image设置为None
2.创建约束。
a)在Analysis页面中,单击constraints面板。
b)选择create子面板。
c)使用节点选择器,选择边界节点。
图4.
d)选择所有dof。
选择到的Dof将被分配给ASET。dof1、2 和3 是x、y和z平移dof。dof4、5 和6 是x、y和z旋转dof。
e)点击Load Type=并选择ASET
f)单击create
3.单击return转到主菜单。
3.2删除后续优化中保留的Element
将仅为那些将被折减的单元(超单元)生成折减刚度矩阵和载荷矢量。因此,需要创建一个新模型,该模型仅引用超单元零件以及直接应用于该零件的载荷和边界条件。
1.F2打开Delete面板。
2.将实体选择器设置为elems,然后单击elems>by window
3.图5 中指示的Element周围绘制一个窗口。    
图5.
4.单击delete entity
5.单击return转到主菜单。
3.3定义一个参数以将约简矩阵写出到外部文件
 激活矩阵保存过程需要PARAM,EXTOUT批量数据输入。
如果没有此参数,运行将照常进行。此参数有两个选项:DMIGPCH,它将ASCII格式的矩阵保存到.pch文件,以及DMIGBIN,它将矩阵以二进制格式保存到.dmg文件。DMIGPCH用于本教程。
1.在Analysis页面上,单击control cards面板。
2.Card Image对话框中,单击PARAM
3.选择EXTOUT
4.在卡片图像顶部的EXTOUT下,选择DMIGPCH。
5.单击return退出PARAM。
6.单击return返回主菜单。

四、保存数据库

1.在菜单栏中,单击File>Save As>Model
2.Save As对话框中,输入cantilever_dmig.hm作为文件名,并将其保存到您的工作目录中。

五、提交作业

1.在Analysis页面中,单击OptiStruct面板。    
图6.访问OptiStruct面板
2.单击save as
3.Save As对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入cantilever_dmig
对于OptiStruct求解器模型,建议使用.fem扩展名。
4.单击Save
input file字段显示在Save As对话框中指定的文件名和位置。
5.将导出选项切换设置为all
6.将run options切换设置为analysis
7.将内存选项切换设置为memory default
8.单击OptiStruct启动OptiStruct作业。
如果作业成功,则新的结果文件应位于写入cantilever_dmig.fem的目录中。cantilever_dmig.out文件是查找错误消息的好地方,如果存在任何错误,这些错误消息可以帮助调试输入模型。
写入目录的默认文件为:
cantilever_dmig.out:OptiStruct输出文件,包含有关文件设置的特定信息、优化问题的设置、运行所需的RAM和磁盘空间量的估计值、每次优化迭代的信息以及计算时间信息。查看此文件是否有警告和错误。
cantilever_dmig.stat:分析过程摘要,提供分析过程中每个步骤的CPU信息。
cantilever_dmig_AX.pch:缩减矩阵(DMIG) 文件。
矩阵以与DMIG批量数据输入相同的格式写入.pch文件。它们由单个标题条目和一个或多个列条目定义。默认情况下,刚度矩阵的名称为KAAX,质量为MAAX,载荷为PAX。由于本教程中未使用质量矩阵,因此不会将其写入.pch文件。
I/O选项条目DMIGNAME提供对矩阵名称的控制。

六、清除数据库    

在菜单栏中,单击File>New
现有HyperMesh数据库将被清除。

七、在模型中引用超单元

7.1打开模型
1.单击File>Open>Model
2.选择保存到工作目录的cantilever_full.hm文件。
3.单击Open
 cantilever_full.hm数据库将加载到当前HyperMesh会话中,替换任何现有数据。
7.2删除Superelement Reduced部分DMIG out
由于超单元部分的矩阵将被DMIG替换,因此应删除节点和单元的批量数据条目,以及超单元中的所有荷载和边界条件。
1.F2打开Delete面板。
2.将实体选择器设置为elems,然后单击elems>by window
3.在图7 中指示的Element周围绘制一个窗口。
图7.
4.单击delete entity
5.单击return转到主菜单。
7.3使用DMIG设置拓扑优化
1.在Analysis页面上,单击control cards面板。
2.定义INCLUDE_BULK控制卡。
a)Card Image对话框中,单击INCLUDE_BULK
b)在Include字段中,输入文件名cantilever_dmig_AX.pch
简化矩阵(DMIG) 将包含在OptiStruct求解器模型中。这里假设您假设拓扑优化将在与cantilever_dmig_AX.pch文件相同的文件夹中运行。如果您计划在其他文件夹中运行它,请定义此文件的完整路径。
c)单击return退出INCLUDE_BULK控制卡。    
3.定义K2GG控制卡。
a)单击K2GG
b)在K2GG= 字段中,输入KAAX
这指定了必须使用名为KAAX的折减刚度矩阵(存储在cantilever_dmig_AX.pch文件中)。
c)单击return退出K2GG控制卡。
4.定义P2G控制卡。
a)单击P2G
b)在P2G= 字段中,输入PAX
c)点击return退出P2G控制卡。
5.单击return转到主菜单。

八、设置优化

8.1创建Topology Design variables
1.在Analysis页面中,单击optimization
2.单击topology
3.选择create子面板。
4.在desvar= 字段中,输入topo
5.将type: 设置为PSHELL
6.使用props选择器,选择design
7.单击create
8.更新设计变量的参数。
a)选择parameters子面板。
b)将minmemb关闭为mindim=,然后输入1.2
c)单击update
9.单击return
8.2创建优化响应
1.在Analysis页面中,单击optimization
2.单击Responses
3.创建体积分数响应。
a)在responses= 字段中,输入Volfrac
b)在响应类型下方,选择volumefrac
c)将区域选择设置为totalno regionid
d)单击create
4.创建柔度响应。    
1)在response= 字段中,输入Compl
2)在响应类型下方,选择compliance
3)将区域选择设置为totalno regionid
4)单击create
5.单击return返回Optimization面板。
8.3创建设计约束
1.单击dconstraints面板。
2.在constraint= 字段中,输入VFrac
3.单击response =并选择Volfrac
4.选中upper bound旁边的框,然后输入0.4
5.单击create
6.单击return返回Optimization面板。
8.4定义目标函数
1.单击objective面板。
2.验证是否选择了min
3.单击response=并选择Compl
4.使用loadsteps选择器,选择step
5.单击create
6.单击return两次以退出Optimization面板。

九、保存数据库

1.在菜单栏中,单击File>Save As>Model
2.Save As对话框中,输入cantilever_opti.hm作为文件名,并将其保存到您的工作目录中。

十、运行优化

1.在Analysis页面中,单击OptiStruct
2.单击save as
3.Save As对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入cantilever_opti
对于OptiStruct求解器模型,建议使用.fem扩展名。
4.单击Save
input file字段显示在Save As对话框中指定的文件名和位置。
5.将导出选项切换设置为all
6.将run options切换设置为optimization
7.将内存选项切换设置为memory default    
8.单击OptiStruct运行优化。
作业完成时,窗口中会显示以下消息:
OPTIMIZATION HAS CONVERGED.
FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).
如果存在错误消息,OptiStruct还会报告错误消息。文件cantilever_opti.out可以在文本编辑器中打开,以查找有关任何错误的详细信息。此文件将写入与.fem文件相同的目录。
9.单击Close
写入run目录的默认文件包括:
cantilever_opti.hgdata:包含目标函数数据、百分比约束违例和每次迭代的约束的HyperGraph文件。
cantilever_opti.HM.comp.tcl:HyperMesh命令文件,用于根据元件的密度结果值将元件组织成元件。此文件仅用于OptiStruct拓扑优化运行。
cantilever_opti.HM.ent.tcl:HyperMesh命令文件,用于根据Element的密度结果值将Element组织成实体集。此文件仅用于OptiStruct拓扑优化运行。
cantilever_opti.html:HTML报告,给出问题表述的摘要和最终迭代的结果。
cantilever_opti.oss:OSSmooth文件,默认密度阈值为0.3。您可以编辑文件中的参数以获得所需的结果。
cantilever_opti.out:OptiStruct输出文件,包含有关文件设置的特定信息、优化问题的设置、运行所需的RAM和磁盘空间量的估计值、所有优化迭代的信息以及计算时间信息。查看此文件,了解在处理cantilever_opti.fem文件时标记的警告和错误。
cantilever_opti.res:HyperMesh二进制结果文件。
cantilever_opti.sh:Shape文件进行最终迭代。它包含分析中每个单元的材料密度、空隙尺寸参数和空心方向角。此文件可用于重新启动运行。
cantilever_opti.stat:包含有关用于完整运行的CPU时间的信息,以及用于读取输入模型、组装、分析、收敛等的CPU时间的分解。
cantilever_opti_des.h3d:包含优化结果的HyperView二进制结果文件。
cantilever_opti_s#.h3d:包含线性static分析的HyperView二进制文件,依此类推。

十一、查看结果    

对于所有迭代,单元密度结果将从OptiStruct输出到cantilever_opti_des.h3d文件。此外,默认情况下,第一次和最后一次迭代的每个SUBCASE的位移和应力结果将输出到cantilever_opti_s#.h3d文件中,其中# 指定SUBCASE ID。
11.1查看密度结果的云图
1.在OptiStruct面板中,单击HyperView
2.在Results工具栏中,单击 以打开Contour面板。
3.将Result type设置为Element Densities[s]Density。
4.将Averaging method设置为Simple
5.单击Apply以显示密度云图。
6.在Animation工具栏上,单击 以从Simulation列表中选择最后一个迭代。
生成的云图表示由施加的载荷和边界条件产生的单元密度字段。
图8.
11.2查看单元密度的ISO值图
等值图解提供有关单元密度的信息。Iso值保留等于和高于特定密度阈值的所有Element。对于具有实体设计区域的模型,此特征成为分析密度结果的重要工具。
1.在Results工具栏中,单击 以打开ISO Value面板。
2.将Result type设置为Element Densities
3.将Show values设置为Above
4.单击Apply
5.在Clipped geometry下,选择FeaturesTransparent
6.更改密度阈值。
a).在Current value字段中,输入0.3
b).在Current value下,移动滑块。
当您更新密度阈值时,模型视窗中显示的Iso值会以交互方式更新。使用此工具可以更好地了解OptiStruct中的材料布局和载荷路径。
图9.
             


来源:TodayCAEer
OptiStructHyperMeshHyperViewSTEPS拓扑优化ADS材料单元技术控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-22
最近编辑:16小时前
TodayCAEer
本科 签名征集中
获赞 18粉丝 28文章 249课程 0
点赞
收藏
作者推荐

OptiStruct的 .fem 文件格式及其应用案例

前面介绍了这么多分析设置的方法,忽略了对于fem文件的解释,OptiStruct模型文件以 .fem 为扩展名,是一种ASCII编码的文本文件。这种文件格式包含了所有的模型信息,包括节点、单元、材料属性、载荷和边界条件等。1. .fem 文件的组成 .fem 文件主要分为三个部分:I/O部分、Subcase部分和Bulk Data部分。 1.1 I/O部分I/O部分负责全局控制,包括结果输出的类型、格式、频率,以及运行的类型(如模型检查、分析、超单元生成、优化或重启动)等。例如,可以指定输出文件的类型(如位移、应力、应变)和输出格式(如 H3D 、 OUTPUT2 等)。1.2 Subcase部分Subcase部分设置工况信息,决定在一个Subcase中使用哪些载荷和边界条件,并控制该工况的结果输出类型、频率、优化的目标和约束等。例如,可以指定分析类型为静力分析,并引用特定的载荷和约束编号。1.3 Bulk Data部分Bulk Data部分包含除了I/O和Subcase部分之外的所有有限元模型信息,如求解控制参数、节点编号及坐标、单元编号和每个单元对应的节点信息、材料参数、截面属性、坐标系定义、详细的约束及载荷定义等。所有这些信息没有先后顺序要求。2. .fem 文件的基本格式 .fem 文件中, $ 、 // 、 # 为注释符号,以这些符号开头的行都会被OptiStruct的读取过程所忽略。文件可分为长格式、短格式和自由格式三种,一行的默认长度为80个字符。3. INCLUDE 的应用案例 INCLUDE 指令在 .fem 文件中非常有用,它允许用户将一个文件的内容引用到另一个文件中。这在处理大型模型或需要重复使用相同设置的情况下非常有用。例如在整车NVH分析中,整车模型,分为车身(含声腔)与底盘两部分。首先运用CMS对车身模型进行缩聚,生成.h3d格式的CMS超单元。通过在头文件的 .fem 文件中,使用 INCLUDE 指令来引入车身和底盘的模型文件:INCLUDE "Body.fem"INCLUDE "Chasis.fem"通过这种方式,可以将不同部分的模型组合在一起进行分析。从而进行声振耦合频响分析。后续为大家介绍如何通过文件编辑器,以目前介绍的分析实例为例,插入分析工况,以及对于复杂模型写工况头文件,再通过include引用模型文件。来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈