Workbench中利用python实现材料参数化定义
2017-09-15 by:CAE仿真在线 来源:互联网
在workbench中实现整个过程的参数化过程除了前几次文章介绍的模型与网格,还应该包括材料参数的参数化定义。利用Python进行二次开发能够实现材料参数的自由定义,比如来源于excel表格或者文档的数据,通过Python代码的自动读取,参与到实际的有限元分析进程中。
由于在workbench中定义材料的操作比其他有限元软件麻烦很多,因此先就在workbench中如何定义多种材料属性作一些说明,以加强对材料定义过程的认识。此后再进行python材料参数的定义。
在Workbench平台添加一个结构分析系统,右键进入材料编辑状态,如下所示:
![Workbench中利用python实现材料参数化定义ansys分析图片1](http://www.1cae.com/i/g/46/46684c324cdb4250472d2311e686d454r.png)
图1
打开之后的界面如下所示,默认已经有了Structural Steel材料。
![Workbench中利用python实现材料参数化定义ansys分析图片2](http://www.1cae.com/i/g/b9/b97b7ddb400c718f640ffdb331084a36r.jpg)
图2
如果需要添加第二种材料,则进入Engineering Data Sources,如下所示。
![Workbench中利用python实现材料参数化定义ansys分析图片3](http://www.1cae.com/i/g/63/63e856c090e91522baf68bf4c9bd6d0fr.png)
图3
进入之后如下所示。
![Workbench中利用python实现材料参数化定义ansys分析图片4](http://www.1cae.com/i/g/50/5057cd2e0703fea3523d09839b2f69ecr.jpg)
图4
材料参数可以进行修改,如下所示,按照图5的顺序即可修改某些材料参数,其中勾选1处表示进入编辑模式,只有进入编辑模式后才可以修改具体的某些参数。
![Workbench中利用python实现材料参数化定义ansys结果图片5](http://www.1cae.com/i/g/1a/1a35cec11624f8097fb8e44cf56a35dar.jpg)
图5
如果想要添加第二种材料,那么点击如下图所示的添加按钮即可。
![Workbench中利用python实现材料参数化定义ansys结果图片6](http://www.1cae.com/i/g/fb/fb7a7b3e1419df40cda3098265425b2cr.png)
图6
同样的,如果想要添加同一种材料但是不同的材料参数时,例如添加第二种钢材,也是点击添加按钮,不过需要修改参数后再添加,注意,添加材料时需要先退出编辑模式。
最终添加了三种材料如下所示:
![Workbench中利用python实现材料参数化定义ansys结果图片7](http://www.1cae.com/i/g/c2/c2b5f4803c5454026a501f98fe67d6e3r.jpg)
图7
图7中有是否抑制材料的选择,如果选择抑制,那么在后续选择材料赋予时将看不到该材料。
上面的过程是如何定义多种不同的材料,下面便是具体给模型赋予材料。给模型赋予材料的基础是solid,因此只有不同的solid才可能赋予不同的材料,在建模时需要考虑此问题。
进入Model模块,先通过File-Refresh更新数据,然后如下所示:
![Workbench中利用python实现材料参数化定义ansys结果图片8](http://www.1cae.com/i/g/5b/5b62f2f80a6f3036004817ac55a78a92r.jpg)
图8
可以给每一个solid分别赋予不同的材料,然后划分网格即可。
以下一段代码是在Workbench中通过Python设定材料的弹性模量和泊松比参数:
# encoding: utf-8
# Release 16.0
SetScriptVersion(Version="16.0.361")
template1 = GetTemplate(TemplateName="EngData")
system1 = template1.CreateSystem()
template2 = GetTemplate(
TemplateName="Static Structural",
Solver="ANSYS")
system2 = template2.CreateSystem(
Position="Right",
RelativeTo=system1)
engineeringDataComponent1 = system2.GetComponent(Name="Engineering Data")
engineeringDataComponent2 = system1.GetComponent(Name="Engineering Data")
engineeringDataComponent1.ReplaceWithShare(
TargetSystem=system2,
ComponentToShare=engineeringDataComponent2,
SourceSystem=system1)
engineeringData1 = system1.GetContainer(ComponentName="Engineering Data")
material1 = engineeringData1.GetMaterial(Name="Structural Steel")
matlProp1 = material1.GetProperty(Name="Elasticity")
E=220000000000
nu=0.29
E_str="%s [Pa]" % E
nu_str="%s" % nu
matlProp1.SetData(
Variables=["Young's Modulus"],
Values=[["%s" % E_str]])
matlProp1.SetData(
Variables=["Poisson's Ratio"],
Values=[["%s" % nu]])
engineeringDataComponent2.Update(AllDependencies=True)
上述代码在workbench平台定义了一个Engineering Data模块和一个Static Structure模块。该例子中将弹性模量和泊松比作为可以修改的材料参数,利用字符串变量E_str和nu_str获取弹性模量和泊松比的值,再利用SetData函数将这两个参数给Engineering Data模块。
Workbench平台的界面如下所示。
![Workbench中利用python实现材料参数化定义ansys结果图片9](http://www.1cae.com/i/g/80/80e26628959c6589b0a3541fe86ca192r.png)
图9
进入Engineering Data模块,可以看到如下所示的结果,弹性模量和泊松比和上述python代码中定义的数值一样。
![Workbench中利用python实现材料参数化定义ansys结果图片10](http://www.1cae.com/i/g/0c/0c7efe36626dbddfb732d690aaf2032dr.png)
图10
同样,图10中的其他参数也可以进行参数化定义。如果在上述python代码中添加相关的文件读写,那么就可以实现从已有文件中读取相关的材料参数进行替换。
姊妹篇:
《Workbench利用Python驱动MAPDL执行APDL命令》
《Workbench利用Python驱动DM执行Js进行建模》
其他workbench二次开发细节:
《利用Python在Workbench的DM中进行几何操作》
《利用Python和API函数创建几何模型实例说明》
相关标签搜索:Workbench中利用python实现材料参数化定义 Ansys有限元培训 Ansys workbench培训 ansys视频教程 ansys workbench教程 ansys APDL经典教程 ansys资料下载 ansys技术咨询 ansys基础知识 ansys代做 Fluent、CFX流体分析 HFSS电磁分析 Abaqus培训