Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  ALLSE aus .odb in .txt Datei mit Python

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:   ALLSE aus .odb in .txt Datei mit Python (1957 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
exzessiv
Mitglied
Student


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

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 04. Jul. 2012 23:06    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 beschäftige mich erst seit kürzerem mit dem Python-Programmieren und habe somit noch erhebliche Schwierigkeiten die Befehle im Scripting Manual zu verstehen, geschweige denn anzuwenden. Da ich auch neu im Forum bin, hoffe ich mal, dass meine Frage hier auch am richtigen Platz gestellt wird.

Also:
Ich muss für ein Projekt aus einer .odb Datei die Gestaltänderungsenergie (ALLSE) auslesen und den Wert bestenfalls in einer .txt Datei speichern, um ihn später vergleichen zu können. Es interessiert die endgültige Energie am Ende des Steps (ich habe nur einen).

Hat da vll jemand schonmal etwas in die Richtung gemacht? Wenn ja, wäre es super wenn mir einer ein solches oder ähnliches Script geben könnte, damit ich mir die Befehle klarmachen kann. Vll wisst ihr ja aber auch die Befehle die ich brauche und ich versuchs alleine hinzuschustern

Ich bin über Hilfe jeder Art dankbar

Grüße,
Elias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 05. Jul. 2012 10:53    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 exzessiv 10 Unities + Antwort hilfreich

Willst du die Energie für das ganze Modell oder an einzelnen Punkten?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


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

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 05. Jul. 2012 11:07    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

Ich brauche die Energie für das gesamte Modell.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 06. Jul. 2012 09: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 exzessiv 10 Unities + Antwort hilfreich


test.txt

 
Hi sry hat etwas gedauert, weil mir was dazwischen kam.

Im Anhang findest du ein Python Skript, welches dir die Energie zum letzten Zeitpunkt in eine *.txt Datei schreibt. Ich habe es ein wenig kommentiert, aber alles nur husch husch erledigt. Wenn du noch Fragen hast immer her damit.

Wie du das Skript ausführst weißt du?

Grüße

Slein

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


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

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 06. Jul. 2012 12:26    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


Verschiebung.txt

 
Vielen Dank, das ist ja überragend. Ich hatte nicht verstanden, dass man für alles Objekte erzeugen muss.

Ja, ich weiß wie man das Skript in Abaqus ausführen kann. Gibt es auch die Möglichkeit es durch einen Doppelklick auf das Programm zu starten, wenn Abaqus geöffnet ist? Quasi einen Skript-laden-Befehl?

Gehe ich ähnlich vor, wenn ich mir für die Knoten in einem Modell die Verschiebung ausgeben lassen will? Also die einzelnen Objekte erzeugen und dann über odb.steps['Step-1'].frames[1].fieldOutputs[''].values gehe?

Ich habe mich einmal an einem Skript versucht. Ich will die Knoten und die dazugehörige Spannung ausgeben lassen und wieder in eine .txt Datei schreiben. Die Knoten und die Spannungen bekomme ich. Allerdings haut das speichern nicht hin. Auserdem interessiert mich die Magnitude der Verschiebung, so wie man sie sich auch in Abaqus ausgeben lassen kann und nicht die Verschiebungen in die einzelnen Richtungen.

Danke schonmal im Voraus   

[Diese Nachricht wurde von exzessiv am 06. Jul. 2012 editiert.]

[Diese Nachricht wurde von exzessiv am 06. Jul. 2012 editiert.]

So, jetzt wird auch eine Datei erstellt, allerdings mit fortlaufendem Text. Ich hätte gerne, dass jeder Knoten mit den jeweiligen Verschiebungen in einer eigenen Zeile steht. Auserdem verstehe ich moch nicht, wie ich die Magnitude bekomme...

Gruß, Elias

[Diese Nachricht wurde von exzessiv am 06. Jul. 2012 editiert.]

[Diese Nachricht wurde von exzessiv am 06. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 06. Jul. 2012 14: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 exzessiv 10 Unities + Antwort hilfreich

Hi.

Was genau meinst du mit "Mit Doppelklick ausführen, wenn ABAQUS bereits läuft"? Willst du in deinem Datei Browser auf die Datei "skript.py" klicken und dann soll das Skript ausgeführt werden? Das dürfte so einfach nicht funktionieren, weil du für die Auswertung der ODB das Skript über ABAQUS starten musst.

Ich kann deine angehängt Datei nicht lesen.

Was meinst du mit Abspeichern? In eine Datei schreiben? Dazu brauchst du in Python eigentlich nur 3 Sachen:

1. FILE = open('datei.txt','w')  ... öffnet eine Datei zum Schreiben. FILE ist ein Objekt mit dem du auf die Datei zugreifen kannst.

2. FILE.write() ... schreibt alles in den runden Klammern in die Datei

3. FILE.close() ... mit leeren runden Klammern!!! Schließt die Datei.

Magnitude ist doch nur der Betrag oder? Den kannst du dir selber ausrechnen aus den Verschiebungskomponenten.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 06. Jul. 2012 14:48    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 exzessiv 10 Unities + Antwort hilfreich

Du musst noch Zeilenumbrüche schreiben. Der lautet wie in den meisten Sprachen "\n"

Schreib mal statt der letzten for Schleife:

from math import sqrt

for v in fieldValues:
  magnitude = sqrt(v.data[0]**2 + v.data[1]**2)
  OUT.write('Node = %d U[x] = %6.4f, U[y] = %6.4f, Magnitude = %6.4f\n' % (v.nodeLabel,
v.data[0], v.data[1, magnitude]))

Habe das nicht getestet, sollte aber funktionieren, wenn ich mich nicht vertippt habe.


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


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

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 06. Jul. 2012 15:00    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

Ja, ich meinte mit doppelklick auf Programm.py und das wird dann in Abaqus geladen.

Ich habe ein 3D Modell, wie lasse ich mir auch noch die Verschiebung in z Richtung ausgeben? Ich habe das vorhin einfach mal mit U[z] und v.data[3] versucht, das hat allerdings nicht hingehauen...

Wenn ich das Skript umschreibe kommt eine Fehlermeldung: in v.data[0], v.data[1, magnitude] invalid Index. 

Bedeutet das, dass magnitude da nicht reingehört?

So, ich habe die Verschiebung in z-Richtung jetzt auch. Ich muss v.data[2] verwenden, da Python ja bei 0 anfängt....

[Diese Nachricht wurde von exzessiv am 06. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 06. Jul. 2012 15: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 Nur für exzessiv 10 Unities + Antwort hilfreich

Da hat sich ein Tippfehler eingeschlichen

v.data[1, magnitude])) --> v.data[1], magnitude))

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


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

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 10. Jul. 2012 20:13    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

Vielen Dank, meine Probleme sind gelöst. Ich habe jetzt ein Script, dass mir die Energie und eines, das mir die Verschiebung zugehörig zu den Knoten ausgibt. Die Magnitude habe ich aus den 3 Verschiebungen errechnet, das klappt auch super

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 09:08    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 exzessiv 10 Unities + Antwort hilfreich

Alternativ kannst du auch direkt die Magnitude auslesen siehe:

https://www.sharcnet.ca/Software/Abaqus610/Documentation/docs/v6.10/books/ker/default.htm Abschnitt 31.6.6.

bei dir dürfte das dann so was wie:

magnitude = fieldValues.getScalarField(invariant=MAGNITUDE)
for m in magnitude:
  OUT.write("Knoten: %d, Magnitude: %6.4f\n",(m.nodeLabel, m.data))

sein.

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)2020 CAD.de | Impressum | Datenschutz