Vis enkel innførsel

dc.contributor.advisorLie, Knut-Andreas
dc.contributor.authorGrøstad, Sindre
dc.date.accessioned2019-10-26T14:01:11Z
dc.date.available2019-10-26T14:01:11Z
dc.date.issued2019
dc.identifier.urihttp://hdl.handle.net/11250/2624618
dc.description.abstractDenne masteroppgaven gir en introduksjon til automatisk derivasjon (AD) og hvordan det kan benyttes til å beregne den deriverte til hvilken som helst funksjon, med samme presisjon som et analytisk uttrykk, men uten å innføre beregningskrevende operasjoner. Dette har blitt brukt til å effektivt løse partielle differensialligninger som beskriver flyt i porøse medier, ved bruk av en endelig volummetode og diskretisering av gradient- og divergensoperatoren. Målet med avhandlingen har vært å undersøke om det nye programmeringsspråket Julia kan brukes både som et språk for å raskt lage prototyper av nye oljeutvinningssimulatorer, samt implementere svært effektive industrielle simulatorer. Tre forskjellige AD-biblioteker har blitt implementert i Julia og sammenlignetmed implementasjoner fra “the MATLAB Reservoir Simulation Toolbox” (MRST) (MRST Homepage, n.d.), laget av “the Computational Geosciences group” ved institutt for matematikk og kybernetikk ved SINTEF Digital. MRST er et bibliotek som er designet for å raskt kunne lage nye prototyper av oljeutvinningssimulatorer med høynivå- og brukervennlige AD verktøy. De to første implementasjonene i Julia, ForwardAutoDiff (FAD) og CustomJacobianAutoDiff (CJAD), er inspirert av AD-verktøyene i MRST. Den tredje implementasjonen, lokal AD, er inspirert av implementasjonen av AD i “Open Porous Media (OPM) Flow simulator” (Open Porous Media Homepage, n.d.). OPM er et bibliotek, utviklet av den samme gruppen hos SINTEF, for å lage effektive industrielle simulatorer i C og C++. For å sammenligne AD metodene har det blitt utviklet to simuleringer. Den første implementasjonen var en en-fase trykkløser, som simulerer trykkfallet i et reservoar når man utvinner olje. FAD var den tregeste AD-metoden, omtrent dobbelt så treg som både CJAD og implementasjonen i MRST. Mens CJAD og MRST hadde lignende ytelse, var derimot metoden for lokal AD ca. seks ganger raskere enn disse to. Den andre simuleringen var en to-fase metning- og trykkløser, som simulerer hvordan vann strømmer inn i oljefeltet når det injiseres inn i midten av reservoaret. Lignende den første simuleringen hadde CJAD og MRST lik ytelse, mens metoden som brukte lokal AD var omtrent fem ganger raskere. Sammenligningstestene viser lovende resultater som tyder på at Julia kan være et språk som gjør det mulig å lage både prototyper av simulatorer, ved hjelp av et brukervennlig AD-verktøy som CJAD, samt å skape høyytelses industrielle simulatorer, ved hjelp av et AD-verktøy som lokal AD.
dc.description.abstractThis thesis provides an introduction to Automatic Differentiation (AD) and how it can be utilized to calculate the derivatives of any function with the same precision as an analytic expression, with very little computational effort. It has been used to elegantly solve Partial Differential Equations (PDEs) describing flow in porous media, by using a finite volume method and a discretization of the gradient- and the divergence operator. The goal of the thesis has been to investigate whether the new programming language called Julia can be used both as a language for quickly prototyping new oil recovery simulators, as well as implementing highly efficient industrial simulators. Three different AD libraries have been implemented in Julia and compared to implementations from the MATLAB Reservoir Simulation Toolbox (MRST) (MRST Homepage, n.d.), created by the Computational Geosciences group at the department of Mathematics and Cybernetics at SINTEF Digital. MRST is a toolbox designed for quick prototyping with high-level- and user-friendly AD tools. The first two implementations in Julia, ForwardAutoDiff(FAD) and CustomJacobianAutoDiff(CJAD), were inspired by the AD tools in MRST. The third implementation, local AD, was inspired by the implementation of AD in the Open Porous Media (OPM) Flow Simulator (Open Porous Media Homepage, n.d.). OPM is a toolbox developed by the same group at SINTEF for creating efficient industrial simulators in C and C++. To benchmark the ADmethods, two simulations were implemented. The first one was a single-phase flow solver, simulating the pressure drop in a reservoir when producing oil. FAD was the slowest method being approximately two times slower than both CJAD and the implementation in MRST. While CJAD and MRST exhibited similar performance, the method of Local AD was approximately six times faster than these two. The second simulation was a two-phase flow solver, simulating how water flows when injected into a reservoir. Analogous to the first simulation, CJAD andMRST yielded similar performance, while the method using local AD was approximately five times faster. The benchmarks show promising results suggesting that Julia may be a language enabling making prototypes of simulators, using a user-friendly AD tool like CJAD, as well as creating high performance industrial simulators, using an AD tool like local AD.
dc.languageeng
dc.publisherNTNU
dc.titleAutomatic Differentiation in Julia with Applications to Numerical Solution of PDEs
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel