← Back to team overview

dolfin team mailing list archive

Re: [Question #156163]: Depth-averaged Stokes flow vector formulation

 

Question #156163 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/156163

    Status: Open => Answered

Martin Sandve Alnæs proposed the following answer:
On 5 May 2011 21:32, Douglas Brinkerhoff
<question156163@xxxxxxxxxxxxxxxxxxxxx> wrote:
> New question #156163 on DOLFIN:
> https://answers.launchpad.net/dolfin/+question/156163
>
> Hi all,
>
> I'm attempting to implement a depth averaged ice-sheet flow model in dolfin.  I'm starting with something called the shallow-shelf approximation, which is, in essence, a depth averaged version of Stokes' flow (with a non-linear viscosity).  I very much like the interface of FEniCs because of the dimensionally independent problem definition notation, and I would like to define my model using the VectorFunctionSpace construct.
>
> My problem is that in the depth averaged equations, I end up needing a tensor like this :
>
> [ 2ux + vy , uy+vx ]
> [ uy + vx , 2vy+ux ]
>
> where u and v are velocities (the solution) and ux, uy, vx, and vy are their spatial derivatives.  This tensor can be broken into two parts:
>
> [ 2ux ,       uy+vx ]  +  [vy, 0  ]
> [ uy + vx ,      2vy]       [ 0, ux]
>
> The first component is just the 2D strain rate tensor that you get with sym(grad(u)), if u is a trial function over a VectorFunctionSpace.  My question is how to achieve the second part, or more generally, how can I construct the necessary tensor (the first one that I wrote), while maintaining VectorFunctionSpace type notation?
>
> Presumably, I could write the model using two separate scalar variables u and v, and invoking the spatial derivative and as_tensor operator a whole bunch of times ...  but that's not nearly as pleasant, so I would be grateful for any assistance.


as_matrix([[v.dx(1), 0], [0, u.dx(0)]])


> Also, if anyone has any demos of depth-averaged fluid flow (e.g. shallow water equations) that you wouldn't mind sharing, I would appreciate taking a look.  Preferably in Python.
>
> Cheers.
>
>
> --
> You received this question notification because you are a member of
> DOLFIN Team, which is an answer contact for DOLFIN.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dolfin
> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dolfin
> More help   : https://help.launchpad.net/ListHelp
>

-- 
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.