Autor
|
Thema: Subroutine Creep implementieren (2360 mal gelesen)
|
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 11. Feb. 2013 16:03 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe CAD-User, könnt ihr mir bei folgender Problemstellung helfen? Wie implementiere ich eine Creep Subroutine? Ich habe ein *Creep, law=USER in die Materialbeschreibung eingefügt und beim Starten des Jobs ein user=creep.f hinzugefügt. Die Subroutine wird auch ohne Fehlermeldung compiliert, aber die Rechnung läuft dann sehr schnell durch und auch im Ergebnis ist keine plastische Verformung zu erkennen. Da ich leider im Internet und im Handbuch nur die beiden bereits verwendeten Einstellungen gefunden habe, möchte ich euch einmal fragen, ob man noch etwas Spezielles beachten muss? Danke schon einmal für eure Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 11. Feb. 2013 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 12. Feb. 2013 09:17 <-- editieren / zitieren --> Unities abgeben:
Ich rechne mit Coupled-Temp-Displacement. Wenn ich die bereits mitgelieferten Creep_Gleichungen (zB Time-Hardening) aktiviere, rechnet Abaqus einwandfrei und es kommt zu einer plastischen Verformung. Was mir noch aufgefallen ist, dass Abaqus die max Temperaturänderung pro Increment ignoriert und mit viel zu wenigen Incrementen die Temperaturschwankungen durchrechnet. Aber die Temperatur wird im .odb richtig angezeigt. Ich habe einmal meine Creep-Subroutine angefügt. Es wäre eine super Hilfe, wenn ich wüsste, dass diese nicht die Fehlerursache ist! Vielen Dank für die Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 12. Feb. 2013 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
Starte doch erst einmal ganz einfach indem Du den DECRA-Vektor mit konstanten Werten besetzt anstatt ihn zu berechnen. So kannst Du testen, ob kompilieren und linken funktioniert hat. Die Koeffizienten Deines Kriechgesetzes kommen mir arg anders vor als die die ich üblicherweise verwende. Ist aber nur so ein Gefühl. Ist Dein Einheitensystem konsistent? Die üblichen Kriechgesetze können Ärger bei t=0 machen, da hier die Dehnrate unendlich ausfällt. K.A., ob das zum Problem beiträgt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 14. Feb. 2013 10:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Goldstein, ich habe jetzt mal die Subroutine einfach mit dem Inhalt Decra(1)=0.00001 gefüllt. Leider entsteht auch hier kein Kriechen. Je nachdem wie groß ich den Wert wähle bekommt Abaqus ein Problem mit der Konvergenz der Kraft. Daher musste ich bei größeren Decra-Werten die Incrementstartgröße verkleinern. Aber im Ergebnis ist kein Kriechen erfolt.. In der Log-Datei wird nur die fehlende Sprachvorgabe bemängelt: Begin Compiling Abaqus/Standard User Subroutines Thu 14 Feb 2013 07:56:13 AM CET perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = " " are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). End Compiling Abaqus/Standard User Subroutines Thu 14 Feb 2013 07:56:13 AM CET Begin Linking Abaqus/Standard User Subroutines Thu 14 Feb 2013 07:56:13 AM CET perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = " " are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). End Linking Abaqus/Standard User Subroutines Thu 14 Feb 2013 07:56:14 AM CET Begin Analysis Input File Processor Thu 14 Feb 2013 07:56:14 AM CET Run pre.exe Thu 14 Feb 2013 07:56:17 AM CET End Analysis Input File Processor Begin Abaqus/Standard Analysis Thu 14 Feb 2013 07:56:17 AM CET Run standard.exe Thu 14 Feb 2013 08:32:19 AM CET End Abaqus/Standard Analysis Abaqus JOB Creep_V10 COMPLETED Hast du noch eine Idee woran es liegen kann? Ich habe bereits versucht mit Expliziter Rechnung voran zu kommen, aber leider auch ohne Erfolg?
Ich schätze, dass irgendwo ein falscher Haken sitzt, weiß aber nicht was alles voreingestellt werden muss um die Subroutine Creep richtig zu verlinken. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 14. Feb. 2013 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 14. Feb. 2013 13:15 <-- editieren / zitieren --> Unities abgeben:
|
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 14. Feb. 2013 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 26. Feb. 2013 17:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Goldstein, also die Ausgabe funktioniert. Im Logfile wurden innerhalb weniger Sekunden sehr viele Einträge geschrieben, dh die Subroutine wird richtig aufgerufen und läuft durch. Woran könnte es denn noch liegen, dass es zu keinem Kriechen kommt? Nachdem was ich gelesen habe, reicht die Rückgabe von Decra(1) und Decra(5)-Werten. Müssen sonst noch Werte in der Routine berechnet werden? Vielen Dank für die Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 27. Feb. 2013 07:44 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 27. Feb. 2013 09:51 <-- editieren / zitieren --> Unities abgeben:
Das stimmt natürlich. Ich habe das Inputdeck und die Subroutine angehängt. Um den Subroutinenprozess zu überprüfen habe ich auch andere Versuchsversionen ausprobiert. Aber diese hier ist eigentlich die gewünschte Endversion. Die Parameter stimmen definitiv noch nicht, da ich noch auf die Kriechkurven warten muss. Ich habe daher ab 400°C relativ hohe Werte eingetragen um auf sicheres Kriechen zu kommen. Die Routine läuft auch soweit durch, da sobald eine Temperatur von über 400°C in der Simulation auftritt der Write-Befehl ausgeführt wird. Vielen Dank für die Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Freundeskreis Mitglied Student
Beiträge: 40 Registriert: 15.11.2012 Windows 7 Abaqus 6.12
|
erstellt am: 27. Feb. 2013 10:27 <-- editieren / zitieren --> Unities abgeben:
|
Goldstein Mitglied
Beiträge: 970 Registriert: 21.01.2005
|
erstellt am: 27. Feb. 2013 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
NICW Mitglied
Beiträge: 4 Registriert: 16.06.2015
|
erstellt am: 17. Jun. 2015 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
Zitat: Original erstellt von Goldstein: Die üblichen Kriechgesetze können Ärger bei t=0 machen, da hier die Dehnrate unendlich ausfällt. K.A., ob das zum Problem beiträgt.
Hallo Goldstein, ich bin ganz neu hier angemeldet (und auch überhaupt das erste mal bei einem Forum) deswegen bitte ich um etwas Nachsicht... Ich wollte diesen Thread nochmal in Hoffnung auf Hilfe aufgreifen, da ich hier in einer deiner Antworten den einzigen Bezug zu meinem aktuellen Problem gefunden habe. In dem Zitierten Beitrag schreibst du, dass einige Subroutines Probleme beim Start t=0 haben, da hier das Kriechdehninkrement unendlich hoch wird. Vor dieser Schwierigkeit stehe ich nun auch: Ich versuche grad die in Abaqus mit *Creep, Law=Strain hinterlegete Subroutine "nach zuprogrammieren" und stoße da auf etwas Schwierigkeiten am Start. Bei mir erfolgt der Abbruch wenn die Vergleichskriechdehnungen EC(1) bzw. EC(2), die zur Berechnung des Kriechdehninkrements benötigt werden zu klein sind, was auf implizite Art ja Zeitpunkten von t->0 entspricht wenn ich es richtig verstehe. Diese kleinen Vergleichskriechdehnungen führen dann zu sehr großen Spannungen und letztendlich dazu, dass die Lösungen divergieren. Meine erste Idee war nun bei der Berechnung des Kriechdehninkrements für das erste Zeitinkrement eine kleine Vergleichskriechdehnung vorzugeben um einen von Null verschiedenen Wert zu haben. Die Berechnung funktionierte jetzt auch für das erste Zeitinkrement ganz gut, da die Kriechdehnungen dann beim zweiten Zeitschritt aber immer noch sehr gering waren führte dies hier zu unrealsitisch hohen Spannungen (QTILD) und so zum Abbruch. In meiner aktuellen Version die auch realistische Ergebnisse liefert und auch im Vergleich zur hinterlegten Law=Strain subroutine ganz gut aussieht (Differenzen von ca. 0.01%) sage ich, dass zur Berechnung des Kirechdehninkrements ein bestimmter Wert anstatt der Vergleichskriechdehnungen benutzt werden soll, solange diese unterhalb des bestimmten Wertes liegen(Dieser Wert ist so groß, dass es nicht zu unrealistisch hohen Kriechdehnungen kommt). Sobald die Vergleichskriechdehnungen diesen Wert überschreiten werden sie zur Berechnung benutzt. Da die größe dieses Wertes in Abhängigkeit von den wirkenden Spannungen stark variiert habe ich hier noch einen Bezug zu QTILD eingebaut. Die Subroutine trifft jetzt auch für Stark unterschiedliche Spannungen eigentlich sehr gut den Verlauf der hinterlegten Subroutine und bleibt auch bei spontanen Spannungsänderungen stabil. Mich würde jetzt halt nur sehr interessieren wie bei diesem Problem üblicherweise vorgegangen wird, ob du noch eine bessere Lösungsidee hättest oder wie dieses Problem in Abaqus gelöst ist um halt genau den Verlauf der in Abaqus hinterlegten LAW=STRAIN Subroutine zu treffen (falls das möglich ist). Ich freue mich über jede Idee und Anregung natürlich auch von jedem anderen USER und entschuldigt, dass der Text jetzt so arg lang geworden ist! Vielen Dank schon mal und viele Grüße NICW 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: 17. Jun. 2015 17:31 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
|
NICW Mitglied
Beiträge: 4 Registriert: 16.06.2015
|
erstellt am: 18. Jun. 2015 00:37 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
Werde ich Morgen versuchen! Vielen Dank für die Antwort ...aber eigentlich müsste es doch auch anders gehen oder? Weil ich suche ja eigentlich den Unterschied zwischen meiner Subroutine zur Berechnung des Kriechens und der in Abaqus hinterlegten. Und mit der hinterlegten Subroutine läuft es ja auch mit größerem Start-Zeit-Inkrement... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NICW Mitglied
Beiträge: 4 Registriert: 16.06.2015
|
erstellt am: 22. Jun. 2015 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für Freundeskreis
Hallo, tut mir leid, dass ich bisher keine Rückmeldung gegeben habe! Ich habe es letzte Woche nicht mehr geschafft... Habe es aber grad mit dem sehr kleinen Zeitinkrement versucht, aber an dem Verlauf der durch meine Subroutine berechneten Kriechdehnungen ändert eine Variation des Zeitinkrements nichts! Das heißt im natürlich auch, dass ich den Verlauf der in Abaqus hinterlegten Subroutine auch immernoch nicht genau treffe. Ich müsste also nochmal um Ideen oder Hilfe bitten, um die Frage zu klären wie man in der Programmierung das Startproblem der Kriechgleichungen (unendlich hohes Kriechdehninkrement am Start) vernünftig lösen kann. Vielen Dank und viele Grüße NICW Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |