ANSYS Workbench中日志(Journal)功能提供了记录界面操作的能力。Workbench日志功能为基于Python的脚本,通过脚本功能,我们能够实现以下功能:
能够快速轻松地重播日志记录的操作;
扩展仿真功能、自动化重复仿真分析;
通过脚本以批处理(Batch)模式运行分析。
1、Journal脚本综述
Workbench提供脚本录制功能,我们可以修改这些脚本或创建新的脚本。
1.1 日志脚本录制
可以通过以下几个步骤录制:
① 启动ANSYS Workbench平台,选择File > Scripting > Record Journal;
② 指定日志文件的名称和存放地址,点击Save;
③ 像往常一样使用界面操作进行仿真分析,Workbench会自动记录操作脚本;
④ 选择File > Scripting > Stop Record Journal,停止脚本录制。
1.2 脚本命令窗口
在Workbench中可以使用命令窗口以交互模式调用命令、访问数据实体(Data Entity)属性,调用数据实体和数据容器(Data Container)方法。操作如下:
① 选择File > Scripting > Open Command Window;
② 命令窗口打开后,输入想要运行的命令;
每次输入命令时,相应的操作将出现在Workbench数据库和GUI上。我们一起看下面一段命令:
解析:在上面命令中:首先通过GetTemplate()方法获得Mesh组件系统的对象变量:mesh_temp;然后调用mesh_temp对象下的CreateSystem()方法创建Mesh组件系统。
2、脚本编写
脚本是向Workbench发出的一组指令。脚本可以是修改过的日志,也可以是直接编写的全新指令。Workbench脚本使用面向对象的编程方法,脚本是基于IronPython2.7编写的,在尝试编写或修改脚本之前,我们应该熟悉这个版本的Python。
IronPython(https://ironpython.net/)是流行的编程语言Python for .NET的一个实现,而我们常说的Python是基于C语言实现的CPython(https://www.python.org/);两者在语法和基础类库是完全一致的,但是IronPython不能使用基于C语言编写的Python模块,如Numpy、Matplotlib等。
Python 是一种面向对象、解释型和交互的编程语言,简单易学容易上手,其代码具有非常强的可读性。Python本身为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。基于Python的易学性和强大的扩展性,我们很容易利用Workbench中脚本API扩展所需的仿真功能。关于Python的基础语法和使用方法,本文不做叙述,大家可以去网上自学入门。接下来主要介绍Workbench的
框架结构和
数据结构。
2.1 数据集成应用程序
在项目示意图(Project Schematic)下,可以与Workbench的本地应用程序(称为工作区)交互,并且可以启动数据集成(Data-integrated)应用程序。工作区完全构建在Workbench框架上,可以使用它的所有服务,包括:项目示意图、工程数据(Engineering Data)和设计探索(Design Exploration)。
数据集成应用程序是独立于Workbench框架;它们以扩展程序(Addins)集成在框架上,这样可以由项目示意图驱动,并与Workbench和其支持的程序共享关键数据和参数。数据集成应用程序包括Mechanical APDL、Fluent、CFX、DesignModeler、SpaceClaim、Mechanical等。
工作区和数据集成应用程序之间的差异在于:所有与工作区关联的数据修改操作都会被日志记录下来,并且可以通过Workbench脚本完全自动化;对于数据集成应用程序来说,只记录从项目示意图发起的操作,包括系统更新、数据共享传输。在数据集成应用程序中执行的操作不一定由ANSYS Workbench脚本记录或控制。例如,没有记录Mechanical APDL中构造几何的步骤或ANSYS Fluent中的求解方法。
虽然数据集成应用程序并不完全支持Workbench脚本,但它们中许多都有自己的原生脚本语言,可以通过Workbench脚本接口驱动。使用SendCommand方法将原生脚本命令传递给数据集成应用程序。可以将SendCommand调用方法插入Workbench脚本中,以驱动集成应用程序。
2.2 Workbench项目和数据结构
在使用Workbench脚本时,我们应该理解以下术语和概念。下图描述了项目中对象之间的关系。
项目 - Project
系统 - System
组件 - Component
数据容器 - Data Container
数据实体 - Data Entity
数据引用 - Data Reference
解析:上述代码通过GetSystem方法,返回引用System ID的数据对象,并将其分配给变量mesh_sys;然后使用变量mesh_sys可以调用System数据实体支持的方法,如用于更新组件系统的Update()方法。
数据容器引用 - Data ContainerReference
解析:上述代码通过调用mesh_sys对象的GetContainer方法,返回引用Component ID的数据容器对象,并将其分配给变量mesh;然后使用变量mesh可以访问组件数据实体支持的方法,如Edit和SendCommand方法。
2.3 脚本开发
进行Workbench脚本开发,需要做到以下几个方面:
①首先我们需要了解面向对象编程方法:理解类、属性、实例对象和方法的概念;
②掌握Python的基本语法、流程控制、数据结构、函数及类的编程方法,并了解常用模块使用方法;
③了解仿真流程,并理解Workbench框架和数据结构;可通过开发文档查询获取脚本API。
做到上述要求其实并不难,只要我们平时多了解Python的使用方法,理解Workbench框架和数据结构,并时常多阅读Workbench脚本开发文档,多将理论知识付诸于实践中,相信大家很快都能掌握脚本开发的方法。
详细的Workbench脚本开发文档,大家可以在后台回复关键字“workbench脚本”即可获取。
3、命令行启动
Workbench可以从操作系统命令行执行,并接受许多命令行参数,以便于自动化和脚本重放。以下命令可用于从命令行运行Workbench:
ANSYS_INSTALL_PATH/Version/Framework/bin/PLATFORM/runwb2.exe
其中Version是对应ANSYS版本;例如,19.0对应v190,2019R1对应V193。
命令中PLATFORM可以是以下之一:
例如,要从Windows 64位系统的默认安装位置运行Workbench 19.0,命令是:
C:\Program Files\ANSYS Inc\V190\Framework\bin\win64\runwb2.exe
下表描述了可用于控制ANSYS Workbench的常用命令行参数。
4、案例应用
上述部分我们介绍了Workbench框架和数据结构,以及脚本开发方法和命令行启动方式,下面我们通过一个实例演练一下。
4.1 案例目标
在上一篇文章中我们在Workbench平台下,对球阀的开度和水流速度进行参数化。之后可以在Parameter Set界面下快速更改参数进行仿真求解。
本案例中,演示通过Workbench脚本驱动更改输入参数,然后更新Mesh和Fluent组件系统,最后仿真计算完成后通过脚本读取输出参数,并将结果保存到csv文件。
4.2 脚本开发
如果对Workbench脚本API不太熟悉,可以采用1.1中的方法先将功能操作录制成日志文件,然后再在日志文件基础上修改并添加功能。完整的代码如下所示,相应注释已添加。
4.3 批处理执行
将脚本文件保存为Valve.py文件,与Workbench项目文件放在一个目录下。然后在同一目录下新建记事本文件,输入以下启动命令,之后将文件保存为ValveRun.bat。
上述命令中:①%AWP_ROOT190%对应着ANSYS_INSTALL_PATH/v190目录,是ANSYS安装后自动创建的环境变量;②“.\Valve.wbpj”代表同一目录下的Workbench文件;③“.\Valve.py”代表同一目录下的脚本文件。文件结构如下:
修改Valve.py中valve_angle和inlet_velocity值,双击运行ValveRun.bat批处理文件,系统会自动调用Workbench19.0,加载脚本文件Valve.py,之后执行脚本中定义的仿真流程:①修改输入参数;②更新组件系统;③输出结果到result.csv文件。输出结果如下:
4.4 设计点
在4.2中示例脚本,只是一组设计点下的计算流程;如果需要一次计算多个设计点,可以通过Python中的循环语句实现,脚本代码如下:
将上述代码保存为Value_dp.py放在和Valve.wbpj同一目录,后在同一目录下新建记事本文件,输入以下启动命令,之后将文件保存为ValveRun_dp.bat。
修改Valve_dp.py中valve_angle列表值及inlet_velocity值,双击运行ValveRun_dp.bat批处理,系统会自动调用Workbench19.0,加载脚本文件Valve_dp.py,之后执行脚本中定义的仿真流程输出结果到result.csv。结果如下:
案例文件:链接: https://pan.baidu.com/s/1o51cgh0YE4-ttLiomYJB4A 提取码: 84es
解压密码:ansys_development
基于Workbench中Python脚本开发,你学会了吗?快找个实际案例操作一下吧!今天就聊到这儿了,祝大家周末愉快,吃好睡好玩好!别忘了点个在看呀~有其他想了解的可以后台留言,小田老师随时都在哦。
觉得有收获记得转发给你的朋友们哦!