Iterativní vzorníkové smyčky - Iterative Stencil Loops

Iterativní vzorníkové smyčky (ISL) jsou třídou řešení zpracování číselných dat[1]která aktualizace prvky pole podle nějakého pevného vzoru, který se nazývá vzorník.[2] Nejčastěji se nacházejí v počítačové simulace, např. pro výpočetní dynamika tekutin v kontextu vědeckých a technických aplikací. Mezi další pozoruhodné příklady patří řešení parciální diferenciální rovnice,[1] the Jacobi jádro, Gauss – Seidelova metoda,[2] zpracování obrazu[1] a mobilní automaty.[3] Pravidelná struktura polí nastavuje techniky šablony na rozdíl od jiných metod modelování, jako je například Metoda konečných prvků. Většina kódy konečných rozdílů které fungují na běžných sítích, lze formulovat jako ISL.
Definice
ISL provádějí posloupnost rozmítání (nazývaných časové kroky) přes dané pole.[2] Obecně se jedná o 2- nebo 3-dimenzionální pravidelnou mřížku.[3] Prvky polí se často označují jako buňky. V každém časovém kroku jsou aktualizovány všechny prvky pole.[2] Pomocí sousedních prvků pole ve fixním vzoru (vzorníku) se vypočítá nová hodnota každé buňky. Ve většině případů zůstávají hraniční hodnoty beze změny, ale v některých případech (např. Kódy LBM ) ty je třeba upravit i během výpočtu. Protože vzorník je pro každý prvek stejný, vzor přístupu k datům se opakuje.[4]
Více formálně můžeme definovat ISL jako 5-tice s následujícím významem:[3]
- je sada indexů. Definuje topologii pole.
- je (ne nutně konečný) soubor stavů, z nichž jeden může každá buňka nabývat v daném časovém kroku.
- definuje počáteční stav systému v čase 0.
- je šablona sama o sobě a popisuje skutečný tvar okolí. Existují prvky ve vzorníku.
- je přechodová funkce, která se používá k určení nového stavu buňky v závislosti na jejích sousedech.
Od té doby Já je k-dimenzionální celočíselný interval, pole bude mít vždy topologii konečné pravidelné mřížky. Pole se také nazývá simulační prostor a jednotlivé buňky jsou identifikovány podle indexu . Šablona je uspořádaná sada relativní souřadnice. Nyní můžeme získat pro každou buňku n-tice indexů jejích sousedů
Jejich stavy jsou dány mapováním n-tice do odpovídající n-tice států , kde je definována takto:
To je vše, co potřebujeme k definování stavu systému pro následující časové kroky s :
Všimněte si, že je definováno na a nejen dál protože také je třeba nastavit okrajové podmínky. Někdy prvky může být definován přidáním vektoru modulo dimenze simulačního prostoru k realizaci toroidních topologií:
To může být užitečné pro implementaci periodické okrajové podmínky, což zjednodušuje určité fyzické modely.
Příklad: 2D Jacobiho iterace

Pro ilustraci formální definice se podíváme na to, jak je dvourozměrná Jacobi iteraci lze definovat. Funkce aktualizace spočítá aritmetický průměr čtyř sousedů buňky. V tomto případě jsme vyrazili s počátečním řešením 0. Levá a pravá hranice jsou fixovány na 1, zatímco horní a dolní hranice jsou nastaveny na 0. Po dostatečném počtu iterací systém konverguje proti sedlovému tvaru.