Autor
|
Thema: Thermomechanisch gekoppelte Simulation (2441 mal gelesen)
|
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 06. Jun. 2013 16:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin grade dabei ein thermomechanisches Model eines additiven Fertigungsprozesses (unter Verwendung eines Stahls) zu erstellen. Ich verwende eine schwache Kopplung. Also berechne ich zuerst das Temperaturfeld in einer Simulation und möchte dann das Temperaturfeld als Eingangsgröße für die anschließende Berechnung von Eigenspannungen nehmen. In der Simulation des Temperaturfeldes werden zudem lösungsabhängige Zustandsvariablen verwendet. Diese verwende ich in einer Subroutine (USDFLD), die mir die Phasentransformationen berechnet. Ich möchte nun auch eine der lösungsabhängigen Zustandsvariablen (STATEV (x), den Martensitgehalt) als Eingangsgröße in meine Eigenspannungsberechnung mit einbringen. Bei der Temperatur geht dass ja über ein predifined field... Aber wie kann ich das nun für meine Zustandsvariable tun? Jede Idee ist herzlich willkommen!! Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 07. Jun. 2013 08:00 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
Verwendest du für die Spannungsberechnung eine UMAT oder verfügt ABAQUS über ein Stoffgesetz, welches den Martensitgehalt berücksichtigt? Bei der UMAT übergibst du deine Variable über *INITIAL CONDITIONS, TYPE=SOLUTION oder noch besser mit Hilfe der Userroutine SDVINI. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 07. Jun. 2013 12:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke für die schnelle Antwort! Also ich setze die Variablen mit SDVINI und verwende dann USDFLD um den Martensitgehalt zu berechnen. Eine meine STATEV'en ist der Martensitgehalt. Alle STATEV und die Knotentemperaturen werden ins .odb-file geschrieben. Jetzt möchte ich aber neben den aktuellen Knotentemperaturen auch den Martensitgehalt im jeweiligen Step in der anschießenden Eigenspannungsberechnung verwenden. Die Knotentemperaturen kann ich ja über ein Predefined Filed (also initial conditions) aus dem .odb-file lesen, aber ich weiß nicht wie ich das auch für meine STATEV (3) hinbekomme? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 07. Jun. 2013 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
|
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 07. Jun. 2013 14:08 <-- editieren / zitieren --> Unities abgeben:
Hi, also ich habe einen automatischen Inputfilegenerator erstellt der mir Knotendefinitionen, Elementsets, Stepdefinitionen...etc in ein File schreibt. Auf diese Weise wird mein Inputfile generiert und ich füge lediglich die Materialdefinitionen manuell hinzu. Dann lade ich mein Inputfile in Abaqus/CAE erstelle einen Job (unter Verwendung meines Fortranfiles für die drei Subroutinen DFLUX, SDVINI und USDFLD) und erhalte nach der Ausführung das Temperaturfeld und den Martensitgehalt im odb-File. Diese Ergebnisdaten will ich nun in einer zweiten, neuen Simulation verwenden um die Eigenspannungen die im Prozess entstehen zu berechnen. Ich bin grade dabei mein zweites Inputfile zu erstellen um die Eigenspannungen zu berechnen, habe aber Schwierigkeiten den Martensitgehalt, den ich in der ersten Simulation berechnen und als STATEV (3) festgelegt und ausgegeben habe, als Eingangsinformation in meine zweite Simulation zu speisen. Mein Problem liegt also darin, dass ich nicht weiß wie ich eine Ergebnissfeld einer STATEV von einer Simulation in die nächste Übertragen kann. Bei dem Temperaturfeld geht es ja über initial conditions im Inputfile, aber wie geht das für die STATEV? Ich benötige Ihn um die Dehnungen aufgrund der Volumenänderung bei Phasentransformation in der Spannungsberechnung zu berücksichtigen. Danke und beste Grüße, Flo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 07. Jun. 2013 14:13 <-- editieren / zitieren --> Unities abgeben:
Hi, also ich habe einen automatischen Inputfilegenerator erstellt der mir Knotendefinitionen, Elementsets, Stepdefinitionen...etc in ein File schreibt. Auf diese Weise wird mein Inputfile generiert und ich füge lediglich die Materialdefinitionen manuell hinzu. Dann lade ich mein Inputfile in Abaqus/CAE erstelle einen Job (unter Verwendung meines Fortranfiles für die drei Subroutinen DFLUX, SDVINI und USDFLD) und erhalte nach der Ausführung das Temperaturfeld und den Martensitgehalt im odb-File. Diese Ergebnisdaten will ich nun in einer zweiten, neuen Simulation verwenden um die Eigenspannungen die im Prozess entstehen zu berechnen. Ich bin grade dabei mein zweites Inputfile zu erstellen um die Eigenspannungen zu berechnen, habe aber Schwierigkeiten den Martensitgehalt, den ich in der ersten Simulation berechnen und als STATEV (3) festgelegt und ausgegeben habe, als Eingangsinformation in meine zweite Simulation zu speisen. Mein Problem liegt also darin, dass ich nicht weiß wie ich eine Ergebnissfeld einer STATEV von einer Simulation in die nächste Übertragen kann. Bei dem Temperaturfeld geht es ja über initial conditions im Inputfile, aber wie geht das für die STATEV? Ich benötige Ihn um die Dehnungen aufgrund der Volumenänderung bei Phasentransformation in der Spannungsberechnung zu berücksichtigen. Danke und beste Grüße, Flo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 07. Jun. 2013 14:17 <-- editieren / zitieren --> Unities abgeben:
|
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 07. Jun. 2013 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
Also wenn du sowieso INP Files schreibst, kannst du die *INITIAL CONDITIONS gleich selbst reinschreiben: Zitat: Data lines for TYPE=SOLUTION if the USER and REBAR parameters are omitted: First line: Element number or element set label. Value of first solution-dependent state variable. Value of second solution-dependent state variable. Etc., up to seven solution-dependent state variables. Subsequent lines (only needed if more than seven solution-dependent state variables exist in the model): Value of eighth solution-dependent state variable. Etc., up to eight solution-dependent state variables per line. It may be necessary to leave blank data lines for some elements if any other element in the model has more solution-dependent state variables because the total number of variables that Abaqus expects to read for any element is based on the maximum number of solution-dependent state variables for all the elements in the model. These trailing initial values will be zero and will not be used in the analysis. Values given on the data lines will be applied uniformly over the element. Repeat this set of data lines as often as necessary to define initial values of solution-dependent state variables for various elements or element sets.
Also einfach: Code: *INITIAL CONDITIONS, TYPE=SOLUTION Elementnummer1 , , , Martensitgehalt Elementnummer2 , , , Martensitgehalt
Die zwei Leerstellen beziehen sich auch SDEV(1) und SDEV(2), sollen ja beide nicht berücksichtigt werden. Bei Martensitgehalt steht logischerweise die SDEV(3) des jeweiligen Elements. Die Werte musst du dir vorher aus der ODB auslesen (würde ich mit einem Pythonskript erledigen). Bei dieser Vorgehensweise werden aber auf alle Gaußpunkte pro Element die gleichen Werte vergeben. Ist bei reduzierter Integration kein Problem, wiel eh nur ein GP verwendet wird. Verwendest du Elemente mit mehreren Gaußpunkten, musst du die Userroutine SDVINI benutzen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 07. Jun. 2013 15:19 <-- editieren / zitieren --> Unities abgeben:
Hi slein89, danke für die schnelle Hilfe! Das klingt genau nach der Lösung meines Problems! Ich hab C3D8 Elemente für die mechanische Simulation vorgesehen. Ich muss noch ein paar fehlende temperaturabhängige Materialdaten finden, dann kann ich es umsetzten. Habe allerdings vorher noch nie mit Python gearbeitet und keine Ahnung wo ich anfangen soll. Gibt es für solche Fälle keine Standardcodes, die dann individuell angepasst werden können? Ich bin bestimmt nicht der erste der Sie verwenden würde. Mit SDVIVI setze ich ich dann im mechanischen Model (analog zur thermischen Simulation vorher) die STATEV's und kann ihnen dann die Werte, die ich aus dem odb-file auslese zuweisen? Hab ich das so richtig verstanden? Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 07. Jun. 2013 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
Ja das hast du richtig verstanden. Ich habe schon mal so eine kleine Pythonroutine geschrieben und könnte dir die zur Verfügung stellen. Allerdings beginnt jetzt erst mal mein Wochenende und ich muss dich auf Montag vertrösten. Du kannst mir aber schon verraten mit welchem Programm du dein INP aufbaust bzw. wie du die SDEV aufgearbeitet haben willst. Grüße und schönes Wochenende Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 10. Jun. 2013 07:32 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
|
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 11. Jun. 2013 10:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, sorry, dass ich mich jetzt erst melde, ich bin gesundheitlich etwas angeschlagen und habe die Arbeit eingestellen müssen... Ich erstelle Teile des Inputfiles mit Mathematica 8 und die Subroutinen sind in Fortran geschrieben. Der Mathematica Code gibt mir meine Knotendefinitionen, Elementdefinnitionen und Elementsets als ein Textfile aus und ein weiteres Textfile für die Steps. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flo1121 Mitglied Student
Beiträge: 23 Registriert: 04.04.2013
|
erstellt am: 14. Jun. 2013 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo slein89, würde mir echt sehr weiterhelfen, wenn du mir Deine Pythonroutine zur Verfügung stellen könntest. Wenn es klappt, wär ich einen Schritt weiter und hätte ein Problem weniger. Vielen Dank schon mal! Beste Grüße Flo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 15. Jun. 2013 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für flo1121
|