Czy istnieje biblioteka ogólnego przeznaczenia do ustrukturyzowanego dostosowywania siatki?

18

Adaptacyjne udoskonalanie siatki (AMR) jest powszechną techniką rozwiązywania problemu bardzo różnych skal przestrzennych w numerycznym rozwiązaniu PDE. Jakie biblioteki ogólnego przeznaczenia istnieją dla AMR w sieciach strukturalnych? Idealnie chciałbym coś w duchu PETSc, w którym biblioteka obsługuje tylko siatki adaptacyjne, a ja zapewniam fizykę i dyskretyzację (różnica skończona / objętość / element).

Idealna biblioteka byłaby

  • Modułowy : nie narzuca sposobu, w jaki piszę kod lub zbyt wiele struktur danych
  • Ogólne : nie obchodzi mnie, jakiego rodzaju dyskretyzacji stosuję
  • Wydajny : nie powoduje nadmiernego obciążenia
  • Równoległy i wysoce skalowalny

Biblioteki, które spełniają tylko podzbiór tych kryteriów, nadal byłyby interesujące.

Dodatek : Zdaję sobie sprawę z obszernej listy pakietów AMR Donny Calhoun , ale nie wiem, który z nich (jeśli w ogóle) spełnia powyższe kryteria. Tak więc przede wszystkim interesują mnie informacje od osób, które mają rzeczywiste doświadczenie z jednym lub (jeszcze lepszymi) dodatkowymi pakietami, w jaki sposób oceniają te warunki.

David Ketcheson
źródło
2
+1, jestem ciekawy, jakie oprogramowanie AMR również tam jest i wolałbym, aby spełniało kryteria, o których wspomniałeś powyżej.
Geoff Oxberry
Pomyślałem, że wspomnę o tym, że właśnie wydano najnowszą wersję Chombo i (jak twierdzi) łatwiej ją zintegrować z większym pakietem ( Informacje o wydaniu ). To nie jest poważna zmiana, więc są szanse, że niektóre rzeczy wciąż nie spełniają wszystkich twoich kryteriów.
Jeremy Kozdon,

Odpowiedzi:

14

Jedną biblioteką do rozważenia jest BoxLib . Jego kluczowe funkcje (ze strony internetowej) to:

  • Obsługa AMR o strukturze blokowej z opcjonalnym podcyklingiem w czasie
  • Obsługa danych skoncentrowanych na komórkach, twarzach i węzłach
  • Obsługa rozwiązań hiperbolicznych, parabolicznych i eliptycznych w hierarchicznej strukturze siatki
  • Wersje C ++ i Fortran90
  • Obsługuje model programowania hybrydowego z MPI i OpenMP
  • Podstawy dojrzałych zastosowań w spalaniu, astrofizyce, kosmologii i porowatych mediach
  • Zademonstrowano skalowanie do ponad 200 000 procesorów
  • Swobodnie dostępny dla zainteresowanego użytkownika
  • Istnieje również opakowanie Pythona (napisane przeze mnie) do dołączonej wersji Fortran (chociaż jest dość młode).

    Matthew Emmett
    źródło
    9

    Powinieneś także spojrzeć na libMesh . Jest ukierunkowany na metody elementów skończonych, ale poza tym myślę, że sprawdza większość twoich pól. W przeciwieństwie do BoxLib, jest to w pełni nieustrukturyzowana biblioteka elementów mieszanych, która ma pozostać, że obsługuje tety, piramidy, pryzmaty i heksahedry w tej samej siatce. Posiada również jeden z największych zestawów reguł integracji dla funkcji wielomianowych wysokiego rzędu. Jest skonfigurowany tak, abyś mógł bezpośrednio wywoływać PETSc (i niektóre inne biblioteki), więc masz taką samą skalowalność solvera jak PETSc.

    Z pewnością istnieje sposób na robienie libMesh, ale jest też sposób na robienie PETSc. Mam nadzieję, że to cię nie odstraszy.

    Bill Barth
    źródło
    4

    Spróbowałbym SAMRAI Znam co najmniej jeden kod, który z powodzeniem go wykorzystuje - IBAMR , kod metody zanurzonej granicy dla interakcji struktury płynów z AMR.

    John Travolta
    źródło
    Dzięki Johntra (i witamy w scicomp)! Czy zdarza ci się znać istotne różnice między SAMRAI a BoxLib? Możesz także użyć linków wstawiając tekst linku w [], a miejsce docelowe w ()
    Aron Ahmadia
    Niestety, nie wiem - tak na prawdę, że właśnie o tym słyszałem (BoxLib) po raz pierwszy. Właśnie z tego powodu zdecydowałem się dołączyć - aby uczyć się smt new poprzez nieformalną dyskusję z wami - dzięki.
    Johntra Volta
    Po drugie, SAMRAI, jest to bardzo przydatne ramy ogólnego przeznaczenia dla AMR. Bardzo podoba mi się również hybrydowy projekt C ++ / Fortran. Jądra obliczeniowe można pisać w Fortranie, tak jak powinny, a klasy C ++ zapewniają całą abstrakcję potrzebną do ukrycia wewnętrznego MPI i zarządzania pamięcią.
    talonmies,
    @AronAhmadia: BoxLib nie obsługuje częściowej interpolacji liniowej ze zmieniającymi się granicami Dirichleta w geometrycznej wielosiatce zorientowanej na komórki. Myśl dodałaby to jako interesujący punkt.
    Gaurav Saxena
    2

    Nie określiłeś struktury ani struktury.

    Spójrz na Paramesh, Pyramid, p4est, Dendro, Samrai i Chombo.

    Btw Pyramid nie robi zgrubienia.

    stali
    źródło
    1
    Dobry połów; Zredagowałem pytanie. Czy mógłbyś skomentować, jak dobrze te biblioteki spełniają moje kryteria?
    David Ketcheson