找回密码
 会员注册
查看: 19|回复: 0

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

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-11 13:45:59 | 显示全部楼层 |阅读模式
ANSYSWorkbench中日志(Journal)功能提供了记录界面操作的能力。通过日志脚本,我们能够实现以下功能:①能够快速轻松地重放日志记录的操作;②扩展仿真功能、自动化重复仿真分析;③通过脚本以批处理(Batch)模式运行分析。1、脚本概述Workbench日志功能为基于Python的脚本,提供脚本录制功能,我们可以修改这些脚本或创建新的脚本。1.1 日志录制可以通过以下几个步骤录制:①  启动ANSYSWorkbench平台,选择File > Scripting > RecordJournal;②  指定日志文件的名称和存放地址,点击Save;③  像往常一样使用界面操作进行仿真分析,Workbench会自动记录操作脚本;④  选择File > Scripting > Stop RecordJournal,停止脚本录制。1.2 命令窗口在Workbench中可以使用命令窗口以交互模式调用命令、访问数据实体(DataEntity)属性,调用数据实体和数据容器(DataContainer)方法。操作如下:①  选择File > Scripting > OpenCommandWindow;②  命令窗口打开后,输入想要运行的命令;每次输入命令时,相应的操作将出现在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(WelcometoPython.org);两者在语法和基础类库是完全一致的,但是IronPython不能使用基于C语言编写的Python模块,如Numpy、Matplotlib等。Python是一种面向对象、解释型和交互的编程语言,简单易学容易上手,其代码具有非常强的可读性。Python本身为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。基于Python的易学性和强大的扩展性,我们很容易利用Workbench中脚本API扩展所需的仿真功能。关于Python的基础语法和教程,本文不做叙述,大家可以去网上自学入门。接下来主要介绍Workbench的框架结构和数据结构。2.1 数据集成应用程序在项目示意图(ProjectSchematic)下,可以与Workbench的本地应用程序(称为工作区)交互,并且可以启动数据集成应用程序。工作区完全构建在Workbench框架上,可以使用它的所有服务,包括:项目示意图、工程数据(EngineeringData)和设计探索(DesignExploration)。数据集成(Data-integrated)应用程序是独立于Workbench框架;它们以扩展程序(Addins)集成在框架上,这样可以由项目示意图驱动,并与Workbench和其支持的程序共享关键数据和参数。数据集成应用程序包括MechanicalAPDL、Fluent、CFX、DesignModeler、SpaceClaim、Mechanical等。工作区和数据集成应用程序之间的差异在于:所有与工作区关联的数据修改操作都会被日志记录下来,并且可以通过Workbench脚本完全自动化;对于数据集成应用程序来说,只记录从项目示意图发起的操作,包括系统更新、数据共享传输。在数据集成应用程序中执行的操作不一定由ANSYSWorkbench脚本记录或控制。例如,没有记录MechanicalAPDL中构造几何的步骤或ANSYSFluent中的求解方法。虽然数据集成应用程序并不完全支持Workbench脚本,但它们中许多都有自己的原生脚本语言,可以通过Workbench脚本接口驱动。使用SendCommand方法将原生脚本命令传递给数据集成应用程序。可以将SendCommand调用方法插入Workbench脚本中,以驱动集成应用程序。如下表所示:2.2Workbench项目和数据结构在使用Workbench脚本时,我们应该理解以下术语和概念。下图描述了项目中对象之间的关系。项目 -Project项目是为实现总体仿真目标创建的系统(System)、组件(Components)、数据(Data)及数据共享(Connections)的完整集合。系统 -System系统是一组组件或单个组件的集合,它们共同提供实现仿真目标的工作流,例如结构静力学分析、稳态流动分析及网格划分等。组件 -Component一个组件包括数据和一个数据编辑器(Editor)的集合,它们一起工作以实现与CAE相关的任务。一个系统可以包括几个组件,这些组件一起定义模拟工作流。数据编辑器可以支持Workbench数据集成应用程序,如:Fluent、mechanical;也可以是工作区应用,如工程数据和设计探索。数据容器 -DataContainer 数据容器包括单个组件独有的数据以及要管理和操作的服务。创建、检索或修改组件本地数据的服务由数据容器提供,而控制数据进出组件的服务则由组件提供。数据实体 -DataEntity数据实体是在数据容器中定义的数据结构。数据实体类似于面向对象编程中的类。它定义可以调用的成员数据(或属性)和方法来对数据执行操作。数据引用 -DataReference数据引用是实例化数据实体的句柄。可以从数据实体定义创建对象,数据引用提供对该对象的访问。在Workbench日志中,数据引用被分配给变量。然后使用变量访问数据实体的属性和方法。示例如下:解析:上述代码通过GetSystem方法,返回引用SystemID的数据对象,并将其分配给变量mesh_sys;然后使用变量mesh_sys可以调用System数据实体支持的方法,如用于更新组件系统的Update()方法。数据容器引用 -DataContainerReference与数据引用类似,数据容器引用是实例化数据容器对象的句柄。示例如下:解析:上述代码通过调用mesh_sys对象的GetContainer方法,返回引用ComponentID的数据容器对象,并将其分配给变量mesh;然后使用变量mesh可以访问组件数据实体支持的方法,如Edit和SendCommand方法。2.3 脚本开发进行Workbench脚本开发,需要做到以下几个方面:①首先我们需要了解面向对象编程方法:理解类、属性、实例对象和方法的概念;②掌握Python的基本语法、流程控制、数据结构、函数及类的编程方法,并了解常用模块使用方法;③了解仿真流程,并理解Workbench框架和数据结构;可通过开发文档查询获取脚本API。其实做到上述要求其实并不难,只要我们平时多了解Python的使用方法,理解Workbench框架和数据结构,并时常多阅读Workbench脚本开发文档,多将理论知识付诸于实践中,相应大家很快都能掌握脚本开发的方法。3、命令行启动点击完整阅读全文基于Python的Workbench开发指南+案例解析推荐课程Python语言在ANSYS的应用52讲-掌握SCDM脚本建模及ANSYS二次开发能力_SpaceClaim_ACT_Mechanical_Fluent_结构基础_流体基础_二次开发_python_消费电子-仿真秀视频课程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 09:10 , Processed in 0.435590 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表