Codice multigrid algebrico


9

Vorrei capire maggiori dettagli sull'implementazione dei Metodi Multigrid Algebrici (AMG). Ho letto "A Multigrid Tutorial", che è abbastanza buono e spiega tutti i dettagli dell'interpolazione, dell'operatore della griglia grossolana e della selezione della griglia grossolana per AMG. Tuttavia, penso, non c'è niente come giocare e leggere un codice.

Quindi, vorrei chiedere se qualcuno conosce un classico "codice di esempio" AMG, come il codice geometrico multigrid FORTRAN disponibile alla fine di "Metigrid Methods" (SIAM) di SF McCormick. È abbastanza difficile ottenere un codice di alta qualità e di produzione come BoomerAMG per saperne di più sul metodo.


Sei particolarmente interessato all'AMG classico (al contrario di * aggregazione levigata)? In tal caso, si prega di dichiararlo nella domanda.
Jed Brown,

Risposte:


10

BoomerAMG fa parte del pacchetto Hypre , che è estremamente semplice da acquisire. Un codice molto meno complesso se stai iniziando a guardare questi metodi potrebbe essere PyAMG .


Sì, ho dato un'occhiata a PyAMG, che è un codice molto carino, ma ha tutte queste cose sul wrapping del codice C / C ++ in Python, implementa diversi metodi AMG diversi da quello "classico", e così via. Stavo cercando qualcosa di più semplice, che le persone usano per insegnare.
Bernardo MR,

4
Sfortunatamente, l'esperienza generale con l'utilizzo e il tentativo di contribuire ai codici AMG è che se non si dispone di una moltitudine di opzioni non si è in grado di risolvere nulla che si avvicini a un problema interessante. Pertanto, il pacchetto AMG tipico includerà una serie di opzioni per l'approssimazione della connessione, la costruzione di interpolatori e il livellamento che è certamente difficile da analizzare mediante la lettura del codice. Detto questo, l'AMG classico è semplicissimo e implementarlo da soli o fare in modo che i tuoi studenti provino a farlo da soli (a seconda del loro livello di abilità) può essere la strada da percorrere.
Peter Brune,

2

Consiglio vivamente l' introduzione di Alfio Borizi al metodo multigrid algebrico. C'è un esempio di codice fortran 77 nell'appendice A.


Penso che stia chiedendo delle implementazioni, non più letteratura.
Jack Poulson,

1
@JackPoulson: ha un'implementazione nell'appendice.
Paolo

2
Mi dispiace, a quanto pare non riesco a leggere questa mattina. Upvoted.
Jack Poulson,

1
@Paul: potrei sbagliarmi, ma penso che questo sia un codice multigrid geometrico per il problema di Poisson (che funziona anche per il caso non lineare).
Bernardo MR,

@ BernardoM.R .: Ho appena trovato questo file Postscript ... Ha molti esempi concreti di operatori di prolungamento e restrizione per problemi di modello. In realtà non ha un codice completo, ma potrebbe essere comunque utile.
Paul

1

C'è anche il pacchetto ML che fa parte di Trilinos. La sua reputazione è altrettanto buona di quella di BoomerAMG / hypre.

Un nuovo pacchetto Trilinos per AMG si chiama MueLu, credo, e dovrebbe essere disponibile anche nelle versioni più recenti.

Tutti questi sono open source.


1
MueLu non è stato rilasciato e l'ultima volta che ho parlato con lui, Ray non si aspettava un rilascio pubblico per un altro anno circa. Si noti che ML e MueLu (nella misura in cui ho sentito cosa contiene) si basano su aggregazioni uniformi, che è un algoritmo piuttosto diverso dall'AMG classico (su cui si basa BoomerAMG).
Jed Brown,

1

Ho lavorato su questa implementazione per un po '. È Python / Numpy / Scipy. Non è un multigrid algebrico: devi fornire il tuo operatore di restrizione. Ma se si tratta di un'implementazione educativa a cui sei interessato, accolgo con favore alcune richieste pull per aggiungere tale capacità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.