还在用APDL?你Out了!快试试ACT自动化你的Mechanical仿真,轻松快速上手,速度绝对超乎你的想象!
通过使用ANSYS ACT及其强大的API编写脚本,我们可以轻松地自动化Mechanical的日常任务,固化仿真分析流程,极大提升工作效率。
1、Mechanical脚本概述脚本是指使用编程语言与软件产品进行交互和修改。Workbench Mechanical支持两种脚本语言:JavaScript和ACT Python,两者都暂不支持脚本录制,只能基于API编写。ACT自动化API是基于Python语言,允许我们自动化Mechanical仿真过程(网格划分、模型设置、后处理等)和获取或设置与本地Mechanical对象的相关数据,这在此之前需要使用JavaScript,现在可以使用IronPython编写实现自动化脚本。Python是一种面向对象、解释型的高级编程语言,语法简洁、优雅、编写的程序易读,易于学习和掌握,适用于非高级开发人员。对于Mechanical脚本开发来说,JavaScript脚本开发目前没有公开的API文档可供参考。ANSYS提供了非常详细和全面的基于Python的ACT开发文档,而且正在逐步扩展和完善ACT开发功能,所以说基于Python的ACT开发代表了以后ANSYS二次开发的发展方向。微信后台回复关键字:“ACT开发文档”,即可获得18.0~2019R3的ACT开发文档。2、ACT Python脚本编写在尝试编写Mechanical自动化脚本之前,我们首先应该熟悉IronPython2.7的使用方法,然后需要了解Mechanical中ACT控制台、对象结构、如何访问对象及其子对象、如何设置和修改对象的属性值等。
2.1ACT控制台
Mechanical中的ACT控制台提供ACT Python脚本命令的输入,以便我们开发和调试脚本代码。
ACT控制台支持多行脚本命令编辑、代码自动缩进、代码自动补全、代码高亮、历史记录和代码片段管理,常用的快捷键如下。
2.2代码自动补全
ACT控制台提供智能的自动补全功能,这意味着它考虑了括号或引号等语法元素。当在编辑器中输入句点时,命令行上方将显示一个可滚动的建议列表,方便我们快速完成脚本命令键入。
每个代码补全建议都有一个带有字母和颜色编码的图标:
2.3 Mechanical对象结构 ACT自动化API提供对Mechanical结构树中所有对象的访问权限,允许我们创建对象、删除对象或修改对象属性。
2.4访问子对象 如上所述,对于能在Mechanical结构树中存在多个实例的对象,不存在直接的访问点。对于这些子对象,我们可以按照以下方法访问:①引用父对象实例,使用Children属性或者GetChildren方法,获得所有子对象列表。②通过列表索引或对象名称(Name)引用的方式去获得子对象。下面我们通过一个实例演练一下。
2.5添加子对象
Mechanical结构树中的第一级对象都可作为父对象添加子对象;在界面上我们可以选中父对象,然后单击右键会出现菜单,选择Insert项下的子菜单项就可添加子对象。
ACT自动化API中,要想添加子对象到结构树中,首先要获得其父对象实例,然后调用父对象的AddObjectName()方法,其中ObjectName是所需对象的名称;最后需要设置子对象的属性参数。 例如,我们在静结构(Static Structure)分析下添加一个Force载荷,可输入以下代码:
2.6修改对象属性 一旦我们获得Mechanical对象的实例后,就可以在ACT控制台中,通过脚本命令读取和修改界面上详细视图(Details View)中对应的属性参数。在Mechanical中属性值常见的有6种输入类型:Number、Enumeration、Bool、Quantity、Scoping和Magnitude,下面我们详细介绍一下使用方法。(1) Number值类型对象详细视图下需要输入无单位数值的项,属性值应该赋予对应Number值类型,如int整形。例如更改分析设置中的计算步数,输入如下。
(2) Enumeration值类型 对象详细视图中提供下拉框选择的选项,属性值应赋予对应的Enumeration值类型,如下设置属性SolverType值为SolverType.Direct枚举类型。
(3) Bool值类型
对象详细视图中需要只选择On和Off的选项,属性值应赋予对应的Bool类型。比如激活分析设置中的大变形选项,输入如下。
(4) Quantity值类型
对象详细视图中需要输入带单位数值的项,属性值应赋予对应的Quality类型:类型为Quantity(‘value[unit]’)。例如,更改网格单元格尺寸为2mm,输入如下。
(5) Scoping值类型 对象详细视图中Scope组中需要指定Geometry的项,对象的Location属性应赋予对应的Scoping值类型。Mechanical提供两种指定方式:Geometry Selection和Named Selection。例如,添加一个Pressure载荷,并指定加载的边界位置,我们采用两种方式实现,输入如下。
(6) Magnitude值类型 对象详细视图中需要输入Magnitude值的项,属性值应赋予Magnitude值类型;Mechanical中提供三种输入模式:①公式输入②表格数据③常数类型。例如,我们继续以(5)中的压力载荷对象,给定载荷数值大小。
表格数据
2.7输出云图
云图输出首先需要创建后处理对象,然后激活对象让其高亮显示,最后使用Graphics.ExportImage方法,指定输出的图片路径即可。例如,我们创建一个总变形云图,然后输出照片,代码示例如下。
3、Workbench集成 在Workbench脚本中可以通过SendCommand命令将ACT Python命令发送Mechanical去执行,以实现仿真流程的集成,代码示例如下所示。
4、案例练习
在上一期文章《案例:结构仿真分析参数化Step by Step》中,我们演示了如何使用SCDM脚本和Mechanical进行参数化分析。本期中我们可以基于SCDM脚本建模生成的模型,在Mechanical中使用ACT Python脚本实现自动化仿真分析。
使用SCDM创建模型和Mechanical仿真设置过程大家可以参照上一篇文章,大家可以参照本期内容,自己上手编写自动化脚本吧。微信后台回复“WS16练习”即可获得案例自动化代码,代码执行后效果如下,分分钟就完成了前处理设置。
在实际仿真模板项目开发过程中,通常会使用SCDM+Mechanical的组合开发模式。SCDM拥有强大的直接建模能力,具备丰富的CAD接口、模型修复功能和脚本建模能力,能为Mechanical分析提供所需的几何模型输入,轻松完成从几何建模或导入、Mechanical前处理、仿真求解和后处理报告的自动化仿真过程,固化整个仿真分析流程,提升仿真研发的效率。
作者:小田老师 仿真秀讲师