用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数据的更多相关文章

  1. abaqus二次开发概述

    说明 abaqus二次开发概述 导语 用户子程序特点 abaqus用户程序接口与调用方式 abaqus用户子程序分类 常用用户子程序介绍 Refence 说明 本系列文章本人基本没有原创贡献,都是在学 ...

  2. 【基于spark IM 的二次开发笔记】第一天 各种配置

    [基于spark IM 的二次开发笔记]第一天 各种配置 http://juforg.iteye.com/blog/1870487 http://www.igniterealtime.org/down ...

  3. phpcms二次开发笔记

    phpcms二次开发笔记 --soulsjie 以下载的全新的phpcms搭建一个新的站点为例,讲解如何利用phpcms进行二次开发 一.下载和安装phpcms http://www.phpcms.c ...

  4. Python什么是二次开发的意义?python在.net项目采用

    任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作"二次开发"..net站点的话python主要是CGI才用.能够用python编写B/S程序. 解释一下二次开 ...

  5. (dede)织梦系统二次开发笔记

    (dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...

  6. 研究QGIS二次开发笔记(一)

    为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...

  7. RTX二次开发笔记2

    问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...

  8. OTRS 二次开发笔记

    公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...

  9. 派胜OA二次开发笔记(1)重写主界面

    最近从派胜OA 2018 升级到 2019,为了二次开发方便,索性花了两天,反向分析 PaiOA 2019 主界面程序,重写大部分代码,方便对菜单权限进行控制. 主界面/core/index.aspx ...

  10. Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试

    前言   做一些数据处理软件,使用matlab文件,.mat文件.   准备条件   安装matlab2016,发现是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版 ...

随机推荐

  1. Idea 避免import *

    File -> setting -> Editor -> Code Style -> Java -> Imports

  2. 龙哥量化:通达信macd黄白线变色公式macd金叉怎么写macd死叉怎么写(需要继续优化,各种变色方式)

    你提出的任何逻辑要求,只要是软件能实现的,我都能用通达信写出来,我レメLong622889通达信.大智慧.文华.博易的编程逻辑差不多,只是个别函数不一样.TB交易开拓者.金字塔和文华8,都是专业的期货 ...

  3. Qt/C++编写物联网组件/支持modbus/rtu/tcp/udp/websocket/mqtt/多线程采集

    一.功能特点 支持多种协议,包括Modbus_Rtu_Com/Modbus_Rtu_Tcp/Modbus_Rtu_Udp/Modbus_Rtu_Web/Modbus_Tcp/Modbus_Udp/Mo ...

  4. Qt开发经验小技巧166-170

    有时候需要暂时停止某个控件发射信号(比如下拉框combobox添加数据的时候会触发当前元素改变信号),有多种处理,推荐用 blockSignals 方法. //方法1:先 disconnect 掉信号 ...

  5. Qt开源作品18-无边框背景透明窗体

    一.前言 用Qt来做无边框北京透明窗体非常简单,根本不需要用什么系统层的API来实现透明什么的,Qt本身提供了很多种设置窗体透明的方法,除了可以设置窗体的属性为透明以外,还可以设置透明度函数,以及qs ...

  6. tomcat源码分析(二)如何处理请求

    概述 tomcat的核心就是处理请求, 接收Request, 建立Socket链接, 处理,返回Response. 通过前面的架构图可以知道每个Service都包括连接器Connector组件和容器C ...

  7. 2022 年万圣节 Github 彩蛋

    记录每年 Github 万圣节彩蛋,也记录有来项目成长历程. 2022 万圣节彩蛋 2021 万圣节彩蛋 2020 万圣节彩蛋

  8. java代码之美(2)

    guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方 ...

  9. dart中类详细讲解

    dart是一门面向对象的语言 dart是一门实用类和单继承的面向对象的语言 在dart中所有的对象都是类的实例. 所有的类都是Object的子类 类都是有属性和方法组成的 定义一个类 在dart中,我 ...

  10. HPC云化部署的优势和挑战

    本文分享自天翼云开发者社区<HPC云化部署的优势和挑战> 作者:土豆炒肉丝 HPC云化部署指的是将高性能计算(HPC)工作负载部署在云计算平台上,这种方式带来了一些明显的优势,但同时也面临 ...