abaqus与matlab联合仿真

本文介绍了如何解决Abaqus与Matlab联合仿真时遇到的许可证、文件匹配和节点名称等问题。通过修改inp文件、设置req.txt、调用abaqus接口函数runabaqus.m和python脚本odbHistoyOutput.py来实现仿真和结果提取。关键在于部件名和节点名必须与inp文件一致,并确保所有相关文件在同一目录下。对于错误排查,检查.odb文件大小和req参数的正确性至关重要。
部署运行你感兴趣的模型镜像

abaqus与matlab联合仿真

取材于2020.11的资料,文档整理于2021.2.7


引:启动abaqus license

如果运行abaqus报错如下图:

在这里插入图片描述
在这里插入图片描述

则点击abaqus licensing,选择第四个【Start/Stop/Reread】,点击第一个按钮【Start Server】,下方显示框中显示【Server Start Successful.】,再次打开abaqus ACE即可,如果还是报错就再开一次。

abaqus licensing界面:

在这里插入图片描述

正常打开的abaqus提示框:

在这里插入图片描述

联合编程思路

注:本文所用的接口函数runabaqus.mget_history_output.modbHistoyOutput.py这篇博客相同。

一、abaqus中完成有限元建模,得到模型文件,进行一次仿真,得到自动生成的.inp文件。

​ 具体建模方法在前两篇博客里已有详细描述。

二、matlab调用abaqus引擎进行仿真

  1. 根据需要的参数修改.inp文件

    选本次模型用abaqus仿真时自动生成的.inp文件作为初始文件进行修改比较省事。一般是根据要求修改载荷力和分析步长,注意matlab代码中的具体修改的是inp文件的哪行要打开inp文件进行确认,改错行结果肯定凉凉。

  2. 根据需要读取的结果设置req.txt

    %e.g.
    req='PART-1-1,Node PART-1-1.11,U2'; %指定部件名,节点名和读取的结果
    

    部件名即inp文件中的实例名*Instance, name=Part-1-1, part=Part-1,每个inp文件内容会略有差别,我这个在第51行。节点名一定要大写,不管你在abaqus里命名的大写还是小写这里都必须大写

  3. matlab调用abaqus引擎的接口runabaqus.m,提交inp文件运行,得到.odb结果文件。

  4. matlab调用python脚本odbHistoyOutput.py,根据req.txt的要求,从.odb文件中读取仿真结果数据并存入结果txt。

  5. matlab读取结果txt中的数据并绘图。

利用matlab调用abaqus引擎获取变载荷的仿真过程变量(例如端点位移量)的原理是,多次调用abaqus进行仿真,每次只仿真分析步长的时间,获取本次仿真中最后一个时刻变量值,再进行下一次仿真。例如仿真时长为 0.4 s 0.4s 0.4s,分析步长为 0.01 s 0.01s 0.01s,则要进行 0.4 / 0.01 = 40 0.4/0.01=40 0.4/0.01=40次仿真。两次仿真之间可以通过修改inp文件修改载荷力,即可实现变载荷力仿真,如正弦载荷。

所以运行一次仿真的时间都比较长,需要根据仿真结果调pid参数的时候可以酌情减少仿真时长阶节约时间,毕竟pid参数好不好前两次超调的一小段就已经能说明很多问题了。

报错:未找到匹配的文件。

我进行软体手指的受力位移仿真时,报错:

>> finger
Abaqus License Manager checked out the following license(s): 
"cae" release 6.12 from DESKTOP-8I4F446 
<1022 out of 1024 licenses remain available>. 
KeyError: Node finger_8-1.45 
File "odbHistoyOutput.py", line 38, in <module> 
    region =step_n.historyRegions[node_set] 
 
Abaqus Error: cae exited with an error. 
错误使用 movefile
未找到匹配的文件。

出错 finger (line 15)
    movefile('COOR1.txt', 'N_X.txt');

我修改了odbHistoyOutput.py,增加了提示性输出,发现运行到region =step_n.historyRegions[node_set]一句就不会再往下运行。我猜到是传入的参数node_set即matlab中req的第二个参数有问题,但穷尽想象力尝试到凌晨四点也没能解决,第二天去问师姐,师姐说名称必须大写,我改成大写果然可以了。这个离谱规定让我记忆犹新。

其他注意事项

1、runabaqus.mget_history_output.modbHistoyOutput.py必须与运行的.m文件放在同一目录下,否则会报错类似:

>> beam1
未定义函数或变量 'runabaqus'。

出错 beam1 (line 24)
runabaqus(Path,InpFile,cpus);         %运行abaqus进行计算

2、未找到匹配文件的报错可能原因有很多,从仿真运行到结果读取,任何一个小环节出问题最后大概率在movefile处报错。

排查思路:

(1)看生成的.odb文件的大小,若没有这个文件或文件过小(正常应该至少10M),就是仿真环节已经出问题了。检查abaqus licensing是否运行,若仿真环节没有问题会输出提示类似:

----------ABAQUS complete----------
           time costed  0:0:26
Abaqus License Manager checked out the following license(s): 
"cae" release 6.12 from DESKTOP-8I4F446 
<1023 out of 1024 licenses remain available>. 

(2)若.odb文件大小正常,逐个检查req参数,软体手指仿真中此句为:

req=['FINGER_8-1,Node FINGER_8-1.1,COOR1']; %指定部件名,节点名和读取的结果

循环获取多个节点输出时可写为:

nodef='Node FINGER_8-1.';     %用instance的名字,不管在abaqus里是大写还是小写这里都写成大写
%节点顺序按abaqus里查看的顺序排列
node=[19,45,955,1032,1231,1309,1507,185,207,1724,1816,2000,2092,2290,364,397,417,437,2866,468]; 
nx=zeros(27,20);ny=zeros(27,20);nz=zeros(27,20);
for k=1:1:20
    nodename=[nodef num2str(node(k))];
    k % 输出进度
    req=['FINGER_8-1,' nodename ',COOR1'];  %指定部件名,节点名和读取的结果
    %其他调用部分...
end

注意部件名和节点名必须和.inp文件中一致,且一定要在abaqus中要创建这些节点所需的历程输出(即输出COOR1)。


当时做联合仿真的时候踩了很多坑,本来想记录一下常见报错及解决思路,结果考试周那会儿太忙了没抽出时间,寒假里倒是有时间了,但有哪些坑都忘得差不多了,尝试重新做了一遍居然一次成功,想踩坑的时候倒踩不到了。。。根据记忆整理了本文,如有缺漏有缘再补充。

参考链接:

https://blog.youkuaiyun.com/hdpai2018/article/details/106113842

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

目 录 第1章 导论 1 1.1 引言 1 1.2 有限元分析用户 1 1.3 本书的目的 1 1.4 本书的结构 2 第2章 杆单元 4 2.1 引言 4 2.2 一维杆单元 4 2.2.1 刚度矩阵:直接法 4 2.2.2 二维杆单元 6 2.3 整体刚度矩阵的组集 8 2.3.1 离散化 8 2.3.2 局部坐标系下的单元刚度矩阵 8 2.3.3 整体坐标系下的单元刚度矩阵 9 2.3.4 整体刚度矩阵的组集 10 2.3.5 整体力矢量 11 2.4 边界条件 12 2.4.1 一般情况 12 2.5 方程组求解 14 2.6 支反力 14 2.7 杆件的轴力 15 2.8 计算机程序:truss.m 16 2.8.1 数据准备 16 2.8.2 单元矩阵 18 2.8.3 整体刚度矩阵的组集过程 19 2.8.4 整体坐标系下力矢量的组集 19 2.8.5 整体方程组的解 19 2.8.6 节点位移 19 2.8.7 单元力 20 2.8.8 程序代码 20 2.9 问题求解 24 2.9.1 问题2.1 24 2.9.2 问题2.2 28 2.10 基于Abaqus的简单桁架分析 31 2.10.1 Abaqus概述 31 2.10.2 使用Abaqus的用户交互版本分析桁架 32 2.10.3 使用Abaqus的关键字版本分析桁架 47 第3章 梁单元 51 3.1 引言 51 3.2 刚度矩阵 52 3.3 均布载荷 55 3.4 中间铰链 58 3.5 计算机程序:beam.m 60 3.5.1 数据准备 60 3.5.2 整体刚度矩阵的组集和求解 63 3.5.3 节点位移 63 3.5.4 单元力 63 3.6 问题求解 67 3.6.1 问题3.1 67 3.6.2 问题3.2 70 3.6.3 问题3.3 73 3.7 基于Abaqus的简单梁模型分析 76 3.7.1 用户交互版本 76 3.7.2 关键字版本 85 第4章 刚架 89 4.1 引言 89 4.2 梁柱单元的刚度矩阵 89 4.3 两端铰接的梁柱单元的刚度矩阵 90 4.4 整体坐标系和局部坐标系 90 4.5 整体刚度矩阵的组集和未知位移求解 91 4.6 计算机程序:frame.m 91 4.6.1 数据准备 91 4.6.2 单元矩阵 93 4.6.3 整体刚度矩阵的组集 95 4.6.4 线性方程组的求解 95 4.6.5 节点位移 95 4.6.6 单元力 95 4.7 基于Abaqus的简单刚架分析 105 4.7.1 用户交互版本 105 4.7.2 关键字版本 111 第5章 应力和应变分析 114 5.1 引言 114 5.2 应力张量 114 5.2.1 定义 114 5.2.2 应力张量和应力矢量之间的关系 116 5.2.3 应力张量的变换 117 5.2.4 平衡方程 117 5.2.5 主应力 119 5.2.6 Mises应力 119 5.2.7 应力矢量的法向和切向分量 120 5.2.8 莫尔应力圆 121 5.2.9 应力的工程表示方法 121 5.3 变形和应变 122 5.3.1 定义 122 5.3.2 拉格朗日描述和欧拉描述 123 5.3.3 位移矢量 123 5.3.4 位移和变形梯度 124 5.3.5 格林应变矩阵 125 5.3.6 小变形理论 127 5.3.7 主应变 129 5.3.8 应变张量的变换 129 5.3.9 应变的工程表示方法 130 5.4 应力-应变的本构关系 130 5.4.1 广义胡克定律 130 5.4.2 材料的对称性 132 5.4.3 各向同性材料 134 5.4.4 平面应力平面应变 137 5.5 问题求解 139 5.5.1 问题5.1 139 5.5.2 问题5.2 139 5.5.3 问题5.3 141 5.5.4 问题5.4 143 5.5.5 问题5.5 144 5.5.6 问题5.6 145 5.5.7 问题5.7 145 5.5.8 问题5.8 147 第6章 加权残值法 148 6.1 引言 148 6.2 基本方程 148 6.3 伽辽金法 148 6.4 伽辽金法的弱形式 150 6.5 二维或三维问题的分部积分法(格林公式) 151 6.6 瑞利-里兹法 154 6.6.1 定义 154 6.6.2 积分形式的函数表达式 155 6.6.3 瑞利-里兹法简介 155 6.6.4 自然泛
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值