Python in der Luft- und Raumfahrt

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Python in der Luft- und Raumfahrt - Presentation Transcript

    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
      • Das DLR
      • Deutsches Zentrum für Luft- und Raumfahrt Raumfahrt-Agentur der Bundesrepublik Deutschland
    2. Zahlen zum DLR
      • DLR ist die größte deutsche Forschungseinrichtung
      • 5.100 Mitarbeiter arbeiten in 27 Forschungsinstituten und Einrichtungen
        •  9 Standorten,
        • 7 Außenstellen.
      • Kernkompetenzen des DLR liegt im Bereich Ingenieurwissenschaften
      • Mehr als 1000 DLR-Mitarbeiter entwickeln Software
      •  DLR ist eines der größten Softwarehäuser Deutschlands!
       Köln - Porz  Lampoldshausen  Stuttgart  Oberpfaffenhofen Braunschweig   Göttingen Berlin- -  Adlershof  Bonn Trauen   Hamburg  Neustrelitz Weilheim  Berlin- Charlottenburg   Sankt Augustin  Darmstadt Bremen 
    3. Software-Projekte in Luft- und Raumfahrt Klassifizierung
      • Software für missionskritische Systeme
        • „ Embedded“ / Real-Time Software in Satelliten, Flugzeugen, ISS
      • Software mit großen Userzahlen
        • Internet, Intranet, Email, Webshop für Satellitendaten
      • Software mit großem Anteil an der Wertschöpfungskette
        • Prozessunterstützung, Versuchsdatenhandling, Modellierungsumgebungen etc.
      • Software deren Effizienz sich unmittelbar auf die Betriebskosten auswirkt
        • Numerische Modellierung, Simulationscodes
    4. Einsatzfelder von Python
      • Wissenschaftliche Software und Prototypen
      • Selten Einsatz in Produkten
      • Kein Einsatz in kritischen Systemen
      • Beispiele für Einsatzfelder von Python
        • Web-Anwendungen
        • Datenmanagement
        • Steuerung von (großen) Simulationen
        • Visualisierung
        • Skript-Schnittstellen für numerische Software
        • Eingebettet als Skript-Interpreter in großen Systemen und Produkten
        • Test und Qualitätssicherung von wissenschaftlicher Software
    5. Warum Python in der Luft- und Raumfahrt? Argumente, um Ingenieure zu überzeugen
      • Beschreibung
        • Objektorientierte vollständige Programmiersprache
        • Klare, einfache Syntax
        • Portabel, verfügbar auf allen Plattformen mit C-Compiler
      • Warum ist Python geeignet für Ingenieure und industrielle Anwender?
        • Sehr einfach zu lernen und zu benutzen
        • Erlaubt eine schnelle Entwicklung ( = geringe Entwicklungszeit)
        • Inherent great maintainability
      “ 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)
    6. Beispiele für Python-Einsatz und -Anwendungen
    7. Virtual Lab Web-basiertes Repository für wissenschaftliche Codes
      • Portal zur Bereitstellung wissenschaftlicher Software
      • Einfache numerische Codes werden integriert („eingestellt“)
      • Nutzer können Eingabedateien hochladen und Rechnungen starten
      • Realisiert mit ZOPE
      • Speicherung von Daten, Metadaten, Benutzer-informationen mit ZOPE Object Database, MySQL und OpenLDAP
      • http://vl.nz.dlr.de/VL
    8. Virtual Lab Integration von Codes
      • Integration von Codes geschieht durch Spezifikation von Input und Output des Codes
      • Input Description Language
        • Benutzt Python als Basis
      • Generierung von Eingabeelementen für numerische Werte
      • Beispiel:
      ID(na= 'Lambda' , pe= '_NF and _Lambda_use' , ty= 'FloatType' , de= '0.5' , ce= 'Lambda > 0.0' , un= 'mu_m' , an= 'Input wavelength' ),
    9. Datenmanagement Ausgangssituation Unabhängige Einzellösungen
    10. 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
    11. DataFinder Speichertechnologien und Protokolle
      • http://www.dlr.de/sc/datafinder
      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
    12. DataFinder Software Graphische Benutzeroberfläche User Client Administrator Client Implementierung in Python und PyQt
    13. Skripte Erweiterung, Automatisierung und Anpassung
      • Erweiterung des DataFinder möglich durch Python-Skripte
      • Automatisierung und Anpassungen
        • Daten-Migration, Daten-Import
        • Starten externen Applikationen (inkl. Download von Dateien)
        • Automatische Extraktion von Metadaten aus Berechnungsergebnissen
        • Wiederholte Abarbeitung einfacher Aufgaben
        • Erweiterung durch neue GUI-Panel
    14. 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, "" , "" , 1) else : msgbox( "No file selected to execute." )
    15. Erweiterung der GUI Customizing mit Python-Skripten
      • Einen neuen Run anlegen
      • Den Run starten
      • Status abfragen
      • Run abbrechen
      • Übersicht über alle Runs
      1 2 3 4 5
    16. DataFinder Vom Java-Prototyp zum Python-Produkt…
      • Ein bissle Historie:
      • Aufgabe: Datenmanagement für ein DLR-Institut
      • Evaluation verschiedenen Tools (in „Proof-Of-Concepts“)
        • Kommerzielle Tools (PDM-Systeme)
        • Eigenentwicklung in Form eines Prototyopen in Java
      • Ergebnis
        • Kommerzielle Tools zu teuer und ZU mächtig
        • Java hatte Probleme auf den Zielplattformen (SGI IRIX)
        • Grosse Begeisterung für Python als integrierte Skriptsprache
      • Daher: Komplette Neuentwicklung als „Produkt“ in Python mit Qt + PyQt
      • Nutzung im DLR und in deutscher Grid-Computing-Community (D-Grid) http://dgi.d-grid.de/index.php?id=78
    17. Steuerung von großen Simulationen Einführung
      • Viele Probleme erfordern komplexe numerische Simulationen oder Verarbeitungsschritte . Beispiele:
        • Wiedereintritt von Raumfahrzeugen
        • Simulation von Flugmanövern
        • Prozessierung von Satellitendaten
      • Immer öfter wird multidisziplinär gekoppelt simuliert
        • Strömung – Struktur – Wärme – Flugmechanik – …
      • Solche Rechnungen werden softwaretechnisch ständig komplexer!
        • Komplexe Workflows
        • Nutzung von Codes mit umfangreichen Schnittstellen
    18. Komplexe Workflows Beispiele aus der Praxis
      • Softwaretechnische Aufgaben:
      • Anstoßen unterschiedlichster Codes in korrekter Reihenfolge
      • Nutzung von Höchstleistungsrechnern und Clustern
      • Transferieren von Daten zwischen den Codes
      • Zusammenarbeit mit Kollegen
      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
    19. Integrations- uns Simulationsumgebung TENT System zur Steuerung komplexer Simulationen
      • TENT ist eine Integrations- und Simulationsumgebung für ingenieurwissenschaftliche Anwendungen.
      • Gesamtsoftware-System entwickelt in Java
      • Python als eingebettete Skriptsprache
        • Integration von Jython
      • Nutzung von Python für verschiedene Zwecke
        • Integration von Applikationen („Wrapper“)
        • Steuerung von Workflows
        • Anbindung an MS Office („Win32 API“)
    20. Beispiel: Gekoppelte Simulation in der Luftfahrt Flugmanöverberechnung
      • Interaktive Simulation eines frei fliegenden elastischen Kampfflugzeugs
      • Hochgenaue Simulation erfordert Kopplung von
        • Aerodynamik (Strömung)
        • Flugmechanik
        • Aeroelastik
      • Hohe Rechenzeiten
        • Mehrere Wochen auf großem Cluster
      • Steuerung der Kopplung als Python- Skript in der TENT-Umgebung
      • http://www.dlr.de/as/sikma
    21. Kopplungsmanager-Implementierung in TENT
    22. 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
    23. Ergebnis der Rechnungen (1) Strömung
    24. Ergebnis der Rechnungen (2) Struktur
      • http://www.dlr.de/as/sikma
    25. Beispiel: Gekoppelte Simulation in der Raumfahrt Wiedereintrittssimulation
      • Simulation der thermisch hochbelasteten Teile eines X-38 Raumgleiters
      • Kopplung Strömung – Struktur – Wärme
    26. Wiedereintrittssimulation Model
      • Vereinfachtes Modell für Windkanalexperimente
      • Simulation zur Validierung der Experimente
    27. Simulationsumgebung ifls High-Performance-Kopplungsumgebung
      • Realisiert mit dem Visualization Tooklit (vtk)
      • http://www.ifl.tu-bs.de
    28. 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
    29. Ergebnis der Rechnung Temperaturverteilung
    30. Visualisierung Andere Beispiele für Visualisierungen
      • Visualisierung der Design-Parameter von neuen Flugzeugkonfigurationen
        • Geometrie
        • Simulationsergebnisse
        • Grundbewegung auf dem Airport
        • Flugdynamik
      • Software JSBSim
        • Simulationsroutinen in C++
        • Wrapping mit SWIG
        • Nutzung des Python-API von vtk
      • http://jsbsim.sourceforge.net
    31. Airport Environment
    32. Airport Environment
    33. Airport Environment
    34. Skript-Schnittstellen für numerische Software Einfache Benutzung komplexer Codes
      • Moderne numerische Software ist komplex und besteht aus vielen Modulen
        • Z.B. CFD-Codes (Computational Fluid Dynamics)
        • Implementierung in Fortran oder C
      • Skript-Wrapper für numerische Software vereinfachen die Benutzung
        • Rechenintensive Teile bleiben in Fortran oder C
        • Python-Skript steuert nur die Rechnung
      • Automatische Generierung von Wrapper-Code
        • Fortran: pyfort ( http://pyfortran.sourceforge.net )
        • C, C++: SWIG ( http://www.swig.org )
      Fortran/C Modul Wrapper für Variablen und Funktionen Python-Skript
    35. elsA CFD-Löser mit Python-Interface
      • elsA: ensemble logiciel de simulation en Aérodynamique
      • Software-System der ONERA für aerodynamische Berechnungen im Luftfahrt-Bereich
      • Drei Ebenen
        • Fortran-Code für zeitintensive numerische Berechnungen
        • Wrapper-Code in C++ für als objektorientierte Schale um die Fortran-Funktionen
        • Python-Interface als Schnittstelle zum Benutzer
      • http://elsa.onera.fr
    36. 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()
    37. DLR TAU-Code CFD-Löser
      • Strömungslöser zur Berechnung von RANS Gleichungen
      • stationäre und instationäre Strömungen
      • Hybride Netze
      • State-of-the-Art Turbulenzmodelle
      • Bewegungsmodul (Relativbewegung von Netzen)
      • Netzadaption (Ver- und Entfeinerung)
      • Chimeratechnik
      • Vollständig parallel
      • Multidisziplinäre Simulationen
      • Bestehend aus vielen Modulen in C
      • Interface in Python
    38. 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
    39. Eingebettet als Skript-Interpreter in großen Systemen und Produkten
      • Allgemein gilt: Anwendungen können von Haus aus nicht alles!
      • Aber Scripting erlaubt das einfache Hinzufügen fehlender Features .
      • Anwendungsfälle
        • Skript Interpreter in der GUI
        • Formelauswertung
        • Skript Konsole in der GUI
        • Skript-Blöcke/Komponenten in Workflows
        • Command journaling
        • Batch processing
      • Realisierung durch Einbettung („Embedding“) von Python-Interpretern
        • (C-)Python (siehe http://www.python.org/doc/ext/embedding.html )
        • Jython (siehe http://www.jython.org/docs/embedding.html )
    40. Beispiel: Airbus-Tool PPP Daten-Mapping beim Flugzeugentwurf
      • Entwicklung in Java
      • Mapping von XML
      • Umrechnung von Einheiten
      • Umrechnung durch Formelauswertung
      •  Jython -Interpreter
    41. Qualitätssicherung bei wissenschaftlicher Software Ein weites Anwendungsgebiet für Python
      • Entwicklung GUI-basierter Test-Systeme für numerische Codes
        • Z.B. Test von numerischen Strömungslösern
        • Überprüfung der numerischen Ergebnisse nach Code-Änderungen
          • Auschecken des aktuellen Source-Codes aus CVS / SVN
        • Vergleich mit Referenz-Lösungen
        • Verwalten von (umfangreichen) Testfällen und Referenzlösungen
      • Tools zur Unterstützung im Bereich Software Engineering
        • Nutzung von fertiger Python-Software (MoinMoin, ViewVC, pysvn, …)
        • Verknüpfung der Tools durch Erweiterungen
          • Bsp: MoinMoin-Makro zum Zugriff auf Issue-Tracking MANTIS
        • Automatisierung von SE-Prozeßschritten durch Python-Skripte
    42. Test-System für Strömungslöser (1) Erste Version aus dem Jahr 1998
      • Test und Verifikation des DLR-Codes TRACE für Turbomaschinen
      • Entwicklung in Python mit Tkinter
    43. Test-System für Strömungslöser (2) Aktuelle Version aus dem Jahr 2004
      • Test und Verifikation der Codes elsA und TAU
      • Entwicklung in Python mit PyQt
    44. 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
    45. Häufig verwendete Basis-Software Zwei wichtige Beispiele
      • pyCGNS – A Python binding for CGNS
        • Python-Interface für das Datenformat CGNS
        • Verwendung in den Python-Schnittstellen der Strömungslöser
        • http://cgns-python.berlios.de/
      • pyGlobus
        • Python-Interface für das Globus Toolkit
        • Verwendung in Grid-Computing-Anwendungen
        • http://dev.globus.org/wiki/Python/pyGlobus
    46. Schlussbemerkungen
      • Es gibt viele weitere Python-Anwendungen
        • im DLR
        • In anderen Luft- und Raumfahrt Organisationen und Firmen
        • In anderen Geschäftsfeldern (Verkehr, Energie)
      • In einigen Projekten wird an der Neuimplementierung existierender Software in Python gearbeitet
        • Ehemals: Perl oder C
      • Verwendete Software
      • Python / Jython
      • ZOPE
      • PyQt / Tkinter
      • PyGlobus
      • MoinMoin
      • Vtk
      • SWIG / pyfort
    47.  
    48.  

    + Andreas SchreiberAndreas Schreiber, 3 years ago

    custom

    3605 views, 1 favs, 4 embeds more stats

    Vortrag auf der Python User Group Köln über Anwen more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3605
      • 3589 on SlideShare
      • 16 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 5
    Most viewed embeds
    • 9 views on https://wiki.sistec.dlr.de
    • 3 views on http://www.andreasschreiber.mynetcologne.de
    • 3 views on http://www.onyame.de
    • 1 views on http://s3.amazonaws.com

    more

    All embeds
    • 9 views on https://wiki.sistec.dlr.de
    • 3 views on http://www.andreasschreiber.mynetcologne.de
    • 3 views on http://www.onyame.de
    • 1 views on http://s3.amazonaws.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories