Upload
andreas-schreiber
View
3.586
Download
3
Embed Size (px)
DESCRIPTION
Vortrag auf der Python User Group Köln über Anwendungen von Python in der Luft- und Raumfahrt.
Citation preview
Folie 1Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Python in der Luft- und RaumfahrtPython User Group KölnAndreas Schreiber [email protected]
Deutsches Zentrum für Luft- und Raumfahrt e.V., Köln-Porz
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 2
Das DLRDeutsches Zentrum für Luft- und Raumfahrt Raumfahrt-Agentur der Bundesrepublik Deutschland
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 3
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 4
Software-Projekte in Luft- und RaumfahrtKlassifizierung
Software für missionskritische Systeme„Embedded“ / Real-Time Software in Satelliten, Flugzeugen, ISS
Software mit großen UserzahlenInternet, Intranet, Email, Webshop für Satellitendaten
Software mit großem Anteil an der WertschöpfungsketteProzessunterstützung, Versuchsdatenhandling, Modellierungsumgebungen etc.
Software deren Effizienz sich unmittelbar auf die Betriebskosten auswirkt
Numerische Modellierung, Simulationscodes
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 5
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 6
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)
“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)
Folie 7Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Beispiele für Python-Einsatz und -Anwendungen
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 8
Virtual LabWeb-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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 9
Virtual LabIntegration 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'),
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 10
DatenmanagementAusgangssituation
CAD-ModelExperiment
ExperimentalAnalysis
Results
• Reports• Data• Pictures•Movies
CFD Analysis
Grid generation
Solution
Visualisation
CFD - CAD -Model
Results
• Reports• Data• Pictures•Movies
Customere.g. Airbus
100 GB
100 MB
500 MB
4 GB
1 GB
1 GB
CAD-ModelExperimentCAD-ModelExperiment
ExperimentalAnalysis
ExperimentalAnalysis
Results
• Reports• Data• Pictures•Movies
CFD Analysis
Grid generation
Solution
Visualisation
CFD - CAD -Model
Results
• Reports• Data• Pictures•Movies
Customere.g. AirbusCustomere.g. Airbus
100 GB
100 MB
500 MB
4 GB
1 GB
1 GB
Unabhängige EinzellösungenUnabhängige
Einzellösungen
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 11
DataFinderTechnisch-wissenschaftliches Datenmanagement
Integriertes Datenmanagement
Integriertes Datenmanagement
CFD Analysis
Grid generation
Solution
Visualisation
CFD Analyse
Netzgenerierung
Lösung
Visualisierung
CAD-ModelExperimentCAD-ModellExperiment
ExperimentalAnalysis
ExperimentelleAnalyse
CFD - CAD -Modell
Customere.g. AirbusKundenz.B.. Airbus
DataFinderErgebnisse
• Reports• Daten• Bilder• Filme
Ergebnisse
• Reports• Daten• Bilder• Filme
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 12
DataFinderSpeichertechnologien und Protokolle
http://www.dlr.de/sc/datafinder
DataFinder
WebDAV
SimulationSimulation
Geometry
CATIA
Geometry
CATIA
Visualisation
FieldView
Visualisation
FieldView
GridGeneration
SetupGrid
GridGeneration
SetupGrid
Solver: TAU
Flowsolution
Solver: TAU
Flowsolution
FTP-ServerFTP-
Server
DateienDateienWeb
DA
VW
ebD
AV
Meta-datenMeta-daten
Metadaten-Server
TSMTSM
OpenAFSOpenAFSFTP
AFS
TS
MLokale
Verzeichnisse und Dateien
Data-StoresData-
Stores
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 13
DataFinder SoftwareGraphische Benutzeroberfläche
User Client Administrator Client
Implementierung in Python und PyQt
Implementierung in Python und PyQt
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 14
SkripteErweiterung, 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 15
Beispiel-SkriptDatei-Download und Start einer Applikation
# @scrtitle: Execute It!# @scrdesc: Download the selected file and try to execute it.from datafinder.application import ExternalFacadefrom guitools.easygui import *import os, sys, glob, time, pickle, stringfrom tempfile import *from win32api import * # Get instance of DataFinder ExternalFacade to# access DataFinder APIfacade = 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.")
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 16
Erweiterung der GUICustomizing mit Python-Skripten
1. Einen neuen Run anlegen
2. Den Run starten
3. Status abfragen
4. Run abbrechen
5. Übersicht über alle Runs
1
2
3
4
5
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 17
DataFinderVom 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 18
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 19
Komplexe WorkflowsBeispiele 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
OrbitModel
AtmosphereModel
InstrumentModel
DownlinkModel
L0Processor
L1bProcessor
L2Processor
L2Processor
Satellitendaten-Prozessing
PCrash
PCrash
PCrash
Script
DesParO
Permas
PView
PView
PView
Medina
SFE
Con
cep
t
Nasb
if
Pam
med
Kop
fp
ositio
nie
run
g
DesParO GUI
Parameter
ASCII File mit Ergebnissen
1
2
n
Struktur-OptimierungGeometryDefinition
Main Analysis Subroutine
Structures Aerodynamics
Stability & Control
Propulsion
Induced Drag
Friction Drag
Wave Drag
Field Perf.
Weights
Wing
Weight
NoiseFlight Perf.Fuel Volume
Objective Function& Constraints
Optimizer(DOT) Design Variables
Balance
SFC
Engine
Weight
Engine/Aero Drag
GeometryDefinitionGeometryDefinition
Main Analysis Subroutine
StructuresStructures Aerodynamics
Stability & Control
Stability & Control
PropulsionPropulsion
Induced Drag
Friction Drag
Wave Drag
Field Perf..
WeightsWeights
Wing
Weight
NoiseNoiseFlight Perf.Flight Perf.Fuel VolumeFuel Volume
Objective Function& Constraints
Objective Function& Constraints
Optimizer(DOT) Design Variables
BalanceBalance
SFC
Engine
Weight
Engine/Aero Drag
Engine/Aero Drag
Flugzeug-Design
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 20
Integrations- uns Simulationsumgebung TENTSystem 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“)
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 21
Beispiel: Gekoppelte Simulation in der LuftfahrtFlugmanö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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 22
Kopplungsmanager-Implementierung in TENT
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 23
BeispielKopplungs-skript
# <<import statements>>
def start(base,steps): fireEvents.fireStart(steps)
dialogID = notificator.showProgressMonitor("Simulation progress", "", 0, steps) notificator.setProgress(dialogID,0)
couplingDataList = "" global stopFlag, pauseFlag stopFlag, pauseFlag = 0, 0
couplingDataList = simulaWrapper.get("FM_DATA") tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get("fm_values") tauWrapper.advance()
simulaWrapper.set("FM_DATA", 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("FM_DATA") tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get("fm_values") tauWrapper.advance() simulaWrapper.set("FM_DATA", couplingDataList) simulaWrapper.advance()
notificator.setProgress(dialogID,step)
notificator.showMessageDialog("Simulation is finished", MessageType.INFORMATION)
def stop(base,steps): global stopFlag stopFlag = 1
def pause(base,steps): global pauseFlag pauseFlag = 1 - pauseFlag
# <<import statements>>
def start(base,steps): fireEvents.fireStart(steps)
dialogID = notificator.showProgressMonitor("Simulation progress", "", 0, steps) notificator.setProgress(dialogID,0)
couplingDataList = "" global stopFlag, pauseFlag stopFlag, pauseFlag = 0, 0
couplingDataList = simulaWrapper.get("FM_DATA") tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get("fm_values") tauWrapper.advance()
simulaWrapper.set("FM_DATA", 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("FM_DATA") tauWrapper.set("fm_data", couplingDataList) tauWrapper.advance() couplingDataList = tauWrapper.get("fm_values") tauWrapper.advance() simulaWrapper.set("FM_DATA", couplingDataList) simulaWrapper.advance()
notificator.setProgress(dialogID,step)
notificator.showMessageDialog("Simulation is finished", MessageType.INFORMATION)
def stop(base,steps): global stopFlag stopFlag = 1
def pause(base,steps): global pauseFlag pauseFlag = 1 - pauseFlag
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 24
Ergebnis der Rechnungen (1)Strömung
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 25
Ergebnis der Rechnungen (2)Struktur
http://www.dlr.de/as/sikma
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 26
Beispiel: Gekoppelte Simulation in der Raumfahrt Wiedereintrittssimulation
Simulation der thermisch hochbelasteten Teile eines X-38 Raumgleiters
Kopplung Strömung – Struktur – Wärme
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 27
WiedereintrittssimulationModel
Vereinfachtes Modell für Windkanalexperimente
Simulation zur Validierung der Experimente
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 28
Simulationsumgebung iflsHigh-Performance-Kopplungsumgebung
Realisiert mit dem Visualization Tooklit (vtk)
http://www.ifl.tu-bs.de
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 30
Ergebnis der RechnungTemperaturverteilung
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 31
VisualisierungAndere 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 32
Airport Environment
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 33
Airport Environment
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 34
Airport Environment
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 35
Skript-Schnittstellen für numerische SoftwareEinfache 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 36
elsACFD-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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 37
elsABeispiel für Nutzung des Python-API
from elsA_user import *
# STEP 1 : PROBLEM CREATIONnozzle = cfdpb(name=’nozzle’)nozzle.set_block_creation_mode(’automatic’)nozzle.set(’automatic_block_gen’, ’db_directory’)# MESHnozzle.set(’cfd_mesh_dir’, ’Nozzle_m’)# Flow initialisationnozzle.set(’cfd_flow_ini_dir’, ’Nozzle_i’)# (Physical) MODELmod_nozzle = model(name=’mod_nozzle’)mod_nozzle.fluid = ’pg’mod_nozzle.phymod = ’euler’# NUMERICSnum_nozzle = numerics(name = ’nozzle_num’)num_nozzle.flux = ’jameson’num_nozzle.artviscosity = ’dissca’
# STEP 2 : COMPUTATIONnozzle.compute()
from elsA_user import *
# STEP 1 : PROBLEM CREATIONnozzle = cfdpb(name=’nozzle’)nozzle.set_block_creation_mode(’automatic’)nozzle.set(’automatic_block_gen’, ’db_directory’)# MESHnozzle.set(’cfd_mesh_dir’, ’Nozzle_m’)# Flow initialisationnozzle.set(’cfd_flow_ini_dir’, ’Nozzle_i’)# (Physical) MODELmod_nozzle = model(name=’mod_nozzle’)mod_nozzle.fluid = ’pg’mod_nozzle.phymod = ’euler’# NUMERICSnum_nozzle = numerics(name = ’nozzle_num’)num_nozzle.flux = ’jameson’num_nozzle.artviscosity = ’dissca’
# STEP 2 : COMPUTATIONnozzle.compute()
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 38
DLR TAU-CodeCFD-Löser
Strömungslöser zur Berechnung von RANS Gleichungenstationäre und instationäre StrömungenHybride NetzeState-of-the-Art TurbulenzmodelleBewegungsmodul (Relativbewegung von Netzen)Netzadaption (Ver- und Entfeinerung)ChimeratechnikVollständig parallelMultidisziplinäre Simulationen
Bestehend aus vielen Modulen in CInterface in Python
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 39
t=T
T+dt
dataextraction
adaptation
(re-)partitioning
deformation
solver
preprocessor
data access in memory
MPI
CPU-j
CPU-k
CPU-i
transitionprediction
MPI
TAU Data Manager
TAU Python interface
file-IO
TAU-Architektur& Python
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 40
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)
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 41
Beispiel: Airbus-Tool PPPDaten-Mapping beim Flugzeugentwurf
Entwicklung in Java
Mapping von XML
Umrechnung von Einheiten
Umrechnung durchFormelauswertung
Jython-Interpreter
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 42
Qualitätssicherung bei wissenschaftlicher SoftwareEin 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 43
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 44
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 45
WikiMoinMoin
Issue-TrackingMANTIS
IDEEclipse
Automatic Builds
Repository BrowserViewVC
Check
Build StatusCruiseControl
Entwicklungsumgebung im DLRServer und Web-Schnittstellen
http://cheeseshop.python.org/pypi/svnchecker
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 46
Häufig verwendete Basis-SoftwareZwei 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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 47
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
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 48
Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007
Folie 49