gpt4 book ai didi

python - abaqus python,为什么提取的位移值不同?

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:18 26 4
gpt4 key购买 nike

我正在尝试使用 abaqus-ython 脚本来提取节点坐标。为此,我首先提取原始节点位置,然后添加位移值。

但是对于我的 abaqus 模型之一,我注意到我提取的位移值与我在 abaqus 中找到的位移值不同(参见附图)

我不知道这是如何或为何发生的。有人可以帮助我吗?您可以在下面找到我的代码。

    for ODBname in os.listdir("D:/r0333338/Documents/MP/nodal_files_genereren/OBD"): # directory van waar alle .odb bestanden zitten, hier worden ze allemaal 
print 'Current File: '+ODBname #checken welke file er gebruikt wordt
ODBnamefull = 'D:/r0333338/Documents/MP/nodal_files_genereren/OBD/'+ODBname # Volledig pad naar de .odb file. ander wordt de file in de default work directory gezocht.
odb = openOdb(path=ODBnamefull) #openen van het ODB bestand

ODBalleenNaam = ODBname.rstrip('.odb') #om .odb weg te knippen
NodalName = ODBalleenNaam + '-nodal.txt' #naam ven het te schrijven bestand

for name, instance in odb.rootAssembly.instances.items(): #'name' is naam van elke part van in de assembly, zo kan de nodal coordinaten van het onvervormde testobject (part) achterhaald worden
print name
type(name)
name2 = 'DISK-1'
if name == name2:

numNodesTotal = len( instance.nodes ) #aantal nodes

frame = odb.steps[ 'Step-1' ].frames[-1] #informatie van de laatste frame van Step-1 gebruiken

dispField = frame.fieldOutputs['U'] #verplaatsingsveld van laatste frame van step-1


print 'total numer of nodes: '+ str(numNodesTotal) #checken hoeveel nodes er zijn

for i in range( numNodesTotal ): #voor elke node :
curNode = instance.nodes[i] #informatie van de huidige node
#print curNode.label #nummer van de huidige node

#2D verplaatsing omzetten naar 3D verplaatsing
U1 = dispField.values[i].data[0] #X-verplaatsing aan U1 geven
U2 = dispField.values[i].data[1] #Y-verplaatsing aan U2 geven
array = [] #maken van een lege array voor invullen van de coordinaten
array.append(U1) #X-verplaatsing toevoegen
array.append(U2) #Y-verplaatsing toevoegen
array.append(0) #Z-verplaatsing toevoegen
print 'node: '
print curNode.label
print 'displacement: '
print array #checken van 3D verplaatsing
print 'coordinates: '
print curNode.coordinates

odb.close()
else:
print 'name is not DISK-1 but: ' + str(name)

Abaqus displacement

python extracted displacement

最佳答案

您应该直接从字段数据中提取节点标签:

     curNodeLabel=dispField.values[i].nodeLabel

然后您需要使用它来获取节点:

     curNode=instance.getNodeFromLabel(curNodeLabel)

不要假设节点索引与字段数据索引相同。

为了保持一致性,我会进一步使用 for 循环:

 for i in range( len(dispField.values)  ):

关于python - abaqus python,为什么提取的位移值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com