Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Report Datei mit Python erstellen

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:  Report Datei mit Python erstellen (2845 mal gelesen)
Harr
Mitglied
student


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

Beiträge: 36
Registriert: 11.08.2011

erstellt am: 18. Nov. 2011 14:30    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 Leute,
ich habe ein großes Problem, und zwar folgendes:

Über ein Python Script hat die Erstellung meines Probekörpers wunderbar funktioniert. Man kann über diverse Variablen die einzelnen Längen und Höhen definieren. Anschliessend wird der Probekörper mit zugehörigen Submodel erstellt, automatisch vermesht und submetiert.

Jetzt weiss ich allerdings nicht, wie ich mit Python automatisch eine Report-Datei erstelle.
Es muss vom letzten Increment der Steps, bis zu 40 Stück (U1, U2... U40) welche auch Variabel sind, die Reaction Forces (Magnitude) aufsummiert werden. Select by Time/Length.
(Ich denke, es ist am einfachsten die RF über Sets zu bestimmen da die Knoten nicht immer die Selben sind)
Mein Set heisst "Nodes_Auflager" Das Model heisst "Global"


Ich habe diese Woche mehrere Tage damit verbracht mir nützliche Informationen im Netz zu besorgen jedoch ohne Erfolg.
Beim Abaqus-Scripting-Reference-Manual und Scripting-Users-Manual blicke ich nicht wirklich durch.

Ich Hoffe hier kann mir Jemand Helfen damit ich dieses Kapitel beenden kann.

Viele Grüße und Danke im Vorraus

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: 18. Nov. 2011 21:20    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 Harr 10 Unities + Antwort hilfreich

Du kannst ja mal nur das Set einblenden (dürfte nicht viel zu sehen sein, da nur Knoten) und dann mal den Report anfordern. In der .rpy findest du dann ja den dazu passenden Python-Befehl.

Das letzte Frame kannst du dir so ermitteln:

Code:

# dargestellte ODB ermitteln
vps = session.viewports.values()[0]
odbName = vps.displayedObject.name
odb = session.odbs[odbName]

# aktuellen Step ermitteln
current_step_number = vps.odbDisplay.fieldFrame[0]
current_step_name = odb.steps.keys()[current_step_number]

# letzten Frame in diesem Step ermitteln
last_frame = odb.steps[current_step_name].frames[-1]
last_frame_ID = odb.steps[current_step_name].frames[last_frame.frameId]


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: 18. Nov. 2011 21: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 Harr 10 Unities + Antwort hilfreich

Man könnte natürlich auch direkt auf die Knoten des Sets zugreifen, jeweils RF auslesen und im Script aufsummieren. Das spart den Weg über den Report.

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

Harr
Mitglied
student


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

Beiträge: 36
Registriert: 11.08.2011

erstellt am: 19. Nov. 2011 17:40    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

Hi Mustaine,
Vielen Dank für Deine Antwort und den Code, ich bin auch nochmal durch andere Posts von Dir gerutscht und habe mir da volgenden Code rausgesucht um die Werte direkt auszulesen:

Code:
odb = openOdb('Global.odb')
numFrame=odb.steps['U1'].frames[-1]
RForce=numFrame.fieldOutputs['RF']
regS1 = odb.rootAssembly.instances['GLOBAL-1'].nodeSets['NODES_AUFLAGER']
FX = RForce.getSubset(region=regS1).values[0].data[0]

also dort bekomme ich dann die Korrekten Werte für die ersten beiden Nodes und verschiedene Steps raus,
jedoch weichen weitere Werte für folgende Nodes ab...
keine Ahnung warum
da ich auch noch sehr unbeholfen auf dem Gebiet bin...

Meine Güte ist das alles kompliziert Oo

Könntest du oder jmd anders mir evt noch einen Anhaltspunkt geben, mit welchen Befehlen ich an die Werte komme?!

[Diese Nachricht wurde von Harr am 19. Nov. 2011 editiert.]

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

Harr
Mitglied
student


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

Beiträge: 36
Registriert: 11.08.2011

erstellt am: 21. Nov. 2011 11: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

Aaaalso bis gestern hat noch alles funktioniert,
Ich konnte eine Liste erstellen mit allen Nodes aus einem bestimmten Set
und habe jetzt auch endlich die korrekten Befehle um die RF-Magnitude der Knoten aus dem Set zu bekommen.
fogenden Code habe ich mir erstellt
Code:
0  from odbAccess import * 
1  Stepzahl = 9
2  values = [ ]
3  nodes = [ ]

5  odb = openOdb('D:/Abaqus/Temp/Global.odb')
6
7  ###Liste der Nodes aus dem Set erstellen
8  lastFrame = odb.steps['U1'].frames[-1]
9  reaction = lastFrame.fieldOutputs['RF']
10 center = odb.rootAssembly.instances['GLOBAL-1'].nodeSets['NODES_AUFLAGER']
11 centerReaction = reaction.getSubset(region=center)
12 for v in centerReaction.values:
13    nodes.append(v.nodeLabel)
14
15 ### Liste der RF-Magnitude für alle Steps
16 for l in xrange(1,Stepzahl+2):
17    v = 'U%s' % (l)
18    lastFrame = odb.steps[v].frames[-1]
19    for d in centerReaction.values:
20        values.append(d.magnitude)
21     
22 ####
23 p = len(nodes)    #anzahl an Werten Pro Step
24 ###Summe der Reaction-Forces
25 total = 0
26 for x in xrange(0,p):
27    total += value[x]

nur Stürzt Abaqus jetzt nach Eingabe von Zeile 15 bis 20 ohne Warnmeldung direkt ab...
Gestern hats wunderbar funktioniert. 

Wäre für jeden Ratschlag dankbar!!

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. 2011 11:27    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 Harr 10 Unities + Antwort hilfreich


Script_Summe_RF_mod.py.txt

 
Hi,

bevor ich lange Erklärungen schreibe...

Ich habe mir für sowas selbst mal ein Skript geschrieben, welches du schon für deine Aufgabe leicht modifiziert im Anhang findest.

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

Harr
Mitglied
student


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

Beiträge: 36
Registriert: 11.08.2011

erstellt am: 21. Nov. 2011 11:50    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 vielen Dank für die schnelle Antwort Mustaine,
Ich schaue es mir direkt an!!!

Funktioniert natürlich Wunderbar!!
Danke nochmal

[Diese Nachricht wurde von Harr am 21. Nov. 2011 editiert.]

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

Harr
Mitglied
student


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

Beiträge: 36
Registriert: 11.08.2011

erstellt am: 21. Nov. 2011 22:17    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 bin gerade dabei mein Script noch so zu erweitern, dass es für mehrer Steps ausgeführt wird...
Klappt auch soweit, jedoch hänge ich jetzt an der Auswertung der Mises   

Folgender Code gibt mir ein Error bei der 2. Ausführung der Schleife
wenn ich den Code wiederholt mit einem anderen NodeLabel im KernelCommand eingebe...

Für mich unverständlich, da ich nur einer Variablen: "knoten"
einen anderen Wert zuweise.

Code:
medians = 0.0                             
midmis = 0.0
p=0
odb = session.odbs['D:/Abaqus/Temp/Global.odb']
knoten = odb.rootAssembly.instances['GLOBAL-1'].NodeSetFromNodeLabels(name='GLOBAL-1.NODES_SYMM', nodeLabels=(53,))
a = odb.steps['U1'].frames[-1].fieldOutputs['S'].getSubset(position=ELEMENT_NODAL,region=knoten)
for x in a.values:
    p = p + 1
    medians = medians + x.mises 
    midmis = medians / p
    print x.mises

print midmis


OdbError: Duplicate set or surface name GLOBAL-1.NODES_SYMM

Es sollen alle Knoten aus dem Set "GLOBAL-1.NODES_SYMM" ausgegeben werden, was in diesem Code noch nicht ausgeführt wird,
da dort genau der Haken liegt   

Nachtrag: Ok. der Befehl scheint ein neues Set zu erstellen...
          Meine Frage wäre jetzt: Was spricht dagegen für jeden Knoten quasi ein Variablen NodeSetNamen zu vergeben
                                  Es sind um die 1000 Knoten
Test wird morgen gestartet

[Diese Nachricht wurde von Harr am 22. Nov. 2011 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