Die GWR GmbH entwickelt Algorithmen und Software für Aufgabenstellungen der Angewandten Mathematik. Im Fokus stehen mathematische Modellierung, numerische Simulation, effiziente Algorithmen und performante Softwareimplementierung. Das Spektrum reicht von der Entwicklung und Analyse mathematischer Modelle bis zur Umsetzung robuster, skalierbarer Rechenverfahren. Detaillierte Beispiele und Hintergründe finden sich im Blog und in der Übersicht der Kompetenzfelder weiter unten.
Simulationen

Algorithmen
Eine Problemstellung sollte mit dem “richtigen” Algorithmus gelöst werden, da die Wahl des geeigneten Algorithmus entscheidend für die Effizienz der Lösung ist. Ein eindrucksvolles Beispiel hierfür ist die schnelle Fourier-Transformation (FFT). Im Vergleich zur direkten Auswertung der trigonometrischen Summenformel bietet sie eine erhebliche Verbesserung. Während die naive Methode \(\mathcal{O}(n^2)\) Rechenschritte benötigt, weist die FFT lediglich einen Aufwand von \(\mathcal{O}(n \log n)\) auf.
Interessanterweise geht die Entwicklung der schnellen Fourier-Transformation durch Cooley und Tukey Anfang der 1960-iger Jahre auf die Notwendigkeit zurück, große Mengen von Daten aus seismischen Beobachtungen von Kernwaffentests zu analysieren.
In der kombinatorischen Optimierung und der Ressourcenplanung entscheidet die algorithmische Strategie darüber, ob überhaupt brauchbare Lösungen gefunden werden. Am Traveling-Salesman-Problem (TSP) zeigt sich exemplarisch, dass geeignete Heuristiken und Metaheuristiken Touren liefern, die nahe am Optimum liegen, während eine naive Suche (Brute Force) für realistische Instanzen nicht praktikabel ist.
Das Beispiel zum Modularen Potenzieren verdeutlicht, wie durch die Wahl eines geeigneten Verfahrens eine dramatische Beschleunigung der Laufzeit erzielt werden kann. Die Rechenzeit sinkt dabei von ursprünglich 10 Sekunden auf nur wenige Mikrosekunden.
Auch bei der numerischen Lösung der Radiosity-Gleichung zur Berechnung des Energietransports durch Wärmestrahlung sowie in der Parameteridentifikation zeigt sich, wie sehr ein geeigneter Algorithmus das Ergebnis beeinflusst – sowohl in Bezug auf Stabilität als auch auf Recheneffizienz.
Programmierung
Software, insbesondere Programme zur Simulation, sollte sich kontinuierlich weiterentwickeln, um das volle Potenzial der verfügbaren Hardware auszuschöpfen. Dabei spielen spezielle Softwaretechniken wie OpenMP und Threading Building Blocks für MultiCore-Architekturen sowie SYCL für plattformübergreifende Programmierung (CPU + GPU) eine entscheidende Rolle. Diese Techniken ermöglichen eine effiziente Nutzung moderner Hardware und tragen dazu bei, die Leistungsfähigkeit von Anwendungen zu maximieren. Wie das in der Praxis aussieht, zeigt der Beitrag zur Präambel-Detektion, in dem eine GPU-Version der FFT eine schnellere Mustererkennung ermöglicht.
Thematische Schwerpunkte
- Numerische Simulationen
- Mathematische Modelle
- schnelle Lösung großer Gleichungssysteme
-
C++-Programmierung, insbesondere
- Parallelisierungen und Multicore-Anwendungen, MPI, OpenMp und Threading Building Blocks
- Strömungsberechnungen mit OpenFOAM
- Visualisierungen
- Algorithmische Geometrie
- Cloud Computing: Skalierbare HPC-Umgebungen und automatisierte Workflows in der Cloud (Azure HPC & Jenkins).
-
Künstliche Intelligenz in der Simulation & Softwareentwicklung
- Physics-Informed Neural Networks (PINNs) & Operator Networks (PINOs): Moderne Machine-Learning-Modelle, die physikalische Gesetze direkt in neuronale Netze integrieren. PINNs approximieren einzelne Lösungen physikalischer Gleichungen (Funktionen). PINOs lernen ganze Lösungsoperatoren, also Abbildungen zwischen Funktionenräumen. Beide Ansätze verbinden datengetriebene Methoden mit physikalischem Vorwissen.
- Anomalieerkennung in Zeitreihen mit Deep Learning
- Auch in der Softwareentwicklung werden KI-gestützte Tools eingesetzt. Ein Beispiel dafür ist die KI-gestützte Commit-Automatisierung.
- kombinatorische Optimierung, Ressourcenplanung.
Verschiedene Programmiersprachen und Tools werden verwendet, darunter C++, Lua, Python, Java und Shell-Skripte. Git dient der Versionsverwaltung, Jenkins der Automatisierung und der kontinuierlichen Optimierung der Workflows.
Weitere Beispiele und Hintergründe finden sich in der Beitragsübersicht.