首页/文章/ 详情

基于Python的Workbench开发指南+案例解析

7月前浏览25584

本文摘要(由AI生成):

本文主要介绍了ANSYS Workbench中日志(Journal)功能的使用方法和脚本开发。日志功能提供了记录界面操作的能力,通过日志脚本,可以实现以下功能:快速轻松地重放日志记录的操作、扩展仿真功能、自动化重复仿真分析、通过脚本以批处理(Batch)模式运行分析。脚本是向Workbench发出的一组指令,脚本是基于IronPython 2.7编写的。数据引用是实例化数据实体的句柄。数据容器引用是实例化数据容器对象的句柄。项目是为实现总体仿真目标创建的系统(System)、组件(Components)、数据(Data)及数据共享(Connections)的完整集 合。系统是一组组件或单个组件的集 合,它们共同提供实现仿真目标的工作流。


ANSYS Workbench中日志(Journal)功能提供了记录界面操作的能力。通过日志脚本,我们能够实现以下功能:

① 能够快速轻松地重放日志记录的操作;

② 扩展仿真功能、自动化重复仿真分析;

③ 通过脚本以批处理(Batch)模式运行分析。

1、脚本概述

Workbench日志功能为基于Python的脚本,提供脚本录制功能,我们可以修改这些脚本或创建新的脚本。

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上。我们一起看下面一段命令:

1.png

demo.gif

在上面命令中:首先通过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的本地应用程序(称为工作区)交互,并且可以启动数据集成应用程序。工作区完全构建在Workbench框架上,可以使用它的所有服务,包括:项目示意图、工程数据(Engineering Data)和设计探索(Design Exploration)。

数据集成(Data-integrated)应用程序是独立于Workbench框架;它们以扩展程序(Addins)集成在框架上,这样可以由项目示意图驱动,并与Workbench和其支持的程序共享关键数据和参数。数据集成应用程序包括Mechanical APDL、Fluent、CFX、DesignModeler、SpaceClaim、Mechanical等。

2.jpg

工作区数据集成应用程序之间的差异在于:所有与工作区关联的数据修改操作都会被日志记录下来,并且可以通过Workbench脚本完全自动化;对于数据集成应用程序来说,只记录从项目示意图发起的操作,包括系统更新数据共享传输。在数据集成应用程序中执行的操作不一定由ANSYS Workbench脚本记录或控制。例如,没有记录Mechanical APDL中构造几何的步骤或ANSYS Fluent中的求解方法。

虽然数据集成应用程序并不完全支持Workbench脚本,但它们中许多都有自己的原生脚本语言,可以通过Workbench脚本接口驱动。使用SendCommand方法将原生脚本命令传递给数据集成应用程序。可以将SendCommand调用方法插入Workbench脚本中,以驱动集成应用程序。如下表所示:

3.png

2.2 Workbench项目和数据结构

在使用Workbench脚本时,我们应该理解以下术语和概念。下图描述了项目中对象之间的关系。

4.jpg

项目 - Project

  • 项目是为实现总体仿真目标创建的系统(System)、组件(Components)、数据(Data)及数据共享(Connections)的完整集 合。

系统 - System

  • 系统是一组组件或单个组件的集 合,它们共同提供实现仿真目标的工作流,例如结构静力学分析、稳态流动分析及网格划分等。

组件 - Component

  • 一个组件包括数据和一个数据编辑器(Editor)的集 合,它们一起工作以实现与CAE相关的任务。一个系统可以包括几个组件,这些组件一起定义模拟工作流。数据编辑器可以支持Workbench数据集成应用程序,如:Fluent、mechanical;也可以是工作区应用,如工程数据和设计探索。

数据容器 - Data Container

  •  数据容器包括单个组件独有的数据以及要管理和操作的服务。创建、检索或修改组件本地数据的服务由数据容器提供,而控制数据进出组件的服务则由组件提供。

数据实体 - Data Entity

  • 数据实体是在数据容器中定义的数据结构。数据实体类似于面向对象编程中的类。它定义可以调用的成员数据(或属性)和方法来对数据执行操作。

数据引用 - Data Reference

  • 数据引用是实例化数据实体的句柄。可以从数据实体定义创建对象,数据引用提供对该对象的访问。在Workbench日志中,数据引用被分配给变量。然后使用变量访问数据实体的属性和方法。示例如下:

5.jpg

解析:上述代码通过GetSystem方法,返回引用System ID的数据对象,并将其分配给变量mesh_sys;然后使用变量mesh_sys可以调用System数据实体支持的方法,如用于更新组件系统的Update()方法。

数据容器引用 - Data Container Reference

与数据引用类似,数据容器引用是实例化数据容器对象的句柄。示例如下:

6.jpg

解析:上述代码通过调用mesh_sys对象的GetContainer方法,返回引用Component ID的数据容器对象,并将其分配给变量mesh;然后使用变量mesh可以访问组件数据实体支持的方法,如Edit和SendCommand方法。

2.3 脚本开发

进行Workbench脚本开发,需要做到以下几个方面:

①首先我们需要了解面向对象编程方法:理解属性实例对象方法的概念;②掌握Python的基本语法、流程控制、数据结构、函数及类的编程方法,并了解常用模块使用方法;

③了解仿真流程,并理解Workbench框架和数据结构;可通过开发文档查询获取脚本API。

其实做到上述要求其实并不难,只要我们平时多了解Python的使用方法,理解Workbench框架和数据结构,并时常多阅读Workbench脚本开发文档,多将理论知识付诸于实践中,相应大家很快都能掌握脚本开发的方法。

3、命令行启动

Workbench可以从操作系统命令行执行,并接受许多命令行参数,以便于自动化和脚本重放。以下命令可用于从命令行运行Workbench:

ANSYS_INSTALL_PATH/Version/Framework/bin/PLATFORM/runwb2.exe

其中Version是对应ANSYS版本;例如,19.0对应v190,2019R1对应V193。

命令中PLATFORM可以是以下之一:

  • Win64

  • Linux64

例如,要从Windows 64位系统的默认安装位置运行Workbench 19.0,命令是:

C:\Program Files\ANSYS Inc\V190\Framework\bin\win64\runwb2.exe

下表描述了可用于控制ANSYS Workbench的常用命令行参数。

7.png

4、案例应用

上述部分我们介绍了Workbench框架和数据结构,以及脚本开发方法和命令行启动方式,下面我们通过一个实例演练一下。

4.1 案例目标

在上一篇文章中我们在Workbench平台下,对球阀的开度和水流速度进行参数化。之后可以在Parameter Set界面下快速更改参数进行仿真求解。

8.jpg

本案例中,演示通过Workbench脚本驱动更改输入参数,然后更新Mesh和Fluent组件系统,仿真计算完成后通过脚本读取输出参数,并将结果保存到csv文件。

4.2 脚本开发

如果对Workbench脚本API不太熟悉,可以采用1.1中的方法先将功能操作录制成日志文件,然后再在日志文件基础上修改并添加功能。完整的代码如下所示:

9.jpg

4.3 批处理执行

将脚本文件保存为Valve.py文件,与Workbench项目文件放在一个目录下。然后在同一目录下新建记事本文件,输入以下启动命令,之后将文件保存为ValveRun.bat。

10.png

上述命令中:①%AWP_ROOT190%对应着ANSYS_INSTALL_PATH/v190目录,是ANSYS安装后自动创建的环境变量;②“.\Valve.wbpj”代表同一目录下的Workbench文件;③“.\Valve.py”代表同一目录下的脚本文件。文件结构如下:

11.png

修改Valve.py中valve_angle和inlet_velocity值,双击运行ValveRun.bat批处理文件,系统会自动调用Workbench19.0,加载脚本文件Valve.py,之后执行脚本中定义的仿真流程:①修改输入参数;②更新组件系统;③输出结果到result.csv文件。输出结果如下:

12.png

4.4 设计点

在4.2中示例脚本,只是一组设计点下的计算流程;如果需要一次计算多个设计点,可以通过Python中的循环语句控制,脚本代码如下:

13.jpg

将上述代码保存为Value_dp.py放在和Valve.wbpj同一目录,后在同一目录下新建记事本文件,输入以下启动命令,之后将文件保存为ValveRun_dp.bat。

14.png

修改Valve_dp.py中valve_angle列表值及inlet_velocity值,双击运行ValveRun_dp.bat批处理,系统会自动调用Workbench19.0,加载脚本文件Valve_dp.py,之后执行脚本中定义的仿真流程输出结果到result.csv。结果如下:

15.png

如果阀门开度ValveAngle取值为25、20、15,同时入口速度inlet-velocity取值为2.0、1.5、1.0变化,考虑到两者之间组合的工况,可以将上述代码进行修改。

17.png

上述代码执行后自动创建设计点,如下图所示。大家采用上面相同的批处理调用方式可实现快速仿真计算。

18.png

基于Workbench中Python脚本开发,你学会了吗?快找个实际案例操作一下吧!上述案例中的模型、脚本及批处理文件参见附件,解压密码为:ansys_development

关于Workbench脚本开发,你还有什么想了解的吗?可以在文章后留言哦~


附件

5积分20190804213343-Valve_Demo.zip
Workbench
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-08-05
最近编辑:7月前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 650粉丝 3782文章 62课程 4
点赞
收藏
未登录
36条评论
灰蒙蒙先生
签名征集中
14天前
老师您好!我想了解一下用meshing的时候如何使用python来进行边界层赋予、网格生成操作呢?
回复
啥都不会的无业游民
别问我,不会
1月前
感谢分享
回复
羅薪
签名征集中
1月前
workbench脚本
回复
blessing
签名征集中
2月前
workbench脚本
回复
宁静致远
签名征集中
5月前
学习了,非常感谢分享
回复
馥源
签名征集中
6月前
workbench脚本
回复
前往伊斯特兰
签名征集中
8月前
workbench脚本
回复
遛狗的鱼
签名征集中
8月前
workbench脚本
回复
仿真秀0105194208
签名征集中
10月前
workbench脚本
回复
白菜
签名征集中
10月前
workbench脚本
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈