python - 如何在 Abaqus 中使用 Python 脚本创建刚度(节点力/位移)等值线图?
问题描述
我想根据现场输出结果创建刚度等值线图。为此,我必须将 NFORC2(节点力矢量的 Y 分量)除以 U2(Y 方向的位移)。
我尝试使用 Create Field Output --> From Fields 来定义我们自己的输出变量。可以使用 getScalarField() 从向量中提取标量,但 Abaqus 显示错误,因为 NFORC 是整个元素变量,而 U 是节点变量。
因此,似乎唯一的方法是编写一个将转换 NFORC 的脚本。我找到了一个可以将变量保存为元素节点的代码。它是为在积分点计算的压力而设计的,所以我不确定它是否会正确转换 NFORC,但它是我迄今为止唯一的选择。它节省了一些输出,所以我认为它是正确的。
但是,Abaqus 仍然不允许我将这个新变量除以 U2。看来我必须先将其转换为唯一节点。为此,我找到了另一个 Python 脚本并将其添加到第一个脚本中。显然我做错了什么,因为错误出现了。
以下是将两个脚本合二为一:
from abaqusConstants import *
from odbAccess import *
import numpy as np
# ***********************************************
odbPath="path_to_odb_file"
stepName="Step-1"
frameNumber=-1 #last frame in the stepName
sourceOutputFieldName='NFORC2' #element forces field
newOutputFieldName='NFORC2_at_NODES_UNIQUE'
# ************************************************
odb=session.openOdb(name=odbPath,readOnly=FALSE)
step=odb.steps[stepName]
frame=step.frames[frameNumber]
sourceField=frame.fieldOutputs[sourceOutputFieldName]
subField=sourceField.getSubset(position=ELEMENT_NODAL)
Values=subField.bulkDataBlocks[0].data
NodeLabels=subField.bulkDataBlocks[0].nodeLabels
NodeLabels_unique, unq_idx = np.unique(NodeLabels, return_inverse=True)
Values_Averaged=np.zeros((NodeLabels_unique.size,Values.shape[1]))
unq_counts = np.bincount(unq_idx)
for i in xrange(0,Values.shape[1]):
ValuesTemp = [item[i] for item in Values]
unq_sum = np.bincount(unq_idx, weights=ValuesTemp)
Values_Averaged[:,i] = unq_sum / unq_counts
newField=frame.FieldOutput(name=newOutputFieldName, field=Values_Averaged)
odb.save()
odb.close()
我得到的错误指向以下代码行:
newField=frame.FieldOutput(name=newOutputFieldName, field=Values_Averaged)
错误消息是:TypeError:字段上的关键字错误
您知道可能导致错误的原因以及脚本的外观吗?
解决方案
推荐阅读
- r - 使用循环重命名多个数据框的变量,从列表中引用数据框名称
- python - 我在函数中使用 try-and-except 。以及其他可能导致值错误但不会引发异常的函数。国际劳工组织?
- sql-server - 用于将 .sqlproj 发布到数据库实例的 CLI 工具
- netlogo - 从链接列表中提取海龟
- angular8 - Cumulocity - 访问数据点模式
- c# - UWP 应用程序更新后无法读取文件
- python - 如何在 python 脚本中解码 FST 编码的 redis 键?
- json - JSONSchema - 元素可以单独出现,也可以在组内出现
- java - 使用 Spring Webclient 和 AsynchronousFileChannel 下载文件,文件为空
- plot - Rscript 无法从命令行绘制 xts