Ansys Workbench如何利用Python脚本快速批量定义材料

您所在的位置:网站首页 ansys设置材料属性 Ansys Workbench如何利用Python脚本快速批量定义材料

Ansys Workbench如何利用Python脚本快速批量定义材料

2024-07-14 09:49| 来源: 网络整理| 查看: 265

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

对于使用Workbench的用户而言,定义材料是一个比较繁琐的过程,特别是当材料种类多且又没相应的材料库时。解决方式有两种:

一、采用插入APDL命令流来解决。

APDL可快速定义材料,然而在Mechanical赋值操作比较麻烦,需要定义不同的NS组并使用Emodif命令来修改材料属性,在手动操作方面不是特别方便。

二、采用Python脚本来解决。

WB中的材料定义属于项目流程图界面的操作,所以要实现材料的快速批量定义,只能通过WB流程图的脚本运行窗口来实现。

本文介绍脚本的方法。

WB项目流程图界面的脚本窗口通过如下路径打开:

Ansys Workbench如何利用Python脚本快速批量定义材料

与SC和Mechanical的脚本窗口不同,WB的脚本窗口非常简单,是一种及时响应式窗口,也即用户输入命令后,点击Enter键会马上出现运行结果,与APDL的窗口类似。另外,WB目前所使用的编程语言为IronPython,版本为2.7,基本语法同目前的Python3语法相同,所以用户操作起来难度不大。

关于IronPython与Python的区别,感兴趣的同学可去水哥博客看下面这篇文章:

ANSYS Workbench二次开发- IronPython与Python3的区别与联系

打开后的WB脚本运行窗口如下所示:

Ansys Workbench如何利用Python脚本快速批量定义材料2

如果了解WB项目流程界面的脚本语法,则可在另外的代码编辑器中手戳代码,然后复制到窗口中按Enter即可运行,如果不是特别熟悉代码的同学,可打开WB自带的日志记录功能来实现“半自主化”操作。

点击菜单栏File-Scripting-Record Journal,然后设置日志文件的保存路径即可开始记录在WB界面的操作代码,日志文件的后缀名为wbjn。

设置好记录文件后,我们即可按正常的操作步骤,这里以定义一个钢材BKIN的本构为例,如下所示。

整个操作分为四步:

第一步:在WB界面从左侧工具箱中拖入组件Engineering Data

第二步:打开组件中的Engineering Data模块,建立新材料,名为Q355

第三步:在材料定义界面,从左侧工具箱中拖入Density、Isotropic Elasiticity、Billnear IsotropicHardening属性

第四步:分别填入上述属性的值

Ansys Workbench如何利用Python脚本快速批量定义材料3

Ansys Workbench如何利用Python脚本快速批量定义材料4

操作完成后,打开日志记录文件,代码如下:

template1 = GetTemplate(TemplateName="EngData") system1 = GetSystem(Name="SYS") system2 = template1.CreateSystem() engineeringData1 = system2.GetContainer(ComponentName="Engineering Data") matl1 = engineeringData1.CreateMaterial(Name="Q355") matlProp1 = matl1.CreateProperty( Name="Density", Qualifiers={"Definition": "", "Behavior": ""}) matlProp2 = matl1.CreateProperty( Name="Elasticity", Behavior="Isotropic", Qualifiers={"Definition": "", "Behavior": "Isotropic"}) matlProp3 = matl1.CreateProperty( Name="Kinematic Hardening", Definition="Bilinear", Qualifiers={"Definition": "Bilinear", "Behavior": ""}) matlProp1.SetData( Index=-1, Variables=["Density"], Values=[["7850 [kg m^-3]"]]) matlProp2.SetData( Index=-1, Variables=["Young's Modulus"], Values=[["210000000000 [Pa]"]]) matlProp2.SetData( Variables=["Poisson's Ratio"], Values=[["0.2"]]) matlProp3.SetData( Index=-1, Variables=["Yield Strength"], Values=[["355000000 [Pa]"]]) matlProp3.SetData( Variables=["Tangent Modulus"], Values=[["0 [Pa]"]])

根据我们的操作步骤以及代码中出现的关键字眼(例如材料名称,材料属性值)来分解代码,各步骤的操作代码如下。

第一步:在WB界面中定义Engineering Data组件。

template1 = GetTemplate(TemplateName="EngData") system1 = GetSystem(Name="SYS") system2 = template1.CreateSystem()

第二步:创建名为Q355的材料

engineeringData1 = system2.GetContainer(ComponentName="Engineering Data") matl1 = engineeringData1.CreateMaterial(Name="Q355")

第三步:定义材料的各项属性

matlProp1 = matl1.CreateProperty( Name="Density", Qualifiers={"Definition": "", "Behavior": ""}) matlProp2 = matl1.CreateProperty( Name="Elasticity", Behavior="Isotropic", Qualifiers={"Definition": "", "Behavior": "Isotropic"}) matlProp3 = matl1.CreateProperty( Name="Kinematic Hardening", Definition="Bilinear", Qualifiers={"Definition": "Bilinear", "Behavior": ""})

第四步:分别定义各项属性的值

matlProp1.SetData( Index=-1, Variables=["Density"], Values=[["7850 [kg m^-3]"]]) matlProp2.SetData( Index=-1, Variables=["Young's Modulus"], Values=[["210000000000 [Pa]"]]) matlProp2.SetData( Variables=["Poisson's Ratio"], Values=[["0.2"]]) matlProp3.SetData( Index=-1, Variables=["Yield Strength"], Values=[["355000000 [Pa]"]]) matlProp3.SetData( Variables=["Tangent Modulus"], Values=[["0 [Pa]"]])

从上述分解的代码可见,其实整个代码流程非常简单,如果我们要批量定义材料,只需要写个循环,将上述除了第一步外的代码放入循环中,然后将我们的材料变量(材料名+属性值)依次改变即可。

注意这里所有的变量都是以字符型的数据表示,故而如果外部数据为浮点数,要首先使用str方法转为字符型变量。

案例:采用批量方法定义下述20种材料,均采用BKIN,材料的各项属性如下所示。

Ansys Workbench如何利用Python脚本快速批量定义材料5

代码流程如下:

第一步:将上述数据保存在一个txt文档中(Mymat.txt),然后通过python读入。由于这里不需要考虑序号,所以文档中只有后面四列数据。

代码如下:

file="D:\ANSYS_Civil\Mymat.txt" #定义四个数组用以存储材料属性值 Mymat_Dens=['']*20 Mymat_Prxy=['']*20 Mymat_Ex=['']*20 Mymat_Qufu=['']*20 #读取数据 with open(file,'r') as fin: data=fin.readlines() for i in range(0,20): matdata=data[i].split() Mymat_Dens[i]=matdata[0] Mymat_Prxy[i]=matdata[1] Mymat_Ex[i]=matdata[2] Mymat_Qufu[i]=matdata[3]

第二步:批量定义材料并输入数据

#创建组件 template1 = GetTemplate(TemplateName="EngData") system1 = GetSystem(Name="SYS") system2 = template1.CreateSystem() #创建材料 for i in range(0,20): #定义材料名称为mymat_+序号,注意名字的参数化 mat_name="Mymat_"+str(i) engineeringData1 = system2.GetContainer(ComponentName="Engineering Data") matl1 = engineeringData1.CreateMaterial(Name=mat_name) #定义材料的属性,这一部分不需要改动,直接复制上述代码 ################### matlProp1 = matl1.CreateProperty( Name="Density", Qualifiers={"Definition": "", "Behavior": ""}) matlProp2 = matl1.CreateProperty( Name="Elasticity", Behavior="Isotropic", Qualifiers={"Definition": "", "Behavior": "Isotropic"}) matlProp3 = matl1.CreateProperty( Name="Kinematic Hardening", Definition="Bilinear", Qualifiers={"Definition": "Bilinear", "Behavior": ""}) ###############################3 #定义属性值,注意单位的不同,且需要符号化 mat_dens=Mymat_Dens[i]+' [kg m^-3]' mat_prxy=Mymat_Prxy[i] mat_ex=Mymat_Ex[i]+' [GPa]' mat_qufu=Mymat_Qufu[i]+' [MPa]' #开始定义,数据用参数替换 matlProp1.SetData( Index=-1, Variables=["Density"], Values=[[mat_dens]]) matlProp2.SetData( Index=-1, Variables=["Young's Modulus"], Values=[[mat_ex]]) matlProp2.SetData( Variables=["Poisson's Ratio"], Values=[[mat_prxy]]) matlProp3.SetData( Index=-1, Variables=["Yield Strength"], Values=[[mat_qufu]]) matlProp3.SetData( Variables=["Tangent Modulus"], Values=[["0 [Pa]"]]) Variables=["Density"], Values=[[mat_dnes]]) matlProp2.SetData( Index=-1, Variables=["Young's Modulus"], Values=[[mat_ex]]) matlProp2.SetData( Variables=["Poisson's Ratio"], Values=[[mat_prxy]]) matlProp3.SetData( Index=-1, Variables=["Yield Strength"], Values=[[mat_qufu]]) matlProp3.SetData( Variables=["Tangent Modulus"], Values=[["0 [Pa]"]])

复制上述代码至脚本运行窗口,运行完毕后,双击Engineering Data查看,如下所示,复核Mymat_14的数据,注意序号是从0开始,所以要核对第15行的材料数据。

Ansys Workbench如何利用Python脚本快速批量定义材料6

Ansys Workbench如何利用Python脚本快速批量定义材料7

经复核后没有问题,说明上述方法可行。

以上方法便为采用WB批量定义材料的方法,前提条件是批量定义的材料属性类型一致,只是属性值不同,适用于根据实测试验数据结果来进行材料的定义。

本文内容主要体现了Python脚本在ANSYS中处理重复化操作的便利,如果有学员需要彻底了解ANSYS Workbench脚本的具体操作方式,可参考水哥的Workbench软件二次开发专题教程,点击如下链接了解详情:

于Python脚本ANSYS Workbench软件二次开发专题教程

欢迎搜索关注本站微信公众号:ANSYS结构院

如果觉得本网站的文章和资源对您的研究具有一定的帮助,欢迎给网站捐助,您的支持是我坚持下去的动力!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3