Autor
|
Thema: UMAT/VUMAT mit Pythpn scripting (2265 mal gelesen)
|
feh Mitglied
Beiträge: 5 Registriert: 04.11.2009
|
erstellt am: 04. Nov. 2009 14:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, Ich versuche zur Zeit eine Paramerterstudie an meinem Materialmodell durchzufuehren welches als VUMAT vorliegt. Nun weiss ich allerdings nicht so genau wie ich einen Job mit VUMAT aus Python ausfuehre. Bisher hab ich die Jobs im Windows Command Window folgendermassen ausgefuehrt: abaqus input=<input_file> user=<vumat_file> Es waer toll wenn jemand eine Antwort wuesste... Danke Fabian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nicksen Mitglied wissenschaftlicher Mitarbeiter
Beiträge: 239 Registriert: 04.05.2007
|
erstellt am: 04. Nov. 2009 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Du kannst den Job direkt per python-skript definieren und ihn auch da losschicken. Die genauen Einstellungen, die du brauchst musst du aber noch finden und einsetzen, wie zB die userSubroutine usw. Hier ein paar Zeilen code: import job Job_name= '<dein Jobname>' mdb.Job( name= Job_name, model=myModel_str, type=ANALYSIS, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, description='', parallelizationMethodExplicit=DOMAIN, multiprocessingMode=DEFAULT, numDomains=2, userSubroutine='', numCpus=2, memory=50, memoryUnits=PERCENTAGE, scratch='', echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF) mdb.jobs[Job_name].submit() mdb.jobs[Job_name].waitForCompletion() Das Skript wartet durch die letzte Zeile bis die Rechnung fertig ist. Dann kannst du deine Auswertung oder was auch immer machen, dann deine Parameter anpassen, nen neuen Job erstellen und wieder rechnen lassen. Klappt auch prima in einer Schleife. Falls dies das war was du suchtest. beste Grueße und viel Erfolg der Nicksen
------------------ ========== == Dingsen == ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
feh Mitglied
Beiträge: 5 Registriert: 04.11.2009
|
erstellt am: 04. Nov. 2009 16:35 <-- editieren / zitieren --> Unities abgeben:
Hi Nicksen, vielen Dank fuer die prompte Antwort. Ist so ziemlich genau was ich gesucht habe. Nur noch zum besseren Verstaendnis: Lieg ich richtig damit, dass ich bei der 'userSubroutine' einfach einen string mit dem dateiverzeichnis meines materialmodells einfuegen muss? Vielen Dank nochmals Fabian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nicksen Mitglied wissenschaftlicher Mitarbeiter
Beiträge: 239 Registriert: 04.05.2007
|
erstellt am: 04. Nov. 2009 16:41 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Naja, ich denk schon. Probier es mal aus. Mein Buerokollege hat das heute erst gemacht, aber ich hab die Zeile nicht mehr im Kopf. Morgen kann ich dir mehr sagen, aber mit dem string sollte das durchaus klappen. Gruß ------------------ ========== == Dingsen == ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nicksen Mitglied wissenschaftlicher Mitarbeiter
Beiträge: 239 Registriert: 04.05.2007
|
erstellt am: 04. Nov. 2009 16:42 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Achso... natuerlich muss in dem string nicht nur das Verzeichnis sondern auch der Dateiname des Routinenfiles stehen. Bsp: userSubroutine='./MaterialUMAT.f' ------------------ ========== == Dingsen == ========== 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: 04. Nov. 2009 16:57 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Zitat: Original erstellt von feh: Hallo Zusammen, Ich versuche zur Zeit eine Paramerterstudie an meinem Materialmodell durchzufuehren welches als VUMAT vorliegt. Nun weiss ich allerdings nicht so genau wie ich einen Job mit VUMAT aus Python ausfuehre.Bisher hab ich die Jobs im Windows Command Window folgendermassen ausgefuehrt: abaqus input=<input_file> user=<vumat_file> Es waer toll wenn jemand eine Antwort wuesste... Danke Fabian
Alternativ kannst den Befehl auch von Python an eine Command-Shell geben lassen. Das geht mit dem os-Modul. import os os.system(Befehl) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
feh Mitglied
Beiträge: 5 Registriert: 04.11.2009
|
erstellt am: 05. Nov. 2009 15:08 <-- editieren / zitieren --> Unities abgeben:
|
Nicksen Mitglied wissenschaftlicher Mitarbeiter
Beiträge: 239 Registriert: 04.05.2007
|
erstellt am: 05. Nov. 2009 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Nicht direkt. Python-Skript sind in ABAQUS/CAE Abfolgen von CAE-Befehlen. Also aehnlich wie Makros. Die *.inp-files sind die Inputdateien fuer den Solver, der nicht unbedingt CAE brauch; kannst die Jobs ja auch aus der Konsole starten. Moeglich ist, dass du ein Skript bastelst, welches die *.inp importiert. Du kannst ja auch ueber "File-> Import-> Model" eine *.inp Datei einlesen lassen. Mitunter werden da einige Keywords "verschluckt" sodass ich einen automatisierten Import mehrerer Models sehr gruendlich pruefen/testen wuerde, bevor ich das Skript laufen lasse. Aber eigentlich duerfte das eine Loesung, wenn auch mit Umweg, sein. ------------------ ========== == Dingsen == ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
feh Mitglied
Beiträge: 5 Registriert: 04.11.2009
|
erstellt am: 05. Nov. 2009 17:49 <-- editieren / zitieren --> Unities abgeben:
Hi Nicksen, Ich habe bereits versucht mit import->model allerdings gehen dabei einige definitionen des Modells verloren (z.B. Transversestiffnesses). Gibt es eine Moeglichkeit die *.inp-dateien in einer Schleife mittles eines scripts abzuaendern (lediglich die lasten, nicht die geometrie), dann das daraus resultierende modell zu loesen und daraufhin aus dem posprocessing einige daten herauszuschreiben? Fabian [Diese Nachricht wurde von feh am 05. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 06. Nov. 2009 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Ja, das kann Abaqus sogar automatisch. Schau mal im Handbuch im Kapitel "1.4 Parametric modeling" und "16. Parametric Studies". Du mußt also in Deinem Fall die Last als Parameter definieren und bei der Parameterstudie angeben, in welchem Bereich die Last variiert werden soll. Dann schickst Du die Studie los und Abaqus kann Dir automatisch eine Tabelle mit gesuchten Daten zu jedem Lastwert erstellen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
feh Mitglied
Beiträge: 5 Registriert: 04.11.2009
|
erstellt am: 06. Nov. 2009 16:23 <-- editieren / zitieren --> Unities abgeben:
Hi femchen, dasmit der parameterstudy hab ich jetzt hinbekommen, allerdings weiss ich jetzt nicht wirklich wie ich aus all den verschiedenen odb-files am geschicktesten meine daten zusammensammeln kann. Dabei vergleiche ich in den verschiedenen Loesungen die Spannungen beim Versagen des Materials (ich definiere die lasten mittels einer Amplitude). Das heisst also, dass ich nicht weiss in welchem frame Versagen auftritt und somit auch nicht bei welchem Frame ich die Spannungen auslesen muss. Gibt es da eine moeglichkeit alle frames auszulesen und dann aufgrund der Information die gesuchten Daten herauszuschreiben? Vielen Dank Fabian [Diese Nachricht wurde von feh am 06. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 09. Nov. 2009 21:12 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Ja, das sollte mit dem Befehl "aStudy.gather" gehen, wobei Du angeben mußt was Du wo auslesen und ausgeben willst. Wenn Du das für alle Frames machst, sollte doch der Frame dabei sein, in dem Versagen auftritt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 05. Aug. 2010 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für feh
Hallo femchen, dieser Beitrag ist zwar schon einige Tage alt, aber ich habe folgenden Problem: nach meiner Parameterstudie stehen alle Daten in den odb-Datei bereit. Wie kann ich jetzt die Daten über einen history Output für alle steps und frames ausgeben lassen? Mit aStudy.gather kann ich ja immer nur einen frame angeben. Gibt es einen Befehl wie frames= ALL oder muss eine Schleife laufen? Gruß Jeremy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |