利用Python提取ABAQUS的计算结果(ODB)信息

您所在的位置:网站首页 abaqus屈曲特征值eigenvalue怎么提取 利用Python提取ABAQUS的计算结果(ODB)信息

利用Python提取ABAQUS的计算结果(ODB)信息

2024-07-14 23:16| 来源: 网络整理| 查看: 265

一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移、体积、应变随加载时间的变化情况。

 

                                                 图1 金属长方体约束加载示意图 

 

01

Python库导入声明

 

对于图上的命令流,我们分为几部分拆开研究,首先是下面第一部分需要在Abaqus导入相关Python库的代码,比如matplotlib库、numpy库、xlwt库和math库。

 

#! /user/bin/python # -*- coding:UTF-8 -*- import matplotlib.pyplot as plt import numpy as np from visualization import * from odbAccess import * import xlwt import math

 

第3行导入Python经常用于绘图的matplotlib库;

第4行导入Python处理数组矩阵的numpy库;

第5行和第6行用于导入Abaqus的后处理功能,即visualization和odbAccess;

第7行用于导入Python与excel进行交互的xlwt库;

第8行用于导入Python的math库。

在利用Python生成excel数据之前,先采用一个getInputs函数(代码如下)生成图2所示的对话框与用户进行交互,需要用户在在其中输入模型的名字(model name),部件例子的名字(instance name)以及后处理odb的名字(odbname)。这样做有个好处,每次都可以根据不同模型、不同部件实例和相应的后处理odb名字进行相应结果提取。

 

modelName,instanceName,odbname= getInputs(   fields=(('Model Name:', 'Test'),('Instance Name:', 'Part-2-1'),('odbname:', 'TEST.odb')),    label='Enter information',  dialogTitle='Enter information.')

 

                                                    图2 getInputs函数生成的对话框

 

02

计算初始边长

 

 

在计算体积和各边应变之前,需要计算长方体不同边长即长、宽、高的初始长度。代码如下:

node = mdb.models[modelName].rootAssembly.instances[instanceName].nodes Xmin = 9999 Xmax = -9999 Ymin = 9999 Ymax = -9999 Zmin = 9999 Zmax = -9999 for i in range(len(node)):      x = node[i].coordinates[0]        y = node[i].coordinates[1]        z = node[i].coordinates[2]        if Xmin > x:                Xmin = x        elif Xmax < x:                 Xmax = x                if Ymin > y:                Ymin = y        elif Ymax < y:                 Ymax = y                if Zmin > z:                Zmin = z                continue        if Zmax < z:                Zmax = z                continue print 'Xmin,Xmax,Ymin,Ymax,Zmin,Zmax=',(Xmin, Xmax, Ymin, Ymax, Zmin, Zmax) CubeWidth=abs(Xmax-Xmin)   # the length of model along x directionCubeHeight=abs(Ymax-Ymin) # the length of model along y directionCubeLength=abs(Zmax-Zmin) # the length of model along z direction

第1行基于之前输入的modelname,instancename来调用部件实例(instance)的节点。

第8行for i in range(len(node)):表示对每个节点进行循环,每次循环中都要提取该节点的x,y,z坐标信息。

Xmin,Xmax为通过循环找出X方向的最小、最大X坐标,Ymin、Ymax以及Zmin、Zmax都同理。计算这部分的代码可能大家表面无法直接看懂理解,我举一个例子好了。

 

例子:对于第12行到第15行,比如当i=0时,随便提取了第1个节点的x,y,z信息(0,0.1,0.2),由于Xmin=9999>x=0,所以x=0赋予Xmin;同样的,当i=1时,又随便提取模型的一个节点(0.05,0.1,0.2),由于现在Xmin=0



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3