首页/文章/ 详情

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

1年前浏览538

 HyperStudy一直是我最喜欢的优化引擎,使用python可以为其创建复杂的响应,更是可以创建基于个人平时工作常用的优化目标,如原点平均动刚度,则该响应即可直接用于优化设计。本文的目的是介绍一下HyperStudy注册Python函数的流程。



HyperStudy注册python函数的流程非常简单:

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

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

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


01

复杂响应的python函数

定义一个复杂相应函数,存为.py文件。本文以源点平均动刚度为例,定义DynamicStiffnessForHS.py文件其内容如下:

    from numpy import trapzdef 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年前
      签我的导演他姓张
      本科 怕什么真理无穷进一寸有一寸欣喜
      获赞 50粉丝 47文章 44课程 0
      点赞
      收藏
      未登录
      还没有评论
      课程
      培训
      服务
      行家
      VIP会员 学习 福利任务 兑换礼品
      下载APP
      联系我们
      帮助与反馈