Hi Lawrence, ok, thanks, I see, that's good. So that means if I build a P1xP1 FunctionSpaceHierarchy on this mesh hierarchy, I can call restrict() and prolong() to move between the levels, basically what I do for the DG0xDG0 space at the moment. As I say, I think I know how to do the columnwise smoother (in principle), so that means we don't have to worry about the tensor-product multigrid for the P1xP1 space at the moment (and - for testing - I could always assemble the matrix exactly on the P1xP1 space and invert it with PETSc). Eike On 16/03/15 14:15, Lawrence Mitchell wrote:
On 16 Mar 2015, at 02:49, Eike Mueller <E.Mueller@bath.ac.uk> wrote:
(2) The other ingredient we need for the Gopalakrishnan and Tan approach is a tensor-product solver in the P1 space. So can I already prolongate/restrict in the horizontal-direction only in this space? I recall that Lawrence wrote a P1 multigrid, but I presume this is for a isotropic grid which is refined in all coordinate directions. Again I can probably do it 'by hand' by just L2 projecting between the spaces, but this will not be the most efficient way. Getting the columnwise smoother should work as for the DG0 case: I need to assemble the matrix locally and then pick out the vertical couplings and build them into a columnwise matrix, which I store as a vector-valued P1 space on the horizontal host-grid.
No, you should be able to do grid transfer for any horizontal x vertical point evaluation discretisation, as long as you only coarsen in the horizontal i.e.
m = BaseMesh(...)
mh = MeshHierarchy(...)
extruded_hierarchy = ExtrudedMeshHierarchy(mh, layers=...)
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- Dr Eike Hermann Mueller Lecturer in Scientific Computing Department of Mathematical Sciences University of Bath Bath BA2 7AY, United Kingdom +44 1225 38 6241 e.mueller@bath.ac.uk http://people.bath.ac.uk/em459/