Autor
|
Thema: Eigenfrequenzen ausgeben lassen (3143 mal gelesen)
|
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 04. Jun. 2010 08:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin noch recht neu, was Abaqus scripting anbetrifft. Mit welchem Befehl lasse ich mir die Eigenfrequenzen (siehe Bildanhang) ausgeben (Pyhton)? Ich möchte die berechneten Eigenfrequenzen in einer Textdatei ablegen. Anschließend soll mein script diese Daten wieder einlesen und damit weiterarbeiten (weiter optimieren). Es ist das gleiche script, mit dem die Analyse erstellt wurde (und auch die Eingangsparameter gesetzt wurden). Was ich bisher an Code habe:
Code:
#Erstellen einer Input und Output Datei f = open("input.txt") g = open("output.txt", "w") lines = f.readlines() f.close() for i in lines: g.write(i) g.close()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 04. Jun. 2010 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Tu das was du tun willst im CAE und schau danach in das angelegte .rpy File im Arbeitsverzeichnis. Die letzten Zeilen sind die zuletzt ausgeführten Python Befehle. Diese musst du dann nur noch entsprechend deine Bedürfnisse modifizieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 04. Jun. 2010 08:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Carsten (ich erinnere mich noch, vielen Dank für die helfenden Worte im letzten Thread), an sich eine gute Idee. Leider bringt sie mich im Moment nicht weiter. Denn ich weis nur, dass ich die EF angezeigt bekomme, wenn ich mich im Postprocessor (Vis. Modul) durch die einzelnen Inkremente klicke oder unter Result>Step/Frame anwähle. Dann bekomme ich sie wiegesagt angezeigt, jedoch weis ich nicht, wie ich sie manuell kopieren könnte bzw. manuell in eine Textdatei transferieren (abgesehen vom Abschreiben) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vw-student Mitglied Berechnungsingenieur
Beiträge: 543 Registriert: 07.06.2005 IDEAS 12m4 ABAQUS/CAE 6.10-1 ADAMS MD R3 Matlab R2007a Mathcad 14
|
erstellt am: 04. Jun. 2010 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Du kannst dir die EF im Viewer etwas umständlicher in einer .rpt Datei ausgeben lassen. Hierfür wie folgt vorgehen: Tools-->XY-Data-->Create-->ODB History Output-->EF wählen. Danach kannst du über Report-->XY-->eben erstellte Daten anwählen dir die EF in ne Textdatei ausgeben lassen. Hoffe das hilft erstmal. Das kannst du natürlich auch via Python automatisieren. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 04. Jun. 2010 11:15 <-- editieren / zitieren --> Unities abgeben:
@vw-student: Danke! Das war genau das was ich wollte. Jetzt habe ich nur noch das Problem, dass Abaqus nach der Berechnung sagt: NameError: name 'odb' is not defined (line 45 [bei odb=odb]) Muss man odb irgendwie definieren? (so wie ich es mit xyplot machen musste?) Code:
from part import * from material import * from section import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import * from abaqus import * import xyPlot#------------------------------------------------------------------------------- # CREATE A MATERIAL ************************************************************ #------------------------------------------------------------------------------- d1111 = 9098. d1122 = 842. d2222 = d1111 d1133 = 103. d2233 = d1133 d3333 = 846. d1212 = (d1111 - d1122) * 0.5 d1313 = 2309. d2323 = d1313 mdb.models['Model-1'].Material(name='Stahl') mdb.models['Model-1'].materials['Stahl'].Density(table=((7.85e-09, ), )) mdb.models['Model-1'].materials['Stahl'].Elastic(table=((210000.0, 0.3), )) mdb.models['Model-1'].Material(name='Gusseisen') mdb.models['Model-1'].materials['Gusseisen'].Density(table=((7.2e-09, ), )) mdb.models['Model-1'].materials['Gusseisen'].Elastic(table=((160000.0, 0.3), )) mdb.models['Model-1'].Material(name='Reibmaterial') mdb.models['Model-1'].materials['Reibmaterial'].Density(table=((2.9e-09, ), )) mdb.models['Model-1'].materials['Reibmaterial'].Elastic(table=(( d1111, d1122, d2222, d1133, d2233, d3333, d1212, d1313, d2323), ), type=ORTHOTROPIC) #session.odbs['Y:/1-ARBEIT/1-PROJEKTE/2010/bla.odb'].close() mdb.jobs['bla'].submit(consistencyChecking=OFF) mdb.jobs['bla'].waitForCompletion() xy1 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Eigenfrequency: EIGFREQ for Whole Model', steps=( 'Step-1', ), ) c1 = session.Curve(xyData=xy1) xyp = session.XYPlot('XYPlot-1') chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.setValues(curvesToPlot=(c1, ), ) session.viewports['Viewport: 1'].setValues(displayedObject=xyp) x0 = session.xyDataObjects['_temp_1'] session.writeXYReport(fileName='eigenfrequencies.rpt', xyData=(x0, ))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 04. Jun. 2010 11:31 <-- editieren / zitieren --> Unities abgeben:
Ok, habe noch import odb hinzugefügt. Jetzt habe ich aber folgenden Fehler: TypeError: odb; found 'module', expecting a recognized type filling string dict (line 47) Damit kann ich nicht viel anfangen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 04. Jun. 2010 13:42 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|