Algorithmen — Numerik — Mathematik
Die GWR GmbH entwickelt Algorithmen und entsprechende Software zu Aufgabenstellungen der Angewandten Mathematik und führt Auftragsberechnungen durch.
Unsere Kompetenzfelder sind
- 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
- Physics-Informed Neural Networks (PINNs): Moderne Machine-Learning-Modelle, die physikalische Gesetze in neuronale Netze integrieren. PINNs ermöglichen eine Kombination von datengetriebenen und physikbasierten Ansätzen,
- kombinatorische Optimierung.
Wir nutzen eine Vielzahl von Programmiersprachen und Tools, darunter C++, Lua, Python, Java und Shell-Skripte. Unsere Softwareentwicklungsprozesse werden durch den Einsatz von Git zur Versionsverwaltung und Jenkins zur Automatisierung kontinuierlich optimiert.
Simulationen
Beispiele für numerische Simulationen sind Strömungssimulationen im Automobilbau, Finite-Elemente-Analysen zur Berechnung von Spannungen und Verformungen in Bauteilen, Simulationen zur Vorhersage von Finanzmärkten, Wettervorhersagen und zahlreiche andere Anwendungen. Viele Simulationen nutzen mathematische Modelle aus der Physik, um komplexe Phänomene zu analysieren und zu verstehen. Durch ihren Einsatz können Forscher und Ingenieure virtuelle Experimente durchführen, um neue Produkte zu entwickeln oder Prozesse zu optimieren.
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[1] (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.
Unser Beispiel zum Modularen Potenzieren verdeutlicht, wie allein durch die Auswahl des Verfahrens eine dramatische Beschleunigung der Laufzeit erzielt werden kann. Von ursprünglich 10 Sekunden reduziert sich die Rechenzeit auf nur wenige Mikrosekunden.
Auch die numerische Lösung der Radiosity-Gleichung zur Berechnung des Energietransports durch Wärmestrahlung gehört in diesen Kontext.
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.