Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Python in der Luft- und Raumfahrt Python User Group Köln Andreas Schreiber  [email_address] Deutsches Zentrum für Luft- un...
<ul><li>Das DLR </li></ul><ul><li>Deutsches Zentrum für Luft- und Raumfahrt  Raumfahrt-Agentur der Bundesrepublik Deutschl...
Zahlen zum DLR <ul><li>DLR ist die größte deutsche Forschungseinrichtung </li></ul><ul><li>5.100 Mitarbeiter arbeiten in  ...
Software-Projekte in Luft- und Raumfahrt Klassifizierung <ul><li>Software  für  missionskritische  Systeme </li></ul><ul><...
Einsatzfelder von Python <ul><li>Wissenschaftliche Software und Prototypen </li></ul><ul><li>Selten Einsatz in Produkten <...
Warum Python in der Luft- und Raumfahrt? Argumente, um Ingenieure zu überzeugen <ul><li>Beschreibung </li></ul><ul><ul><li...
Beispiele für Python-Einsatz und -Anwendungen
Virtual Lab Web-basiertes Repository für wissenschaftliche Codes <ul><li>Portal zur Bereitstellung wissenschaftlicher Soft...
Virtual Lab Integration von Codes <ul><li>Integration von Codes geschieht durch Spezifikation von Input und Output des Cod...
Datenmanagement Ausgangssituation Unabhängige Einzellösungen
DataFinder Technisch-wissenschaftliches Datenmanagement Integriertes Datenmanagement CFD Analysis Grid generation Solution...
DataFinder Speichertechnologien und Protokolle <ul><li>http://www.dlr.de/sc/datafinder </li></ul>DataFinder WebDAV FTP- Se...
DataFinder Software Graphische Benutzeroberfläche User Client Administrator Client Implementierung in Python und PyQt
Skripte Erweiterung, Automatisierung und Anpassung <ul><li>Erweiterung des DataFinder möglich durch Python-Skripte </li></...
Beispiel-Skript Datei-Download und Start einer Applikation # @scrtitle: Execute It! # @scrdesc: Download the selected file...
Erweiterung der GUI Customizing mit Python-Skripten <ul><li>Einen neuen Run anlegen </li></ul><ul><li>Den Run starten  </l...
DataFinder Vom Java-Prototyp zum Python-Produkt… <ul><li>Ein bissle Historie: </li></ul><ul><li>Aufgabe: Datenmanagement f...
Steuerung von großen Simulationen  Einführung <ul><li>Viele Probleme erfordern  komplexe numerische Simulationen oder Vera...
Komplexe Workflows Beispiele aus der Praxis <ul><li>Softwaretechnische Aufgaben: </li></ul><ul><li>Anstoßen unterschiedlic...
Integrations- uns Simulationsumgebung TENT System zur Steuerung komplexer Simulationen <ul><li>TENT ist eine   Integration...
Beispiel: Gekoppelte Simulation in der Luftfahrt Flugmanöverberechnung <ul><li>Interaktive Simulation eines frei fliegende...
Kopplungsmanager-Implementierung in TENT
Beispiel Kopplungs- skript # <<import statements>> def  start(base,steps): fireEvents.fireStart(steps) dialogID = notifica...
Ergebnis der Rechnungen (1) Strömung
Ergebnis der Rechnungen (2) Struktur <ul><li>http://www.dlr.de/as/sikma </li></ul>
Beispiel: Gekoppelte Simulation in der Raumfahrt  Wiedereintrittssimulation <ul><li>Simulation der thermisch hochbelastete...
Wiedereintrittssimulation Model <ul><li>Vereinfachtes Modell für Windkanalexperimente </li></ul><ul><li>Simulation zur Val...
Simulationsumgebung  ifls High-Performance-Kopplungsumgebung   <ul><li>Realisiert mit dem  Visualization Tooklit (vtk) </l...
Temperature-Writer (NetCDF) CFD-Analysis (Tau-Code) Heatflux-Reader (NetCDF) Heatflux on the coupling surface Fluid Reader...
Ergebnis der Rechnung Temperaturverteilung
Visualisierung Andere Beispiele für Visualisierungen <ul><li>Visualisierung der Design-Parameter von neuen Flugzeugkonfigu...
Airport Environment
Airport Environment
Airport Environment
Skript-Schnittstellen für numerische Software Einfache Benutzung komplexer Codes <ul><li>Moderne numerische Software ist k...
elsA CFD-Löser mit Python-Interface <ul><li>elsA: ensemble logiciel de simulation en Aérodynamique </li></ul><ul><li>Softw...
elsA Beispiel für Nutzung des Python-API from  elsA_user  import  * # STEP 1 : PROBLEM CREATION nozzle = cfdpb(name= ’nozz...
DLR TAU-Code CFD-Löser  <ul><li>Strömungslöser zur Berechnung von  RANS Gleichungen </li></ul><ul><li>stationäre und insta...
TAU-Architektur & Python   t=T T+dt data access in memory MPI CPU-j CPU-k CPU-i MPI TAU Data Manager TAU Python  interface...
Eingebettet als Skript-Interpreter in großen Systemen und Produkten <ul><li>Allgemein gilt:  Anwendungen können von Haus a...
Beispiel: Airbus-Tool PPP Daten-Mapping beim Flugzeugentwurf <ul><li>Entwicklung in Java </li></ul><ul><li>Mapping von XML...
Qualitätssicherung bei wissenschaftlicher Software Ein weites Anwendungsgebiet für Python <ul><li>Entwicklung GUI-basierte...
Test-System für Strömungslöser (1) Erste Version aus dem Jahr 1998 <ul><li>Test und Verifikation des DLR-Codes TRACE für T...
Test-System für Strömungslöser (2) Aktuelle Version aus dem Jahr 2004 <ul><li>Test und Verifikation der Codes elsA und TAU...
Entwicklungsumgebung im DLR Server und Web-Schnittstellen Wiki MoinMoin Issue-Tracking MANTIS IDE Eclipse Repository Brows...
Häufig verwendete Basis-Software Zwei wichtige   Beispiele <ul><li>pyCGNS  – A Python binding for CGNS </li></ul><ul><ul><...
Schlussbemerkungen <ul><li>Es gibt viele weitere Python-Anwendungen  </li></ul><ul><ul><li>im DLR </li></ul></ul><ul><ul><...
 
 
Nächste SlideShare
Wird geladen in …5
×

Python in der Luft- und Raumfahrt

4.441 Aufrufe

Veröffentlicht am

Vortrag auf der Python User Group Köln über Anwendungen von Python in der Luft- und Raumfahrt.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Python in der Luft- und Raumfahrt

  1. 1. Python in der Luft- und Raumfahrt Python User Group Köln Andreas Schreiber [email_address] Deutsches Zentrum für Luft- und Raumfahrt e.V., Köln-Porz
  2. 2. <ul><li>Das DLR </li></ul><ul><li>Deutsches Zentrum für Luft- und Raumfahrt Raumfahrt-Agentur der Bundesrepublik Deutschland </li></ul>
  3. 3. Zahlen zum DLR <ul><li>DLR ist die größte deutsche Forschungseinrichtung </li></ul><ul><li>5.100 Mitarbeiter arbeiten in 27 Forschungsinstituten und Einrichtungen </li></ul><ul><ul><li> 9 Standorten, </li></ul></ul><ul><ul><li>7 Außenstellen. </li></ul></ul><ul><li>Kernkompetenzen des DLR liegt im Bereich Ingenieurwissenschaften </li></ul><ul><li>Mehr als 1000 DLR-Mitarbeiter entwickeln Software </li></ul><ul><li> DLR ist eines der größten Softwarehäuser Deutschlands! </li></ul> Köln - Porz  Lampoldshausen  Stuttgart  Oberpfaffenhofen Braunschweig   Göttingen Berlin- -  Adlershof  Bonn Trauen   Hamburg  Neustrelitz Weilheim  Berlin- Charlottenburg   Sankt Augustin  Darmstadt Bremen 
  4. 4. Software-Projekte in Luft- und Raumfahrt Klassifizierung <ul><li>Software für missionskritische Systeme </li></ul><ul><ul><li>„ Embedded“ / Real-Time Software in Satelliten, Flugzeugen, ISS </li></ul></ul><ul><li>Software mit großen Userzahlen </li></ul><ul><ul><li>Internet, Intranet, Email, Webshop für Satellitendaten </li></ul></ul><ul><li>Software mit großem Anteil an der Wertschöpfungskette </li></ul><ul><ul><li>Prozessunterstützung, Versuchsdatenhandling, Modellierungsumgebungen etc. </li></ul></ul><ul><li>Software deren Effizienz sich unmittelbar auf die Betriebskosten auswirkt </li></ul><ul><ul><li>Numerische Modellierung, Simulationscodes </li></ul></ul>
  5. 5. Einsatzfelder von Python <ul><li>Wissenschaftliche Software und Prototypen </li></ul><ul><li>Selten Einsatz in Produkten </li></ul><ul><li>Kein Einsatz in kritischen Systemen </li></ul><ul><li>Beispiele für Einsatzfelder von Python </li></ul><ul><ul><li>Web-Anwendungen </li></ul></ul><ul><ul><li>Datenmanagement </li></ul></ul><ul><ul><li>Steuerung von (großen) Simulationen </li></ul></ul><ul><ul><li>Visualisierung </li></ul></ul><ul><ul><li>Skript-Schnittstellen für numerische Software </li></ul></ul><ul><ul><li>Eingebettet als Skript-Interpreter in großen Systemen und Produkten </li></ul></ul><ul><ul><li>Test und Qualitätssicherung von wissenschaftlicher Software </li></ul></ul>
  6. 6. Warum Python in der Luft- und Raumfahrt? Argumente, um Ingenieure zu überzeugen <ul><li>Beschreibung </li></ul><ul><ul><li>Objektorientierte vollständige Programmiersprache </li></ul></ul><ul><ul><li>Klare, einfache Syntax </li></ul></ul><ul><ul><li>Portabel, verfügbar auf allen Plattformen mit C-Compiler </li></ul></ul><ul><li>Warum ist Python geeignet für Ingenieure und industrielle Anwender? </li></ul><ul><ul><li>Sehr einfach zu lernen und zu benutzen </li></ul></ul><ul><ul><li>Erlaubt eine schnelle Entwicklung ( = geringe Entwicklungszeit) </li></ul></ul><ul><ul><li>Inherent great maintainability </li></ul></ul>“ Python has the cleanest, most-scientist- or engineer friendly syntax and semantics.” (Paul F. Dubois. Ten good practices in scientific programming. Comp. In Sci. Eng., Jan/Feb 1999, pp.7-11)
  7. 7. Beispiele für Python-Einsatz und -Anwendungen
  8. 8. Virtual Lab Web-basiertes Repository für wissenschaftliche Codes <ul><li>Portal zur Bereitstellung wissenschaftlicher Software </li></ul><ul><li>Einfache numerische Codes werden integriert („eingestellt“) </li></ul><ul><li>Nutzer können Eingabedateien hochladen und Rechnungen starten </li></ul><ul><li>Realisiert mit ZOPE </li></ul><ul><li>Speicherung von Daten, Metadaten, Benutzer-informationen mit ZOPE Object Database, MySQL und OpenLDAP </li></ul><ul><li>http://vl.nz.dlr.de/VL </li></ul>
  9. 9. Virtual Lab Integration von Codes <ul><li>Integration von Codes geschieht durch Spezifikation von Input und Output des Codes </li></ul><ul><li>Input Description Language </li></ul><ul><ul><li>Benutzt Python als Basis </li></ul></ul><ul><li>Generierung von Eingabeelementen für numerische Werte </li></ul><ul><li>Beispiel: </li></ul>ID(na= 'Lambda' , pe= '_NF and _Lambda_use' , ty= 'FloatType' , de= '0.5' , ce= 'Lambda > 0.0' , un= 'mu_m' , an= 'Input wavelength' ),
  10. 10. Datenmanagement Ausgangssituation Unabhängige Einzellösungen
  11. 11. DataFinder Technisch-wissenschaftliches Datenmanagement Integriertes Datenmanagement CFD Analysis Grid generation Solution Visualisation CFD Analyse Netzgenerierung Lösung Visualisierung CAD - Model Experiment CAD - Modell Experiment Experimental Analysis Experimentelle Analyse CFD - CAD - Modell Customer e.g . Airbus Kunden z.B. . Airbus DataFinder Ergebnisse • Reports • Daten • Bilder • Filme Ergebnisse • Reports • Daten • Bilder • Filme
  12. 12. DataFinder Speichertechnologien und Protokolle <ul><li>http://www.dlr.de/sc/datafinder </li></ul>DataFinder WebDAV FTP- Server TSM OpenAFS FTP AFS TSM Lokale Verzeichnisse und Dateien Data-Stores Simulation Simulation Geometry CATIA Geometry CATIA Visualisation FieldView Visualisation FieldView Grid Generation SetupGrid Grid Generation SetupGrid Solver : TAU Flow solution Solver : TAU Flow solution Dateien WebDAV Meta- daten Metadaten-Server
  13. 13. DataFinder Software Graphische Benutzeroberfläche User Client Administrator Client Implementierung in Python und PyQt
  14. 14. Skripte Erweiterung, Automatisierung und Anpassung <ul><li>Erweiterung des DataFinder möglich durch Python-Skripte </li></ul><ul><li>Automatisierung und Anpassungen </li></ul><ul><ul><li>Daten-Migration, Daten-Import </li></ul></ul><ul><ul><li>Starten externen Applikationen (inkl. Download von Dateien) </li></ul></ul><ul><ul><li>Automatische Extraktion von Metadaten aus Berechnungsergebnissen </li></ul></ul><ul><ul><li>Wiederholte Abarbeitung einfacher Aufgaben </li></ul></ul><ul><ul><li>Erweiterung durch neue GUI-Panel </li></ul></ul>
  15. 15. Beispiel-Skript Datei-Download und Start einer Applikation # @scrtitle: Execute It! # @scrdesc: Download the selected file and try to execute it. from datafinder.application import ExternalFacade from guitools.easygui import * import os, sys, glob, time, pickle, string from tempfile import * from win32api import * # Get instance of DataFinder ExternalFacade to # access DataFinder API facade = ExternalFacade.getInstance() # Get the currently selected collection in the # DataFinder Server-View (WebDAV-Tree) resource = facade.getSelectedResource() if resource != None: tmpFile = mktemp(ressource.name) facade.downloadFile(resource, tmpFile) if os.path.exists(tmpFile): ShellExecute(0, None, tmpFile, &quot;&quot; , &quot;&quot; , 1) else : msgbox( &quot;No file selected to execute.&quot; )
  16. 16. Erweiterung der GUI Customizing mit Python-Skripten <ul><li>Einen neuen Run anlegen </li></ul><ul><li>Den Run starten </li></ul><ul><li>Status abfragen </li></ul><ul><li>Run abbrechen </li></ul><ul><li>Übersicht über alle Runs </li></ul>1 2 3 4 5
  17. 17. DataFinder Vom Java-Prototyp zum Python-Produkt… <ul><li>Ein bissle Historie: </li></ul><ul><li>Aufgabe: Datenmanagement für ein DLR-Institut </li></ul><ul><li>Evaluation verschiedenen Tools (in „Proof-Of-Concepts“) </li></ul><ul><ul><li>Kommerzielle Tools (PDM-Systeme) </li></ul></ul><ul><ul><li>Eigenentwicklung in Form eines Prototyopen in Java </li></ul></ul><ul><li>Ergebnis </li></ul><ul><ul><li>Kommerzielle Tools zu teuer und ZU mächtig </li></ul></ul><ul><ul><li>Java hatte Probleme auf den Zielplattformen (SGI IRIX) </li></ul></ul><ul><ul><li>Grosse Begeisterung für Python als integrierte Skriptsprache </li></ul></ul><ul><li>Daher: Komplette Neuentwicklung als „Produkt“ in Python mit Qt + PyQt </li></ul><ul><li>Nutzung im DLR und in deutscher Grid-Computing-Community (D-Grid) http://dgi.d-grid.de/index.php?id=78 </li></ul>
  18. 18. Steuerung von großen Simulationen Einführung <ul><li>Viele Probleme erfordern komplexe numerische Simulationen oder Verarbeitungsschritte . Beispiele: </li></ul><ul><ul><li>Wiedereintritt von Raumfahrzeugen </li></ul></ul><ul><ul><li>Simulation von Flugmanövern </li></ul></ul><ul><ul><li>Prozessierung von Satellitendaten </li></ul></ul><ul><li>Immer öfter wird multidisziplinär gekoppelt simuliert </li></ul><ul><ul><li>Strömung – Struktur – Wärme – Flugmechanik – … </li></ul></ul><ul><li>Solche Rechnungen werden softwaretechnisch ständig komplexer! </li></ul><ul><ul><li>Komplexe Workflows </li></ul></ul><ul><ul><li>Nutzung von Codes mit umfangreichen Schnittstellen </li></ul></ul>
  19. 19. Komplexe Workflows Beispiele aus der Praxis <ul><li>Softwaretechnische Aufgaben: </li></ul><ul><li>Anstoßen unterschiedlichster Codes in korrekter Reihenfolge </li></ul><ul><li>Nutzung von Höchstleistungsrechnern und Clustern </li></ul><ul><li>Transferieren von Daten zwischen den Codes </li></ul><ul><li>Zusammenarbeit mit Kollegen </li></ul>Orbit Model Atmosphere Model Instrument Model Downlink Model L0 Processor L1b Processor L2 Processor L2 Processor Satellitendaten- Prozessing PCrash PCrash PCrash Script DesParO Permas PView PView PView Medina SFE Concept Nasbif Pammed Kopf positionierung DesParO GUI Parameter ASCII File mit Ergebnissen 1 2 n Struktur-Optimierung Geometry Definition Main Analysis Subroutine Structures Aerodynamics Stability & Control Propulsion Induced Drag Friction Drag Wave Drag Field Perf . Weights Wing Weight Noise Flight Perf . Fuel Volume Objective Function & Constraints Optimizer (DOT) Design Variables Balance SFC Engine Weight Engine/Aero Drag Geometry Definition Geometry Definition Main Analysis Subroutine Structures Structures Aerodynamics Stability & Control Stability & Control Propulsion Propulsion Induced Drag Friction Drag Wave Drag Field Perf . . Weights Weights Wing Weight Noise Noise Flight Perf . Flight Perf . Fuel Volume Fuel Volume Objective Function & Constraints Objective Function & Constraints Optimizer (DOT) Design Variables Balance Balance SFC Engine Weight Engine/Aero Drag Engine/Aero Drag Flugzeug-Design
  20. 20. Integrations- uns Simulationsumgebung TENT System zur Steuerung komplexer Simulationen <ul><li>TENT ist eine Integrations- und Simulationsumgebung für ingenieurwissenschaftliche Anwendungen. </li></ul><ul><li>Gesamtsoftware-System entwickelt in Java </li></ul><ul><li>Python als eingebettete Skriptsprache </li></ul><ul><ul><li>Integration von Jython </li></ul></ul><ul><li>Nutzung von Python für verschiedene Zwecke </li></ul><ul><ul><li>Integration von Applikationen („Wrapper“) </li></ul></ul><ul><ul><li>Steuerung von Workflows </li></ul></ul><ul><ul><li>Anbindung an MS Office („Win32 API“) </li></ul></ul>
  21. 21. Beispiel: Gekoppelte Simulation in der Luftfahrt Flugmanöverberechnung <ul><li>Interaktive Simulation eines frei fliegenden elastischen Kampfflugzeugs </li></ul><ul><li>Hochgenaue Simulation erfordert Kopplung von </li></ul><ul><ul><li>Aerodynamik (Strömung) </li></ul></ul><ul><ul><li>Flugmechanik </li></ul></ul><ul><ul><li>Aeroelastik </li></ul></ul><ul><li>Hohe Rechenzeiten </li></ul><ul><ul><li>Mehrere Wochen auf großem Cluster </li></ul></ul><ul><li>Steuerung der Kopplung als Python- Skript in der TENT-Umgebung </li></ul><ul><li>http://www.dlr.de/as/sikma </li></ul>
  22. 22. Kopplungsmanager-Implementierung in TENT
  23. 23. Beispiel Kopplungs- skript # <<import statements>> def start(base,steps): fireEvents.fireStart(steps) dialogID = notificator.showProgressMonitor( &quot;Simulation progress&quot; , &quot;&quot; , 0, steps) notificator.setProgress(dialogID,0) couplingDataList = &quot;&quot; global stopFlag, pauseFlag stopFlag, pauseFlag = 0, 0 couplingDataList = simulaWrapper.get( &quot;FM_DATA&quot; ) tauWrapper.set( &quot;fm_data &quot;, couplingDataList) tauWrapper.advance() tauWrapper.set( &quot;fm_data&quot; , couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get( &quot;fm_values&quot; ) tauWrapper.advance() simulaWrapper.set( &quot;FM_DATA&quot; , couplingDataList) simulaWrapper.advance() for i in xrange(steps): if stopFlag == 1: tauWrapper.stop() simulaWrapper.stop() break while pauseFlag == 1: time.sleep(1) couplingDataList = simulaWrapper.get(&quot;FM_DATA&quot;) tauWrapper.set( &quot;fm_data&quot; , couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get( &quot;fm_values&quot; ) tauWrapper.advance() simulaWrapper.set( &quot;FM_DATA&quot; , couplingDataList) simulaWrapper.advance() notificator.setProgress(dialogID,step) notificator.showMessageDialog( &quot;Simulation is finished&quot; , MessageType.INFORMATION) def stop(base,steps): global stopFlag stopFlag = 1 def pause(base,steps): global pauseFlag pauseFlag = 1 - pauseFlag
  24. 24. Ergebnis der Rechnungen (1) Strömung
  25. 25. Ergebnis der Rechnungen (2) Struktur <ul><li>http://www.dlr.de/as/sikma </li></ul>
  26. 26. Beispiel: Gekoppelte Simulation in der Raumfahrt Wiedereintrittssimulation <ul><li>Simulation der thermisch hochbelasteten Teile eines X-38 Raumgleiters </li></ul><ul><li>Kopplung Strömung – Struktur – Wärme </li></ul>
  27. 27. Wiedereintrittssimulation Model <ul><li>Vereinfachtes Modell für Windkanalexperimente </li></ul><ul><li>Simulation zur Validierung der Experimente </li></ul>
  28. 28. Simulationsumgebung ifls High-Performance-Kopplungsumgebung <ul><li>Realisiert mit dem Visualization Tooklit (vtk) </li></ul><ul><li>http://www.ifl.tu-bs.de </li></ul>
  29. 29. Temperature-Writer (NetCDF) CFD-Analysis (Tau-Code) Heatflux-Reader (NetCDF) Heatflux on the coupling surface Fluid Reader (NetCDF) Temperature Transfer Structure Reader (*.bdf) Heatflux Transfer Heatflux-Writer (*.bdf) CS-Analysis (Nastran) Temperature-Reader (OP2) Iteration Control
  30. 30. Ergebnis der Rechnung Temperaturverteilung
  31. 31. Visualisierung Andere Beispiele für Visualisierungen <ul><li>Visualisierung der Design-Parameter von neuen Flugzeugkonfigurationen </li></ul><ul><ul><li>Geometrie </li></ul></ul><ul><ul><li>Simulationsergebnisse </li></ul></ul><ul><ul><li>Grundbewegung auf dem Airport </li></ul></ul><ul><ul><li>Flugdynamik </li></ul></ul><ul><li>Software JSBSim </li></ul><ul><ul><li>Simulationsroutinen in C++ </li></ul></ul><ul><ul><li>Wrapping mit SWIG </li></ul></ul><ul><ul><li>Nutzung des Python-API von vtk </li></ul></ul><ul><li>http://jsbsim.sourceforge.net </li></ul>
  32. 32. Airport Environment
  33. 33. Airport Environment
  34. 34. Airport Environment
  35. 35. Skript-Schnittstellen für numerische Software Einfache Benutzung komplexer Codes <ul><li>Moderne numerische Software ist komplex und besteht aus vielen Modulen </li></ul><ul><ul><li>Z.B. CFD-Codes (Computational Fluid Dynamics) </li></ul></ul><ul><ul><li>Implementierung in Fortran oder C </li></ul></ul><ul><li>Skript-Wrapper für numerische Software vereinfachen die Benutzung </li></ul><ul><ul><li>Rechenintensive Teile bleiben in Fortran oder C </li></ul></ul><ul><ul><li>Python-Skript steuert nur die Rechnung </li></ul></ul><ul><li>Automatische Generierung von Wrapper-Code </li></ul><ul><ul><li>Fortran: pyfort ( http://pyfortran.sourceforge.net ) </li></ul></ul><ul><ul><li>C, C++: SWIG ( http://www.swig.org ) </li></ul></ul>Fortran/C Modul Wrapper für Variablen und Funktionen Python-Skript
  36. 36. elsA CFD-Löser mit Python-Interface <ul><li>elsA: ensemble logiciel de simulation en Aérodynamique </li></ul><ul><li>Software-System der ONERA für aerodynamische Berechnungen im Luftfahrt-Bereich </li></ul><ul><li>Drei Ebenen </li></ul><ul><ul><li>Fortran-Code für zeitintensive numerische Berechnungen </li></ul></ul><ul><ul><li>Wrapper-Code in C++ für als objektorientierte Schale um die Fortran-Funktionen </li></ul></ul><ul><ul><li>Python-Interface als Schnittstelle zum Benutzer </li></ul></ul><ul><li>http://elsa.onera.fr </li></ul>
  37. 37. elsA Beispiel für Nutzung des Python-API from elsA_user import * # STEP 1 : PROBLEM CREATION nozzle = cfdpb(name= ’nozzle’ ) nozzle.set_block_creation_mode( ’automatic’ ) nozzle.set( ’automatic_block_gen’ , ’db_directory’ ) # MESH nozzle.set( ’cfd_mesh_dir’ , ’Nozzle_m’ ) # Flow initialisation nozzle.set( ’cfd_flow_ini_dir’ , ’Nozzle_i’ ) # (Physical) MODEL mod_nozzle = model(name= ’mod_nozzle’ ) mod_nozzle.fluid = ’pg’ mod_nozzle.phymod = ’euler’ # NUMERICS num_nozzle = numerics(name = ’nozzle_num’) num_nozzle.flux = ’jameson’ num_nozzle.artviscosity = ’dissca’ # STEP 2 : COMPUTATION nozzle.compute()
  38. 38. DLR TAU-Code CFD-Löser <ul><li>Strömungslöser zur Berechnung von RANS Gleichungen </li></ul><ul><li>stationäre und instationäre Strömungen </li></ul><ul><li>Hybride Netze </li></ul><ul><li>State-of-the-Art Turbulenzmodelle </li></ul><ul><li>Bewegungsmodul (Relativbewegung von Netzen) </li></ul><ul><li>Netzadaption (Ver- und Entfeinerung) </li></ul><ul><li>Chimeratechnik </li></ul><ul><li>Vollständig parallel </li></ul><ul><li>Multidisziplinäre Simulationen </li></ul><ul><li>Bestehend aus vielen Modulen in C </li></ul><ul><li>Interface in Python </li></ul>
  39. 39. TAU-Architektur & Python t=T T+dt data access in memory MPI CPU-j CPU-k CPU-i MPI TAU Data Manager TAU Python interface data extraction adaptation (re-) partitioning deformation solver preprocessor transition prediction file-IO
  40. 40. Eingebettet als Skript-Interpreter in großen Systemen und Produkten <ul><li>Allgemein gilt: Anwendungen können von Haus aus nicht alles! </li></ul><ul><li>Aber Scripting erlaubt das einfache Hinzufügen fehlender Features . </li></ul><ul><li>Anwendungsfälle </li></ul><ul><ul><li>Skript Interpreter in der GUI </li></ul></ul><ul><ul><li>Formelauswertung </li></ul></ul><ul><ul><li>Skript Konsole in der GUI </li></ul></ul><ul><ul><li>Skript-Blöcke/Komponenten in Workflows </li></ul></ul><ul><ul><li>Command journaling </li></ul></ul><ul><ul><li>Batch processing </li></ul></ul><ul><li>Realisierung durch Einbettung („Embedding“) von Python-Interpretern </li></ul><ul><ul><li>(C-)Python (siehe http://www.python.org/doc/ext/embedding.html ) </li></ul></ul><ul><ul><li>Jython (siehe http://www.jython.org/docs/embedding.html ) </li></ul></ul>
  41. 41. Beispiel: Airbus-Tool PPP Daten-Mapping beim Flugzeugentwurf <ul><li>Entwicklung in Java </li></ul><ul><li>Mapping von XML </li></ul><ul><li>Umrechnung von Einheiten </li></ul><ul><li>Umrechnung durch Formelauswertung </li></ul><ul><li> Jython -Interpreter </li></ul>
  42. 42. Qualitätssicherung bei wissenschaftlicher Software Ein weites Anwendungsgebiet für Python <ul><li>Entwicklung GUI-basierter Test-Systeme für numerische Codes </li></ul><ul><ul><li>Z.B. Test von numerischen Strömungslösern </li></ul></ul><ul><ul><li>Überprüfung der numerischen Ergebnisse nach Code-Änderungen </li></ul></ul><ul><ul><ul><li>Auschecken des aktuellen Source-Codes aus CVS / SVN </li></ul></ul></ul><ul><ul><li>Vergleich mit Referenz-Lösungen </li></ul></ul><ul><ul><li>Verwalten von (umfangreichen) Testfällen und Referenzlösungen </li></ul></ul><ul><li>Tools zur Unterstützung im Bereich Software Engineering </li></ul><ul><ul><li>Nutzung von fertiger Python-Software (MoinMoin, ViewVC, pysvn, …) </li></ul></ul><ul><ul><li>Verknüpfung der Tools durch Erweiterungen </li></ul></ul><ul><ul><ul><li>Bsp: MoinMoin-Makro zum Zugriff auf Issue-Tracking MANTIS </li></ul></ul></ul><ul><ul><li>Automatisierung von SE-Prozeßschritten durch Python-Skripte </li></ul></ul>
  43. 43. Test-System für Strömungslöser (1) Erste Version aus dem Jahr 1998 <ul><li>Test und Verifikation des DLR-Codes TRACE für Turbomaschinen </li></ul><ul><li>Entwicklung in Python mit Tkinter </li></ul>
  44. 44. Test-System für Strömungslöser (2) Aktuelle Version aus dem Jahr 2004 <ul><li>Test und Verifikation der Codes elsA und TAU </li></ul><ul><li>Entwicklung in Python mit PyQt </li></ul>
  45. 45. Entwicklungsumgebung im DLR Server und Web-Schnittstellen Wiki MoinMoin Issue-Tracking MANTIS IDE Eclipse Repository Browser ViewVC Build Status CruiseControl http://cheeseshop.python.org/pypi/svnchecker Automatic Builds Check
  46. 46. Häufig verwendete Basis-Software Zwei wichtige Beispiele <ul><li>pyCGNS – A Python binding for CGNS </li></ul><ul><ul><li>Python-Interface für das Datenformat CGNS </li></ul></ul><ul><ul><li>Verwendung in den Python-Schnittstellen der Strömungslöser </li></ul></ul><ul><ul><li>http://cgns-python.berlios.de/ </li></ul></ul><ul><li>pyGlobus </li></ul><ul><ul><li>Python-Interface für das Globus Toolkit </li></ul></ul><ul><ul><li>Verwendung in Grid-Computing-Anwendungen </li></ul></ul><ul><ul><li>http://dev.globus.org/wiki/Python/pyGlobus </li></ul></ul>
  47. 47. Schlussbemerkungen <ul><li>Es gibt viele weitere Python-Anwendungen </li></ul><ul><ul><li>im DLR </li></ul></ul><ul><ul><li>In anderen Luft- und Raumfahrt Organisationen und Firmen </li></ul></ul><ul><ul><li>In anderen Geschäftsfeldern (Verkehr, Energie) </li></ul></ul><ul><li>In einigen Projekten wird an der Neuimplementierung existierender Software in Python gearbeitet </li></ul><ul><ul><li>Ehemals: Perl oder C </li></ul></ul><ul><li>Verwendete Software </li></ul><ul><li>Python / Jython </li></ul><ul><li>ZOPE </li></ul><ul><li>PyQt / Tkinter </li></ul><ul><li>PyGlobus </li></ul><ul><li>MoinMoin </li></ul><ul><li>Vtk </li></ul><ul><li>SWIG / pyfort </li></ul>

×