Matlab-python-ABAQUS数据交互及联合使用

在Matlab可以方便地实现各种优化算法,ABAQUS可以方便地进行有限元建模及求解,有时候两者结合可以更方便做一些自己想做的事,例如通过遗传算法,神经网络等算法进行参数反演,确定本构模型的参数。ABAQUS/CAE的内核语言是Python,通过Python可以方便地读取ABAQUS的结果数据库odb的数据。这里介绍一些关于如何进行三者的交互,编写交互的方法与经验。关于ABAQUS中odb的数据结构这里就不多说,参考相关书籍。在这里插入图片描述通过matlab提交inp文件给ABAQUS计算

可以在matlab里面直接通过系统调用向ABAQUS提交计算文件及相关计算参数,包括用户子程序,cpu数量等。下面是一个函数接口。

接口函数例子:在这里插入图片描述runabaqus(Path,UserFile,InpFile,cpus):
这是一个Matlab接口函数,同时也是实现程序。功能是根据指定参数向ABAQUS提交计算文件,并监测ABAQUS计算过程。参数列表(Path,userFile,InpFile,cpus)含义分别为:
1)Path:inp计算文件所在的绝对路径。
2)UserFile:用户Fortran子程序,如果有子程序就给子程序的文件名,没有的话就不要这个参数,把runabaqus的一行代码inputFile=[‘abaqus job=’,InpFile,’ user=’,userFile,’ cpus=’,cpus],改为inputFile=[‘abaqus job=’,InpFile,’ cpus=’,cpus]。
3)InpFile:inp计算文件的文件名。
4)cpus:指定ABAQUS求解器使用的cup数量。

其实只需一条命令,system(abaqus job=Inpfile )就可以完成提交计算文件,其他都是辅助,使接口函数适用性更好,把实现方法封装起来。有了接口函数,在matlab定义好相关参数,调用接口就行。

应用例子:在这里插入图片描述
—matlab利用python脚本读取odb数据

思路是:matlab把读取数据的要求写入个txt文件(这里是req.txt),调用python脚本,python脚本读取odb的结果数据,并写入另一个txt文件(这里是RF3.txt),matlab再从txt文件读取数据。首先编写python接口函数,实现从odb提取特定的结果数据。

例子:读取一个参考点的反力RF3
在这里插入图片描述在这里插入图片描述这是一个python程序,是get_history_output接口的功能实现程序,被get_history_output接口函数调用。其功能是读取req.txt里的参数,按照设定的参数读取odb数据库,并把结果写入”结果关键字.txt”文件,例如读取的是反力RF3时,其结果会被写入”RF3.txt”文件,以供其他程序使用。

有了python脚本就可以在matlab里调用它来读取ABAQUS的结果数据。当然在matlab里要指定odb文件名,部件名,节点名称等信息,为了把实现封装起来,也把调用python脚本的matlab程序写成一个函数get_history_output。

调用python脚本的matlab函数:
在这里插入图片描述get_history_output(Path,OdbFile,step,req)说明:
这是一个matlab接口函数,实现程序是python程序odbHistoryOutput.py。get_history_output的功能是将用户指定的参数写入req.txt文件,调用odbHistoryOutput.py程序读取ABAQUS结果数据库odb的结果数据。(Path,OdbFile,step,req)参数列表含义分别为:
1)Path:odb文件所在的绝对路径。
2)OdbFile:odb数据库的文件名。
3)step:指定读取的分析步。
4)req:读取数据的要求,包括部件名、节点名、结果关键字,例如,req定义如下:
req=’PLATEN-1, Node PLATEN-1.5322,RF3’;
则指明了程序去读取部件名为PLATEN-1,节点名Node PLATEN-1.5322的反力RF3。注意,与历史变量相关的节点名是系统命名的,但是这些节点名有一定的规律,总是这样的形式“Node+空格+instance name.节点号”。

这里的参数(Path,OdbFile,step,req)是读取odb结果需要的,先把它们写入到req.txt文件,供上面的python脚本odbHistoyOutput.py读取。其中showlogfile函数显示python运行时输出的信息,这些信息保存在pylog.txt文件中。该函数的实现在另一篇博客Matlab目录操作及fgetl函数已经介绍。

那么在matlab里就可以指定odb相关信息,调用上面的函数来get_history_output获得odb数据。

应用例子:在这里插入图片描述特别说明
这里与历史变量输出的节点或节点集的名称与你在step里设置历史结果输出指定的节点名是不一样的,与历史变量相关的节点名是系统命名的,这里只有用系统命名的节点名作为参数,才能正确读取所要的历史结果输出。但是这些节点名有一定的规律,总是这样的形式“Node+空格+instance name.节点号”,例如我的模型里有一个部件叫PLATEN-1,定义了一个参考点,并把它设置为一个set,在step里设置了输出它的反力RF3,并且我知道了它的的节点号是5322,那么我设置历史结果相关的节点名称是就是“Node PLATEN-1.5322”。
运行程序后,首先matlab把参数写入req.文件。req.txt记录了指定的相关参数,以逗号隔开,每个参数,如下:在这里插入图片描述然后matlab调用python脚本odbHistoyOutput.py,读取odb数据。odb首先读取req.txt的参数,然后再根据参数去读取odb数据,把结果写入ReqData(即RF3.txt),结果包含时间和反力RF3,如下(部分省略):
在这里插入图片描述这里matlab与python脚本之间可能有比较的参数和数据需要传递,因此,我这里先把要传递的参数和数据写入特定的txt文件,然后再由另一程序去读取。其次是这里尽量把每个简单的功能写成函数,这样有助于更容易调试程序,不断添加新功能和集成。这就是增量式开发的思想。

  • 36
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
目 录 第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 自然泛
MatlabPythonAbaqus是广泛应用于科学计算和工程领域的三种软件工具。 Matlab是一种高性能、易用且广泛使用的数值计算工具,它提供了丰富的函数库和工具箱,可用于数据分析、信号处理、数值模拟等各种科学与工程计算任务。Matlab具有交互性强、语法简洁、图形化处理能力强等特点,非常适合用于快速原型设计和算法验证。 Python是一种通用编程语言,它具有简洁灵活的语法、强大的库支持和开源优势。Python凭借其庞大而活跃的社区以及大量的科学计算库(如NumPy、SciPy、Pandas等),成为了科学计算和数据分析的首选工具。与Matlab相比,Python的优势在于其开源性和通用性,可以更好地与其他软件和编程语言进行集成。 Abaqus是一种用于有限元分析的商业级软件,用于模拟和求解结构力学、流体力学和热传导等工程和科学问题。Abaqus提供了丰富的建模、分析和后处理功能,并支持用户自定义材料模型和边界条件。通过Abaqus,用户可以对复杂的物理问题进行建模、仿真和优化,以获得结构的应力、应变、位移和其他相关结果。 MatlabPython都可以与Abaqus集成,通过编写脚本和使用API接口,可以将MatlabPython的功能扩展到Abaqus中。例如,可以使用MatlabPython编写脚本来批量处理Abaqus的输入文件,实现参数化建模和结果后处理。此外,MatlabPython还可以通过Abaqus提供的API接口,调用Abaqus的求解器和功能模块,实现更高级的问题求解和优化。 综上所述,MatlabPythonAbaqus是三种在科学计算和工程领域中具有重要作用的软件工具,它们各自具备独特的特点和优势,并可以相互配合使用,为用户提供更强大的分析和仿真能力。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值