Händelseförlopp i naturen, till exempel utvecklingen av jordens klimat, är olinjära. Vi kan modellera dessa olinjära problem med konservationslagar som är skrivna som tidsberoende partiella differentialekvationer (PDE:er). Lösningar av olinjära konservationslagar innehåller många fenomen, till exempel diskontinuiteter, singulariteter och turbulens. Ett vanligt drag hos dessa lösningar är en stor blandning av skalor i rymden och tiden. På grund av denna mångfald finns det inget allmänt tillvägagångssätt för analytiska lösningar. Det är dock viktigt för den moderna industrin att känna till lösningar till dessa problem. Därför har numerisk simulering av tidsberoende olinjära konservationslagar framkommit som en nyckelteknik.
Min forskning fokuserar på konstruktion och analys av numeriska metoder som approximerar lösningen av hyperboliska problem, till exempel grunt vatten, kompressibla Euler eller ideala magnetohydrodynamiska (MHD) ekvationer och blandade hyperboliska/paraboliska problem, till exempel kompressibla Naiver-Stokes eller visco-resistiva MHD ekvationer. I synnerhet utvecklar jag högre ordningens metoder baserade på discontinuous Galerkin (DG) för linjära och olinjära PDE:er. En speciell form av DG-metod har diskreta differentieringsoperationer som uppfyller egenskapen SBP (Summation-by-Parts). Detta är viktigt eftersom DG-approximationen sedan kan konstrueras för att bevara primära kvantiteter såsom densitet och införliva fysikaliska hjälpprinciper, såsom termodynamikens andra lag. Detta ger en DG-metod som kan diskretisera delade former av relevanta PDE:er med hög ordning. Ett exempel på en delad form är det aritmetiska medelvärdet av de konservativa och advektiva formerna av en ekvation.
FLUXO - ett numeriskt verktyg för att lösa linjära och olinjära advektionsdiffusionsekvationer
Jag fokuserar också på HPC-aspekter (high performance computing) av DG-metoder. Jag är en av huvudutvecklarna av en HPC-implementation av Split-Form-Nodal-DG-Framework kallat FLUXO. FLUXO-koden är skriven i modern Fortran och parallelliserad för CPU-arkitekturer med MPI.
Trixi.jl – ett verktyg för konservationslager
Skriven i Julia, det här simuleringsverktyget är utformat för enkel användning och modifiering för såväl forskare som studenter. De tillgängliga numeriska approximationerna är höggradiga nodala DG-metoder eller SBP finita differensmetoder på strukturerade eller ostrukturerade nät. Ytterligare funktioner i Trixi.jl inkludera adaptive mesh refinement (AMR), shock-capturing och multifysik approximationer.
HOHQMesh.jl - Ostrukturerad nätgenerering
Detta är en Julia-frontend till den Fortran-baserade kod High Order Hex-Quad Mesher (HOHQMesh) som jag också är utvecklare av. Den kompletterar HOHQMesh med interaktiv funktionalitet som ger användaren möjlighet att skapa, visualisera och generera ostrukturerade nät av hög ordning.
Från MATLAB till Fortran
Fortran är ett programmeringsspråk som är särskilt lämpat för numerisk analys och vetenskapliga beräkningar. Fortrans styrkor är enkla arrayoperationer och översättning av matematiska formuleringar till algoritmer. Syntaxen och programstrukturen är mycket lik MATLAB, men Fortranberäkningar är avsevärt snabbare för komplexa fluidmekaniska problem.
Jag har utarbetat ett dokument på engelska för att introducera och undervisa modern Fortran kodningstekniker med hjälp av exempel. Denna introduktion omfattar praktiska steg för dem som vill byta från programmering i MATLAB till Fortran.