Autor
|
Thema: Skript für automatisierte Field Output (3701 mal gelesen)
|
ululak Mitglied
Beiträge: 1 Registriert: 22.10.2007
|
erstellt am: 22. Okt. 2007 17:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, da ich bei meinem Projekt mehrmals Geometrien ändere und dann die Daten neu auswerten muss, möchte ich mir einen automatisierten Ablauf programmieren. Bisher erstelle ich mir immer über Report->Field Output eine Reportdatei, die mir die Hauptspannungen S11,S22,S33, Position Unique Nodal (etc. genau festgelegt) anzeigt. Später importiere ich die Daten in einem Excel Arbeitsblatt, suche mir mit einfachen Suchalgorithmen die Spannungen an den interessanten Knoten und lasse sie grafisch darstellen. Sinn ist der anschließende Vergleich/Abgleich mit experimentell ermittelten Daten. Ich möchte eine einfache Möglichkeit haben, das alles zu automatisieren. Das Importieren der Daten in Excel ist kein Problem mehr, ab dort funkktioniert alles einwandfrei. Problem für mich ist das automatische extrahieren der gewünschen Werte. über den Kernel komme ich nicht an genau die Daten die ich brauche. Mit z.B. "abaqus odbreport job=bendReport odb=bend etc." bekomme ich zwar eine Menge Daten geliefert, jedoch immer mit den "Output variablen: Position: Integration Point" (siehe Report->Field Output) D.h. ich bekommme viel zu viele Informationen. Wie kann ich meine Arbeit im GUI, d.h. das Klicken auf "Report" im Menü,, auswählen der einzenen Häkchen im Dialog etc., automatisieren? irgendeine Idee? LG 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: 28. Okt. 2007 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für ululak
Solche Dinge in CAE oder dem Viewer zu automatisieren geht ziemlich leicht. Du machst es einfach einmal und schaust dann in deinem Arbeitsvereichnis in dieDatei abaqus.rpy. Dort steht in Python-Syntax was du gemacht hast. Das kannst dann in eine extra Datei legen und erweitern. Beispiel: Das was du machen willst sieht als Mitschrift z.B. so aus:
Code:
odb = session.odbs['C:/tmp/Job-1.odb'] session.fieldReportOptions.setValues(printTotal=OFF, rintMinMax=OFF) session.writeFieldReport(fileName='abaqus.rpt', append=OFF, sortItem='Node Label', odb=odb, step=0, frame=6, outputPosition=NODAL, variable=(('S', INTEGRATION_POINT, ((COMPONENT, 'S11'), (COMPONENT, 'S22'), (COMPONENT, 'S33'), )), ))
Wenn du das für bestimmte Frames haben willst, kannst du das in eine Schleife legen. Angenommen du willst das für die Frames 1 bis 6 in separaten Dateien haben:
Code:
from abaqus import * from abaqusConstants import * odb = session.odbs['C:/tmp/Job-1.odb'] session.fieldReportOptions.setValues(printTotal=OFF, printMinMax=OFF) for i in range(1, 7): session.writeFieldReport(fileName='abaqus-'+str(i)+'.rpt', append=OFF, sortItem='Node Label', odb=odb, step=0, frame=i, outputPosition=NODAL, variable=(('S', INTEGRATION_POINT, ((COMPONENT, 'S11'), (COMPONENT, 'S22'), (COMPONENT, 'S33'), )), ))
Diesen Inhalt legst du dir in eine Datei (z.B. script.py) und rufst das Script in CAE/Viewer über File->Run script... auf. Theoretisch kannst du auch das automatisieren, so dass du auf Kommandozeile nur noch das Script definierst und das Ganze ohne GUI abläuft. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|