Hi Jon,

  What's the question?


all the best

--cjc


From: firedrake-bounces@imperial.ac.uk <firedrake-bounces@imperial.ac.uk> on behalf of Jon Hill <jon.hill@york.ac.uk>
Sent: 24 October 2018 03:50:12
To: firedrake
Subject: [firedrake] Sanity check
 
Hi folks,

Can I just get a sanity check on this bit of code to check I'm not doing
something insane (I probably am) or stupid (equally likely).

The problem is a basic diffusion equation where a pile of sediment is
eroded and transport by diffusion only. The un-erodable topographic
surface (land) + sediment (phi) make up the land surface and the slope
over which the sediment is moved. The attached figure might show it more
clearly.

phi is therefore moved according to the 2nd order (phi+land). However,
I've also had to "turn off" diffusion by setting the diffusion
coefficient (nu) to zero where there is no sediment or volume is
definitely not conserved.

The equation is set up using:

tiny = 1e-10
surface.interpolate((((land+phi) + land)+abs((land+phi)-land)) / 2)
thickness.interpolate(surface-land)
limit.interpolate((surface - land)/(surface-land+tiny))

F = (inner((phi - phi_)/timestep, v)
      + limit*nu*inner(grad(phi+land), grad(v)))*dx

And then simply solved:

     solve(F == 0, phi)

in the time loop, updating limit and surface as we go.

Hopefully, the above is understandable, but if anyone has any opinions
on my (in)sanity, then I'm happy to hear them!

Cheers,
J.


--
I'm currently in Australia and replies will not be in standard UK
business hours.
Please do not feel you have to respond outside your normal work hours.

Dr Jon Hill
Senior Lecturer in Physical Geography
Department of Environment and Geography
University of York
M: +44(0)7748254812
P: +44(0)1904 324480
Twitter: @jonxhill
Web: https://jonxhill.wordpress.com/
Web: https://envmodellinggroup.github.io/