Multigrid su griglia "non perfettamente rettangolare"


9

Le presentazioni multigrid normalmente usano una griglia rettangolare. L'interpolazione dei valori è quindi semplice: basta interpolare linearmente sul bordo tra due nodi adiacenti della griglia grossolana per trovare il valore del nodo della griglia fine su quel bordo.

Per un'applicazione FEM ho una griglia che è "topologicamente" rettangolare in modo che le connessioni dei nodi siano come su una griglia rettangolare. Tuttavia, i nodi non sono perfettamente allineati su una griglia ma possono percorrere piccole distanze per adattarsi meglio alla geometria, mantenendo comunque le connessioni come in una griglia rettangolare perfetta.

La mesh ha un aspetto simile al seguente: esempio di mesh . Vedete: le connessioni sono "regolari rettangolari", ma le posizioni dei nodi no.

Posso immaginare diversi schemi di interpolazione geometrica "ragionevoli" per tale impostazione.

La domanda generale è: il multigrid richiede una griglia rettangolare perfettamente allineata o funzionerà anche con la situazione sopra descritta, purché l'interpolazione sia "buona"? O è meglio usare multigrid algebrico in quel caso? (Che non preferisco poiché non è così intuitivo come il multigrid geometrico.)


Non sono sicuro di aver capito cosa intendi per griglia topologicamente rettangolare, ma dove i nodi non sono allineati come in una griglia rettangolare. La griglia è una griglia rettangolare strutturata? Potresti chiarire questo, magari con un disegno? Il problema che stai utilizzando elementi rettangolari che non si allineano come accadrebbe quando si utilizza una griglia cartesiana strutturata?
James,

@James, ho interpretato la domanda di OP in modo più simile: "Cosa succede se ho una griglia" cartesiana-ish "all'interno di un trapezio?".
Bill Barth,

Risposte:


6

Multigrid non ha bisogno di una griglia uniforme cartesiana (rettangolare). Ciò di cui ha bisogno è che sia possibile definire un livello fine e uno approssimativo (possibilmente ricorsivamente, se si desidera passare da uno schema a due livelli a uno a più livelli) e che è possibile definire operatori di interpolazione tra questi livelli. Il modo più semplice per spiegarlo è se hai davvero una griglia cartesiana, ma puoi effettivamente iniziare con qualsiasi mesh grossolana, perfezionarla una volta e così: hai una mesh più fine.

In altre parole, è più facile pensare a maglie adatte a più migranti non come una maglia fine e a come trovare le maglie più grossolane, ma a iniziare con una maglia grossolana da cui si ottengono i livelli più fini con un raffinamento uniforme (cioè, ogni quadrilatero è suddiviso in quattro più piccoli). Poiché la raffinatezza uniforme è sempre possibile, questo ti dà prontamente una gerarchia. Ciò si oppone al grossolana, che non è sempre possibile se ti viene appena assegnata una mesh particolare, e quindi rende la definizione di una gerarchia di mesh molto più complicata. (Ecco perché le persone hanno escogitato metodi multigrid algebrici per definire i livelli grossolani basati solo sulla matrice, senza pensare alla mesh sottostante da cui è stata creata.)


Ho modificato un esempio di immagine nella domanda. Suppongo che il grossolana sia estremamente facile nel mio caso prendendo solo ogni secondo nodo (per dimensione) e ricalcolo di FEM per quella griglia per ottenere la matrice / operatore grossolana. Il vettore di dati grossolani può essere ottenuto semplicemente prendendo ogni secondo valore del nodo.
Michael,

1
Potrebbe funzionare o meno come vuoi (suppongo che probabilmente funzionerà, ma non sono del tutto sicuro). Il fatto è che nel tuo esempio, le celle a maglie grosse non coprono la stessa area dei bambini, e quindi non vi è alcuna proprietà di nidificazione degli spazi degli elementi finiti: le funzioni che puoi rappresentare sulla maglia grossa non sono un sottoinsieme di le funzioni che è possibile rappresentare sulla mesh fine. Joe Pasciak e Jim Bramble hanno scritto articoli su tali casi e penso di ricordare che possono essere fatti funzionare. Ma non è immediatamente ovvio per me.
Wolfgang Bangerth,

4

Diciamo che hai la seguente griglia composta da elementi rettangolari:

inserisci qui la descrizione dell'immagine

Ora, se esegui la tua interpolazione assumendo una normale griglia rettangolare strutturata, introducerai errori associati a questa interpolazione imprecisa. In altre parole, quando limiti il ​​tuo vettore residuo e quando prolunghi il tuo vettore di errore ci saranno errori dall'interpolazione.

Ora, se la tua griglia è "vicina" ad essere una normale griglia cartesiana strutturata, questo potrebbe funzionare, almeno all'inizio, ma sospetto che accadrà una di queste due cose a seconda di quanto la griglia è rettangolare:

1) Potresti scoprire che all'inizio il multigrid inizia a convergere. Dopotutto inizialmente il tuo errore è comunque grande e la tua interpolazione "approssimativa" significa solo che alcuni nodi sono leggermente sovrarappresentati mentre altri sono leggermente sottorappresentati. Tuttavia, potresti scoprire che la convergenza ristagna quando la soluzione diventa più accurata e gli errori di interpolazione diventano più importanti.

2) Un'altra possibilità è che il multigrid finisca per convergere, ma non così velocemente come se avesse usato l'interpolazione corretta.

Fondamentalmente stando fuori dalla tua interpolazione stai soppesando in modo impreciso l'importanza di alcuni nodi. Ad esempio in 2D se si sta ponderando un determinato nodo come:

[0.250.50.250.51.00.50.250.50.25]

quando in verità perché la tua griglia non è esattamente cartesiana dovrebbe essere:

[0.250.550.250.551.00.490,280.520.30]

quindi ciò comporterà alcuni errori. Se questo errore impedisce la convegenza dipenderà probabilmente dalla distanza dalla tua griglia dall'essere cartesiana.

Mentre AMG è più difficile da capire / implementare, sembra che sia il metodo corretto per la tua griglia. L'applicazione del multigrid geometrico su una griglia rettangolare "approssimativa" può funzionare, ma immagino che sia una soluzione di cerotto al massimo. Spero che sia di aiuto.

Aggiornamento : penso che ci possa essere stato un po 'di confusione nella mia risposta. Non sto dicendo che il multigrid geometrico funzionerà solo con le maglie cartesiane, ma piuttosto che definire l'interpolazione (e quindi la restrizione) sulle maglie cartesiane è facile, mentre sulle maglie non strutturate può essere difficile. Ad esempio, si consideri il caso anche di un semplice dominio 2D con una trama triangolare. Affinare questa mesh è facile - almeno concettualmente - ma come definiresti un operatore di interpolazione tra la mesh grossolana e quella fine? Preferisco AMG semplicemente perché si comporta più come un solutore "black box", cioè non ha bisogno di informazioni sulla mesh sottostante, tuttavia questa è solo la mia inclinazione / stranezza. Il multigrid geometrico può funzionare purché sia ​​possibile fornire operatori di interpolazione precisi.


Posso leggerlo come "dipende da quanto è buona la tua interpolazione", giusto? Quindi, se riesco a trovare uno schema di interpolazione "perfetto", allora dovrei andare bene?
Michael,

1
Penso che questa risposta sia vera ma fuorviante: dice che se fai finta che la tua griglia sia cartesiana regolare quando non lo è, otterrai la risposta sbagliata. È vero, ma potresti dire la stessa cosa su qualsiasi metodo numerico. Il punto è che il multigrid geometrico è accurato su mesh più generiche se implementato correttamente .
David Ketcheson,

Concordo sul fatto che il multigrid geometrico può essere utilizzato con maglie non cartesiane purché eseguito correttamente. Ho appena preso la domanda del PO chiedendomi se avrebbe funzionato usando una mesh cartesiana "approssimativamente", mentre usando l'interpolazione progettata per una mesh cartesiana reale.
James,

@Michael Fondamentalmente hai bisogno di un modo per definire gli operatori di interpolazione tra diversi livelli di griglia. Con le maglie cartesiane questo è facile. Con le maglie non cartesiane questo può diventare rapidamente più difficile a seconda di quanto non siano strutturate le maglie. Come afferma Wolfgang nella sua risposta, puoi sempre creare una mesh più raffinata da una mesh grossolana, ma definire operatori di interpolazione significativi può essere difficile. Il vantaggio di AMG è che si comporta più come un solutore "black box" in quanto non sono necessari dati mesh per definire gli operatori di interpolazione. Tutto ciò che serve è la matrice
James,

@MIchael Quindi, per rispondere alla tua domanda. Sì, se riesci a trovare operatori di interpolazione accurati, il multigrid geometrico funzionerà perfettamente. Spero che sia di aiuto.
James,
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.