Speaker
Description
Im modernen Entwicklungsprozess, zum Beispiel im Bereich des Leistungsultraschalls oder bei der Materialprüfung mit hohen Anregungsamplituden, ist die Berücksichtigung nichtlinearer Effekte unerlässlich.
Hohe Signalamplituden führen zu Phänomenen wie Verschiebungen der Resonanzfrequenz und Auftreten höherer Harmonischer, die mit linearen Modellen nicht abzubilden sind.
Die Berücksichtigung dieser Effekte ist jedoch, insbesondere aufgrund der daraus resultierenden Komplexität in der Berechnung, aktuell nicht Stand der Technik.
Feldtheoretisch können solche Effekte in Simulation durch die Einführung eines elastischen Materialtensors dritter Stufe umgesetzt werden.
Aufgrund der aufwändigen Berechnungen der für die Lösung, zum Beispiel einer nichtlinearen Finite-Elemente-Formulierung, benötigten Residuen und der Jacobi-Matrizen stößt die Nutzung reiner Python-Bibliotheken (wie NumPy oder SciPy) an ihre Effizienzgrenzen.
Um dennoch effiziente Simulationen durchführen zu können, wird in diesem Beitrag eine Finite-Elemente Formulierung in C++ vorgestellt, welche mithilfe von pybind11 ein Python-Interface bereitgestellt.
Neben den Geschwindigkeitsvorteilen durch kompilierten Code bei der Assemblierung der Matrizen ermöglicht dieser Ansatz eine gezielte Optimierung der Speicherzugriffe auf den Materialtensor: Hierdurch lassen sich signifikante Performancegewinne vor Allem bei der Berechnung der Jacobi-Matrix erzielen.