49
Folie 1 Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007 Python in der Luft- und Raumfahrt Python User Group Köln Andreas Schreiber [email protected] Deutsches Zentrum für Luft- und Raumfahrt e.V., Köln- Porz

Python in der Luft- und Raumfahrt

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Python in der Luft- und Raumfahrt

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

Page 2: Python in der Luft- und Raumfahrt

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

Page 3: Python in der Luft- und Raumfahrt

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

Page 4: Python in der Luft- und Raumfahrt

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

Page 5: Python in der Luft- und Raumfahrt

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

Page 6: Python in der Luft- und Raumfahrt

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)

Page 7: Python in der Luft- und Raumfahrt

Folie 7Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Beispiele für Python-Einsatz und -Anwendungen

Page 8: Python in der Luft- und Raumfahrt

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

Page 9: Python in der Luft- und Raumfahrt

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'),

Page 10: Python in der Luft- und Raumfahrt

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

Page 11: Python in der Luft- und Raumfahrt

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

Page 12: Python in der Luft- und Raumfahrt

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

Page 13: Python in der Luft- und Raumfahrt

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

Page 14: Python in der Luft- und Raumfahrt

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

Page 15: Python in der Luft- und Raumfahrt

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.")

Page 16: Python in der Luft- und Raumfahrt

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

Page 17: Python in der Luft- und Raumfahrt

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

Page 18: Python in der Luft- und Raumfahrt

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

Page 19: Python in der Luft- und Raumfahrt

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

Page 20: Python in der Luft- und Raumfahrt

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“)

Page 21: Python in der Luft- und Raumfahrt

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

Page 22: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 22

Kopplungsmanager-Implementierung in TENT

Page 23: Python in der Luft- und Raumfahrt

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

Page 24: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 24

Ergebnis der Rechnungen (1)Strömung

Page 25: Python in der Luft- und Raumfahrt

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

Page 26: Python in der Luft- und Raumfahrt

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

Page 27: Python in der Luft- und Raumfahrt

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

Page 28: Python in der Luft- und Raumfahrt

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

Page 29: Python in der Luft- und Raumfahrt

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

Page 30: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 30

Ergebnis der RechnungTemperaturverteilung

Page 31: Python in der Luft- und Raumfahrt

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

Page 32: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 32

Airport Environment

Page 33: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 33

Airport Environment

Page 34: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 34

Airport Environment

Page 35: Python in der Luft- und Raumfahrt

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

Page 36: Python in der Luft- und Raumfahrt

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

Page 37: Python in der Luft- und Raumfahrt

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()

Page 38: Python in der Luft- und Raumfahrt

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

Page 39: Python in der Luft- und Raumfahrt

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

Page 40: Python in der Luft- und Raumfahrt

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)

Page 41: Python in der Luft- und Raumfahrt

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

Page 42: Python in der Luft- und Raumfahrt

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

Page 43: Python in der Luft- und Raumfahrt

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

Page 44: Python in der Luft- und Raumfahrt

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

Page 45: Python in der Luft- und Raumfahrt

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

Page 46: Python in der Luft- und Raumfahrt

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

Page 47: Python in der Luft- und Raumfahrt

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

Page 48: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 48

Page 49: Python in der Luft- und Raumfahrt

Python User Group Köln > Andreas Schreiber > Python in der Luft- und Raumfahrt > 14.03.2007

Folie 49