Autor
|
Thema: Verschiebungssteuerung bei zyklischer Belastung (1682 mal gelesen)
|
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 02. Jun. 2015 13:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte gerne eine Struktur (Material: plastisch) zyklisch be- und entlasten (drücken und ziehen). Dabei soll mit zunehmender Zyklenzahl die Belastungsamplitude (Verschiebung) ansteigen. Die Entlastung erfolgt über eine Verschiebungssteuerung in Kombination mit einer VUMAT. Das funktioniert auch soweit ganz gut. Der Ablauf sieht etwa so aus: 1. Zyklus
1. Schritt: Kompression der Struktur um 10% ihrer Ausgangslänge (vorgegebene Verschiebung) 2. Schritt: Struktur wird entlastet bis die VUMAT (kraftgesteuert abbricht) 2. Zyklus 1. Schritt: Kompression der Struktur um 20% ihrer Ausgangslänge (vorgegebene Verschiebung) 2. Schritt: Struktur wird entlastet bis die VUMAT (kraftgesteuert abbricht) 3. Zyklus
1. Schritt: Kompression der Struktur um 30% ihrer Ausgangslänge (vorgegebene Verschiebung) 2. Schritt: Struktur wird entlastet bis die VUMAT (kraftgesteuert abbricht) ... Mein Problem ist es, dass nach jedem Zyklus plastische Verformung zurückbleibt (die Struktur wird kürzer).
Bsp.: Ausgangslänge = 10mm -> 1. Zyklus(1.0mm Kompression (10%) => 9.0mm ; Entlastung auf 9.5mm) -> Länge = 9.5mm Wenn ich jetzt in den nächsten Zyklus gehe wird vom vorherigen Zustand ausgegangen: Länge = 9.5mm -> 2. Zyklus(2.0mm Kompression (20%) => 9.5mm -2.0mm = 7.5mm) Die Kompression wird im zweiten Zyklus auf den Zustand nun auf 25% (bezogen auf die Ausgangslänge = 10mm) komprimiert. Gewünscht sind aber die tatsächlichen 20% Kompression. Ist es möglich Abaqus mitzuteilen, dass bei der Kompression immer vom Anfangszustand der Struktur ausgegangen werden soll? Ich hoffe, dass es halbwegs verständlich ist
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 02. Jun. 2015 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
Wie genau wird denn der zweite Schritt abgebrochen? Zu dem Zeitpunkt wird doch auch eine ODB erstellt. Kannst du aus dieser ODB nicht eine Knotenposition auslesen, die dir deine Dehnung wiedergibt? Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schero Mitglied Wissenschaftlicher Mitarbeiter
Beiträge: 2 Registriert: 11.02.2013
|
erstellt am: 02. Jun. 2015 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
Hey, ich hoffe, ich hab alles richtig verstanden. Rechne dir doch zu Beginn aus, welchen Endwert deine Verschiebungsrandbedingung am Ende der einzelnen Steps erreichen soll. Und den Wert der Verschiebung errechnest du dir dann darüber, dass du dir zunächst ausliest, welche Koordinaten deine Randbedingungsregion hat, dann diesen Wert vom vorher berechneten Wert abziehst und am Ende dieses Ergebnis für die Verschiebungsrandbedingung einsetzt. Bezug auf dein Beispiel: Ausgangslänge 10mm: 1. Endwerte berechnen: a) 9mm b) 8mm c) 7mm 2. erste relative Verschiebung ist trivial: 10mm-9mm=1mm 3. Endwert aus erstem Schritt auslesen: 9.5mm 4. neue relative Verschiebung berechnen: 9.5mm-8mm=1.5mm 5. usw.... Ginge das so? Grüße ------------------ -- TU Chemnitz Professur Festkörpermechanik 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: 02. Jun. 2015 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
|
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 02. Jun. 2015 21:04 <-- editieren / zitieren --> Unities abgeben:
Erstmal besten Dank für die schnellen Antworten. @slein89 Der 2. Schritt wird mittels VUMAT Subroutine abgebrochen, die Struktur wird quasi wieder so weit auseinandergezogen bis die Kraft an einem Sensorpunkt = 0 ist. @schero Das wäre auch mein Ansatz gewesen in Verbindung mit Restarts, die Mustaine erwähnt hat. Einen Zyklus rechnen lassen, den Endwert auslesen. Dann damit die nächste Kompressionsamplitude errechen und Restart... Ich denke, es wäre vielleicht ganz sinnvoll ein zusätzliches Abbruchkriterium für die Kompression in VUMAT einzubauen. Das ich in den Schritten jeweils eine hohe Kompressionsamplitude vorgebe, durch die VUMAT aber beim erreichen der 10,20,30,50% abbricht und in die Entlastung geht. Werde ich mich die Tage mal etwas genauer mit beschäftigen ob das so möglich ist. Das mit den Restarts wäre dann die Notlösung, da unser Uni-Cluster momentan ziemlich gut ausgelastet ist und ich bei jedem Restart warten muss bis genug freie Ressourcen vorhanden sind damit die Rechnung anläuft. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hempres Mitglied
Beiträge: 84 Registriert: 30.06.2008
|
erstellt am: 02. Jun. 2015 22:33 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
|
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 03. Jun. 2015 07:53 <-- editieren / zitieren --> Unities abgeben:
|
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 03. Jun. 2015 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
Nur mal als Anregung, weil ich nicht weiß, inwiefern du auf die VUMAT angewiesen bist. Schau dir mal die keywords "*EXTREME VALUE", "*EXTREME NODE VALUE" und "*EXTREME ELEMENT VALUE" an. Mit denen kannst du eine explizite Rechnung abbrechen, sobald deine beobachteten Variablen einen kritischen Wert über- oder unterschreiten. Du könntest den Entlastungsschritt zum Beispiel abbrechen, wenn deine Sensorkraft 0 beträgt und dir zu diesem Zeitpunkt die ODB rausschreiben lassen. In dieser ODB kannst du die Position/Verschiebung des Knotens auslesen, der dir die verbleibende Dehnung bestimmt. Mit dieser Information startest du dann den nächsten Zyklus (Python Skript gesteuert am besten) und passt die Amplitude entsprechend an. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 03. Jun. 2015 08:07 <-- editieren / zitieren --> Unities abgeben:
@slein89 Muss ganz ehrlich sagen, dass ich in der Geschichte mit den Subroutinen nicht sonderlich tief drin stecke. Für das aktuelle Projekt habe ich die Routine meines Vorgängers etwas umgebastelt. Würde es denn generell funktionieren diese Ablaufsteuerung ohne VUMAT zu erledigen? Bspw. über ein Python-Skript? Gibt es neben den Handbüchern evtl. noch andere Unterlagen in denen die ganzen Keywords für die Subroutinen mal aufgeschlüsselt sind?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
slein89 Mitglied
Beiträge: 139 Registriert: 30.04.2012
|
erstellt am: 03. Jun. 2015 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
Ich würde das komplette Problem über ein Python-Skript steuern, vielleicht noch in Kombination mit einem Shell Skript. Wenn du das Problem kurz skizzieren würdest (wie sieht die Struktur aus und wie wird sie belastet), könnte ich es besser einschätzen. Wenn du die VUMAT einsetzt, weil ihr ein eigenes Material benutzt, wirst du ohne sie wohl nicht auskommen. Ansonsten kannst du auch die eingebauten Materialien von ABAQUS verwenden. Die Geschichte mit dem "*EXTREME VALUE" ist unabhängig von der VUMAT, kannst du also auch mit eingebauten Materialien verwenden. Die ABAQUS Hilfe ist schon einigermaßen ordentlich, nur muss man sich erst mal daran gewöhnen, damit man weiß wo man was findet. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hempres Mitglied
Beiträge: 84 Registriert: 30.06.2008
|
erstellt am: 03. Jun. 2015 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für Rechenknecht87
Zitat: Original erstellt von Rechenknecht87: Was genau steuerst du denn mit den Sensoren und der UAMP?
Über die UAMP steuere ich die Verschiebung, z.B. wird so lange eine Verschiebung aufgebracht bis eine bestimmte Größe (berechnet aus den Sensoren) erreicht wurde. Du kannst Dir somit die Kompression über die Verschiebung der Sensorknoten direkt ausrechnen. Dieses hat den Vorteil, dass Du nur eine Rechnung brauchst, also kein Restart oder ähnliches. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 04. Jun. 2015 10:42 <-- editieren / zitieren --> Unities abgeben:
@hempres Genau das würde ich auch gerne machen. Eine Verschiebungssteuerung für die Belastung und für die Entlastung die Kraftsteuerung. Ich habe da etwas rumprobiert, aber die Verschiebungssteuerung bekomme ich einfach nicht zum laufen. Ich denke, dass ich da einen Fehler beim auslesen des Sensors für die Verschiebung mache. Je nach dem wie ich die Bedingung in der IF-Anweisung (Verschiebungssteuerung) setze läuft das komplette Programm ab ohne das die Verschiebung gesteuert wird (Kraftsteuerung funktioniert). Oder Er bricht direkt nach dem ersten Entlastungsschritt ab weil die Bedingung zum Abbruch des 2. Belastungsschritts erfüllt sind. Da nichts verschoben wird ändert sich auch die Kraft am Sensor nicht und somit ist das Abbruchkriterium für den 2. Entlastungsschritt auch erfüllt. Die Rechnung endet nach dem ersten Lastzyklus. Es wäre TOP wenn jemand von euch da mal kurz drüber schauen könnte. Evtl. ist es ja nur ein kleiner Fehler.
Habe mal mein Versuchsbeispiel angefügt. Es ist ein einfaches Schalenmodell (schräg stehendes 'Rohr' mit S4R Elementen) mit zwei Lastzyklen. Im 2. Lastschritt soll bei erreichen einer Verschiebung von -5.0 der Schritt abgebrochen werden und mit dem 2. Entlastungsschritt weitergemacht werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rechenknecht87 Mitglied Student
Beiträge: 51 Registriert: 22.09.2014
|
erstellt am: 29. Jun. 2015 09:19 <-- editieren / zitieren --> Unities abgeben:
Habe die VUAMP nun zum laufen gebracht. Habe mir einmal die Sensordaten für die Verschiebung und die Kraft in ein textfile schreiben lassen. Dort konnte man sehen, dass die Sensorwerte für die Verschiebung zu Beginn eines Be- bzw- Entlastungsschritts schlichtweg falsch waren. Beispielsweise wurden Verschiebungswerte von -55 ausgelesen obwohl die tatsächliche Verschiebung bei bspw. -3 lag und somit das Abbruchkriterium für den Belastungsschritt erfüllt (bspw. U < -10). Woher dies kommt kann ich nicht sagen. Habe anschließend mal die Verschiebungssteuerung aus der VUAMP rausgenommen und erneut die Sensordaten rausgeschrieben. Hier konnte ich sehen, das wirklich nur im ersten Inkrement eine falsche Verschiebung am Sensor ausgelesen wird. Bei den folgenden Inkrementen sieht es wieder alles ganz normal aus. Habe mir jetzt so geholfen in dem ich neben der Verschiebung noch die Schrittzeit >0 abfrage, der . Damit scheint es zu funktionieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |