-
GEBIET DER TECHNIK
-
Die vorliegende Offenbarung betrifft Systeme, die rechnergestützte Fluiddynamik (Computational Fluid Dynamics, CFD) und CFD-Solver nutzen.
-
HINTERGRUND
-
Das Lösen von großen komplexen partiellen Differentialgleichungen (Partial Differential Equations, PDEs), wie etwa solchen, die bei der rechnergestützten Fluiddynamik (Computational Fluid Dynamics, CFD) auftreten, ist ein rechenintensiver Prozess. Dies hat den Einsatz von Deep-Learning-Ansätzen zum Annähern der PDE-Lösungen angeregt, wenngleich sich die Simulationsergebnisse, die anhand dieser Ansätze vorhergesagt werden, typischerweise nicht gut auf neue Szenarien verallgemeinern lassen.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform weist ein System einen Prozessor auf, der dafür programmiert ist, eine Grobgittereingabe zu empfangen, die einen ersten Satz von Knoten beinhaltet, wobei das Grobgitter in einen rechnergestützten Fluiddynamik-Solver mit physikalischen Parametern eingegeben wird, um eine Grobgitterlösung zu erhalten, eine Feingittereingabe zu empfangen, die von einem zweiten Satz von Knoten stammt, wobei der zweite Satz von Knoten mehr Knoten beinhaltet als der erste Satz von Knoten, die Feingittereingabe mit den physikalischen Parametern zu verketten und die Verkettung durch eine Graphenfaltungsschicht auszuführen, um eine verdeckte Feingitterschicht zu erhalten, die Auflösung der Grobgitterlösung zu erhöhen (Upsampling), um ein Grobgitter-Upsample zu erhalten, das dieselbe Anzahl von Knoten beinhaltet wie der zweite Satz von Knoten, die verdeckte Feingitterschicht mit dem Grobgitter-Upsample zu verketten und eine Vorhersage in Reaktion auf die Verkettung der verdeckten Feingitterschicht und des Grobgitter-Upsamples auszugeben.
-
Gemäß einer zweiten Ausführungsform beinhaltet ein computerimplementiertes Verfahren das Empfangen einer Grobgittereingabe, die einen ersten Satz von Knoten beinhaltet, wobei das Grobgitter in einen rechnergestützten Fluiddynamik-Solver mit physikalischen Parametern eingegeben wird, um eine Grobgitterlösung zu erhalten, das Empfangen einer Feingittereingabe, die von einem zweiten Satz von Knoten stammt, wobei der zweite Satz von Knoten mehr Knoten beinhaltet als der erste Satz von Knoten, das Verketten der Feingittereingabe mit den physikalischen Parametern und Ausführen der Verkettung durch eine Graphenfaltungsschicht, um eine verdeckte Feingitterschicht zu erhalten, das Erhöhen der Auflösung (Upsampling) der Grobgitterlösung, um ein Grobgitter-Upsample zu erhalten, das dieselbe Anzahl von Knoten beinhaltet wie der zweite Satz von Knoten, und das Ausgeben einer Vorhersage in Reaktion auf wenigstens das Grobgitter-Upsample.
-
Gemäß einer dritten Ausführungsform weist ein System einen Prozessor auf, der dafür programmiert ist, eine Grobgittereingabe zu empfangen, die einen ersten Satz von Knoten beinhaltet, wobei das Grobgitter in einen rechnergestützten Fluiddynamik-Solver mit physikalischen Parametern eingegeben wird, um eine Grobgitterlösung zu erhalten, eine Feingittereingabe zu empfangen, die von einem zweiten Satz von Knoten stammt, wobei der zweite Satz von Knoten mehr Knoten beinhaltet als der erste Satz von Knoten, die Auflösung der Grobgitterlösung zu erhöhen (Upsampling), um ein Grobgitter-Upsample zu erhalten, das dieselbe Anzahl von Knoten beinhaltet wie der zweite Satz von Knoten und eine Vorhersage in Reaktion auf die Feingittereingabe und das Grobgitter-Upsample auszugeben.
-
Figurenliste
-
- 1 offenbart ein System 100 zum Trainieren eines neuronalen Netzes.
- 2 offenbart ein computerimplementiertes Verfahren 200 zum Trainieren eines neuronalen Netzes.
- 3 offenbart ein Beispiel eines Gitters.
- 4 zeigt einen beispielhaften Graphen der Ergebnisse der Knotenoptimierung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Offenbarung werden hier beschrieben. Es ist jedoch zu beachten, dass die offenbarten Ausführungsformen lediglich Beispiele sind und andere Ausführungsformen verschiedene und alternative Formen annehmen können. Die Figuren sind nicht notwendigerweise maßstabsgetreu; einige Merkmale können übertrieben oder verkleinert sein, um Einzelheiten bestimmter Komponenten zu zeigen. Daher sind spezifische, hier offenbarte strukturelle und funktionale Einzelheiten nicht als einschränkend zu verstehen, sondern lediglich als repräsentative Grundlage, die Fachleuten auf diesem Gebiet eine Anleitung bieten soll, um die Ausführungsformen auf vielfältige Weise einzusetzen. Wie Durchschnittsfachleute verstehen werden, sind verschiedene unter Bezugnahme auf irgendeine der Figuren veranschaulichte und beschriebene Merkmale kombinierbar mit Merkmalen, die in einer oder mehreren anderen Figuren veranschaulicht werden, um Ausführungsformen zu schaffen, die nicht ausdrücklich veranschaulicht oder beschrieben werden. Die Kombinationen von veranschaulichten Merkmalen ergeben repräsentative Ausführungsformen für typische Anwendungen. Verschiedene Kombinationen und Modifikationen der Merkmale, die im Einklang mit den Lehren dieser Offenbarung stehen, könnten jedoch für besondere Anwendungen oder Implementierungen gewünscht sein.
-
Die Offenbarung erörtert ein hybrides neuronales (Graphen)Netz, das ein traditionelles Graphenfaltungsnetz mit einem eingebetteten differenzierbaren Fluiddynamik-Simulator im Netz selbst kombiniert. Durch Kombinieren eines tatsächlichen CFD-Simulators (der für eine viel gröbere Auflösungsdarstellung des Problems ausgeführt wird) mit dem Graphennetz zeigen wir, dass wir sowohl gut auf neue Situationen verallgemeinern können als auch von der deutlichen Beschleunigung neuronaler CFD-Netzvorhersagen profitieren können, wobei auch die grobe CFD-Simulation allein deutlich übertroffen wird.
-
Ein hybrider Ansatz, der die Vorteile neuronaler (Graphen)Netze für schnelle Vorhersagen mit dem physischen Realismus eines CFD-Simulators in Industriequalität kombiniert, wird nachstehend offenbart. Das System kann ein Graphenfaltungsnetz (Graph Convolution Network, GCN) beinhalten, das direkt auf das nicht-einheitliche Gitter wirkt, welches bei typischen CFD-Simulationsaufgaben verwendet wird. Die Verwendung von GCNs kann wichtig sein, weil alle realistischen CFD-Solver auf diese unstrukturierten Gitter wirken anstatt direkt auf das reguläre Raster, das typischerweise bei Faltungsnetzen verwendet werden kann, um CFD-Simulationen anzunähern. Zweitens kann das System einen (differenzierbaren), mit einer viel gröberen Auflösung betriebenen CFD-Solver direkt in das GCN selbst integrieren. Auch wenn sie typischerweise wie Blackboxen behandelt werden, können moderne CFD-Simulatoren selbst als (kostenintensive) „Schichten“ in einem tiefen Netz genutzt werden. Unter Verwendung gut untersuchter Adjunktenverfahren können moderne Solver Gradienten der Ausgabemengen einer Simulation in Bezug auf das Eingabegitter berechnen. Dies erlaubt es dem System, eine schnelle CFD-Simulation (beschleunigt dadurch, dass sie auf ein viel kleineres Gitter wirkt) in das Netz selbst zu integrieren, und erlaubt es uns, das GCN und die Gittereingabe in die Simulationsengine gemeinsam zu trainieren, und dies alles in einer durchgehenden Art und Weise. Der kombinierte Ansatz kann eine wesentlich bessere Leistung erzielen als die grobe CFD-Simulation allein (beispielsweise kann das Netz zunächst einmal in der Lage sein, zuverlässigere Ergebnisse zu liefern als dies beim einfachen Ausführen einer schnelleren Simulation der Fall ist) und verallgemeinert auf neuartige Situationen viel besser als ein reiner graphennetzbasierter Ansatz. Der Ansatz kann wesentlich schneller sein als das Ausführen der CFD-Simulation für das Originalgrößengitter selbst. Im Vergleich zu einem CFD-Solver, der ohne tiefes Lernen (Deep Learning) verwendet wird, führen die in dieser Offenbarung nachstehend gezeigten verschiedenen Ausführungsformen Simulationen genauer aus, und auch schneller, da der CFD-Solver auf ein gröberes Gitter wirkt. In Relation zu Deep-Learning-Ansätzen, die nicht über integrierte CFD-Solver verfügen, ist dieses Verfahren auch besser in der Lage, auf neue Situationen zu verallgemeinern.
-
1 zeigt ein System 100 zum Trainieren eines neuronalen Netzes. Das System 100 kann eine Eingabeschnittstelle für das Zugreifen auf Trainingsdaten 192 für das neuronale Netz umfassen. Beispielsweise kann, wie in 1 veranschaulicht, die Eingabeschnittstelle durch eine Datenspeicherschnittstelle 180 gebildet werden, die auf die Trainingsdaten 192 aus einem Datenspeicher 190 zugreifen kann. Beispielsweise kann es sich bei der Datenspeicherschnittstelle 180 um eine Speicherschnittstelle oder eine persistente Datenspeicherschnittstelle 30 handeln, z. B. eine Festplatten- oder eine SSD-Schnittstelle, aber auch um eine PAN-, LAN- oder WAN-Schnittstelle (für den persönlichen, lokalen oder Weitverkehrsnetzbereich) wie etwa eine Bluetooth-, Zigbee- oder Wi-Fi-Schnittstelle oder eine Ethernet- oder Glasfaserschnittstelle. Bei dem Datenspeicher 190 kann es sich um einen internen Datenspeicher des Systems 100 handeln, wie etwa ein Festplattenlaufwerk oder eine SSD, aber auch um einen externen Datenspeicher, z. B. einen über das Netzwerk zugänglichen Datenspeicher.
-
In einigen Ausführungsformen kann der Datenspeicher 190 ferner eine Datendarstellung 194 einer untrainierten Version des neuronalen Netzes umfassen, die für das System 100 über den Datenspeicher 190 zugänglich ist. Es ist jedoch einzusehen, dass die Trainingsdaten 192 und die Datendarstellung 194 des untrainierten neuronalen Netzes auch jeweils über einen anderen Datenspeicher zugänglich sein können, z. B. über ein anderes Subsystem der Datenspeicherschnittstelle 180. Jedes Subsystem kann einem Typ entsprechen, wie er vorstehend für die Datenspeicherschnittstelle 180 beschrieben wird. In anderen Ausführungsformen kann die Datendarstellung 194 des untrainierten neuronalen Netzes, auf Basis von Entwurfsparametern für das neuronale Netz, intern vom System 100 generiert werden und ist daher unter Umständen nicht explizit im Datenspeicher 190 gespeichert. Das System 100 kann ferner ein Prozessorsubsystem 160 umfassen, das dafür ausgelegt sein kann, während des Betriebs des Systems 100, eine iterative Funktion als Ersatz für einen Stapel von Schichten des zu trainierenden neuronalen Netzes bereitzustellen. Hierbei können die jeweiligen Schichten des zu ersetzenden Stapels von Schichten gemeinsam genutzte Gewichtungen aufweisen und können als Eingabe eine Ausgabe einer vorherigen Schicht empfangen, oder, für eine erste Schicht des Stapels von Schichten, eine anfängliche Aktivierung und einen Teil der Eingabe des Stapels von Schichten. Das Prozessorsubsystem 160 kann ferner dafür ausgelegt sein, das neuronale Netz unter Verwendung der Trainingsdaten 192 iterativ zu trainieren. Hierbei kann eine Iteration des Trainings durch das Prozessorsubsystem 160 einen vorwärtsgerichteten Ausbreitungsteil und einen rückwärtsgerichteten Ausbreitungsteil umfassen. Das Prozessorsubsystem 160 kann dafür ausgelegt sein, den vorwärtsgerichteten Ausbreitungsteil durchzuführen, indem, neben anderen gegebenenfalls durchgeführten Operationen, welche den vorwärtsgerichteten Ausbreitungsteil definieren, indem ein Gleichgewichtspunkt der iterativen Funktion bestimmt wird, an dem die iterative Funktion zu einem festen Punkt konvergiert, wobei das Bestimmen des Gleichgewichtspunktes das Verwenden eines numerischen Wurzelfindungsalgorithmus umfasst, um eine Wurzellösung für die iterative Funktion minus deren Eingabe zu finden, und durch Bereitstellen des Gleichgewichtspunktes als ein Ersatz für eine Ausgabe des Stapels von Schichten in dem neuronalen Netz. Das System 100 kann ferner eine Ausgabeschnittstelle für das Ausgeben einer Datendarstellung 196 des trainierten neuronalen Netzes umfassen, wobei diese Daten auch als trainierte Modelldaten 196 bezeichnet werden können. Beispielsweise kann, wie auch in 1 veranschaulicht, die Ausgabeschnittstelle durch die Datenspeicherschnittstelle 180 gebildet werden, wobei die besagte Schnittstelle in diesen Ausführungsformen eine Eingabe/Ausgabe („E/A“)-Schnittstelle ist, über welche die trainierten Modelldaten 196 im Datenspeicher 190 gespeichert werden können. Beispielsweise kann die Datendarstellung 194, welche das „untrainierte“ neuronale Netz definiert, während oder nach dem Trainieren wenigstens teilweise durch die Datendarstellung 196 des trainierten neuronalen Netzes dahingehend ersetzt werden, dass die Parameter des neuronalen Netzes, wie etwa Gewichtungen, Hyperparameter und andere Arten von Parametern des neuronalen Netzes, angepasst werden, damit sie das Training für die Trainingsdaten 192 widerspiegeln. Dies wird auch in 1 durch die Bezugszeichen 194, 196 veranschaulicht, die auf denselben Datensatz des Datenspeichers 190 verweisen. In anderen Ausführungsformen kann die Datendarstellung 196 getrennt von der Datendarstellung 194, welche das „untrainierte“ neuronale Netz definiert, gespeichert sein. In einigen Ausführungsformen kann die Ausgabeschnittstelle von der Datenspeicherschnittstelle 180 getrennt vorliegen, aber kann im Allgemeinen einem Typ entsprechen, wie er vorstehend für die Datenspeicherschnittstelle 180 beschrieben wird.
-
2 ist ein Beispiel für eine Darstellung des CFD GCN-Modells. Das Netz arbeitet mit zwei unterschiedlichen Graphen, einem „feinen“ Gitter 211, über das die CFD-Simulation berechnet werden soll, und einem „groben“ Gitter 201 (anfänglich eine einfache gröbere Version des Feingitters, aber letztendlich durch das Modell abgestimmt), das als Eingabe für den CFD-Solver 203 fungiert. Als Eingabe nimmt das Netz eine kleine Anzahl von Parametern, welche die Simulation steuern. Für den Fall der Experimente in den nachstehend beschriebenen Ausführungsformen, in denen das System die ein aerodynamisches Profil umgebenden Flussfelder vorhersagen kann, können diese Parameter 202 den Anstellwinkel (Angle of Attack, AoA) und die Mach-Zahl beinhalten. Diese Parameter 202 können für die CFD-Simulation bereitgestellt werden und können auch an die anfänglichen Merkmale des GCN-Knotens 213 angehängt werden. Auch wenn dies eine relativ geringdimensionale Aufgabe erscheinen mag, können diese zwei Komponenten die Ausgabe der Simulation drastisch verändern und sie sind für traditionelle Modelle schwer zu erlernen, wenn eine Verallgemeinerung außerhalb des präzisen Wertbereichs erfolgt, der verwendet wird, um das Netz zu „trainieren“. Zusätzlich kann das CFD-GCN-Modell in einer Anwendung verwendet werden, die Temperatur und Anstellwinkel oder andere Designparameter nutzt, um den Fluidfluss und Turbulenzen durch Röhren zu bestimmen, oder eine Anwendung, die geometrische oder formbezogene Optimierungsparameter nutzt, um Geräusche oder Turbulenzen zu bestimmen, die von Lüfterflügeln oder anderen beweglichen Teilen eines Objekts erzeugt werden. Dies kann, ohne jedoch hierauf beschränkt zu sein, Anwendungen beinhalten, die im Rahmen von Wärmeableitung, Lüfterflügelzirkulation, Propellerzirkulation etc. genutzt werden.
-
Das Netz kann betrieben werden, indem zuerst eine CFD-Simulation für die Grobgittereingabe 201 ausgeführt wird, während gleichzeitig der Graph verarbeitet wird, der durch das Feingitter 211 mit einem oder mehreren GCNs 213 definiert wird. Das System kann dann die Ergebnisse der Simulation per Upsampling 207 hochrechnen und verkettet diese mit einer Zwischenausgabe 215 von einem GCN bei Schritt 209. In noch einer anderen alterativen Ausführungsform kann das System die nicht per Upsampling hochgerechnete Grobgitterlösung U0 und das Feingitter kombinieren, indem einfach alle jeweiligen Knoten herangezogen werden und daraus ein Gitter gebildet wird, sodass die Anzahl von Knoten in dem resultierenden Gitter gleich der (Anzahl von Grobgitterknoten) + (Anzahl von Feingitterknoten) ist.
-
Abschließend kann das System zusätzliche GCN-Schichten 217, 213 auf diese verbundenen Merkmale anwenden, wobei letztlich die gewünschten Ausgabewerte 225 vorhergesagt werden (in dieser Umgebung kann es sich um die Geschwindigkeits- und Druckfelder an jedem Knoten in dem Feingitter 211 handeln). Beispielsweise kann das Feingitter 211 6600 Knoten beinhalten, während ein Grobgitter 201 550 Knoten für dasselbe aerodynamische Profil oder denselben Satz von Parametern beinhalten kann. Das Feingitter 211 kann 1,5-mal, 2-mal, 3-mal, 4-mal, 5-mal, 10-mal etc. mehr Knoten beinhalten als das Grobgitter 201. Beide Gitter können gemischte dreieckige oder vierseitige Gitter in den verschiedenen Ausführungsformen sein.
-
Die für das CFD-GCN verwendete Graphenstruktur kann direkt von der Gitterstruktur abgeleitet sein, die von traditioneller CFD-Software verwendet wird, um das physische System zu simulieren. Das System kann ein zweidimensionales, dreieckiges Gitter M = (X; E; B) berücksichtigen. Bei dem ersten Element, X
i ∈ ℝ
N×2, kann es sich um eine Matrix handeln, welche die (x, y) Koordinaten der N Knoten enthält, aus denen sich das Gitter zusammensetzt. Das zweite,
kann ein Satz von M dreieckigen Elementen sein, definiert durch die Indizes (i; j; k) der zugehörigen Komponentenknoten. Das dritte,
kann ein Satz von L Grenzpunkten sein, definiert als ein Paar, bestehend aus dem Index des Knotens und einem Kennzeichner b, der identifiziert, zu welcher Begrenzung der Punkt gehört (z. B. aerodynamisches Profil, Fernfeld etc.). Ein solches Gitter M definiert klar einen Graphen G
M = (X; E
G), dessen Knoten dasselbe X aufweisen und dessen Kanten E
G direkt von den Gitterelementen E abgeleitet werden können. Umgekehrt kann ein Graph auch in ein Gitter konvertiert werden, falls die Struktur seiner Kanten entsprechend ausgeführt ist und ein Satz von Grenzpunkten B bereitgestellt wird.
-
Zusätzlich zu dem Feingitter 211, das verwendet wird, um die CFD-Simulation zu berechnen, kann das System auch ein Grobgitter 201 berücksichtigen, welches als MC bezeichnet ist. Das Grobgitter 201 hat dieselbe Struktur wie das Feingitter M, wobei die Anzahl von Knoten um über 10x (oder einen beliebigen anderen Wert) heruntergerechnet wird (Downsampling), was somit eine viel schnellere Simulation ermöglicht. Auch wenn dieses Gitter technisch ebenfalls einen Graphen definiert, berechnet das System ein beliebiges GCN unter Umständen nicht direkt über diesen Graphen, sondern verwendet ihn stattdessen nur als Eingabe für die Simulationsengine.
-
Zusätzlich zu den Graphen selbst empfängt das Modell als Eingabe auch zwei physikalische Parameter 202, die das Verhalten des Flusses um ein aerodynamisches Profil herum definiert: den Anstellwinkel (Angle of Attack, AoA) und die Mach-Zahl. Diese zwei Parameter werden beide in die Simulation eingespeist und als anfängliche Knotenmerkmale für jeden Knoten im GCN angehängt. Diese zwei Parameter, oder beliebige andere Parameter für andere Anwendungen, können die Mengen sein, die von Simulation zu Simulation variieren, und somit besteht die Hauptaufgabe des GCNs darin, zu erlernen, wie sich das resultierende Flussfeld anhand dieser zwei Parameter, welche die Simulation simulieren, vorhersagen lässt.
-
Eine zentrale Komponente des CFD-CGN-Modells kann der integrierte differenzierbare Fluidsimulator 203 sein. Als Eingabe kann der Fluidsimulator 203 das Grobgitter 201 MC heranziehen, plus den Anstellwinkel und die Mach-Zahl, und gibt Vorhersagen 205 zu Geschwindigkeit und Druck an jedem Knoten in dem Grobgraphen aus. Das System kann (in einem Beispiel) den SU2-Fluidsimulator 203 einsetzen, bei dem es sich um eine quelloffene CFD-Simulation in Industriequalität handelt, die unter vielen Forschern im Bereich Luft- und Raumfahrt und darüber hinaus weit verbreitet ist. Kurz, SU2 verwendet ein finites Volumenverfahren (Finite Volume Method, FVM), um die Navier-Stokes-Gleichungen über das zugehörige Eingabegitter zu lösen. Ausschlaggebend für unsere Zwecke ist, dass der SU2-Solver auch ein Adjunktenverfahren unterstützt, was es dem System ermöglicht, die Ausgaben der Simulation in Bezug auf deren Eingaben und Parameter (in diesem Fall das Grobgitter 201 MC selbst, plus den Anstellwinkel und die Mach-Zahl) zu differenzieren.
-
Intuitiv sollte der CFD-Solver 203 (z. B. ein SU2-Solver) als eine zusätzliche Schicht in unserem Netz betrachtet werden, welche den Anstellwinkel und die Mach-Zahl als Eingabe heranzieht und die ausgegebenen Geschwindigkeits- und Druckfelder am Solver-Ausgang 205 erzeugt. Das Äquivalent der „Parameter“ einer traditionellen Schicht ist das Grobgitter selbst: unterschiedliche Konfigurationen für das Grobgitter eignen sich unterschiedlich (gut) für die Integration in den Rest des CFD-GCNs. Somit besteht eine der Hauptlernaufgaben für den SU2-Teil unseres Modells darin, das Grobgitter in einer Weise anzupassen, die letztendlich die Genauigkeit des resultierenden vollständigen CFD-GCN-Modells maximiert. Das Adjunktenverfahren in SU2 verwendet eine Umkehrmodus-Differenzierung, so dass Gradienten in Bezug auf einen skalarwertigen Verlust, wie etwa den Gesamt-Vorhersagefehler des CFD-GCNs, effizient berechnet werden können.
-
Abschließend, auch wenn dies streng genommen kein Forschungsbeitrag ist, haben wir im Rahmen dieses Projekts eine Schnittstellenschicht zwischen dem SU2-Solver 203 und der PyTorch-Bibliothek entwickelt. Diese Schnittstelle erlaubt es, vollständige SU2-Simulationen wie eine beliebige andere Schicht innerhalb eines PyTorch-Moduls zu behandeln, und wir hoffen, dass sie zusätzliche Anwendungen am Schnittpunkt zwischen Deep Learning und CFD-Simulation (in Industriequalität) finden wird.
-
Die Ausgabe der vorstehend beschriebenen Grobsimulation ist ein Gitter mit den vorhergesagten Werten für jedes Feld an jedem Knoten. Damit dieses für das Generieren der abschließenden Vorhersage verwendet wird, muss es vom System unter Umständen auf die Größe des Feingitters hochgerechnet werden (Upsampling). Das System kann dies erreichen, indem aufeinanderfolgende Anwendungen einer quadratabstandsgewichteten KNN (k-nächster-Nachbar)-Interpolation durchgeführt werden. Die Knotenpositionen in dem Grobgitter können sich auf die folgenden Symbole beziehen, welche austauschbar benutzt werden,
Erstes Symbol | Alternatives Symbol | Bedeutung |
XC | XD | Knotenpositionen im Grobgitter |
UC | D | Knotenmerkmale im Grobgitter |
XF | XU | Knotenpositionen im Feingitter |
UF | U | Knotenmerkmale im Feingitter |
-
Wir wollen das erste Element, X
i ∈ ℝ
NU×3, die hochgerechnete Version eines gröberen Graphen D ∈ ℝ
ND×3 nennen. Für jede Reihe U
(i) mit einer entsprechenden Knotenposition im Feingitter kann das System den Satz {n
1, ... n
k} finden, welcher die Indizes der k-nächsten Knoten zu den entsprechenden Knotenpositionen in dem gröberen Graphen X
D enthält. Das System kann jedes Knotenmerkmal in dem Feingitter U
(i) definieren. Da ein Grobgitter mit Positionen X
C und Merkmalen U
C und Feingitterpositionen X
F gegeben ist, erzeugt diese Operation somit Feingittermerkmale U
F. Dies erfolgt unter Verwendung einer k-nächster-Nachbar-Operation. Man bezeichne den Knoten mit dem Index i im Feingitter als
und nehme {n
1, ... , n
k} als die k Knoten (Standard kann 3 Knoten sein, k = 3) im Grobgitter X
C am nächsten an
Dann sind die Merkmale für den Knoten i in dem Feingitter gegeben durch:
-
wobei gilt:
-
-
Wie in 2 dargestellt, wird die Ausgabe der Grobsimulation durch eine Folge von Faltungsschichten verarbeitet. Um direkt auf die Gitterausgabe der CFD-Simulation zu wirken, kann das System die Architektur des Graphenfaltungsnetzes (Graph Convolution Network, GCN) nutzen. Die Architektur kann eine Faltungsschicht für Graphen definieren.
-
Ein allgemeiner Graph bestehend aus N
Z Knoten, jeweils mit F Merkmalen, ist durch die zugehörige Merkmalmatrix Z
i ∈ ℝ
N Z×F und die zugehörige Adjazenzmatrix A ∈ ℝ
N Z×N
Z definiert. Wir können dann ferner
definieren, wobei / die Identitätsmatrix und D̃ die Diagonalgradmatrix ist, mit einer zugehörigen Diagonale, die durch
gegeben ist. Dann hat eine GCN-Schicht
217 mit F Eingabekanälen und F' Ausgabekanälen, parametrisiert durch die Gewichtungsmatrix W ∈ ℝ
F×F' und den Bias-Term b ∈ ℝ
N z×F', als Ausgabe:
-
Bei Zusammenwirken aller Komponenten kann das System eine SU2-Simulation mit dem Grobgitter
201 und den physikalischen Parametern
202 ausführen. Die Ausgabe
205 dieser Grobsimulation wird L mal hochgerechnet (Upsampling).
-
Gleichzeitig sorgt das Feingitter
211 dafür, dass die physikalischen Parameter und die vorzeichenbehaftete Distanzfunktion (Signed Distance Function, SDF) an jedes Merkmal der zugehörigen Knoten angehängt werden. Hierbei kann die SDF an einem Knoten als dessen euklidischer Abstand zum nächsten Knoten an der Begrenzung des aerodynamischen Profils definiert sein. Der resultierende Graph wird dann durch eine Reihe von Graphenfaltungen
213 weitergegeben, was durch die Graphenfaltungen
213,
219,
221,
223 gezeigt wird. In einer spezifizierten Faltungsschicht k wird der endgültige upgesampelte Wert U
L an die Ausgabe Z
k 221 der k-ten Faltung angehängt. Ein weiterer Satz von Faltungen
223 wird durchgeführt, um die endgültige Vorhersage Ŷ 225 zu generieren. Jeder dieser Schritte wird in den nachstehenden Formeln skizziert:
In einem solchen Beispiel kann [·,·] die Matrixverkettungsoperation über die Spaltendimension sein.
-
Da das gesamte CFD-GCN wie vorstehend formuliert als ein einzelnes differenzierbares tiefes Netz behandelt werden kann (einschließlich der SU2-„Schicht“ oder der CFD-Solver-„Schicht“), kann der Trainingsprozess selbst geradlinig sein. Das Modell wird trainiert, um die Ausgabefelder Ŷ ∈ ℝ
N×3 vorherzusagen, bestehend aus den Komponenten x und y von Geschwindigkeit und Druck an jedem Knoten im Feingitter, durch Minimieren des MSE-Verlustes (Mean Squared Error, mittlerer Quadratfehler) ℓ (oder irgendeiner anderen Art von Verlustfunktion, die Grundwahrheit mit der Netzausgabe vergleicht) zwischen der Vorhersage Ŷ und der Grundwahrheit
wobei die Grundwahrheit Y in diesem Fall durch Ausführen des gesamten SU2-Solvers zur Konvergenz am ursprünglichen Feingitter erhalten wird. Die Trainingsprozedur optimiert die Gewichtungsmatrizen W
i und b
i der GCNs und die Positionen der Knoten im Grobgitter X
C per Rückwärtsausbreitung durch die CFD-Simulation. Der Verlust kann durch Verwendung eines Adam-Optimierers (oder irgendeines anderen Optimierers) mit einer Lernrate von α = 5 · 10
-5 minimiert werden.
-
Das System kann auch eine Rückwärtsdurchlauf-Sequenz (Backward Pass Sequence) ausführen, um das System über die Zeit zu verbessern. Zusammengefasst kann das System den Verlust L erhalten, indem eine Vorhersage Ŷ mit einer Grundwahrheit Y (unter Verwendung einer mittleren Quadratfehlerfunktion oder einer beliebigen anderen Verlustfunktion) verglichen wird. Die Rückwärtsdurchlauf-Funktion oder die Rückwärtsdurchlauf-Sequenz können verschiedene Schritte nutzen. Das System kann die nachstehenden Abfolgen (ohne spezifische Reihenfolge) nutzen:
- a. Verlustgradienten
in Bezug auf Graphenfaltungsschichtparameter für i = 1, ..., K
- b. Verlustgradient
in Bezug auf Solver-Ausgabe
- c. Verwenden von
und Adjunktenverfahren zum Berechnen von
-
Somit kann das System Gradienten und irgendeinen Deep-Learning-Optimierungsalgorithmus (stochastischer Gradientenabstieg, ADAM etc.) verwenden, um die Parameter θi und die Grobgitterpositionen XC zu aktualisieren.
-
Das Netz kann die Fähigkeit zum Differenzieren durch die Solver-Funktion nutzen, um die besten Knotenpositionen im Grobgitter XC zu erlernen. Das System könnte Faltungsschichten vor dem CFD-Solver platzieren und könnte außerdem Parameter in diesen Schichten durch dasselbe Verfahren erlernen. Der Algorithmus kann auch eine einzelne Upsampling-Operation (z. B. U1 = Upsample (XC, U0, XF)) beinhalten, um das Grobgitter zur Anpassung an die Größe des Feingitters zu erweitern; allerdings kann das Sample alternativ auch in mehrere Upsampling-Operationen zerlegt werden, falls gewünscht. Dies kann von Vorteil sein, falls das Grobgitter viel kleiner ist als das Feingitter.
-
In einer alternativen Ausführungsform können die Graphenfaltungen durch eine beliebige Art von neuronaler Netzschicht ersetzt werden, welche auf Graphen wirkt (z. B. Graph-Selbstaufmerksamkeitsschichten, Graph-Transformer) oder kann durch Faltungsschichten ersetzt werden, falls sich das Gitter in einem Raster befindet. Das System kann die Verlustfunktion, den Optimierer oder die Aktivierungsfunktion ändern. Die Netzarchitektur kann mit standardmäßigen Deep-Learning-Trainingstechniken oder Modifikationen (Dropout, Stapelnormalisierung, Schichtnormalisierung etc.) kompatibel sein. In noch einer anderen alterativen Ausführungsform kann das System die nicht upgesampelte Grobgitterlösung U0 und das Feingitter kombinieren, indem alle jeweiligen Knoten herangezogen werden und ein Gitter daraus gebildet wird, sodass die Anzahl von Knoten in dem resultierenden Gitter gleich der (Anzahl von Grobgitterknoten) + (Anzahl von Feingitterknoten) ist.
-
3 veranschaulicht ein Beispiel für ein Gitter. Ein Problem kann auftreten, wenn das eingegebene Grobgitter optimiert wird. Graduell, wenn die Positionen durch die Gradientenabstiegsaktualisierungen verschoben werden, ist es möglich, dass in einem gegebenen dreieckigen Element einer der Knoten (z. B. der Knoten
301) über eine Kante hinausgeht, was durch den Kreuzungsknoten
303 gezeigt wird. Dies kann nicht-physische Rauminhalte generieren, welche die Stabilität der Simulationen beeinträchtigen können, was häufig eine Konvergenz behindert. Mit anderen Worten kann der Optimierer bei jedem Gradientenaktualisierungsschritt die Gitterknoten
301 aktualisieren, indem die Aktualisierung
mit einer kleinen Aktualisierungsmatrix ΔX
c durchgeführt wird, welche dieselbe Form hat wie X
c. Falls keine Modifikation erfolgt, kann diese ΔX
c das vorstehend erwähnte Problem verursachen. Somit könnte ein Knoten über die Kante des zugehörigen Dreieckelements geschoben werden, wodurch eine Überlappung von Elementen generiert wird. Solche nicht-physischen Situationen können die Konvergenz der Simulation beeinträchtigen. Wenn dies geschieht, ändert sich das Kreuzprodukt zwischen geordneten Kanten. Vor der Aktualisierung ist e
1 × e
0 > 0, nachher hingegen ist ê
1 × e
2 < 0.
-
Um nicht-physische Rauminhalte zu vermeiden, kann das System eine projizierte Aktualisierung P(Δ Xc) generieren, sodass nur nicht-degenerierende Aktualisierungen durchgeführt werden. Das System kann mit P(Δ Xc) = Δ Xc beginnen. Dann kann das System prüfen, welche Elemente in dem Gitter einen Knoten aufweisen können, der durch Δ Xc über eine Kante geschoben wird. Dies kann erfolgen, indem das Kreuzprodukt von zwei Kanten in jedem Dreieckelement in einer konsistenten Reihenfolge berechnet wird. Falls das Vorzeichen des Kreuzprodukts mit der Aktualisierung Xc + ΔXc wechselt,
bedeutet dies, dass ein Knoten über eine Kante hinausgeht, da die Reihenfolge der Knoten hierdurch geändert wurde. Dies kann in 3 dargestellt sein, wo das Kreuzprodukt der Kanten e1 und e2 vor der Aktualisierung positiv ist, hinterher jedoch negativ.
-
Für jedes Element E = (i, j, k), das invertiert wurde, kann das System die Reihen i, j, und k von P(Δ Xc) auf 0 setzen und somit keine Aktualisierungen für diese Punkte in Xc vornehmen. Da das Entfernen der Aktualisierungen für einige Knoten bewirken könnte, dass neu Elemente invertiert werden, kann diese Prozedur wiederholt werden, bis keine Punkte mehr invertiert werden. Sobald das System diesen Zustand erreicht, kann das System die projizierte Gradientenaktualisierung durchführen:
-
-
4 zeigt einen beispielhaften Graphen der Ergebnisse der Knotenoptimierung. Das Optimieren der Knoten eines Gitters soll einen Vorhersageverlust mit und ohne Korrektur der Gradientenaktualisierung verbessern. Während die Gitteroptimierung ohne die Korrektur schnell degeneriert und der Verlust divergiert, lernt das Gitter mit der projizierten Gradientenaktualisierung nahtlos, selbst bei einer höheren Lernrate α.
-
Die in dieser Patentanmeldung offenbarten Prozesse, Verfahren oder Algorithmen können für eine Verarbeitungsvorrichtung, eine Steuerung oder einen Computer bereitstellbar sein bzw. von dieser/diesem implementiert werden, wobei diese eine beliebige vorhandene, programmierbare elektronische Steuerung oder eine dedizierte elektronische Steuerung aufweisen können. In gleicher Weise können Prozesse, Verfahren oder Algorithmen als Daten und Anweisungen gespeichert werden, die von einer Steuerung oder einem Computer in vielfältigen Formen ausgeführt werden können, einschließlich, jedoch nicht beschränkt auf dauerhaft auf einem nicht beschreibbaren Medium, etwa ROM-Vorrichtungen, gespeicherte Informationen oder veränderbar auf beschreibbaren Speichermedien wie etwa Disketten, Magnetbändern, CDs, RAM-Geräten und anderen magnetischen und optischen Datenträgern gespeicherte Informationen. Die Prozesse, Verfahren oder Algorithmen können auch in einem ausführbaren Softwareobjekt implementiert werden. Alternativ können die Prozesse, Verfahren oder Algorithmen ganz oder teilweise unter Verwendung geeigneter Hardwarekomponenten ausgeführt sein, wie etwa anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs), feldprogrammierbare Gate-Arrays (FPGAs), Zustandsmaschinen, Steuerungen oder sonstige Hardwarekomponenten oder -vorrichtungen oder eine Kombination von Hardware-, Software- und Firmwarekomponenten.
-
Auch wenn vorstehend beispielhafte Ausführungsformen beschrieben werden, ist nicht beabsichtigt, dass diese Ausführungsformen alle möglichen Formen beschreiben, die durch die Patentansprüche abgedeckt werden. Die in dieser Spezifikation verwendeten Ausdrücke sind lediglich Ausdrücke beschreibender Art und beinhalten keinerlei Einschränkung. Es ist einzusehen, dass verschiedene Änderungen vorgenommen werden können, ohne den Geist und Schutzbereich der Offenbarung zu verlassen. Wie vorstehend beschrieben, können die Merkmale verschiedener Ausführungsformen kombiniert werden, um weitere Ausführungsformen der Erfindung zu bilden, die hier nicht ausdrücklich beschrieben oder veranschaulicht werden. Auch wenn verschiedene Ausführungsformen als vorteilhaft oder bevorzugt gegenüber anderen Ausführungsformen oder Implementierungen gemäß dem Stand der Technik in Bezug auf eine oder mehrere erwünschte Eigenschaft(en) hätten beschrieben werden können, erkennen Durchschnittsfachleute, dass ein(e) oder mehrere Merkmal(e) oder Eigenschaft(en) enthalten sein können, um erwünschte Gesamtsystemattribute zu erreichen, die von der jeweiligen Anwendung und Implementierung abhängen. Diese Attribute beinhalten, sind jedoch nicht beschränkt auf Kosten, Stärke, Dauerhaftigkeit, Lebenszykluskosten, Marktgängigkeit, Erscheinungsbild, Verpackung, Größe, Gebrauchsfähigkeit, Gewicht, Herstellbarkeit, einfache Montage etc. Von daher gilt, dass, soweit irgendwelche Ausführungsformen in Bezug auf eine oder mehrere Eigenschaften als weniger wünschenswert beschrieben werden als andere Ausführungsformen oder Implementierungen nach dem Stand der Technik, diese Ausführungsformen nicht außerhalb des Schutzbereichs der Offenbarung liegen und für bestimmte Anwendungen wünschenswert sein können.