Autor
|
Thema: Solution Dependent Variables (SDVs in UMAT) sofort speichern (1855 / mal gelesen)
|
DrReinerKlimpke Mitglied
Beiträge: 143 Registriert: 09.11.2012
|
erstellt am: 09. Jan. 2019 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, kennt jemand von euch eine Möglichkeit Informationen für einen Materialpunkt im Rahmen einer UMAT im Sinne einer Solution Dependent Variable (SDV, STATEV) zu speichern, ohne dabei bis zur Konvergenz des Inkrements warten zu müssen? SDVs werden in einer Iteration ja immer mit ihrem Wert aus dem vorherigen (konvergierten) Inkrement initialisiert. Ich möchte, dass die SDV auch vor Erreichen der Konvergenz (Ende des Inkrements) einen gegebenen Wert annimmt und behält. Kennt jemand von euch eine Möglichkeit dies umzusetzen? Aktuell werden die entsprechenden Informationen in einem Array mittels SAVE-Befehl gespeichert. Dies macht mir jedoch eine Probleme sobald die Rechnung parallelisiert (mehrere CPUs) laufen soll. Daher würde ich gerne eine Speichermöglichkeit der Werte ähnlich einer SDV finden. Freue mich über eure Tipps und Hinweise. Grüße, CG [Diese Nachricht wurde von DrReinerKlimpke am 12. Jan. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mefh Mitglied
Beiträge: 45 Registriert: 04.03.2015
|
erstellt am: 10. Jan. 2019 07:56 <-- editieren / zitieren --> Unities abgeben: Nur für DrReinerKlimpke
|
DrReinerKlimpke Mitglied
Beiträge: 143 Registriert: 09.11.2012
|
erstellt am: 10. Jan. 2019 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, zunächst vielen Dank für deinen Hinweis. Über dieses Kapitel der ABAQUS Dokumentation bin ich auch schon gestolpert, bin aber leider aus den Anweisungen nicht so wirklich schlau geworden. Hast du zufällig ein entsprechendes Beispiel hierzu parat? Ansonsten habe ich es jetzt erstmal wieder mit klassischen SDVs versucht. Hierbei leidet die Konvergenz zwar etwas aber evtl. geht es zur Not auch so. Trotzdem würde mich interessieren, ob es eine Speichermöglichkeit entsprechend der eingangs erwähnten Charakteristik (Speichern am Materialpunkt unabhängig von Konvergenz) gibt. Viele Grüße, CG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mefh Mitglied
Beiträge: 45 Registriert: 04.03.2015
|
erstellt am: 10. Jan. 2019 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für DrReinerKlimpke
Ich hatte mal ein ähnliches Problem. Dieses habe ich dann aber anders gelöst. Ich habe Dir mal ein (ungetestetes) Beispiel zusammengehackt #include <SMAAspUserSubroutines.hdr> SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, RPL,DDSDDT,DRPLDE,DRPLDT, & STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPREDEF,CMNAME, & NDI,NSHR,NTENS,NSTATEV,PROPS,NPROPS,COORDS,DROT,PNEWDT, & CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) integer ai(2) pointer(ptra,ai) integer id ! Bsp für C3D8 - Element; id für jeden Integrationspunkt id = NOEL * 8 + NPT ! Hier integer-werte; für float-Werte SMALocalFloatArrayCreate verwenden (und ai entsprechend definieren) ptra = SMAIntArrayAccess(id) ! ptra = 0, wenn array für id nicht existiert: Kreiere ein array mit Größe 2 if (ptra .EQ. 0 ) ptra = SMAIntArrayCreate( id, 2) ! Werte auslesen SDV(1) = ai(1) SDV(2) = ai(2) ! Werteübetrag ai(1) = SDV(1) ai(2) = SDV(2) RETURN END Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DrReinerKlimpke Mitglied
Beiträge: 143 Registriert: 09.11.2012
|
erstellt am: 12. Jan. 2019 07:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Mefh, vielen Dank für dein kleines Beispiel. Ich habe bei der Umsetzung aktuell folgendes Problem: Wenn ich Versuche das lokale Array via ptra = SMALocalIntArrayAccess(ID) zu öffnen erhalte ich eine Fehlermeldung, die sinngemäß wohl sowas sagt wie, dass es dieses Array derzeit noch nicht gibt. Wenn ich den Befehl ptra = SMALocalIntArrayCreate(ID,2) vor dem Befehl ptra = SMALocalIntArrayAccess(ID) positioniere erscheint die oben beschriebene Fehlermeldung nicht. Habe ich an dieser Stelle etwas falsch gemacht, oder wie ist dies in deinem Beispiel gemeint? Könntest du mir hier evtl. nochmal weiterhelfen? Ansonsten wie gesagt vielen Dank bis hierhin für deine Hilfe! Grüße, CG PS: Des weiteren bekomme eine Fehlermeldung, wenn ich den Befehl #include <SMAAspUserSubroutines.hdr> außerhalb meiner UMAT-Subroutine definiere (siehe dein Beispiel). Ich habe den Ausdruck nun innerhalb der UMAT, genauer gesagt (fast) direkt unterhalb des Subroutine-Headers platziert: SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) C IMPLICIT DOUBLE PRECISION(A-H,O-Z) #include <SMAAspUserSubroutines.hdr> INTEGER AI(2) POINTER(PTRA,AI) INTEGER ID C CHARACTER*80 CMNAME ... usw. ... Ist dies so richtig? [Diese Nachricht wurde von DrReinerKlimpke am 12. Jan. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DrReinerKlimpke Mitglied
Beiträge: 143 Registriert: 09.11.2012
|
erstellt am: 12. Jan. 2019 13:58 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin es nochmal. Ich denke ich habe meine eingangs beschriebene Problemstellung lösen können. Kern der aktuellen Lösung sind die von Mefh beschriebenen globalen Arrays gewesen. Die lokalen Arrays haben in meinem Fall nicht die schlussendliche Lösung des Problems dargestellt, da hier im Fall von multipler CPU Nutzung bereits geschriebene Daten beim Wechsel des Threads verloren gegangen sind. Dieses Problem kann durch die Nutzung von globalen Arrays umgangen werden. Wie auch in der ABAQUS Dokumentation beschrieben, bleiben im Fall der globalen Arrays einmal geschriebene Daten auch bei einem Wechsel des Threads während der Iteration für den betreffenden Materialpunkt (Integrationspunkt) erhalten. Falls jemand am Quellcode interessiert ist bitte Bescheid geben, dann kann ich an dieser Stelle einige Auszüge zum Besten geben. Grüße und vielen Dank für eure Hilfe, CG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RenhaoWu Mitglied
Beiträge: 1 Registriert: 24.08.2021
|
erstellt am: 24. Aug. 2021 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für DrReinerKlimpke
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|