Autor
|
Thema: Auslesen Verformungen (1366 / mal gelesen)
|
derberndDD Mitglied
Beiträge: 8 Registriert: 17.08.2015
|
erstellt am: 20. Nov. 2017 17:39 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich versuche die Knotenverformung aus den Ergebnissen mittels eines Skriptes zu extrahieren. Im Modell habe ich ein Element-Set definiert und ich frage mir die einzelnen Knoten jedes Elements ab. Abschließend lese ich die Verformung der Knoten aus der odb (siehe Skript). Der Aufwand mit dem eigenhändigen Extrahieren entsteht nur weil ich nicht in der Lage bin die Verschiebung im Zentrum eines Elements direkt auszulesen (dispsU.getSubset(region=element_set, position = CENTROID)). Code:
.... myInstance = odb.rootAssembly.instances[instance] element_sets = list(myInstance.elementSets.keys()) for eset in element_sets: element_set = myInstance.elementSets[eset] elset_nodes = set() for element in element_set.elements: elset_nodes.update(element.connectivity) elset_nodes = np.sort(list(elset_nodes)) #Verformung auslesen dispU_at_nodes = dispsU.getSubset() displacement = {} for label in elset_nodes: t = {} d = dispU_at_nodes.values[label-1] t['U1'] = d.data[0] t['U2'] = d.data[1] t['U3'] = d.data[2] displacement[label] = t ...
Das Problem entsteht an der Stelle:
Code:
d = dispU_at_nodes.values[label-1]
Ich bin mir nicht sicher, warum „-1“ in der Auswahl hinzugefügt werden muss. Leider ist dies auch keine universelle Lösung, da bei einem anderen Elementtypen diese "-1" wohl nicht passt. Ich bitte um Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 20. Nov. 2017 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für derberndDD
Drei kleine Hinweise: 1. Verschiebungen liegen an Knoten vor. Im Zentrum von Elementen oder Integrationspunkten kann man sie nicht finden. 2. Der Offset von -1 kommt vermutlich daher, dass Listen in Python mit dem Index 0 anfangen, Knoten- und Elementnummern aber nicht kleiner als Nummer 1 sein können. Aber wie du schon festgestellt hast, ist dieser Offset in einem Skript gefährlich, da es voraussetzt, dass die Knoten kontinuierlich nummeriert sind. 3. Du programmierst etwas nach, was es schon eingebaut gibt. Nutze Report->Field Output (bzw. dessen Python-Kommando) um die Verschiebungen in eine ASCII-Datei schreiben zu lassen. Diese Datei kannst du dann mit Python verarbeiten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
derberndDD Mitglied
Beiträge: 8 Registriert: 17.08.2015
|
erstellt am: 21. Nov. 2017 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, @Mustaine: Danke für die Antwort. (1): Ja die Verformung wird in den Knoten berechnet. Jedoch könnte man anhand der Verschiebung aller Elementknoten einen mittlere Verschiebung des Elementzentrums berechnen. (2) Das sehe ich auch so. Finde aber keine vernünftige Lösung. In der Hilfe steht nur:
Zitat: connectivity A tuple of Ints specifying the element connectivity. For connector elements connected to ground, the other node is repeated in the connectivity data. The position of the ground node cannot be ascertained. This is a limitation. It is important to note the difference with MeshElement object of MDB where the connectivity is node indices instead of node labels.
Leider kenne ich den Unterschied zwischen Indizes und Labels nicht. Finde dazu auch nichts in der Hilfe. (3) Ich habe ein Modell in dem ich die einwirkenden Kräfte und Materialien dynamisch mittels eines Skriptes ändere. Ich möchte es vermeiden die Serienrechnungen manuell auszuwerten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 21. Nov. 2017 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für derberndDD
1. Du kannst das nachträglich natürlich machen. Ich wollte nur sagen, dass du diese Info nicht in der Ergebnisdatei finden kannst, da sie dort nicht existiert. 2. Index ist der Begriff, wie in Python Listeneinträge nummeriert sind. Label ist der Begriff, mit denen Knoten- bzw. Elementnummern bezeichnet werden. Wenn du also diese Liste mit Knotennummern hast [3,8,9], dann findest du auf dem Index null die Knotennummer drei. 3. Die Reportdatei kannst du auch mit Python automatisiert generieren lassen. Alternativ kannst du doch vermutlich schon im Preprocessing das Knotenset anlegen und dieses bei getSubset() verwenden. Damit musst du nicht über das Elementset gehen und die Knotennummern daraus ermitteln. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|