使用超单元进行拓扑优化-OS-T:2070
您的每一次点赞和在看,都是对我工作的认可和鼓励,更是激励我不断前行、持续更新内容的强大动力。您的支持是我不懈追求卓越和创新的源泉。在产品开发中,我们经常面临需要对复杂结构进行优化设计的挑战。这时,使用超单元(Superelement)技术就显得非常必要,使用超单元的必要性有以下几点:1.复杂结构简化:对于包含数百万甚至更多自由度的复杂结构,直接进行优化分析计算代价高昂,超单元可以将复杂结构中的指定部分预先计算并简化,从而简化整个优化过程。2.计算效率:在进行拓扑优化时,需要进行多次迭代计算。超单元技术通过减少每次迭代所需的计算量,显著提高了计算效率。3.设计灵活性:超单元允许设计师专注于关键区域的设计,而不必从头开始处理整个结构,这增加了设计的灵活性。使用超单元的优势:1.减少计算时间:通过减少模型的自由度,超单元可以显著减少所需的计算时间。2.降低硬件要求:较小的模型尺寸意味着需要的计算资源更少,降低了对硬件的要求。3.提高设计迭代速度:设计师可以更快地测试不同的设计概念,加速产品开发流程。4.优化复杂区域:超单元使得对复杂或关键区域进行详细的优化成为可能,而不必担心整个模型的计算负担。5.更好的设计洞察:通过超单元技术,设计师可以更深入地了解结构性能,从而做出更明智的设计决策。超单元技术为复杂结构的优化设计提供了一种高效、灵活且实用的解决方案。在本教程中,我们将通过一个简单的悬臂梁有限元模型示例,展示如何应用静态缩减法(staticReduction)来简化有限元模型。此外,您还将学习如何对这一简化后的模型进行拓扑优化。在开始之前,请将本教程中使用的文件复制到您的工作目录。http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-2070/cantilever_full.zip图1.无缩减的全悬臂梁模型优化问题可以表示为:Objective:最小化柔度。Constraints:可设计体积的上限限制为40%。Designvariables:设计空间中每个Element的密度。图2.全悬臂梁模型的拓扑优化结果在这个过程中,我们将会使用静态缩减方法,它允许我们从整体模型中提取并简化特定的部分,这些部分在OptiStruct中被称为超单元。为了定义这些超单元的边界自由度,我们需要使用ASET或ASET1关键字。这些关键字指定了超单元与模型其余部分连接的自由度集合,也就是那些将被直接矩阵输入所替代的自由度。值得注意的是,随着ASET定义数量的增加,静态缩减的准确性会提高,但同时计算成本也会增加。例如,尽管静态缩减可以减小需要求解的矩阵的规模,但如果缩减后的矩阵(DMIG)非常稠密,那么求解时间可能会超过求解原始模型的稀疏矩阵的时间。因此,合理选择ASET定义对于利用DMIG进行有效分析至关重要。为了防止缩减矩阵过于密集,应仔细选择ASET条目(见下图),而不是为设计空间和非设计空间之间的所有边界节点创建ASET条目。由于本教程使用的问题体积较小,因此选择ASET条目可能不会影响求解时间。图3.ASET用于悬臂梁模型一、启动HyperMesh并设置OptiStruct用户配置文件1.启动HyperMesh。此时将打开UserProfile对话框。2.选择OptiStruct,然后单击OK。这将加载用户配置文件。它包括相应的模板、宏菜单和导入阅读器,将HyperMesh的功能缩减为与生成OptiStruct模型相关的功能。二、打开模型1.单击File>Open>Model。2.选择保存到工作目录的cantilever_full.hm文件。3.单击Open。cantilever_full.hm数据库将加载到当前HyperMesh会话中,替换任何现有数据。三、生成超单元3.1创建ASETLoadCollector1.创建LoadCollector。a)在ModelBrowser中,右键单击并从上下文菜单中选择Create>LoadCollector。默认LoadCollector显示在EntityEditor中。b)对于Name,输入Asets。c)将CardImage设置为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)点击LoadType=并选择ASET。f)单击create。3.单击return转到主菜单。3.2删除后续优化中保留的Element将仅为那些将被折减的单元(超单元)生成折减刚度矩阵和载荷矢量。因此,需要创建一个新模型,该模型仅引用超单元零件以及直接应用于该零件的载荷和边界条件。1.按F2打开Delete面板。2.将实体选择器设置为elems,然后单击elems>bywindow。3.在图5中指示的Element周围绘制一个窗口。图5.4.单击deleteentity。5.单击return转到主菜单。3.3定义一个参数以将约简矩阵写出到外部文件激活矩阵保存过程需要PARAM,EXTOUT批量数据输入。如果没有此参数,运行将照常进行。此参数有两个选项:DMIGPCH,它将ASCII格式的矩阵保存到.pch文件,以及DMIGBIN,它将矩阵以二进制格式保存到.dmg文件。DMIGPCH用于本教程。1.在Analysis页面上,单击controlcards面板。2.在CardImage对话框中,单击PARAM。3.选择EXTOUT。4.在卡片图像顶部的EXTOUT下,选择DMIGPCH。5.单击return退出PARAM。6.单击return返回主菜单。四、保存数据库1.在菜单栏中,单击File>SaveAs>Model。2.在SaveAs对话框中,输入cantilever_dmig.hm作为文件名,并将其保存到您的工作目录中。五、提交作业1.在Analysis页面中,单击OptiStruct面板。图6.访问OptiStruct面板2.单击saveas。3.在SaveAs对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入cantilever_dmig。对于OptiStruct求解器模型,建议使用.fem扩展名。4.单击Save。inputfile字段显示在SaveAs对话框中指定的文件名和位置。5.将导出选项切换设置为all。6.将runoptions切换设置为analysis。7.将内存选项切换设置为memorydefault。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删除SuperelementReduced部分DMIGout由于超单元部分的矩阵将被DMIG替换,因此应删除节点和单元的批量数据条目,以及超单元中的所有荷载和边界条件。1.按F2打开Delete面板。2.将实体选择器设置为elems,然后单击elems>bywindow。3.在图7中指示的Element周围绘制一个窗口。图7.4.单击deleteentity。5.单击return转到主菜单。7.3使用DMIG设置拓扑优化1.在Analysis页面上,单击controlcards面板。2.定义INCLUDE_BULK控制卡。a)在CardImage对话框中,单击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创建TopologyDesignvariables1.在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)将区域选择设置为total和noregionid。d)单击create。4.创建柔度响应。1)在response=字段中,输入Compl。2)在响应类型下方,选择compliance。3)将区域选择设置为total和noregionid。4)单击create。5.单击return返回Optimization面板。8.3创建设计约束1.单击dconstraints面板。2.在constraint=字段中,输入VFrac。3.单击response=并选择Volfrac。4.选中upperbound旁边的框,然后输入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>SaveAs>Model。2.在SaveAs对话框中,输入cantilever_opti.hm作为文件名,并将其保存到您的工作目录中。十、运行优化1.在Analysis页面中,单击OptiStruct。2.单击saveas。3.在SaveAs对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入cantilever_opti。对于OptiStruct求解器模型,建议使用.fem扩展名。4.单击Save。inputfile字段显示在SaveAs对话框中指定的文件名和位置。5.将导出选项切换设置为all。6.将runoptions切换设置为optimization。7.将内存选项切换设置为memorydefault。8.单击OptiStruct运行优化。作业完成时,窗口中会显示以下消息:OPTIMIZATIONHASCONVERGED.FEASIBLEDESIGN(ALLCONSTRAINTSSATISFIED).如果存在错误消息,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文件中,其中#指定SUBCASEID。11.1查看密度结果的云图1.在OptiStruct面板中,单击HyperView。2.在Results工具栏中,单击以打开Contour面板。3.将Resulttype设置为ElementDensities[s]和Density。4.将Averagingmethod设置为Simple。5.单击Apply以显示密度云图。6.在Animation工具栏上,单击以从Simulation列表中选择最后一个迭代。生成的云图表示由施加的载荷和边界条件产生的单元密度字段。图8.11.2查看单元密度的ISO值图等值图解提供有关单元密度的信息。Iso值保留等于和高于特定密度阈值的所有Element。对于具有实体设计区域的模型,此特征成为分析密度结果的重要工具。1.在Results工具栏中,单击以打开ISOValue面板。2.将Resulttype设置为ElementDensities。3.将Showvalues设置为Above。4.单击Apply。5.在Clippedgeometry下,选择Features和Transparent。6.更改密度阈值。a).在Currentvalue字段中,输入0.3。b).在Currentvalue下,移动滑块。当您更新密度阈值时,模型视窗中显示的Iso值会以交互方式更新。使用此工具可以更好地了解OptiStruct中的材料布局和载荷路径。图9.来源:TodayCAEer