目录
1 实现效果
当我们利用ABAQUS有限元模型进行独立的数值运算后,会希望将计算得到的应力等参数可视化。此时,我们可以通过将数据重新排版,然后以“初始应力”的方式导入ABAQUS模型中,从而在Visulization模块中观察变量的整体分布和趋势。该方法也可方便输出特殊节点或者特定路径、平面的应力分布。
2 文件结构
实现上述目标所需要的文件主要有两个,一个负责将数值运算的结果转换到固定结构,另一个负责将数据传递到ABAQUS模型中。
2.1 数据转换文件
该文件没有固定格式,主要取决于运算结果的存储格式、模型的维度和单元的类型。以一个使用C3D8的三维模型为例,数据最终应当被转换成8列数据(以空格间隔)并被保存到txt文件中。其中每一列分别为:单元编号/ 积分点编号/ S11/ S22/ S33/ S12/ S13/ S23。
from __future__ import division
import numpy as np
import csv
gps = 8 #单元积分点数
elen = 7312 #数值运算结果中所包含的单元数量,有时候不一定等于有限元模型中的总单元数量
with open('residual.csv', 'rb') as f:
reader = csv.reader(f)
result = np.array([list(map(float, line)) for line in reader])
residual = result[:, -1].reshape((gps * elen, 6), order='C')
# 以上语句打开了一个运算结果的原始储存文件,由于该应力场是一个(积分点数*单元数, 6)的矩阵,不方便后续读写,因此我们对其进行重新排版,并新增两列。
temp = np.arange(1, elen + 1, dtype=