Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Externer Solver -> Magnituden der Verschiebungen in FieldOutput einfärben

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:  Externer Solver -> Magnituden der Verschiebungen in FieldOutput einfärben (1158 mal gelesen)
nduzr
Mitglied



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

Beiträge: 20
Registriert: 12.02.2015

Abaqus v6.13

erstellt am: 02. Dez. 2015 14:34    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 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.



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: 02. Dez. 2015 15:04    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 nduzr 10 Unities + Antwort hilfreich

Wenn du die Komponenten hast, kannst du doch mit Python leicht die Magnitude ausrechnen und mit in die ODB schreiben.

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: 02. Dez. 2015 15:15    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 nduzr 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 12.02.2015

Abaqus v6.13

erstellt am: 02. Dez. 2015 16:43    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

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.



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: 02. Dez. 2015 18:42    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 nduzr 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 12.02.2015

Abaqus v6.13

erstellt am: 03. Dez. 2015 10:01    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

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

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