| | | KISTERS 3DViewStation - Der Schlüssel zur Einsparung von CAD-Lizenzen, eine Pressemitteilung
|
Autor
|
Thema: Knotenspannungen im Post Processing (935 / mal gelesen)
|
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 08. Feb. 2021 15:50 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich würde gern im Postprocessing Knotenspannungen meines Modells abrufen. Die Hindernisse sind dabei, dass ich 1) nicht über die Elemente und die Integrationspunkte gehen will, sondern direkt die Knotenspannungen auslesen möchte 2) das ganze soll nur von einem ausgewählten Knotenset passieren. 3) Die Spannungen für S11, S22 und S33 möchte ich zusammen mit den Knotennummern in einer .txt-Datei ausgeben lassen (Also 3 Dateien S11.txt...) Im Preprocessing habe ich für genau das Knotenset ein Field output Request erstellt. Code: regionDef=mdb.models['Model-1'].rootAssembly.allInstances['ungekerbteProbe-1'].sets['Auswertung_Nodes'] mdb.models['Model-1'].FieldOutputRequest(name='F-Output-2', createStepName='Last_Kraft', variables=('S', ), frequency=LAST_INCREMENT, region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE)
Über Report -> Field Output kann ich zwar über 'Unique Nodal' direkt die Knotenspannungen quasi ansprechen und bekomme diese auch in einer Textdatei - Wenn auch alle Spannungen in einer Datei - aber ich kann dabei keine Selektion der Knoten durchführen. Ich habe es auch bereits über eine "Display Group" versucht und diese dann über 'Query -> 'Probe Values' ausgelesen. Das funktioniert in der GUI auch wunderbar, wenn ich allerdings über den Macro Recorder das ganze aufnehme, kommt dabei nicht raus. Ich bräuchte bitte Hilfe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 08. Feb. 2021 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
Wenn du vorm erstellen des Reports nur das Knotenset über die Display Group einblendest, wird auch nur diese Region im Report verwendet. Dass Spannungen nicht an Knoten visualisiert werden können, braucht dich dabei nicht stören. Du kannst den Report 3x erstellen und dabei je eine Spannungskomponente anfordern. Dann hast du drei verschiedene Dateien, sofern du dabei drei verschiedene Dateinamen angibst. Probier es erstmal in der GUI. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 10. Feb. 2021 13:15 <-- editieren / zitieren --> Unities abgeben:
erst mal danke für die Antwort Mustaine. Leider muss ich dir widersprechen. Wenn ich im Postprocessing bin und ich einen Doppelklick auf die DisplayGroup mit dem Knotenset mache wird erst einmal gar nichts mehr angezeigt, da Knoten alleine ja nicht dargestellt werden können. Aber die Gruppe ist definitiv mit den Knoten befüllt. Wenn ich nun über Report -> Field Output den Report erstelle, enthält der trotzdem die Spannungen für alle Knoten. Hast du vielleicht noch eine andere Möglichkeit ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 10. Feb. 2021 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
Ich habe es gerade nochmal getestet und es funktioniert so wie ich beschrieben habe. Obwohl man die Knoten nicht sieht, sind sie im Viewport. Ein Report verwendet auch nur diese Knoten. Du kannst ja nach dem einblenden des Knotensets mal die Knoten im Viewport abfragen. Tools->Query->Active Nodes Alternativ wechselst du zu einem Symbol Plot von U. Zusätzlich kannst du dann noch die Knotensymbole und Label einblenden. Options->Common->Label Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 10. Feb. 2021 13:59 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
|
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 10. Feb. 2021 14:49 <-- editieren / zitieren --> Unities abgeben:
|
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 10. Feb. 2021 15:36 <-- editieren / zitieren --> Unities abgeben:
Ich muss dir recht geben. Ich habe den Fehler gemacht, dass ich immer den gleichen Dateinamen verwendet habe und den Haken bei "Append File" drin gelassen habe .... Aber jetzt besteht natürlich die große Frage, wie ich das ganze in dem Skript hinbekomme. Code: leaf = dgo.LeafFromNodeSets(nodeSets=('UNGEKERBTEPROBE-1.AUSWERTUNG_NODES',)) dg_Auswertung=session.DisplayGroup(leaf=leaf, name='Nodes_Auswertung') dg1=session.displayGroups['Nodes_Auswertung'] session.viewports['Viewport:1'].odbDisplay.setValue(visibleDisplayGroups=(dg1,))odb = openOdb(path=odbPath) odb_s=session.odbs[odb] session.writeFieldReport(fileName='Auswertung_S11', append=OFF,sortItem='Node Ladel', odb=odb_s, step=0, frame=1, outputPosition=NODAL,variable=(('S', INTEGRATION_POINT, ((COMPONENT,'S11'), )), ))
so habe ich das quasi 1 zu 1 aus dem Macro Manager heraus geschrieben. Einzig die Zeile mit "odb_s" habe ich eingefügt, damit ich keinen festen Pfad habe, sondern immer auf mein entsprechendes Arbeitsverzeichnis zurück greife. Dabei bekomme ich im oberen Teil allerdings eine Fehlermeldung zu der Zeile
Code: session.viewports['Viewport:1'].odbDisplay.setValue(visibleDisplayGroups=(dg1,))
"KeyError: Viewport: 1 " Was muss ich denn da ändern? Im zweiten Block meckert er dann bei
Code: odb_s=session.odbs[odb]
"TypeError: String Expected as dictionary Key". das liegt sicherlich daran, dass mein odb = openOdb(r'C:/SIMULIA/Abaqus/Projektarbeit/ungekerbte Probe/korrigierte Geometrie/Berechnung_v6/Biegung_Pruefkraft.odb') nicht nur den Pfad enthält, sondern auch noch das "openOdb" Wie komme ich denn da an den Pfad dran? [Diese Nachricht wurde von Database91 am 10. Feb. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 10. Feb. 2021 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
Führe die Aktionen einfach in der GUI durch und adaptiere dann die Befehle aus der .rpy. Da findet man Befehle wie: o1 = session.openOdb(name='D:/temp/test.odb', readOnly=False) session.viewports['Viewport: 1'].setValues(displayedObject=o1) leaf = dgo.LeafFromNodeSets(nodeSets=("RandomSetName", )) session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace(leaf=leaf) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 10. Feb. 2021 16:50 <-- editieren / zitieren --> Unities abgeben:
Das habe ich ja in der GUI durchgeführt und mit dem Macromanager aufgezeichnet. Der erste Teil war auch einfach nur ein Schreibfehler. Aber der zweite Teil beschäftigt mich immer noch. Im Macromanager ist der Befehl:
Code: odb = session.odbs['C:/SIMULIA/Abaqus/.../Berechnung_v6/Biegung_Pruefkraft.odb']
Ich möchte das Skript aber ja an verschiedenen PCs und in verschiedenen Verzeichnissen verwenden können. Daher bräuchte ich einen Weg an den Pfad des aktuellen Arbeitsverzeichnisses ran zu kommen. Damit ich diesen dann einsetzen kann als Variable Code: odb = session.odbs[Arbeitsverzeichnis]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 10. Feb. 2021 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
|
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 12. Feb. 2021 06:14 <-- editieren / zitieren --> Unities abgeben:
Besten Dank für die Hilfen Mustaine edit: Da war ich wohl zu schnell... Aber jetzt funktioniert es Für alle, die eventuell später noch mal hierauf stoßen auf der Suche nach einer Lösung. Im Preprocessing erstellt:
Code: p.Set(nodes=Node_list, name='Auswertung_Nodes')regionDef=mdb.models['Model-1'].rootAssembly.allInstances['ungekerbteProbe-1'].sets['Auswertung_Nodes'] mdb.models['Model-1'].FieldOutputRequest(name='F-Output-2', createStepName='Last_Kraft', variables=('S', ), frequency=LAST_INCREMENT, region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE)
Die Auswertung im Postprocessing:
Code: job=job_Name + '.odb' workDir=os.getcwd() Part_1='ungekerbteProbe-1' Nodeset='Auswertung_Nodes' Step_1 = 'Last_Kraft'o1 = session.openOdb(name=workDir+"\\"+job) session.viewports['Viewport: 1'].setValues(displayedObject=o1) leaf = dgo.LeafFromNodeSets(nodeSets=('UNGEKERBTEPROBE-1.AUSWERTUNG_NODES',)) dg_Auswertung=session.DisplayGroup(leaf=leaf, name='Nodes_Auswertung') dg1=session.displayGroups['Nodes_Auswertung'] session.viewports['Viewport: 1'].odbDisplay.setValues(visibleDisplayGroups=(dg1,)) odb=session.odbs[workDir+"\\"+job] session.writeFieldReport(fileName='Auswertung_S11.txt', append=OFF,sortItem='Node Ladel', odb=odb, step=0, frame=1, outputPosition=NODAL,variable=(('S', INTEGRATION_POINT, ((COMPONENT,'S11'), )), )) session.writeFieldReport(fileName='Auswertung_S22.txt', append=OFF,sortItem='Node Ladel', odb=odb, step=0, frame=1, outputPosition=NODAL,variable=(('S', INTEGRATION_POINT, ((COMPONENT,'S22'), )), )) session.writeFieldReport(fileName='Auswertung_S33.txt', append=OFF,sortItem='Node Ladel', odb=odb, step=0, frame=1, outputPosition=NODAL,variable=(('S', INTEGRATION_POINT, ((COMPONENT,'S33'), )), ))
[Diese Nachricht wurde von Database91 am 12. Feb. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|