【ABAQUS 二次开发笔记】使用keyword 、python和matlab一起处理Odb数据
用conversion shell element (S4R单元)建模层合板,有6层ply,每个lamina(ply)有3个 integration point,共计18个integration point。我想得到集合SET-Middle-elem中所有integration point的E S TSHR13 TSHR23的output。
提取出结果后,我还需要根据剪切模量计算出13 23方向的shear strain。得到10个vars的output后,利用他们计算出整个laminate的弹性应变能(将每个单元的每个ply的弹性应变能U计算出来进行累加).计算很麻烦。

方法一:python访问odb文件
通过python 脚本访问odb文件,然后多个循环进行嵌套提取出output结果。这个办法可行,能够一下子访问到每个element的每个point.
import odbAccess
E=session.odbs['30d-50hz.odb'].steps["Step-1"].frames[10].fieldOutputs['E'].values[10]
print(E)
执行上述代码:
>>> import odbAccess
>>> E=session.odbs['30d-50hz.odb'].steps["Step-1"].frames[10].fieldOutputs['E']
>>> E.values[10]
session.openOdb(r'G:/SIMULIA/workspace/Tanslate_repetition/DMAsimulia/30d-50hz.odb').steps['Step-1'].frames[10].fieldOutputs['E'].values[10]
>>> print(E.values[10])
({
'baseElementType': 'S4R',
'conjugateData': None,
'conjugateDataDouble': 'unknown',
'data': array([0.0, -0.0, 0.0, 0.0], 'f'), 'dataDouble': 'unknown',
'elementLabel': 11,
'face': None,
'instance': 'OdbInstance object',
'integrationPoint': 1,
'inv3': 0.0,
'localCoordSystem': ((0.866025388240814, 0.5, 0.0), (-0.5, 0.866025388240814, 0.0), (0.0, 0.0, 0.999999940395355)),
'localCoordSystemDouble': 'unknown',
'magnitude': None,
'maxInPlanePrincipal': 0.0,
'maxPrincipal': 0.0,
'midPrincipal': 0.0,
'minInPlanePrincipal': 0.0,
'minPrincipal': 0.0,
'mises': 0.0,
'nodeLabel': None,
'outOfPlanePrincipal': 0.0,
'position': INTEGRATION_POINT,
'precision': SINGLE_PRECISION,
'press': -0.0,
'sectionPoint': 'SectionPoint object',
'tresca': 0.0,
'type': TENSOR_3D_PLANAR
}
)
>>> len(E.values)
10800
可以看出,在用odb的话就会循环非常多次才能算完,并且不容易定位到单个element。我感觉用python的话会code会非常混乱,逻辑不容易理清,因此放弃。
方法二:edit keywords 输出到dat文件,然后用MATLAB编程计算
通过关键字*EL PRINT可以将多个变量在指定积分点上的结果进行输出。这样输出有个好处就是,输出的结果ABAQUS会整理为 类似 table的样式。

这样的格式我可以用python进行处理,写入CSV文件。
但是使用*EL PRINT有一个问题比较麻烦:*EL PRINT关键字语句的 first data line 一次最多16个section integration point ,多于16个integration point 则需要重复使用*EL PRINT来输出结果。而我有18个integration point 如果分两次输出的话。那输出的就是两个 table .得到结果我还需要整合成一个matrix。不方便。
但是幸好,composite laminate 的每个ply之间是应力应变满足连续性条件。我可以不输出几个重合的integration point:
Aindex=[3 5 7 9 11]
后续需要在matlab中写一个function,恢复这五个integration point 的output。

function B = expanMat(A,Aindex)
%将13个积分点数据展开为18个积分点的矩阵
B=[];
sizeAindex=size(Aindex);
if isempty(Aindex)
B=A;
disp('A矩阵未改变')
else
%如果only移动一行就不循环了
if sizeAindex(1)+sizeAindex(2)==2
B=cat(1,A(1:Aindex(1),:),A(Aindex(1),:),A(Aindex(1)+1:end,:));
else
%把index向量升序排序
Aindex=sort(Aindex);
%得到A的行数
rows=size(A);
rows=rows(1);
%loop A matrix
for i=1:rows
temp=A(i,:);
% if the row operated is the member of Aindex(a array containts indexs of all rows needed to copy)
if ismember(i,Aindex)
B=cat(1,B,[temp;temp]);
else
B=cat(1,B,temp);
end
end
end
end
end
最后:

算出来的最小二乘结果,感觉误差比较大。
【ABAQUS 二次开发笔记】使用keyword 、python和matlab一起处理Odb数据的更多相关文章
- abaqus二次开发概述
说明 abaqus二次开发概述 导语 用户子程序特点 abaqus用户程序接口与调用方式 abaqus用户子程序分类 常用用户子程序介绍 Refence 说明 本系列文章本人基本没有原创贡献,都是在学 ...
- 【基于spark IM 的二次开发笔记】第一天 各种配置
[基于spark IM 的二次开发笔记]第一天 各种配置 http://juforg.iteye.com/blog/1870487 http://www.igniterealtime.org/down ...
- phpcms二次开发笔记
phpcms二次开发笔记 --soulsjie 以下载的全新的phpcms搭建一个新的站点为例,讲解如何利用phpcms进行二次开发 一.下载和安装phpcms http://www.phpcms.c ...
- Python什么是二次开发的意义?python在.net项目采用
任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作"二次开发"..net站点的话python主要是CGI才用.能够用python编写B/S程序. 解释一下二次开 ...
- (dede)织梦系统二次开发笔记
(dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...
- 研究QGIS二次开发笔记(一)
为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...
- RTX二次开发笔记2
问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...
- OTRS 二次开发笔记
公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...
- 派胜OA二次开发笔记(1)重写主界面
最近从派胜OA 2018 升级到 2019,为了二次开发方便,索性花了两天,反向分析 PaiOA 2019 主界面程序,重写大部分代码,方便对菜单权限进行控制. 主界面/core/index.aspx ...
- Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
前言 做一些数据处理软件,使用matlab文件,.mat文件. 准备条件 安装matlab2016,发现是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版 ...
随机推荐
- Maven 插件 git-commit-id-plugin,打包包含提交信息
Maven打包发布版本可能会遇到自己的提交不起作用的情况,排查比较困难,可能需要拉下服务器上包,反编译查看是否包含自己的提交记录.如果使用的是GIT作为SCM,可以使用 git-commit-id-p ...
- macOS 中有什么好用的虚拟机软件?
macOS 中有什么好用的虚拟机软件? https://www.zhihu.com/question/66366176/answer/268256386 问题:1.macOS是否有专门的虚拟机软件?或 ...
- 回顾 2024 年 19 期C#/.NET/.NET Core技术前沿周刊
前言 转眼之间2024年就只剩最后一天了,咱们的C#/.NET/.NET Core技术前沿周刊也从8月份的第 1 期持续更新到现在已经更新到了第 19 期了,今天咱们一起来回顾一下 2024 年 19 ...
- Python3网络爬虫开发实战阅读笔记
基本库的使用 网络请求库 urllib(HTTP/1.1) Python自带请求库,繁琐 基础使用:略 requests(HTTP/1.1) Python常用第三方请求库,便捷 基础使用:略 http ...
- R语言画图常用参数
plot(x,xlab = "degree",ylab = "number of nodes",main = "mRNA degree distrib ...
- 使用GPIO判断网线拔插
USB网卡和以太网交换机"常连"后,增加交换机插拔网线判断机制 这个项目已经做了小半年了,客户是一个做智能电话机的.所谓的智能电话就是一台可以插网线.电话线,外观却是座机的手机. ...
- linux下服务器稳定性压力测试工具stress安装使用介绍
linux下服务器稳定性压⼒测试⼯具stress安装使⽤介绍 一.简介 1.stress⼯具是Linux下一款压⼒测试⼯具, 可以模拟系统⾼负载运⾏ , 同时可协助我们进⾏软件稳 定性相关测试. ⼆. ...
- bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩
最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做Windows定期任务调用.bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩. 调用WinRAR来实现 因 ...
- LESLIE NOTE ——你的笔记只属于你自己
LESLIE NOTE 网站:http://www.leslienote.com 简介: [只有数据可控,才是最放心的] [只有多多备份,才是最安全的] LESLIE NOTE 是一款本地笔记软件, ...
- 多方安全计算(6):MPC中场梳理
学习&转载文章:多方安全计算(6):MPC中场梳理 前言 诚为读者所知,数据出域的限制约束与数据流通的普遍需求共同催生了数据安全计算的需求,近一两年业界又统将能够做到多方数据可用不可见的技术归 ...
