Abstract | 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. |
Abstract (croatian) | 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. |