00
实例模型
一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移、体积、应变随加载时间的变化情况。
图1 金属长方体约束加载示意图
01
Python库导入声明
对于图上的命令流,我们分为几部分拆开研究,首先是下面第一部分需要在Abaqus导入相关Python库的代码,比如matplotlib库、numpy库、xlwt库和math库。
#! /user/bin/python# -*- coding:UTF-8 -*-import matplotlib.pyplot as pltimport numpy as npfrom visualization import *from odbAccess import *import xlwtimport 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', dialog)
图2 getInputs函数生成的对话框
02
计算初始边长
在计算体积和各边应变之前,需要计算长方体不同边长即长、宽、高的初始长度。代码如下:
node = mdb.models[modelName].rootAssembly.instances[instanceName].nodesXmin = 9999Xmax = -9999Ymin = 9999Ymax = -9999Zmin = 9999Zmax = -9999for i in range(len(node)): x = node[i].coordinates[0] y = node[i].coordinates[1] z = node[i].coordinates[2]