Lösung

Bei der Co-Simulation zwischen einerseits hochdynamischen Prozessen wie Partikelsimulationen und deutlich langsameren Vorgängen in der kontinuumsmechanischen Welt sieht man sich mit stark unterschiedlichen Zeitskalen konfrontiert.

Die DEM-Repulsion dominiert im Wesentlichen die Zeitschrittweite des Systems. Ein elastischer Stoß wird während der Kontaktzeit in etwa 50 Zeitschritte zerlegt.

Die folgende Animation zeigt den zeitlichen Verlauf der auf die elastische Membrane wirkenden Knotenkräfte über einen Zeitraum von ca. 50 Mikrosekunden bzw. 420 Zeitschritten.

Copyright: Fraunhofer SCAI / Fraunhofer IWM

Die Struktur scheint erstarrt, auch wenn die Kräfte stark variieren. Der Effekt ist der kleinen Zeitschrittweite und dem Zeitintervall geschuldet und veranschaulicht die unterschiedlichen Zeitskalen, auf denen die Partikel- und Strukturdynamik ablaufen.

Neben der Zeitskalenproblematik gibt es Aufgabenstellungen in der Praxis (z.B. aus dem Bergbau), bei denen die Dynamik der Struktur eher weniger gefragt ist, sondern eine mittlere Belastung bzw. Deformation.

Ein solcher Fall ist die Co-Simulation eines transienten Partikelcodes mit einem rein statischen Strukturmodell. Hier sind zeitgemittelte Kräfte und Deformationen Ziel der Berechnung.

Für die unterschiedlichen Arten von Co-Simulationen stehen jeweils passende Kopplungs-Algorithmen zur Verfügung:

Ereignis-basiert
Ein transienter Partikelcode wird mit einem statischen Strukturmodell gekoppelt. Die Kräfte sind Zeitintegrale bzw. Zeitmittelwerte und belasten ein statisches Strukturmodell.

Synchrone Zeitschrittweite
Beide Partner der Co-Simulation verwenden die identische Zeitschrittweite. Hierbei sind zwei Verfahren zu unterscheiden.

  1. Minimale Zeitschrittweite:
    beide Partner-Codes akzeptieren eine minimale Zeitschrittweite, die laufend ermittelt und zwischen den Codes synchronisiert wird.
  2. Master-Slave Konzept:
    Vorgabe der Zeitschrittweite durch nur einen der Partner-Codes. Das Verfahren kann zwar bei expliziten Codes zu numerischen Instabilitäten führen, anderseits bei impliziten Codes die Rechenzeit deutlich verringern.

Asynchrone Zeitschrittweite
Jeder Code verwendet die für ihn bestmögliche, möglicherweise die größte Zeitschrittweite. Das erfordert die Speicherung einer Zeithistorie, Zeitinterpolationen und Zeitintegrationen.

Auch in diesem Fall sind zwei Varianten möglich.

  1. Indiviuell:
    Jeder Code arbeitet mit der für ihn optimalen Zeitschrittweite.
  2. Adaptiv:
    Die Zeitschrittweite des langsameren Codes wird adaptiv der des schnelleren Lösers anhand des Rechenzeitbedarfes angepasst, um so bei optimaler Auslastung des Rechners die Interpolationsfehler zu minimieren.