Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Auslesen Verformungen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Auslesen Verformungen (1366 / mal gelesen)
derberndDD
Mitglied


Sehen Sie sich das Profil von derberndDD an!   Senden Sie eine Private Message an derberndDD  Schreiben Sie einen Gästebucheintrag für derberndDD

Beiträge: 8
Registriert: 17.08.2015

erstellt am: 20. Nov. 2017 17:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.



Sehen Sie sich das Profil von Mustaine an!   Senden Sie eine Private Message an Mustaine  Schreiben Sie einen Gästebucheintrag für Mustaine

Beiträge: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 20. Nov. 2017 18:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für derberndDD 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von derberndDD an!   Senden Sie eine Private Message an derberndDD  Schreiben Sie einen Gästebucheintrag für derberndDD

Beiträge: 8
Registriert: 17.08.2015

erstellt am: 21. Nov. 2017 08:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.



Sehen Sie sich das Profil von Mustaine an!   Senden Sie eine Private Message an Mustaine  Schreiben Sie einen Gästebucheintrag für Mustaine

Beiträge: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 21. Nov. 2017 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für derberndDD 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz