Stromingssimulatie
We kunnen de verspreiding van een concentratie als gevolg van een stroming beschrijven als
met , en initiële conditie . We zien meteen dat een oplossing is, en kunnen dus gemakkelijk numerieke methoden uittesten.
Om deze vergelijking op te lossen moeten we zowel in de tijd als in de ruimte discretiseren. Voor de ruimtelijke afgeleiden hebben we 3 keuzes
voorwaartse differentie: ,
terugwaartse differentie: ,
centrale differentie: ,
Als we nu de functie op rooster punten bekijken kunnen kunnen we de voorwaartse differentie bijvoorbeeld schrijven als , met . We krijgen nu een stelsel gewonen differentiaalvergelijkingen
waarbij de matrix de eerste afgeleide representeert en .
We zullen in eerste instantie EF gebruiken om dit stelsel op te lossen. We gaan kijken welk van deze benaderingen van de afgeleide naar het meest geschikt is om de advectievergelijking op te lossen. Hierbij moeten we rekening houden dat zowel positief als negatief kan zijn!
Een uitbreiding is het invoeren van een variabele stroomsnelheid , die dus tegelijk positief als negatief kan zijn. Hoe zouden we hier mee om kunnen gaan?
Een verdere uitbreiding is het bekijken van tweedimensionale advectie
Als en ruimtelijk varieren moeten ze voldoen aan
Vragen voor het verslag
Basis
Hoe zien de verschillende matrices eruit? Hoe zit het met de nauwkeurigheid van de benadering?
Test en analyseer de verschillende ruitemlijke discretisaties in combinatie met EF voor het 1D geval. Kijk naar de orde van de fout in en en de stabiliteit als functie van en .
Test de verschillende methoden ook numeriek. Gebruik bijvoorbeeld .
Hoe zit het met behoud van de vorm van initiële conditie? Kun je dit gedrag verklaren?
Extra
Als alternatieve methode is er de Lax methode: , waar gemiddelde berekend van op ieder punt, en de centrale differentie berekend. Hoe zit het met de stabiliteit en nauwkeurigheid van deze methode?
Test je methode ook eens in 2D met en .
Code
Om je opweg te helpen staat hieronder alvast wat code
We kunnen nu de advectievergelijking oplossen met EF:
En in 2D kunnen we de methode als volgt implementeren