Autor
|
Thema: Parameter verändern (4515 mal gelesen)
|
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 11. Mai. 2009 17:58 <-- editieren / zitieren --> Unities abgeben:
Hallo ABAQUS Gemeinde! Ich bin neu hier und auch sehr neu in Abaqus und entschuldige mich, für die wahrscheinlich dumme Frage: Ich habe ein fertiges FE-Modell (mit CAE erstellt) Da sind drei Parameter eingebaut, die ich auch schon identifiziert habe Ich kann diese aber nur im sketcher manuell ändern (d.h. anwählen und neuen Wert eingeben) Jetzt zu meiner Frage: Ich will diese Parameter, nennen wir sie x,y und z, nun so umbauen oder manipulieren, dass ich einen Wertebereich (z.B.: 0.5 < x (oder y oder z) < 2.5) mit einer bestimmten Schrittweite angebe. Dann soll das "Master Modell" und die jeweiligen "Slave Modelle" durchgerechnet werden. Im Handbuch steht sowas, dass die Parameter in der job.inp stehen, das ist aber leider nicht der Fall. Nun hoffe ich, dass mir hier ein schlauer Kopf helfen kann. Ich habe auch schon die SuFu genutzt, hab aber keine brauchbaren Ergebnisse gefunden! Das war's erst mal... LuckySan
[Diese Nachricht wurde von LuckySan am 11. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
milasan Mitglied
Beiträge: 165 Registriert: 24.04.2007
|
erstellt am: 13. Mai. 2009 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für LuckySan
Hallo Lucky, das geht, ist aber nicht so ganz einfach. 1. CAE ohne Modell starten. 2. In CAE Modell öffnen. 3. Parameter ändern. 4. Ggf. Inputdatei herausschreiben / Job starten. 5. Modell in CAE schließen (Speichern ist nicht nötig). 6. CAE schließen. Dann die hierbei erzeugte Datei "abaqus.rpy" umbenennen, z.B. in "script.py". Nun öffnest Du diese Pythondatei in Deinem Lieblingseditor und suchst die Zeile, in der der Parameter geändert wurde. Den Parameter kannst Du nun in diesem Pythonscript ändern und das Script aus CAE mit "run script" ablaufen lassen. Weitere Optionen gibt Dir Python, z.B. den Parameter als Variable definieren und in einer Schleife laufen lassen, den Namen der Inputdatei anpassen und so weiter. Gruß, M. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 13. Mai. 2009 13:06 <-- editieren / zitieren --> Unities abgeben:
|
Kappel Mitglied WMA
Beiträge: 48 Registriert: 14.11.2006 EDIT: Ich kann mit meinem Script defo1 und defo2 verarbeiten und daraus neue Felder erzeugen. Der Fehler tritt also aus wenn ich die Daten aus zwei ODBs verarbeite. Die Dimensionen der Felder müssen aber gleich groß sein weil ODB2 auf dem gleichen Modell basiert wie ODB1 wobei nur die Knotenkoordinaten verschoben wurden.
|
erstellt am: 14. Mai. 2009 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für LuckySan
Ich würde gern in das Thema mit einsteigen. Genrell möchte ich ein parametrisches Modell erzeugen, dass ich von außen editieren kann. Bei mir tritt nun aber ein Problem mit dem Pythonscribt auf, dass ich aus meiner abaqus.rpy Datei erzeuge. Um zu testen, ob das "run script" funktioniert habe ich versuche das zuvor ausgegebene Script laufen zu lassen. Hier treten jedoch Fehler auf. Gehe ich recht in der Annahme, dass das fehlerfrei durchlaufen müsste? lg Erik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 14. Mai. 2009 12:06 <-- editieren / zitieren --> Unities abgeben:
bei mir läuft das einwandfrei durch. aber bis jetzt nur im cae, damit aber optimus die rechnung und die parameterveränderung anstoßen kann, muß das im command laufen... also "abaqus script=c:\Temp\script" funktiniert nicht und "abaqus python c:\Temp\script.py" leider auch nicht. Mache ich irgendwas falsch? Wie hesagt, ich bin blutiger Anfänger.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
milasan Mitglied
Beiträge: 165 Registriert: 24.04.2007
|
erstellt am: 14. Mai. 2009 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für LuckySan
|
milasan Mitglied
Beiträge: 165 Registriert: 24.04.2007
|
erstellt am: 14. Mai. 2009 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für LuckySan
|
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 14. Mai. 2009 14:33 <-- editieren / zitieren --> Unities abgeben:
Ja Danke... Wer suchet der findet! Hab es dann auch gefunden, läuft auch super.... Danke, danke, danke... lief natürlich erst nicht..."IOError" aber nachdem die abaqus.env vom Admin geändert wurde (ask delete=OFF) läufts! Gruß LuckySan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 28. Mai. 2009 22:35 <-- editieren / zitieren --> Unities abgeben:
So, alles hat geklappt! Optimus konnte problemlos das selber erstellte Script aufrufen, die Parameter verändern und abaqus mittel "abaqus cae noGUI=..." sagen "rechne"...! Auf einem alten Intel Xeon dualcore mit 2,3 ghz und 3gb ram win 32! Da mir jetzt aber die Zeit wegrennt, und ich leider kein zufriedenstellendes Ergebnis geliefert bekommen habe, muss ich es nochmals durchlaufen lassen. Um das zu bewerkstelligen, habe ich freundlicherweise einen Rechner mit Intel core 2 quad mit 2,83 ghz und 8gb ram bekommen (Win 64). alles cool... bis auf, dass optimus unter 64 bit wohl ein Problem hat und immer direkt am Anfang raus springt. Naja, ich habe mir versucht zu helfen, indem ich die gewünschten Parameter manuell im script geändert habe und dann mittels copy und paste immer wieder neue Parameter anstoßen... klappt auch wunderbar mit kleinen Versuchsmodellen. aber leider versucht der Rechner alle eingestellten Parameter (Jobs) gleichzeitig zu rechnen (bei kleinen Modellen auch kein Problem, bei dem großen aber sehr). Im Skript ändere ich auch immer wieder den Namen des erstellten Jobs, damit die odb nicht überschrieben wird. brauche halt die Ergebnisse eines jeden Rechengangs... nun zu meiner frage: gibt es eine Möglichkeit, im Skript ein Befehl zu schreiben, welcher abaqus sagt, dass es warten soll bis der eine Job durchgelaufen ist bevor es den nächsten startet? oder hat jemand eine andere Idee, wie ich mein Problem lösen kann? natürlich ist dieses Verfahren "quick and dirty" aber muss halt so schnell wie möglich die Ergebnisse bekommen und das lange we würde sich schon sehr anbieten, um den Rechner rechnen zu lassen. für Rechtschreibfehler entschuldige ich mich und hoffe auf Verständnis! Danke im Voraus! Gruß LuckySan
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: 29. Mai. 2009 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für LuckySan
Hallo LuckySan, also in meinem Script wird mein Job abgeschickt und dann auf das Ende gewartet. Das klappt mit den folgenden zwei Zeilen: mdb.jobs[Job_name].submit() mdb.jobs[Job_name].waitForCompletion()
Vielleicht hilft dir das schon weiter.
Grueße und viel Erfolg der Nicksen ------------------ ========== == Dingsen == ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LuckySan Mitglied CAE Engineer
Beiträge: 9 Registriert: 11.05.2009
|
erstellt am: 29. Mai. 2009 09:09 <-- editieren / zitieren --> Unities abgeben:
|