| |
 | Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE) |
Autor
|
Thema: Externer Solver -> Magnituden der Verschiebungen in FieldOutput einfärben (1059 mal gelesen)
|
nduzr Mitglied

 Beiträge: 20 Registriert: 12.02.2015 Abaqus v6.13
|
erstellt am: 02. Dez. 2015 14:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, habe folgendes Problem: Über ein externes FEM-Matlab-Skript berechne ich Deformationen eines Körpers. Die Knotenwerte speichere ich in einem Textfile, das über ein Python-Skript in eine ODB umgewandelt wird, welche ich zum Post-Processing in Abaqus nutze. Ich kann mir also die deformierte Form mit allen Verschiebungswerten in XYZ in Abaqus anschauen. Allerdings bietet mir Abaqus nur U1, U2 und U3 im Farbplot als "Primary Variable" für den Field Output an. Hier hätte ich gerne, dass diese drei Einzelwerte zur Magnitude verrechnet werden und Abaqus dementsprechend die Einfärbung vornimmt (so wie bei einem von Abaqus selbst berechneten Job möglich). D.h. die Farbskala soll sich auf die Absolutverschiebung beziehen und sich nicht nach den Raumachsen ausrichten. Lässt sich das irgendwie machen? Die Verschiebungsgrößen liegen mir wie gesagt komplett vor. Mit Hilfe des Query-Tools kann ich für jeden Knoten auch sehen, welche "Magnitude" er erfährt...aber eben leider nicht im Plot darstellen. Danke und Gruß! 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: 02. Dez. 2015 15:04 <-- editieren / zitieren --> Unities abgeben:          Nur für nduzr
|
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 02. Dez. 2015 15:15 <-- editieren / zitieren --> Unities abgeben:          Nur für nduzr
Oder du verwendest den Viewer und dieses Tool darin, um eine neues Ergebnisfeld zu generieren. Tools -> Create Field Output -> From Fields Abaqus CAE Manual 42.7.4 Creating field output by operating on fields Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nduzr Mitglied

 Beiträge: 20 Registriert: 12.02.2015 Abaqus v6.13
|
erstellt am: 02. Dez. 2015 16:43 <-- editieren / zitieren --> Unities abgeben:         
Danke für deine Hilfe. Mit Hilfe Tools -> Create Field Output .. habe ich es hinbekommen, das klappt. Die bessere Lösung wäre sicher die Implementierung im Skript. Allerdings bin ich in Python völlig unbedarft. Das Skript in seiner aktuellen Version stammt von jemand anderem. Wie würde die Programmierung im Skript aussehen? Ich sehe folgende Varianten:
- Berechnung der Magnitudenwerte in Matlab -> Übergabe der Werte an Skript -> Skript muss neben den Feldern für U1, U2 und U3 ein viertes Feld "U_Magnitude" erstellen, welches dann im Dropdown-Menü ausgewählt werden kann- Berechnung der Magnitudenwerte erfolgt im Python-Skript, welches dann wie im oberen Szenario die Feld-Erstellung übernimmt - Erstellung eines weiteren Skriptes, welches die "Manipulation" des Field-Outputs, welche ich nun über Tools durchgeführt habe, übernimmmt
Was davon hältst du für die beste Variante? %%%% Ich vermute, dass die kritische Stelle im Skript diese hier ist: Code: # Write nodal displacements uField = frame1.FieldOutput(name='U', description='Displacements', type=VECTOR) uField.addData(position=NODAL, instance=instance1, labels=struct['nodeLabelData'], data=step['dispData'])
Hier müsste ich ihm mitteilen, dass er neben U auch U_Magnitude anlegen und mit Daten befüllen müsste? [Diese Nachricht wurde von nduzr am 02. Dez. 2015 editiert.] [Diese Nachricht wurde von nduzr am 02. Dez. 2015 editiert.] 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: 02. Dez. 2015 18:42 <-- editieren / zitieren --> Unities abgeben:          Nur für nduzr
Ich bin kein Spezialist wenn es darum geht Daten auf die ODB zu schreiben. Aber vielleicht löst eine kleine Erweiterung eines Befehls schon das Problem. Code:
uField = frame1.FieldOutput(name='U', description='Displacements', type=VECTOR, validInvariants=MAGNITUDE)
Laut Manual könnte das reichen, um Abaqus mitzuteilen, dass es aus den Daten selbst die Invariante berechnet. Probier' es mal aus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nduzr Mitglied

 Beiträge: 20 Registriert: 12.02.2015 Abaqus v6.13
|
erstellt am: 03. Dez. 2015 10:01 <-- editieren / zitieren --> Unities abgeben:         
Auf den Punkt mit "validInvariants" bin ich auch schon gestoßen. Der Code funktioniert leider nicht - erhalte folgende Fehlermeldung in ABQ bei Ausführen des Skriptes: Code: "... TypeError: validInvariants; found MAGNITUDE, expecting tuple"
Sieht für mich danach aus, dass die Magnituden doch extern berechnet werden müssten und in Python als Tuple übergeben werden. Werde es weiter probieren. Falls jemand noch einen Tipp hat, bin ich dankbar dafür!
Danke und Gruß //EDIT: Hier die Lösung - man muss eckige Klammern um "MAGNITUDE" verwenden:
Code:
uField = frame1.FieldOutput(name='U', description='Displacements', type=VECTOR, validInvariants=[MAGNITUDE])
[Diese Nachricht wurde von nduzr am 03. Dez. 2015 editiert.]
[Diese Nachricht wurde von nduzr am 03. Dez. 2015 editiert.] [Diese Nachricht wurde von nduzr am 03. Dez. 2015 editiert.] [Diese Nachricht wurde von nduzr am 03. Dez. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |