首页/文章/ 详情

Workbench开发指南:仿真模板开发

7月前浏览9358

本文摘要(由AI生成):

本文介绍了如何基于ANSYS Workbench平台进行仿真模板开发,以球阀仿真流程为例,通过WB参数化、脚本参数化、WB批处理调用、求解计算和结果读取等步骤,实现了用户通过界面输入流速和阀门开度后,执行计算功能后即可完成整个分析流程,输出并显示管道压降。


本案例以球阀为对象,基于其仿真参数化文件,演示如何对仿真流程进行界面开发,形成定制化仿真模板的完整过程。


1、需求描述

球阀控制水通过1英寸(25.4毫米)直径管道,在不同流速和阀门开度时,会对应着不同的管道压降。通过仿真模板开发形成定制化界面,需实现用户通过界面输入流速阀门开度后,执行计算功能后即可完成整个分析流程,输出并显示管道压降


01.png

2、知识储备


在开始之前,我们需要了解:仿真模板开发涉及仿真流程开发界面开发两个阶段。在仿真流程开发阶段中,首先需要对仿真流程进行参数化,实现的方式有两种:Workbench参数化脚本参数化;然后通过WB脚本对仿真流程进行集成和调用。界面开发阶段中,我们将仿真流程封装起来,提供与仿真流程中输入和输出参数间交互的用户界面。整个开发过程中,需要掌握的知识内容如下:


  • 首先需熟悉ANSYS仿真操作过程,可以在Workbench平台对仿真流程进行参数化;WB参数化方法可以查看往期文章《轻松搞定ANSYS仿真参数化》。如果是采用脚本参数化的方式,需要了解软件模块对应的脚本开发知识,如SCDM中的Python脚本、Fluent中的Scheme脚本、Mechanical中的ACT Python脚本。
  • 然后了解WB框架结构和脚本功能,并熟练使用Python对脚本代码进行仿真流程集成功能扩展。内容参照前期的《基于Python的Workbench开发指南 案例解析》和《Workbench开发指南:仿真流程集成》。
  • 最后具备面向对象编程和代码封装能力,至少掌握一种常用界面开发(GUI)技术,如C#的WinForms开发或WPF开发、QT界面开发等技术。


3、实施路线

以球阀仿真流程为例,以其Workbench参数化文件为基础,根据开发需求,模板开发的实施路线和详细的操作步骤如下。


02.png

3.1 WB参数化


在WB中创建分析项目,并对阀门开度(valveAngle)和入口流速(inletVelocity)设置进行参数化,详情查看《案例:流体仿真分析参数化Step by Step》,完成后项目和参数视图如下。


03.png

3.2 脚本开发


编写WB脚本代码,实现Parameter Set下的输入参数:阀门开度(P1)入口流速(P3)的修改,并将输入参数初始值用特殊字符替换,脚本内容如下。

6.png

3.3 脚本功能扩展


添加结果输出代码到脚本中,在仿真系统更新完成后,自动输出最大网格扭曲度(P2)管道压降(P4),最后保存项目文件。


7.png

3.4 保存项目及脚本文件


将上述脚本代码内容放在一起保存为Valve.py;在Workbench界面中,选择File -> Archive功能,将项目文件保存为Valve.wbpz。项目和脚本文件放在同一个文件夹中。
3.5 用户界面代码开发
采用C#的WinForms开发技术,可以进行可视化的界面设计。首先打开Visual Studio2015,执行文件 -> 新建 -> 项目,选择创建Visual C#模板下的Windows窗体应用程序,解决方案和名称都为ValveApp;然后在VS2015中将工具箱中的Label、GroupBox、TextBox和Button控件拖动到窗体(Form)上,创建下图所示窗体控件布局和内容。


04.png

3.6 界面后端代码开发


后端代码用于实现界面交互功能,包括脚本参数替换、WB批处理调用、求解计算和结果读取等,具体代码如下。


  • 脚本参数替换


替换原始脚本中的变量值为指定值,然后写入到文件中生成新脚本。


8.png

  • WB批处理调用


创建新的进程(Process),指定参数项目文件(*.wbpz)和脚本文件(*.py),调用WB批处理命令。


9.png

  • 求解计算


首先将原始的项目和脚本文件复 制到工作目录下,然后将脚本中参数替换为界面输入值,最后调用WB批处理方法RunWB2执行仿真计算。


1.png

  • 结果文件读取


计算输出的结果文件内容如下。

Mesh-Max=0.8733

pressure-drop-op=4091.4672


编写代码读取文件数据,将最大网格扭曲度和管道压降的结果存在泛型数组里。


10.png

3.7 界面事件处理


事件(Event)基本上说是一个用户操作,如按键、点击、鼠标移动等等;应用程序需要在事件发生时对事件进行响应。通过事件机制可以实现界面控件调用后端功能代码。本案例中,我们为btnSolve按钮添加一个Click事件,挂接到btnSolve_Click方法上,以此实现完整仿真流程调用。

11.png


3.8 编译和运行


在VS2015中编译项目代码,生成应用程序ValveApp.exe,然后将原始项目和脚本文件放在wb_files文件夹中,将应用程序和wb_files文件夹放在同一目录,文件结构如下图所示。

05.png

4、后记


在实际仿真模板开发项目中,大部分工作量都集中在仿真流程开发上。当然界面开发难度会随着参数数量交互复杂性的增大而急剧增大。界面开发的方式有很多种,比如常用的C#的WinForms或Python的PyQt5等,大家可以根据自己的喜好去选择。
仿真流程参数化是仿真流程开发中的关键部分,我们可以通过WB参数化功能或者是脚本参数化实现。WB参数化方式存在局限性:只适用于何拓扑和边界类型不变的模型,即计算只会改变其大小与位置尺寸、边界条件值。如果涉及几何拓扑、物理模型、边界类型的更改和自动后处理操作等,就需要采用更灵活和通用性脚本参数化的方式。
以上是本期的全部内容,欢迎大家在文章后留言讨论。




附件

20积分ValveApp.rar
ACTWorkbench二次开发代码&命令
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-11-12
最近编辑:7月前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 650粉丝 3783文章 62课程 4
点赞
收藏
作者推荐
未登录
1条评论
abismo
签名征集中
3年前
厉害
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈