ABAQUS中odb文件如何并行计算?
How to parallelize calculating with odb files in ABAQUS?
我计算所有积分点的体积总和,如
volume = f.steps['Step-1'].frames[-1].fieldOutputs['IVOL'].values
# CALCULATE TOTAL VOLUME AT INTEGRATION POINTS
V = 0
for i in range(len(volume)):
V = V+volume[i].data
我的问题的体积长度大约是 27,000,000,所以这样做需要很长时间。
我尝试使用 python 中的多处理模块并行化此过程。
据我所知,数据应该被分成几个部分。
关于将 odb 文件中的数据拆分为多个部分或并行化该代码,您能给我一些建议吗?
您可以使用可用于字段输出对象的 bulkDataBlocks
命令。
使用 bulkDataBlocks
,您可以将所有字段数据作为数组访问(实际上是 abaqus 数组,但 numpy 数组和 abaqus 数组在很大程度上是相同的)因此,操作变得非常容易。
例如:
# Accessing bulkDataBlocks object
ivolObj= f.steps['Step-1'].frames[-1].fieldOutputs['IVOL'].bulkDataBlocks
# Accessing data as array --> please note it is an Abaqus array type, not numpy array
ivolData = ivolObj[0].data
# now, you can sum it up
ivolSum = sum(ivolData )
我计算所有积分点的体积总和,如
volume = f.steps['Step-1'].frames[-1].fieldOutputs['IVOL'].values
# CALCULATE TOTAL VOLUME AT INTEGRATION POINTS
V = 0
for i in range(len(volume)):
V = V+volume[i].data
我的问题的体积长度大约是 27,000,000,所以这样做需要很长时间。 我尝试使用 python 中的多处理模块并行化此过程。 据我所知,数据应该被分成几个部分。 关于将 odb 文件中的数据拆分为多个部分或并行化该代码,您能给我一些建议吗?
您可以使用可用于字段输出对象的 bulkDataBlocks
命令。
使用 bulkDataBlocks
,您可以将所有字段数据作为数组访问(实际上是 abaqus 数组,但 numpy 数组和 abaqus 数组在很大程度上是相同的)因此,操作变得非常容易。
例如:
# Accessing bulkDataBlocks object
ivolObj= f.steps['Step-1'].frames[-1].fieldOutputs['IVOL'].bulkDataBlocks
# Accessing data as array --> please note it is an Abaqus array type, not numpy array
ivolData = ivolObj[0].data
# now, you can sum it up
ivolSum = sum(ivolData )