一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移、体积、应变随加载时间的变化情况。
![0770b1fbec763f6d251fa53b9f14d709.png](https://i-blog.csdnimg.cn/blog_migrate/76c4cf634bdc62c52747224a698201e4.jpeg)
图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.')
![7c49f8989c8c9c50f2acece3a350b66d.png](https://i-blog.csdnimg.cn/blog_migrate/be8184ea3e420a774f7bb9881688a38d.png)
图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 <