Description
Summary:In this thesis a comparison of pressure–velocity coupling algorithms is conducted with special emphasis on the implicit coupling of momentum and pressure equations in a single linear system as an improvement on the conventional segregated methods. The research is done in the scope of the finite volume method, and carried out in foam-extend, a community driven fork of the open source computational fluid dynamics software OpenFOAM. We focus on the equations for steady–state, incompressible, single–phase turbulent flow. To counteract the zero block on the diagonal of the system, the pressure equation is derived as a Schur complement. A description of the OpenFOAM matrix format is given as well as the structure of the finite volume matrices which arise from the computational mesh connectivity. Contributions from finite volume equation discretisation to each term of the implicitly coupled block–matrix are illustrated. The computational effort is directed mostly to solving the pressure Poisson equation, thus it is very important to employ an efficient solver for elliptic equations, which is also effective for the hyperbolic momentum equation. An overview of linear solvers is given: fixed–point methods, algebraic multigrid and some versions of the Krylov subspace solvers are analysed in the context of Finite Volume Method. Two methods for constructing coarse matrices in algebraic multigrid are compared: additive correction method, which is the usual choice for the implicitly coupled pressure–velocity system in recent literature, and the newly implemented selection algebraic multigrid. Incomplete lower–upper factorisation based on Crout’s algorithm is used as an error smoother with the algebraic multigrid method. Parallelisation issues regarding the selection algebraic multigrid are laid out, with additional comments on the possible parallelisation strategies. The performance of both segregated and implicitly coupled pressure–velocity solver is compared for multiple complex test cases including external aerodynamics cases (Formula 1 front wing, bluff body with a diffuser, submarine) and internal flow cases (cooling of an engine jacket, centrifugal pump, Francis turbine) both on structured and unstructured meshes. A comparison of convergence against computation time and number of non–linear iterations is given, both in terms of field residuals as well as integral values. The influence of the linear solver on the convergence of implicitly coupled pressure–velocity solver is investigated, as well as the impact of different settings of selection algebraic multigrid on convergence rate and computation time. I. Sprega jednadžbi brzine i tlaka: Stacionarno, nestlačivo, jednofazno i turbulentno strujanje fluida opisano je jednadžbom očuvanja količine gibanja koja sadrži nelinearni konvekcijski član, difuzijski član te površinske sile u obliku gradijenta tlaka, i jednadžbom kontinuiteta, koja nameće uvjet konzervativnosti polja brzine u nestlačivom strujanju. Budući da ne postoji analitička metoda za rješavanje ovog sustava jednadžbi, koriste se iterativni algoritmi. U opisanom sustavu ne postoji eksplicitna jednadžba koja opisuje polje tlaka, što onemogućava korištenje klasičnih iterativnih metoda u kojima se neizbježno provodi dijeljenje dijagonalnim elementom matrice. Stoga se iz jednadžbe količine gibanja izvodi izraz za polje brzine te uvrštava u jednadžbu kontinuiteta kako bi se dobila jednadžba iz koje se može izračunati polje tlaka. Dobivena jednadžba tlaka ima oblik Poissonove jednadžbe, eliptičnog je karaktera te predstavlja najzahtjevniji dio rješenja linearne sprege brzine i tlaka. Zbog ograničenih računalnih resursa, 70.–tih i 80.–tih godina prošlog stoljeća razvijaju se algoritmi koji jednadžbu količine gibanja i tlaka rješavaju u odvojenim linearnim sustavima, uvrštavajući prethodno izračunate vrijednosti druge varijable. Pristup razdvajanja jednadžbi linearnog sustava prisutan je do danas, a algoritmi SIMPLE i PISO te njihove inačice još se uvijek koriste u modernim kodovima za računalnu dinamiku fluida. U ovom je radu predstavljen postupak implicitne sprege jednadžbe količine gibanja i tlaka u jedinstveni linearni sustav, koji je implementiran u program otvorenog koda za računalnu dinamiku fluida OpenFOAM. Matrica implicitno spregnutog sustava ima 4 puta veći broj redaka i stupaca u odnosu na matrice u SIMPLE algoritmu, dok su nepoznanice u vektoru poredane s obzirom na indeks kontrolnog volumena za koji se računaju. Zbog toga su matrični elementi koji odgovaraju jednadžbama za pojedini kontrolni volumen, i sami matrice dimenzije 4_4, a matrica implicitno spregnutog sustava naziva se blok–matricom. Budući da se u jednom sustavu javljaju jednadžbe različitih karaktera, hiperbolična jednadžba količine gibanja te eliptična jednadžba tlaka, izbor algoritma za rješavanje linearnog sustava dodatno je otežan. II. Linearni algoritmi: Osnovni linearni algoritmi za rješavanje linearnih sustava su iteracije fiksne točke, tj. Jacobijeva i Gauss–Seidelova metoda. Na temelju spektralne analize matrice iteracije spomenutih metoda, uočeno je da konvergencija metoda usporava nakon što se eliminiraju greške čije komponente odgovaraju najvećim svojstvenim vrijednostima (visoke frekvencije), tj. preostala greška smatra se glatkom. Grešku je moguće ponovno učiniti oscilatornom zadržavajući samo komponente koje odgovaraju malim svojstvenim vrijednostima, što je uloga multigrid algoritma. U ovom se radu koriste algebarske multigrid metode, koje ne trebaju informacije iz početne (fine) proračunske mreže, već za konstrukciju grubih razina koriste matrične elemente. Predstavljene su dvije metode: additive correction (dodane korekcije – AAMG) i selection (selekcijska – SAMG) metoda. AAMG metoda konstruira grubu matricu zbrajanjem elemenata fine matrice, što se opravdava konzervativnošću jednadžbi količine gibanja i kontinuiteta za kontrolni volumen. Kada bismo promatrali proračunsku mrežu, mreža grube razine AAMG metode dobila bi se grupiranjem volumena fine mreže u jedan veći volumen. Dodana korekcija odnosi se na član koji se dodaje izračunatom rješenju kako bi se kompenzirala pogreška koja se javlja zbog preslikavanja izracunatog rješenja s grubog na fini nivo. U SAMG metodi, matrica na gruboj razini konstruira se koristeći Galerkinov varijacijski princip, odnosno, u fiktivnoj proračunskoj mreži grube razine preostaje određeni broj odabranih kontrolnih volumena s fine razine. Budući da se u SAMG metodi koristi linearna interpolacija rješenja izračunatog na gruboj razini u linearni sustav na finoj razini, ostvaruje se bolja konvergencija rješenja u usporedbi s AAMG metodom. Multigrid metode optimalne su upravo za rješenje Poissonovog tipa jednadžbi jer osiguravaju efikasan prijenos lokalnih informacija na globalnoj razini sustava. Poseban izazov predstavlja paralelizacija SAMG algoritma, budući da je proces odabira jednadžbi za grubu razinu u potpunosti sekvencijalan. Kako bi se ocuvala efikasnost algoritma, uvode se sljedeća ogranicenja: - odabir jednadžbi grube razine provodi se nezavisno na svakom procesoru, - nije moguća interpolacija korekcije sa susjednog procesora, - matrični elementi koji se nalaze na granici procesora na gruboj razini računaju se također Galerkinovim principom pomoću filtrirane matrice interpolacije i restrikcije. Budući da se u matricama grubih razina pojavljuju novi elementi, raste popunjenost matrice, a ujedno i broj elemenata na procesorskoj granici. Kao dopunu kojom se efikasno rješava i hiperbolična jednadžba količine gibanja, odabrali smo algoritme koji komponente rješenja konstruiraju linearnom kombinacijom vektora iz Krylovljevih potprostora. U radu je detaljno opisan izvod metode konjugiranih gradijenata (CG), te inačica za nesimetrične matrice stabiliziranih bikonjugiranih gradijenata (BiCGStab). BiCGStab korišten je kao algoritam za efikasno rješavanje sustava fine razine multigrid algoritma, dok multigrid ciklus služi kao prekondicioniranje kojim se dobiva rješenje Poissonove jednadžbe tlaka. Budući da klasične iterativne metode fiksne točke nisu dale zadovoljavajuću konvergenciju za izglađivanje greške (ili su čak divergirale), implementirali smo nepotpunu LU faktorizaciju matrice temeljenu na Croutovom algoritmu (ILUC). Konvergencija ILU algoritma ovisi o stukturi matrice te je poželjno zadržati vrpcastu formu. III. Rezultati i zaključak: Konvergenciju SIMPLE i implicitno spregnutog algoritma usporedili smo na nizu slučajeva s kompleksnim turbulentnim strujanjem: opstrujavanje krila bolida Formule 1, analiza strujanja u pojednostavljenom difuzoru bolida, opstrujavanje modela podmornice BB2 na tri gustoće mreže, te slučajeve sa zonama rotacije u centrifugalnoj pumpi i Francisovoj turbini. Simulacije su provedene na strukturiranim i nestrukturiranim mrežama, veličine od 2 do 14 milijuna kontrolnih volumena. Na temelju rezultata simulacija, doneseni su sljedeći zaključci o algoritmima: - implicitno spregnuti algoritam u usporedbi sa SIMPLE algoritmom konvergira s manjim oscilacijama reziduala i integralnih veličina, - budući da se u implicitno spregnutom algoritmu ne podrelaksira polje tlaka, a jednadžba količine gibanja se podrelaksira minimalno, ostvaruje se brža konvergencija u pogledu broja iteracija, te ukupnog računalnog vremena, - konvergencija implicitno spregnutog algoritma vrlo malo ili uopce ne ovisi gustoći i tipu proračunske mreže, što nije slučaj kod SIMPLE algoritma, - za proračune s implicitno spregnutim algoritmom potrebna je značajno veća količina radne memorije nego za SIMPLE algoritam, budući da je matrica sustava 16 puta veća. Analizirali smo postavke i konvergenciju SAMG algoritma za implicitno spregnuti sustav te je primijećeno sljedeće: - korištenje SAMG algoritma za rješenje linearnog implicitno spregnutog sustava jednadžbi količine gibanja i kontinuiteta daje manje oscilatornu konvergenciju reziduala u usporedbi s AAMG i BiCGStab algoritmima, no za jednu iteraciju SAMG–a potreban je veći broj operacija, - SAMG cesto postiže teoretsku brzinu konvergencije (smanjuje rezidual jedan red veličine po iteraciji), ali na početku simulacije, dok se rješenje još uvijek značajno mijenja, potreban je veći broj iteracija kako bi se ostvarila željena konvergencija, - najbolja konvergencija postiže se korištenjem Poissonove jednadžbe tlaka za računanje težinskih faktora interpolacije, - odabir broja jednadžbi u matrici najgrublje razine, kao i odabir multigrid ciklusa utječu ne samo na konvergenciju nego i ukupno vrijeme proračuna: kako bi se smanjilo potrebno vrijeme, koristi se V–ciklus i veći broj jednadžbi grube razine, - konvergencija ILUC algoritma za izglađivanje greške ovisi o strukturi matrice te se preporučuje i na grubim razinama očuvati vrpcastu strukturu postignutu optimalnim pobrojavanjem kontrolnih volumena u mreži, - odabir jednadžbi koje će se rješavati na gruboj razini SAMG–a, ovisi o tipu kontrolnih volumena proračunske mreže: rješenje na mrežama s anizotropnim kontrolnim volumenima mogu lošije konvergirati od onih na mrežama s uniformnim volumenima, - paralelizacija SAMG–a u kojoj se proces interpolacije ograničava na lokalnu procesorsku jezgru ne umanjuje značajno stopu konvergencije linearnog i nelinearnog algoritma. Na temelju dosadašnjeg istraživanja, predlažemo sljedeće korake kao dopunu ili potencijalni nastavak istraživanja: - izmjeriti performanse implicitno spregnutog algoritma polja tlaka i brzine na superračunalu s velikim brojem jezgara, - proučiti moguće aproksimacije matrice konvekcije i difuzije čiji se inverz koristi kao difuzijski koeficijent u Poissonovoj jednadžbi tlaka, - implementirati implicitne rubne uvjete (npr. rubni uvjet sa zadanim totalnim tlakom), - proširiti implicitno spregnuti algoritam i za stlačiva strujanja, za čiju je stabilnost nužno implicitno tretirati rubne uvjete, - razmotriti raspodjelu poslova između pojedinih procesora u paralelnim simulacijama sa SAMG algoritmom, - implementirati FLEX multigrid ciklus, što može poboljšati konvergenciju linearnog algoritma (slično W–ciklusu): FLEX ciklus ima svojstvo samoregulacije, tj. rješenje se dinamički prebacuje s finog na grube razine i obrnuto u ovisnosti o vrijednosti reziduala, - implementirati ILU algoritam s pivotiranjem kako bi se spriječila divergencija algoritma u slučaju matričnih elemenata različitih redova veličine.