Matlab与Abaqus联合优化:调用技巧分享‌

这是一个matlab调用abaqus进行优化的例子

         一般来讲,获得材料的应力应变曲线(s-s曲线),需要做单轴拉伸实验(就是车个圆棒夹到拉伸机上去拉一下),学过力学课程的人应该都记得。现在有许多人想用一个硬球把材料压一下,得到球压下的载荷位移曲线(就是球压入的力和行走距离的曲线,L-h曲线)来反求材料的应力应变曲线,因为这样更方便。但是实验的方便意味着需要更好的计算方法来从载荷位移曲线解读出材料的应力应变曲线。国内西南交大的蔡力勋老师,山东大学的王威强老师,以及国外剑桥大学的Clyne教授组都在进行这个工作(还有很多,恕我不能一一列举)。他们建立了很多很好的算法来通过L-h反求s-s,属于科学研究工作。

         我的方法就比较简单,直接用abaqus模拟球压痕过程,基于优化算法不断调整输入参数(屈服强度Y和强化指数N),最终达到模拟的L-h与实验的L-h能够尽可能吻合,那么就求出了材料的实际Y和N。这就变成了一个没有科技含量的纯技术编程问题哈哈

        整个程序的执行过程是这样的:

主程序函数:SIITPowerLaw(),输入:弹性模量,压头半径(mm),实验L-h曲线路径,工作路径,优化的初值,上限,下限

优化目标函数:ObjFuncFEM(),输入:x(优化目标量),ElasticModulus,实验L-h曲线,工作路径,abaqus的模型.inp文件或者保存好的.mat

      在ObjFuncFEM中,运行过程是这样的:

  1. 首先调用genersigepsP()函数生成一个当前优化目标量值对应的应力-塑性应变曲线,
  2. 然后用modifyinp()函数把这个应力-塑性应变曲线写到.inp文件中,
  3. 再执行runabaqus()函数提交abaqus模拟,
  4. modifyPython()函数修改用于提取abaqus模拟所得L-h曲线的.py脚本
  5. 执行runPython()函数,在matlab中运行.py脚本,提取abaqus模拟所得L-h曲线
  6. 对比abaqus模拟所得L-h曲线与实验所得L-h曲线,获得误差error
  • 返回优化过程

       优化用的是matlab中自带的多点全局优化。由于每个.inp文件,.py文件都与优化目标量的当前值是一一对应的,所以这个优化过程是支持matlab的并行处理的。

      i5处理器4核并行,进行一次成功的优化(25个初始点)需要一晚上吧大概,每个abaqu模拟大概耗时30s,为了尽可能不在读取文件上浪费时间,已经把.inp和.py脚本都读入matlab并保存成了.mat,可以直接修改。

      目前优化效果合理,有待进一步验证。

改进:

  • 尽可能缩短abaqus模拟的时间,一个error计算需要30s,还有有点离谱 :(
  • 脱离abaqus,自己编写FEM程序,塑性变形部分比较熟悉,但是有关接触问题的有限元计算不太好搞,希望有大神可以指点。
  • 谁要程序(I guess nobody cares, haha)可以跟我联系

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空