Algebraiczny kod wielosiatkowy

9

Chciałbym zrozumieć więcej szczegółów na temat wdrażania algebraicznych metod wielosiatkowych (AMG). Czytałem „Samouczek wielosiatkowy”, który jest całkiem dobry i wyjaśniam wszystkie szczegóły interpolacji, operatora grubej siatki i wyboru grubej siatki dla AMG. Myślę jednak, że nie ma nic lepszego niż zabawę i czytanie kodu.

Chciałbym więc zapytać, czy ktoś zna jakikolwiek klasyczny „przykładowy kod” AMG, na przykład geometryczny wielosieciowy kod FORTRAN dostępny na końcu „Metod wieloskładnikowych” (SIAM) autorstwa SF McCormicka. Trudno jest uzyskać wysokiej jakości kod produkcyjny, taki jak BoomerAMG, aby dowiedzieć się więcej o tej metodzie.

Bernardo MR
źródło
Czy jesteś szczególnie zainteresowany klasycznym AMG (w przeciwieństwie do * wygładzonej agregacji)? Jeśli tak, proszę podać to w pytaniu.
Jed Brown

Odpowiedzi:

10

BoomerAMG jest częścią pakietu Hypre , który jest bardzo prosty do zdobycia. O wiele mniej skomplikowanym kodem, jeśli zaczynasz patrzeć na te metody, może być PyAMG .

Peter Brune
źródło
Tak, przyjrzałem się PyAMG, który jest bardzo ładnym kodem, ale ma wszystkie te rzeczy na temat pakowania kodu C / C ++ w Pythonie, implementuje inne metody AMG inne niż „klasyczna” i tak dalej. Szukałem czegoś prostszego, czego ludzie używają do nauczania.
Bernardo MR
4
Niestety, ogólne doświadczenia związane z używaniem i próbowaniem przyczynienia się do kodów AMG polegają na tym, że jeśli nie masz wielu opcji, nie jesteś w stanie rozwiązać niczego, co mogłoby być interesujące. W związku z tym typowy pakiet AMG będzie zawierał szereg opcji aproksymacji połączeń, budowy interpolatora i wygładzania, które z pewnością trudno przeanalizować przez odczyt kodu. To powiedziawszy, klasyczny AMG jest bardzo prosty, a wdrożenie go samemu lub poproszenie uczniów o zrobienie tego samodzielnie (w zależności od ich umiejętności) może być dobrym rozwiązaniem.
Peter Brune,
2

Bardzo polecam wprowadzenie Alfio Boriziego do algebraicznej metody wielosieciowej. Przykładowy kod fortran 77 znajduje się w załączniku A.

Paweł
źródło
Myślę, że pyta o implementacje, a nie o więcej literatury.
Jack Poulson
1
@JackPoulson: Ma implementację w dodatku.
Paweł
2
Przepraszam, najwyraźniej nie mogę dziś rano czytać. Pozytywne.
Jack Poulson
1
@Paul: Mogę się mylić, ale myślę, że jest to geometryczny, wielosiatkowy kod dla problemu Poissona (który działa również w przypadku nieliniowym).
Bernardo MR
@ BernardoM.R .: Właśnie znalazłem ten plik postscriptowy ... Zawiera on wiele konkretnych przykładów operatorów przedłużania i ograniczania problemów z modelem. Jednak tak naprawdę nie ma pełnego kodu, ale może ci się przydać.
Paweł
1

Istnieje również pakiet ML, który jest częścią Trilinos. Jego reputacja jest równie dobra jak BoomerAMG / hypre.

Wydaje mi się, że nowszy pakiet Trilinos dla AMG nazywa się MueLu i powinien być dostępny w nowszych wydaniach.

Wszystkie są typu open source.

Wolfgang Bangerth
źródło
1
MueLu nie został wydany, a kiedy ostatnio z nim rozmawiałem, Ray nie spodziewał się publicznego wydania przez kolejny rok. Zauważ, że ML i MueLu (o ile słyszałem, co w nim jest) oparte są na wygładzonej agregacji, która jest zupełnie innym algorytmem niż klasyczny AMG (na którym oparty jest BoomerAMG).
Jed Brown
1

Od jakiegoś czasu pracuję nad tą implementacją . To jest Python / Numpy / Scipy. To nie jest algebraiczna wielosieciowość - musisz podać własnego operatora ograniczeń. Ale jeśli jest to implementacja edukacyjna, którą jesteś zainteresowany, chętnie przyjmę prośby o dodanie takiej możliwości.

tsbertalan
źródło