Hidrológiai Közlöny 1994 (74. évfolyam)
4. szám - Gáspár Csaba–Józsa János–Simbierowicz, Pavel: Új szemléletmód a numerikus hidraulikában. II. Differenciasémák és multigrid módszerek egyenlőtlen hálókon
208 HIDROLÓGIAI KÖZLÖNY 1994. 74. ÉVF. 2. SZÁM QtV- = ir. (u c + u E), a durva háló élközéppontjaiban (E) = "^(2u N + 2u w + 2u s + 2u e + u n w + u s w + u n e +u s e + 4« c) (22) A kiterjesztés szintén súlyozással történhet, éspedig u c, a durva háló rácspontjaiban (C) 2 . (u c + u N i + u NE i + u E ), a durva háló lapközéppontjaiban (NE) (23) A fenti leszűkítés és kiterjesztés cella-csúcsponti sémák esetén használható, amikor is a durvább háló csúcspontjai egyúttal a finom hálónak is rácspontjai. A helyzet némiképpen eltérő lesz cella-középponti sémák esetén, amikor ez már nem lesz igaz (ld. a 6b. ábrát). Ekkor a legegyszerűbb leszűkítés, ill. kiterjesztés: (P hu) c: = ~. (uxw + u N E + u s w + u S E) (Qhu)nw • = (Qhu) n e : = (Ö«"W • = (QhU)se • = "c (24) mindazonáltal most sincs akadálya a súlyozási technikák bevezetésének. A multigrid módszerek második alapgondolata, hogy a durva hálóra átvitt (19) maradékegyenlet ugyanolyan szerkezetű lévén mint az eredeti (16) egyenlet, ennek megoldása helyett az egész fenti gondolatmenetet megismételhetjük egy még durvább Xh> háló bevezetésével: ebben is fellép egy maradékegyenlet, mely egy még durvább háló segítségével kezelhető, és így tovább, tényleges egyenletmegoldás ily módon csak a legdurvább hálón szükséges, az ismeretlenek száma itt viszont általában olyan kevés, hogy a teljes eljárás műveletigénye végül is jóval alacsonyabb, mint a hagyományos (direkt vagy iterációs) módszereké. A durvahálós korrekció a közelítés nagyléptékű javítását eredményezi. A kisléptékű hibák (a cellaméretű ingadozások), melyek törvényszerűen fellépnek a korrekciós tagnak a finom hálóra való kiteijesztésében ((20) egyenlet), nagyon jól csökkenthetők a legegyszerűbb hagyományos (Jacobi- vagy Seidel-féle) iterációs eljárás néhányszori alkalmazásával, mely még mindig nem növeli lényegesen a módszer műveletigényét. így egy tipikus ún. multigrid ciklus a következő (rekurzív) algoritmussal adható meg: 1. Vegyük (16)-nak egy x' h közelítő megoldását. 2. Alkalmazzunk a közelítő megoldásra néhány Seidel-iterációt. 3. Képezzük a (18) maradékot, ezt az eggyel durvább hálóra levetítve, állítsuk fel a (19) durvahálós maradékegyenletet. 4. Oldjuk meg (19)-et ugyanezzel a technikával (durvább háló bevezetésével, a legdurvább hálón egy konvergens iterációs vagy valamilyen direkt módszert alkalmazva). 5. Vigyük vissza a korrekciós tagot a finom hálóra (20) alkalmazásával, és javítsuk meg a közelítő megoldást az *Y : = ^'h + korrekciós formulával. 6. Az így nyert újabb közelítésre alkalmazzunk ismét néhány Seidel-iterációt. Az így definiált multigrid ciklus műveletigénye alig több, mint a benne előforduló Seidel-iterációké, de annál sokkal gyorsabban konvergál. Igazolható, hogy ha a legfinomabb hálón az ismeretlenek száma N, akkor, előírva egy adott pontosságot, a megoldás műveletigénye csak N első hatványával arányos (az arányossági tényező függ az előírt pontosságtól, a tartomány alakjától, de N-től magától független), ami sokkal jobb, mint a hagyományos módszerek műveletigénye. Ismeretes ui., hogy pl. a Gauss-elimináció műveletigénye N harmadik hatványával arányos: a jóval gazdaságosabb konjugált gradiens módszer is N második hatványával arányos műveletszámot igényel. Megjegyzés: A multigrid ciklusban a Seidel-iteráció helyett számos más eljárás is használható: így pl. a Jacobi-iteráció; alulrelaxálás (ebben a szerepben hatékonyabb a túlrelaxálásnál) konjugált gradiens módszer; váltakozó irányok módszere soronkénti eliminációval (double sweep) stb. Valójában itt a hibák Fourier-komponenseinek különböző utakon való csökkentéséről van szó. A durvahálós korrekció térbeli nagyléptékű (kisfrekvenciás) hibákat erőteljesen csökkenti, viszont cellaméretű (nagyfrekvenciás) hibákat generál a finom hálóra való átmenetkor: e nagyfrekvenciás hibákat pedig az alkalmazott Seidel- (/acobi)-iteráció igen hatékonyan kiszűri. Az alábbi, szintén többhálós eljárás pedig jó kezdeti közelítést ad a legfinomabb hálón: a közelítés sokszor olyan jó, hogy multigrid ciklusra nincs is szükség. 1. Tekintsük a (16) problémát a legdurvább hálón, és ott oldjuk meg pontosan (direkt vagy iterációs módszerrel). 2. A durvahálós megoldást terjesszük ki a Q kiterjesztéssel az eggyel finomabb hálóra. 3. Az eggyel finomabb hálón alkalmazzunk néhány Seidel-iterációt, ezáltal jóval pontosabb közelítéshez jutva (a közelítő megoldást úi. javarészt csak nagyfrekvenciás hiba terheli, Id. az előző megjegyzést). 4. Ismételjük meg az eljárás a 2. ponttól kezdve mindaddig, amíg a legfinomabb hálót el nem étjük. A 3. lépésben Seidel-iteráció helyett multigrid ciklust alkalmazva, jutunk az ún. teljes multigrid algoritmushoz, mely az eddigi eljárások közül a leghatékonyabb (adott műveletszám mellett a legpontosabb, ill. adott pontosság mellett a legkisebb műveletigényű). A módszert illusztrálandó, tekintsük a Laplaceegyenletet az egységnégyzeten, a peremfeltétel legyen a négyzet három oldalán azonosan 0, a negyediken pedig egy fél szinuszhullám: a pontos megoldás: u(x,y) = sin xy . sh ji(l-jr) . sh _ 1jr; (25) Az egyenletet 4 szinten approximáltuk, a legfinomabb háló 32x32-es volt. Az előzőekben ismertetett fokozatos finomítást (valódi multigrid ciklus nélkül) alkalmaztuk, a legdurvább szintet kivéve, minden szinten 5 Seidel-iterációt végrehajtva (a legdurvább szinten 15öt). Minden szinten a szokásos centrális 5 pontos sémát használtuk. Az egyes szinteken a közelítő megoldásokat a 7. ábra mutatja. A legfinomabb hálón a közelítő megoldás max. hibája kb. 0,01 volt, ami sokkal kisebb, mintha csak a legfinomabb hálón alkalmaztunk volna ugyanennyi Seidel-iterációt. (Ez utóbbi esetben a közelítő megoldás még igen távol áll a pontos megoldástól: az iteráció