1 回答

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊
我終于找到了可以幫助很多人的問題的解決方案(至少它幫助了我的同事)。如果您想通過 Abaqus 腳本了解表面的應(yīng)力,max9111提出的外部節(jié)點平均應(yīng)力值的解決方案是完美且唯一的解決方案。但是,代碼應(yīng)修改如下才能運行,至少在 Abaqus 6.16 上:
第一部分沒有變化
Field = session.odbs['ModelName.odb'].steps['StepName'].frames[0].fieldOutputs['S']
Field = Field.getSubset(position = ELEMENT_NODAL)
Values=Field.bulkDataBlocks[0].data
NodeLabels=Field.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)
由于 Abaqus 使用 bulkDataBlocks 存儲數(shù)據(jù)的方式,Values 變量的創(chuàng)建方式發(fā)生了變化:
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
max_ind=np.unravel_index(np.argmax(Values_Averaged),Values_Averaged.shape)
print("The max stress is at NodeLabel "+str(NodeLabels_unique[max_ind[0]])+ " its value is "+ str(Values_Averaged[max_ind]) +" MPa.")
添加回答
舉報