Über
Autoren ·
Kontakt ·
Suche
Was ist pdelib2?
pdelib2
ist eine Sammlung von Software Bausteinen, welche zur Erstellung von
Simulatoren basierend auf Modelle numerischer Lösung entwickelt wurden.
Ziele des Designs sind Modularität, Portabilität, Integrierbarkeit und
Parallelisierung auf Shared Memory Architekturen.
Hauptmerkmale
Inhalt
Zur Implementierung ·
Import und Export
Filter ·
Pre- und
Post-Processing ·
Online
Visualisierung ·
Numerische Module ·
Leistung ·
Software Abhängigkeiten ·
System Information
Zur Implementierung
Das
array basierte Design der Hauptstrukturen erlaubt eine
Interoperabilität mit einer Vielzahl von existierenden Paketen und
erlaubt eine freie Wahl der Programmiersprache.
pdelib2 nutzt in FORTRAN geschriebene Kerne. Die zentralen Datenstrukturen sind in C++ implementiert. Skripte sind über eine
Lua Anbindung verfügbar.
- Die Datenstrukturen basieren auf mehrdimensionalen arrays und speichern Lösungen, Gitter, Matrzen und andere Objekte.
- Sicheres Speicher Management mittels C++ smart pointers.
- Bibliotheksanbindung zu Gittergeneratoren Triangle und TetGen.
- Partitionierung der Gitter für paralleles Rechnen und Cache-effizienten Datenzugriff durch METIS
- Linear Algebra Subroutinen, Matrix Assemblierung and
nichtlineare Operator Anwendung ausgelegt für paralleles Rechnen (mehr...).
- Integrierte Visualisierung der berechneten Daten mittels OpenGL.
- Linear Probleme werden gelöst mit iterativen und direkten Lösern, z.B. PARDISO.
- Große Teile der Bibliothek sind über die Erweiterungssprache Lua mittels SWIG Schnittstellengenerierungstool verfügbar.
- Graphische Nutzer Schnittstelle für basieriert auf FLTK ("fulltick").
Import und Export Filter
Eigene Daten Dateiformate
- .tsol - Lesen/Schreiben von (Zeit-)Schrittlösungen auf nicht redundante weise.
Eigene Geometrie und Gitter Dateiformate
- .grid - ASCII/Binär lua/ldf Dateien mit (generischer) Gitter- oder Geometrie-Beschreibung
- .xgrid - binäre ldf Dateien mit Gitter-Beschreibung
- .sg - pdelib1 Simplex Gitter Datei
- .polyx - Erweiterung von .poly
- .vec - Vectorfeld Dateien
Unterstützung weiterer Gitter Dateiformate
- .stl - Stereolithographie Format (mehr...)
- .ele - Triangle/TetGen Dateiformate (mehr...)
- .poly - piecewise linear complex (PLC) files (mehr...)
Pre- und Post-Processing
Diese eigenständigen Softwarekomponenten ermöglichen eine offline
Datenauswertung. Die offline Implementierung der folgenden Programme
basiert auf den
online Komponenten.
|
gview |
Betrachter für Geometrie und Gitter Dateien (1D, 2D und 3D) |
|
semiview |
Betrachter für numerische Lösungen von Problemen, welche große Dateien erzeugen
(> 2GB). semiview ist eine spezielle Implementierung für die
Darstellung von Ergebnissen aus 'Semiconductor Photon Detectors'
Simulationen. |
|
player |
Zeigt eine gespeicherte zeitabhängige Lösung geladen aus dem .tsol Dateiformat.
Generische und nutzerspezifische Interpretationen sind möglich. |
Online
Visualisierung
Wärend
einer Simulation wird eine direkte Betrachtung der Daten ohne Kopie und
Interpolation unterstützt. Von allen pdelib Betrachtern ist eine
Speicherung in folgende Formate möglich
- PPM-Raw (Einzel / Serien Bilder)
- PNG-Compressed (Einzel / Serien Bilder)
- EPS-Vector (Einzel / Serien Bilder)
- MPEG-Video (Video Format)
|
gView |
Online
Betrachter für Gitterdaten (1D, 2D und 3D) |
|
aView |
Online Betrachter für skalare Felder (1D, 2D und 3D) |
|
vfView |
Online Betrachter für Vectorfelder (2D und 3D) |
Weitere Eigenschaften sind
- MultiView und OpenGL stereo und ein einfacher Szenen-Editor ermöglichen eine erhöhte räumlichen Eindruck der 3D Daten.
- Der Macro-Rekorder ermöglicht z.B. die Aufnahme und Wiedergabe von
graphischer Nutzerinteraktionen. Ein aufgenommener Makro ist einfacher
editierbarer Lua
Programmcode.
- Erweiterte Farbeinstellungen für Materialregionen und deren
Schnittflächen. Wählbar sind gefüllt, transparent oder
Drahtdarstellung. In diesem
Beispiel sind die uninteressanten äußeren Regionen ausgegraut.
- Beliebig orientierte Schnittebene
Numerische Module
- Gitter-Partitionierung mit variabler Breite der Separatoren
- Gitter-Interpolation: Gitter-Gitter für adaptive Methoden,
Gitter-Punkt für Messungen (pdelib2/grid_interpol)
- Finite Volumen (FVM) Assemblierungs- und Anwendungs-Schleifen
(pdelib2/grid)
- Lineare Algebra Operationen zwischen (sparse-)Matrix und Vektor
(pdelib2/linalg)
- Vorkonditionierer: Jacobi/Point block
Jacobi, SSOR/Point block SSOR, ILU/ Point block ILU,
GSPAR direkter Löser (pdelib2 built-in), Schnittstelle zu PARDISO, Agglomeration Mehrgitter
(pdelib2/iteration)
- Nichtlineare iterative Löser: Newton Verfahren, CG, CGS,
Bi-CG, Bi-CGSTAB,
GMRES (pdelib2/iteration)
- Finite Volumen Löser für nichtlineare gekoppelte Systeme von Reaktion-Diffusion-Konvektion Differentialgleichungen
(pdelib2/fvsys)
- Spline Interpolation für nichtlineare Datenfunktionen
(pdelib2/nltools)
Leistung
Assemblierung und Anwendung von linearen und nichtlinearen Operatoren nutzen
- SMP basierte Parallelisierung
- Cache-bewusster Gitterzugriff
- FORTRAN Kerne kompatible Datenstrukturen
Neben den bekannten OpenMP profiling Werkzeugen wie z.B.
Assure,
Intel Thread Checker,
DDT
nutzen wir ein eigenes built-in Werkzeug. Ein Vergleich zwischen
sequentiellen, parallelen Läufen, Compiler und Systemen ist möglich.
|
Thread Viewer |
Leistungsanalyse von parallelen and sequentiellen Programmteilen |
Software Abhängigkeiten
Für die beschriebene Funktionalität nutzt die
pdelib2 mehrere externe Softwarepakete. Die folgenden Pakete werden unterstützt
Paket |
genutz für |
ARPACK |
Löst large scale Eigenwertprobleme |
FLTK |
GUI Funktionalität und 3D Graphik via
OpenGL |
SWIG |
Verbindet C++ mit der Skriptsprache Lua |
Lua |
Skriptsprache |
METIS |
Gitterpartitionierung |
TetGen |
3D Gittergenerierung |
TetView |
3D Gittervisualisierung |
Triangle |
2D Gittergenerierung |
gnuplot |
XY-Datenvisualisierung |
System
Information
Dieser Abschnitt beinhaltet Informationen bezüglich Systemvoraussetzungen und unterstützte Plattformen für
pdelib2.
Im wesentlichen sind alle Programmteile in C++ geschrieben. Die
effizienten numerischen Kerne (Vektor-Routinen, dünnbestzte Matrix
Programmcode) dagegen in Fortran77. Aktuell ist die Software portierbar
auf eine große Zahl von UNIX Systemen, auf welchen X11 und OpenGL
Unterstützung verhanden ist.
- Linux
- Mac OS X
- AIX
- Windows (MinGW)
- True64
- IRIX
2010/02/12 T. Streckenbach