Autor
|
Thema: Berechnung Von Mises in Abaqus (1657 mal gelesen)
|
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 21. Jan. 2021 19:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe eine Frage zur Berechnung der Von Mises Spannung in Abaqus. Und zwar möchte ich diese über ein Skript selbst ausrechnen zur weiteren Datenverarbeitung. Dazu benötige ich die maximale Spannung. Dazu verwende ich die GEH und rechne wie folgt: sigma = WURZEL(0,5*((S11-S22)^2+...+6*(T12^2+T13^2+T23^2))) (Dann immer die maximalen Werte von S11, S22 etc.) Das Ergebnis stimmt aber nicht mit dem Ergebnis aus Abaqus überein. Wie also rechnet Abaqus die maximale Von Mises Spannung aus? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pam Crash Moderator Moderator
Beiträge: 434 Registriert: 29.04.2008
|
erstellt am: 21. Jan. 2021 19:39 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
|
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 21. Jan. 2021 19:51 <-- editieren / zitieren --> Unities abgeben:
|
Airfox Mitglied Student
Beiträge: 96 Registriert: 16.09.2015
|
erstellt am: 22. Jan. 2021 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
Moin, also wie mein Vorschreiber schon richtig gesagt hast muss du aufpassen wo du die Spannungen abgreifst. Bei den Knoten wird ein jeweilig anteiliger Wert des anliegenden Integrationspunktes extrapoliert. Somit bildet der Knoten den Spannungstechnischen Mittelwert aller Integrationspunkte der jeweiligen Elemente um den Knoten ab. Du könntest für eine einfache Überprüfung hier das "Probe Values" tool aus der Mittelleiste ganz unten wählen. Dort musst du die "Probe:" auf Element stellen und weiter rechts bei der Position den Integrations Pt auswählen. Dann musst du jeweils die Einzelkomponennten bei der Spannung auswählen, sprich S_11, S_22,....S_23 diese notieren und anschließend in die VM Spannungsformel einsetzten. Zack bekommst du die VM Spannung heraus. Alternativ "einfach" eine Fortran Subroutine schreiben für linear elastisches Materialverhalten ggf. ideal plastisch oder mit kinematischer Verfestigung für mehr Stabilität und dort die VM Spannung berechnen lassen und dir als SDV ausgeben lassen. 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: 22. Jan. 2021 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
Ich versuche das Ganze mal etwas ausführlicher zu erklären, damit die bereits gegebenen Antworten und auch die zu berücksichtigenden Aspekte deutlicher werden. Der Solver (Abaqus/Standard oder /Explicit) berechnet die Spannungen und Dehnungen an den Integrationspunkten in den Elementen und schreibt den Spannungstensor bezogen auf diese Orte in die Ergebnisdatei. Man hätte in Abaqus an dieser Stelle schon Optionen um das auch anders zu machen, aber das ignorieren wir erstmal. Wenn man die Ergebnisdatei dann in A/CAE öffnet um das Postprocessing durchzuführen und man sich die Mises-Spannung darstellen lasst, passiert automatisch folgendes: - Die Daten der Spannungstensoreen werden unter Berücksichtigung der Elementformulierung an die Knoten extrapoliert. Hängen an einem Knoten z.B. 4 Elemente, hat man intern an dem Knoten nun 4 verschiedene Spannungstensoren. - Aus jedem Spannungstensor wird die Mises-Spannung berechnet. Man hätte somit nun 4 Mises-Spannungen an dem Knoten. Dies könnte man ändern. - Die 4 Mises-Spannungen werden gemittelt. Man hat dort also nur noch eine Mises-Spannung. Es wird nicht gemittelt, wenn die Unterschiede der 4 Werte zu groß sind (i.d.R. wenn Netz zu grob). Hier kommt diese Option 75% Avg. Threshold ins Spiel. Das könnte man ändern. - Mit diesem einen Wert pro Knoten wird die Farbcodierung für den Contour Plot erstellt. Dies könnte man ändern. Wenn du also unverfälschte Daten haben möchtest, solltest du an die Integrationspunkte gehen um dort die Tensordaten abzugreifen oder um dort direkt die Mises-Spannung berechnen zu lassen und abzugreifen. Dafür gibt es verschiedene Möglichkeiten: - Mises direkt vom Solver an den Integrationspunkten anfordern - Tensor- oder Mises-Output direkt vom Solver in eine Textdatei anfordern - mit Python direkt die .odb auslesen - in A/CAE einen Report mit Field-Daten anfordern - in A/CAE die Option Probe Value verwenden [Diese Nachricht wurde von Mustaine am 22. Jan. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 22. Jan. 2021 18:02 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure ausführlichen und schnellen Antworten. Jetzt habe ich das Ganze schon etwas besser verstanden - scheint auch komplexer zu sein, als ich anfangs mal vermutet habe. Am Knoten hängen tatsächlich zwei Elemente, sodass der Wert dann aus einer Mittelung beider kommen kann. Nach Mustaine hätte ich dann ja zwei Spannungstensoren. In Abaqus kann ich ja auch S11, S22, ... anzeigen lassen - aber wozu gehören diese Werte dann? @Mustaine: Ich versuche mich gerade am Postprocessing und versuche die Output Datei mit einem Python Skript auszulesen. Zur Überprüfung, ob die ausgelesene Spannung stimmt, habe ich mir das Ganze mal in Abaqus angeschaut (die Idee ist, dass das Skript Output Dateien auslesen soll, ohne Abaqus zu öffnen). In der Abaqus Doc gibt es hierzu schon eine Skript Vorlage: https://abaqus-docs.mit.edu/2017/English/SIMACAECMDRefMap/simacmd-c-odbintroexamaxmisespyc.htm Diese liefert mir aber eben nicht den Spannungswert, den Abaqus anzeigt (den hätte ich gerne). Kann mir jemand von euch Hilfestellung dazu geben, wie ich das Skript dementsprechend anpassen muss? Wie kann ich wissen, an welchen Elementen ich genau die Tensoren auslesen muss? 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: 25. Jan. 2021 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
|
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 25. Jan. 2021 16:26 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 25. Jan. 2021 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
Verstanden. Das sollte kein großes Problem sein. Allerdings muss das im Hintergrund über A/CAE gemacht werden, da dort erst bestimmte Dinge bzgl. Mises passieren. Ich werde mal ein kleines Beispiel erstellen und melde mich morgen wieder. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 25. Jan. 2021 17:12 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 25. Jan. 2021 17:43 <-- editieren / zitieren --> Unities abgeben: Nur für Abaqi
Unten ist das Skript. Ich habe es so eingestellt, dass man es ohne GUI laufen lassen kann und die Daten in eine .dat geschrieben werden. Man gibt die .odb mit als Parameter auf der Kommandozeile an. D.h. kopiere Skript und Ergebnisdatei in einen Ordner, öffne dort eine Kommandozeile und gib ein: abaqus cae noGui=get_max_mises.py -- Job-1.odb Skriptname und odb-Dateiname musst du natürlich passend zu deinen Dateien setzen. Hier der Inhalt meiner get_max_mises.py. Wie du sehen kannst, verwende ich einen einfachen Befehl um den Max-Wert des Contour-Plots abzugreifen. Code:
from abaqus import * from abaqusConstants import * from viewerModules import * import sys# open odb o1 = session.openOdb(name=sys.argv[-1], readOnly=True) # display this odb and mises stress session.viewports['Viewport: 1'].setValues(displayedObject=o1) session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, )) session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable( variableLabel='S', outputPosition=INTEGRATION_POINT, refinement=(INVARIANT, 'Mises'), ) # read max contour value maxvalue = session.defaultOdbDisplay.contourOptions.autoMaxValue # write data to file inname = sys.argv[-1].split('.')[0] outname = inname+'_maxMises.dat'
f = open(outname, 'w') f.write('File name: '+str(sys.argv[-1])) f.write('\nMax Mises stress: '+str(maxvalue)) f.close()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Planer Zugsicherungstechnik (w/m/d) | In unseren Bussen und Bahnen bringen wir jeden Tag über eine Million Menschen an ihr Ziel. Und wir bewegen noch mehr: für Hamburg, für die Zukunft und für alle, die bei uns arbeiten. PLANER ZUGSICHERUNGSTECHNIK (W/M/D) Du ? deine Rolle bei uns Für die Abteilung Zugsicherungs- und Kommunikationsanlagen suchen wir dich als Planer. Wenn dir die Sicherheit wichtig ... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
Abaqi Mitglied
Beiträge: 6 Registriert: 21.01.2021
|
erstellt am: 25. Jan. 2021 17:57 <-- editieren / zitieren --> Unities abgeben:
|