Adrian Croucher <[email protected]> writes: > hi > > How would one go about implementing a Riemann function in DMPlexTS that > included a term based on the gradient of the solution?
Elliptic fluxes are fundamentally not Riemann problems. On orthogonal meshes with isotropic coefficients, you can use a "two-point" flux, but this is inconsistent for non-orthogonal meshes or general tensor coefficients. There are many choices for the more general case, none of which are "simple" and deeply satisfying. I explained some of the alternatives and provide pointers to the literature in these answers: http://scicomp.stackexchange.com/a/6712/119 http://scicomp.stackexchange.com/a/4962/119 > Simple example: extending TS ex11 to include a diffusion term. > > Would that be done by subtracting a gradient term from the flux in > PhysicsRiemann_Advect()- e.g. a constant diffusion coefficient > multiplied by the gradient of the solution across the interface, > calculated simply by the difference between the solution values at the > two cells, divided by the distance between their centroids? > > It seems to me you would need to pass the face index into the Riemann > function, to get access to the cells supporting the face and their > centroid positions- but the way the Riemann function interface is > currently set up doesn't appear to allow for that. > > Or have I got the wrong idea about how one would go about implementing this? That generalization would only support the simple two-point flux, which has limited applicability. Adding diffusion to this example in a principled way would require that some discretization choices be made.
pgp_ZEP8JpMkH.pgp
Description: PGP signature
