首页/文章/ 详情

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

1年前浏览783

 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[0] ** 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)[1]
   

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文件.mvw


  1. 启动HyperStudy

  2. file菜单,点击Use Preferences File

  3. 选择编写好的.mvw文件

04


函数的使用


    需要注意的是HyperStudy向Python传递数组类型的参数时,是使用{}的而不是[],如下的在HyperStudy中的计算结果与直接使用python时一致的。




来源:SimCoder
Abaquspython
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-02-02
最近编辑:1年前
签我的导演他姓张
本科 怕什么真理无穷进一寸有一寸欣喜
获赞 51粉丝 51文章 44课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈