Jakie są najlepsze praktyki dotyczące algorytmów i wdrażania symulacji wielofizycznych?

16

Symulacja wielofizyczna obejmuje sprzężenie wielu „fizyków”, często z różnymi skalami przestrzeni i / lub czasu. Ponadto kody pojedynczej fizyki są często pisane przez różne zespoły. Najczęściej stosowaną techniką sprzęgania jest podział operatora pierwszego rzędu, ale ma on słabą dokładność i stabilność. Jak określić, które algorytmy będą skuteczne w przypadku problemu będącego przedmiotem zainteresowania i jak powinienem skonstruować oprogramowanie, aby udostępnić te algorytmy?

Jed Brown
źródło

Odpowiedzi:

5

Zdecydowanie opowiadam się za całkowicie sprzężonym zespołem, ponieważ może on łatwo odtworzyć wersje podzielone przez operatora. W szczególności procedury, które obliczają resztki i jakobianów dla różnych fizyków, mogą być oddzielne, ale struktura powinna być w stanie je łączyć, tworząc ujednoliconą resztkę dla całego układu. Tak działa PETSc.

Następnie rozwiązania z podziałem operatora mogą być użyte jako warunek wstępny dla w pełni sprzężonego systemu lub jako samodzielny solver, wszystko z linii poleceń. Ponadto niektóre połączenia można zachować, a inne można odrzucić. PETSc obsługuje to poprzez interfejs PC FieldSplit. Umożliwia to replikację schematów hybrydowych, takich jak pół-niejawne ICE dla dynamiki płynów.

Matt Knepley
źródło
5

Ponieważ jest to bardzo aktywny obszar badań, waham się przed odpowiedzią na to pytanie, ale mam pewne doświadczenie, czego nie próbować.

Nie :

  • Weź stary kod aplikacji A i starą aplikację B, a następnie spróbuj połączyć je ze sobą
  • Użyj archaicznego kodu (sugerując, że nie można go używać w czasie), zamiast budować nową aplikację
  • Wymagaj ogromnych ram (> 10 wymaganych zależności) od nowych użytkowników, którzy zaczynają wnieść swój wkład
  • Załóżmy, że układ danych (siatki, macierze, wektory itp.) Jest łatwy do napisania

Zrób :

  • Stosuj standardowe praktyki programowania i, miejmy nadzieję, dobre wzorce projektowe
  • Przeczytaj literaturę na temat podziału operatora, aby zrozumieć ograniczenia dokładności i stabilności
Sean Farley
źródło