A Modular Framework for Generation and Maintenance of Adjoint Solvers Assisted by Algorithmic Differentiation - with Applications to an Incompressible Navier-Stokes Solver
Loading...
Journal Title
Journal ISSN
Volume Title
School of Engineering |
Doctoral thesis (monograph)
| Defence date: 2014-10-10
Checking the digitized thesis and permission for publishing
Instructions for the author
Instructions for the author
Unless otherwise stated, all rights belong to the author. You may download, display and print this publication for Your own personal use. Commercial use is prohibited.
Author
Date
2014
Major/Subject
Mcode
Degree programme
Language
en
Pages
183
Series
Aalto University publication series DOCTORAL DISSERTATIONS, 148/2014
Abstract
A new approach for the development of discrete adjoint solvers is presented. This methodology hinges upon exposing the algorithmic structure of the original solver to the formulation of the adjoint problem. The process yields a corresponding algorithmic description for the adjoint solver, which is subsequently assembled utilizing a library of reverse mode differentiated routines generated by the algorithmic differentiation (AD) tool TAPENADE. The proposed technique is applied to an unstructured incompressible finite volume flow solver, which implements a segregated pressure correction SIMPLE algorithm for steady-state problems and employs an external library to solve sparse linear systems. The implementation of the flow solver is thoroughly documented to illustrate how its algorithm can be decomposed into an instructive procedural description. The AD-driven development approach is initially applied to the laminar solver to construct a corresponding baseline adjoint code. Relevant issues concerning the handling of external linear system solvers in the adjoint code and the use of AD in a library-based programming environment are addressed. The flexibility of the approach is then highlighted by deriving a recipe for the adjoint Spalart-Allmaras turbulence model and implementing it in the baseline solver in a modular fashion. The assembled discrete adjoint solver is verified against sensitivity derivative values produced by a forward mode differentiated tangent-linear solver and the original solver via divided differences. Surface forces and power loss across the system are used as objectives and mesh nodes on specified boundary patches as design variables. In accordance with the theory of AD, the adjoint solver is shown to be iteratively consistent, i.e. exact dual, with the tangent-linear solver. The adjoint and tangent-linear Spalart-Allmaras turbulence models are observed to run into stability problems as the Reynolds number of the flow is increased. The structured assembly of the adjoint solver allows the developer to introduce various code optimizations to improve its performance. This contributes to the adjoint solver's low overhead in memory consumption and computational time. The achieved efficiency ensures that the computation of the sensitivity gradients could be carried out at the same resolution as the flow physics even in industrial scale applications.Väitöskirjassa esitellään uusi menetelmä diskreettien liittotilaratkaisijoiden kehittämiseen. Menettely perustuu alkuperäisen ohjelmiston ratkaisualgoritmin rakenteen hyödyntämiseen liittotilasysteemin formuloinnissa ja tuottaa vastaavanlaisen algoritmisen kuvauksen liittotilaratkaisijalle, joka voidaan koota hyödyntäen alkuperäisen ohjelmiston kirjastorutiineja sekä derivoituja rutiineja. Derivoidut rutiinit on johdettu alkuperäisistä käyttäen algoritmisen derivoinnin (AD) takenevaa moodia. Tässä työssä nämä rutiinit on tuotettu AD-työkalulla Tapenade. Menetelmää sovelletaan rakenteettomaan, kokoonpuristumattoman virtauksen Navier-Stokes ratkaisijaan, joka perustuu kontrollitilavuusmenetelmään ja hyödyntää SIMPLE painekorjausratkaisualgoritmia sekä erillistä ratkaisukirjastoa harvoille matriisiyhtälöille. Virtausratkaisijan toteutus on perusteellisesti dokumentoitu, jotta sen ratkaisuproseduurin rakenteellinen hajotelma voidaan osoittaa oikeelliseksi ja informatiiviseksi. Aluksi virtausratkaisijan perusosasta kehitetään vastaava liittotilaratkaisija. Tämän yhteydessä väitöskirjassa käsitellään asioita, jotka liittyvät erillisen ratkaisukirjaston käyttöön liittotilaratkaisijassa sekä AD-työkalun hyödyntämiseen kirjastorakenteisessa ohjelmointiympäristössä. Seuraavaksi menetelmän joustavuus tuodaan esille johtamalla Spalart-Allmaras turbulenssimallin liittotilalle reseptinomainen kuvaus sen ohjelmiston rakenteesta ja liittämällä se modulaarisesti osaksi perusratkaisijaa. Kehitetty diskreetti liittotilaratkaisija verifioidaan vertaamalla sen tuottamia kohdefunktion derivaatta-arvoja Tapenadella etenevässä moodissa derivoidun ratkaisijan tuottamiin sekä differenssimenetelmällä laskettuihin arvoihin. Kohdefunktioina käytetään pintavoimia sekä virtaussysteemin tehohäviötä ja riippumattomina muuttujina laskentaverkon solmuja määrätyillä pinnoilla. Takenevassa ja etenevässä moodissa derivoitujen ratkaisijoiden osoitetaan olevan iteratiivisesti konsistentteja, kuten algoritmisen derivoinnin teoria ennustaa. Työn yhteydessä havaitaan, että nostettaessa virtausmallin Reynoldsin lukua molemmat derivoidut Spalart-Allmaras turbulenssimallit muodostuvat epästabiileiksi. Menetelmän mahdollistama rakenteinen lähdekoodin kokoonpano antaa kehittäjälle vapauden lisätä laskentaa tehostavia muokkauksia liittotilaratkaisijaan. Tämä myötävaikuttaa siihen, että kehitetyn ohjelmiston vaatima lisä laskenta-ajassa ja muistin kulutuksessa jää alhaiseksi. Tehokkuuden ansiosta liittotilaratkaisijalla on mahdollista laskea herkkyysgradientit samalla resoluutiotasolla kuin virtausfysiikka, jopa teollisten sovellusten mittakaavassa.Description
Supervising professor
Siikonen, Timo, Prof. Dr., Aalto University, Department of Applied Mechanics, FinlandThesis advisor
Ursem, Rasmus, Dr., Grundfos A/S, DenmarkGauger, Nicolas, Prof. Dr., TU Kaiserslautern, Germany
Keywords
discrete adjoint method, incompressible, CFD, algorithmic differentiation, automatic differentiation