Es gibt mehrere Möglichkeiten für das was du machen möchtest.
Aber erstmal generell: Spannungen und Dehnungen sind Elementergebnisse, daher kannst du die nicht im History Output für Knoten anfordern.
Workaround: Leg im Preprocessing einfach das Set mit den Vertices an. Daraus wird dann ein Set mit Knoten. Dieses Set, selbst wenn du es gar nicht für etwas verwendet hast, findest du dann auch im Postprocessing. Hier kannst du für dieses Set (Knoten) trotzdem die Spannungen und Dehnungen abgreifen, da nun die Integrationspunktergebnisse an die Knoten extrapoliert und gemittelt werden können.
Wenn du Spannungen und Dehnungen haben willst, hast du diese wahrscheinlich im default Field Output Request für die Ergebnisdatei. Du musst also nichts weiter anfordern.
Verwende im Postprocessing dann Tools -> XY Data -> Create (oder Button) -> ODB Field Output. In dem folgenden Dialog kannst du auf "Position = Unique Nodal" umstellen und die gewünschten Variablen auswählen. Auf dem zweiten Tab kannst du dann das Knotenset auswählen und dann die xy-Daten erzeugen. In der .rpy findest du die Python-Befehle für diese Aktion.
Alternativ kannst im Postprocessing auch einfach nur das Set einblenden (auch wenn dann nichts zu sehen ist) und mit Report->Field Output eine ASCII-Datei mit den Daten erzeugen.
Oder du fügst einmal in Keyword Editor den folgenden Befehl ein um die Ergebnisse vom solver an den Knoten in die odb zu bekommen und holst sie dir dann direkt mit Python für das Set.
*Output
*Element Output, Position=AVERAGED AT NODES
S, LE
Nun noch die Frage wie man das Set im Preprocessing anlegen kann. Ich bevorzuge hier getClosest() anstatt findAt(), da man dann noch Einfuss auf die Suchtoleranz hat.
Hier ein Beispiel um zwei Vertices an zwei Koordinaten zu finden und in ein Set zu legen:
Code:
from abaqus import *
from abaqusConstants import *
from caeModules import *a = mdb.models['Model-1'].rootAssembly
v = a.instances['block-1'].vertices
# get vertices
myvertices = v.getClosest(coordinates=((0,0,0),(15,0,0),), searchTolerance=0.01)
# get list with indices of resulting vertices
v_ids = [x[0].index for x in myvertices.values()]
# create object with all resulting vertices
verts = v[0:0]
for x in v_ids:
verts = verts + v[x:x+1]
# create set
a.Set(vertices=verts, name='Set-1')
[Diese Nachricht wurde von Mustaine am 29. Jul. 2022 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP