团子良 发表于 2022-8-23 10:35:42

HyperStudy---使用python创建复杂响应

“ HyperStudy一直是我最喜欢的优化引擎,使用python可以为其创建复杂的响应,更是可以创建基于个人平时工作常用的优化目标,如原点平均动刚度,则该响应即可直接用于优化设计。本文的目的是介绍一下HyperStudy注册Python函数的流程。”
HyperStudy注册python函数的流程非常简单:
1.定义一个有返回值的函数,因为其返回值是作为响应的或用于计算的,所以必须要有返回值;
2.编写HyperStudy preferences文件.mvw,在其内注册1中定义的函数;
3.在HyperStudy中使用2中的mvw文件。
01 复杂响应的python函数定义一个复杂相应函数,存为.py文件。本文以源点平均动刚度为例,定义DynamicStiffnessForHS.py文件其内容如下:from numpy import trapz


def dynamic_k_avg(x, y):
    pi = 3.141592653

    f = x[-1] ** 3 - x ** 3

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

    # print(area)

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


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

页: [1]
查看完整版本: HyperStudy---使用python创建复杂响应