首页/文章/ 详情

使用Python作为二次开发语言,所遇到的调试问题

10小时前浏览4

正如标题所言,笔者是在对HyperWork、Simlab、ANSA,皆遇到了相同的问题。


不知道大家有没有在开发过程中遇到问题,只要是选择Python作为二次开发语言时,可能会遇到代码执行了但无法按照预期运行的问题。


问题现象:

在进行二次开发时,程序不按所写代码运行。(这时候就很迷糊,这个代码到底是哪里不对)

原因分析:

当然是搜索后才找到的问题,原因在于Python会缓存已导入的模块,对模块所做的修改在当前会话中不会立即生效。


解决方案:

• 重启软件:当遇到代码修改后无法立即生效的情况时,重启开发环境或软件可以解决缓存问题,使最新的代码更改生效,当然有时候你并不知道是代码的错误还是软件的问题。

• 使用重载库:而不是简单的import导入。Python提供了reload()函数,允许重新加载已经导入的模块,使修改立即生效。例如:

from importlib import reload

reload(mymodule)

这样,对mymodule模块所做的更改就会在当前会话中生效。


大部分时候,笔者选择的就是软件重启,为什么?因为执行效率快呀。



来源:TodayCAEer
SimLab二次开发ANSApython
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-09
最近编辑:10小时前
TodayCAEer
本科 签名征集中
获赞 22粉丝 45文章 261课程 0
点赞
收藏
作者推荐

拓扑与形貌的组合优化

前面分别介绍了拓扑优化和形貌优化,不过都是独立的,但是在实际产品开发中,用一种优化方式是不够的,拓扑优化和形貌优化是结构设计中常用的两种优化方法,它们各自有独特的优势:1. 拓扑优化:主要关注材料分布的最优方式,即在给定载荷和约束条件下,确定材料的最佳布局,以实现重量最小化或性能最大化。2. 形貌优化:则侧重于优化材料表面的形状,如起筋、凹凸等,以改善结构的局部性能,如减少应力集中、提高疲劳寿命或改善流体动力学特性。组合优化的优势:1. 性能提升:通过同时考虑拓扑和形貌,可以获得比单独优化任一因素更优的结构性能。例如,优化后的结构可能在减轻重量的同时,还能提高局部强度或刚度。2. 设计灵活性:组合优化提供了更多的设计自由度,允许工程师探索更广泛的设计方案,从而找到最佳解决方案。3. 资源利用:通过优化材料的使用,可以减少材料浪费,提高材料利用率,这对于成本敏感的应用尤为重要,大批量的产品亦是如此,以汽车为例,每一辆车减重一公斤,放在汽车的整个制造生命周期,会得到非常夸张的降本效果。4. 创新设计:组合优化可以引导发现传统设计方法难以实现的创新结构,这些结构可能具有独特的性能特点。5. 响应多样性:在面对复杂载荷和多目标优化问题时,组合优化能够更好地平衡不同性能指标,实现多目标的最优平衡。6. 适应性:组合优化能够更好地适应多变的设计要求和工作环境,提高结构的适应性和鲁棒性。7. 计算效率:虽然组合优化的计算过程可能比单一优化更复杂,但综合来看计算效率是比单一优化高的。拓扑与形貌组合优化能够提供一个更全面、更精细的设计优化框架。在本教程中,您将使用OptiStruct对滑块悬架执行拓扑和形貌组合优化。在开始之前,请将本教程中使用的文件复 制到您的工作目录。http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-3100/combined.zip本教程的目标是增加滑块悬架的刚度,同时使其更轻。这需要同时使用拓扑和形貌优化。滑块悬架的有限元模型包含力和边界条件。该结构由四边形单元组成,具有线性静力学和模态SUBCASE。描述了定义拓扑和形貌优化设计空间、响应、约束和目标函数的步骤。优化后的结构对于线性静力学和正则模态SUBCASE来说都更强,并且具有起筋和更少的材料。 图1.Disk Drive滑块在磁盘驱动器滑块悬架上执行组合拓扑和形貌优化,以最大化刚度和加权模态。第七阶模态的下限限制为12 cycles/ms。Objective Function:最小化组合的加权柔度和加权模态。Constraints:第7 模态> 12cycles/ms。Design variables:Element密度和节点形貌。一、启动HyperMesh并设置OptiStruct用户配置文件1.启动HyperMesh。此时将打开User Profile对话框。2.选择OptiStruct,然后单击OK。这将加载用户配置文件。它包括相应的模板、宏菜单和导入阅读器,将HyperMesh的功能缩减为与生成OptiStruct模型相关的功能。二、导入模型1.点击File>Import>Solver Deck。导入选项卡将添加到您的选项卡菜单中。 2.对于File type ,选择OptiStruct。3.选择文件图标。此时将打开Select OptiStruct文件Browser。4.选择保存到工作目录的combined.fem文件。5.单击Open。6.单击Import,然后单击Close以关闭Import选项卡。三、设置优化1 2 3 3.1创建Topology Design variables1.在Analysis页面中,单击optimization。2.单击topology。3.选择create子面板。4.在desvar= 字段中,输入pin。5.将type:设置为PSHELL。6.使用props选择器,选择1pin。7.验证基础厚度是否为0.0。值为0.0 意味着特定单元的厚度可以变为零,因此变为空值。8.单击create。9.重复上述步骤,创建一个标记为bend的设计变量,并为其分配3bend属性。10.单击return。3.2定义形貌设计变量对于形貌优化,需要定义设计空间和定义起筋。1.在Analysis页面中,单击optimization面板。2.单击topography面板。3.创建形貌优化设计空间定义。a)选择create子面板。b)在desvar= 字段中,输入tpg。c)使用props选择器,选择1pin和3bend。d)单击create。已创建形貌优化设计空间tpg。1pin和3bend Component中的所有Element现在都包含在设计空间中。4.为设计空间tpg创建定义起筋。a)选择bead params子面板。 b)验证desvar = 字段是否设置为tpg,这是新创建的设计空间的名称。c)在minimum width=字段中,输入0.4。此参数控制模型中起筋的宽度。建议的值介于平均单元宽度的1.5 到2.5 倍之间。d)在draw angle=字段中,输入60.0(这是默认值)。此参数控制起筋侧面的角度。建议的值介于60 到75 度之间。e)在draw height= 中,输入0.15。此参数设置要拉伸起筋的最大高度。f)选择buffer zone。此参数在设计域中的Element和设计域外的Element之间建立缓冲区。g)将绘制方向切换为normal切换为elements。此参数定义形状变量的创建方向。h)将边界跳转到load和spc。这会告诉OptiStruct将应用载荷或约束的节点保留在设计空间之外。i)单击update。已为设计空间tpg创建了定义起筋。根据这些信息,OptiStruct将在整个设计变量域中自动生成起筋变量定义。2.添加模式组重复约束。使用1面对称拉延筋,因为它是最简单的,并且可以同时对称。a)选择pattern grouping子面板。b)单击desvar =并选择tpg。c)将pattern type设置为1-pln sym。d)单击anchor node,然后在id= 字段中输入41。e)单击first node,然后在id= 字段中输入53。f)单击update。2.更新Design variables的边界。a)选择bounds子面板。b)验证desvar = 字段是否设置为tpg,这是设计空间的名称。c)在Upper Bound= 字段中,输入1.0。 控制网格移动的变量的上限(Real > LB,默认值= 1.0)。这会将网格移动的上限设置为UB*HGT。d)在Lower Bound= 字段中,输入0.0。e)单击update。上限将网格移动的上限设置为等于UB*HGT,下限将网格移动的下限设置为等于LB*HGT。2.单击return转到优化面板。3.3创建优化响应由于此问题是线性static和模态分析的组合,因此您尝试最小化两种Load Case的柔度并增加频率,同时约束第七个频率。因此,定义了两个响应:freq和comb。1.在Analysis页面中,单击optimization。2.单击Responses。3.创建频率响应。a)在responses= 字段中,输入freq。b)在响应类型下方,选择frequency。c)对于Mode Number ,输入7.0。d)单击create。响应freq定义为提取的第七阶模态的频率。4.创建柔度索引响应。a)在response= 字段中,输入comb。b)将响应类型设置为compliance index。c)使用loadsteps选择器,选择force。d)将选项切换为将归一化因子定义为autonorm。e)在Mode和Weight字段中,输入模态编号及其相应的权重。Mode Weight1 1.02 2.03 1.04 1.05 1.06 1.0f)单击create。2.单击return返回Optimization面板。 3.4创建设计约束1.单击dconstraints面板。2.在constraint= 字段中,输入frequency。3.单击response =并选择freq。4.选中lower bound旁边的框,然后输入12。5.使用loadsteps选择器,选择frequency。6.单击create。7.单击return返回Optimization面板。3.5定义目标函数1.单击objective面板。2.验证是否选择了min。3.单击response=并选择comb。4.单击create。5.单击return两次以退出Optimization面板。3.6定义优化控制卡1.在Analysis页面中,单击Optimization面板。2.单击opti control面板。3.选择MINDIM,然后输入0.25。通常建议最小成员尺寸以避免棋盘格。它还确保结构具有此卡中指定的最小尺寸。4.选择MATINIT,然后输入1.0。MATINIT在拓扑优化中声明初始材料分数。MATINIT具有多个基于以下条件的默认值:如果mass是目标函数,则MATINIT默认值为0.9。对于Constrained mass,默认值重置为constraint值。如果mass不是目标函数且不受约束,则默认值为0.6。5.单击return两次以退出面板。3.7设置模态跟踪在优化过程中,频率及其振型可能会因单元密度的变化和其他设计更改而改变顺序。要解决此问题,请定义一个参数来跟踪频率,以便在优化运行期间仅跟踪预期频率。1.在Analysis页面中,单击control cards面板。2.在Card Image对话框中,单击PARAM。3.选择MODETRAK。4.将MODET_V1 设置为Yes。 5.单击return。PARAM按钮现在为绿色,表示它处于活动状态。6.单击return返回Analysis页面。四、运行优化1.在Analysis页面中,单击OptiStruct。2.单击save as。3.在Save As对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入comb_complete。对于OptiStruct求解器模型,建议使用.fem扩展名。4.单击Save。input file字段显示在Save As对话框中指定的文件名和位置。5.将导出选项切换设置为all。6.将run options切换设置为optimization。7.将内存选项切换设置为memory default。8.单击OptiStruct运行优化。作业完成时,窗口中会显示以下消息:如果存在错误消息,OptiStruct还会报告错误消息。可以在文本编辑器中打开comb_complete.out文件,以查找有关任何错误的详细信息。此文件将写入与.fem文件相同的目录。OPTIMIZATION HAS CONVERGED.FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).9.单击Close。五、查看结果4 5 5.1对形状结果更改进行后处理1.在OptiStruct面板中,单击HyperView。HyperView启动。2.在Results工具栏上,单击 以打开Deformed面板。3.在Deformed shape下,定义变形形状设置。a).将Result type设置为Shape Change(v)。b).将Scale设置为Scale factor。c).将Type设置为Uniform。d).在Value字段中,输入1.0。4.在Undeformed shape下,将Show设置为None。 5.单击Apply。将显示由于形貌优化而导致的形状变化。6.在Results Browser中,将Load Case和simulation设置为25th iteration。 图2.应用于滑块悬架的形貌结果5.2绘制最佳材料分布云图1.在Results工具栏上,单击 以打开Contour面板。2.将Result Type设置为Element Densities (s)和Density。3.将Averaging method设置为Simple。4.单击Apply以显示密度云图。5.3添加最佳材料分布的ISO表面1.在Results工具栏上,单击 以打开ISO值面板。2.将Result Type设置为Element Densities (s)和Density。3.将Show values设置为Above。4.点击Apply显示密度ISO图。5.在Current value字段中,输入0.3。将显示ISO图。模型中密度大于0.3 的部分将显示在with density contour中,其余部分将从显示中删除。 图3. 来源:TodayCAEer

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