• 回答数

    0

  • 浏览数

    698

  • 收藏数

    0

作者:团子良 发表于 2022-8-23 10:35:42
跳转到指定楼层
HyperStudy一直是我最喜欢的优化引擎,使用python可以为其创建复杂的响应,更是可以创建基于个人平时工作常用的优化目标,如原点平均动刚度,则该响应即可直接用于优化设计。本文的目的是介绍一下HyperStudy注册Python函数的流程。
HyperStudy注册python函数的流程非常简单:

1.定义一个有返回值的函数,因为其返回值是作为响应的或用于计算的,所以必须要有返回值;

2.编写HyperStudy preferences文件.mvw,在其内注册1中定义的函数;

3.在HyperStudy中使用2中的mvw文件。

01 复杂响应的python函数
定义一个复杂相应函数,存为.py文件。本文以源点平均动刚度为例,定义DynamicStiffnessForHS.py文件其内容如下:
  1. from numpy import trapz


  2. def dynamic_k_avg(x, y):
  3.     pi = 3.141592653

  4.     f = x[-1] ** 3 - x[0] ** 3

  5.     area = trapz(y, x, dx=0.001)

  6.     # print(area)

  7.     return area, 4 * pi * pi * f / (3 * area)


  8. def dk(x, y):
  9.     return dynamic_k_avg(x, y)[1]
复制代码
02 HyperStudy preferences文件.mvw
文件内容如下:

  1. *Id("HyperStudy v21.0")
  2. *BeginDefaults()
  3. *BeginPlotDefaults()
  4. *RegisterPythonFunction("dk","K:\my-simulation\Abaqus\Abaqus_MainGui_customize\abaqus_plugins\dynamic_stiffness\DynamicStiffnessForHS.py",2)
  5. *EndPlotDefaults()
  6. *EndDefaults()
复制代码
可以看出*RegisterPythonFunction就是注册python函数的关键指令,关于该指令说明如下:
03 使用preferences文件.mvw
1.启动HyperStudy
2.file菜单,点击Use Preferences File
3.选择编写好的.mvw文件
04 函数的使用
需要注意的是HyperStudy向Python传递数组类型的参数时,是使用{}的而不是[],如下的在HyperStudy中的计算结果与直接使用python时一致的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册 微信登录

x
分享:
回复

使用道具

成为第一个回答人

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录