Hi Tuomas,
Just checking, how are you setting this boundary condition?
There may be pressure gradient errors over steep topography, but I would expect the velocity not to be too bad.
all the best--cjc
On 24 September 2015 at 17:39, Tuomas Karna <tuomas.karna@gmail.com> wrote:
Hi Colin,
Thanks for your reply. On a couple of test cases I see grid-scale noise in the velocity field, which may be significant over steep bathymetry gradients. But thus far I have been imposing the bottom impermeability boundary condition in the conventional way, which may be the origin of the noise. I'll keep testing this.
- Tuomas
On 09/24/2015 01:18 AM, Colin Cotter wrote:
--cjcall the bestMy suggestion is to just try it and see if there are any problems.Hi Tuomas,So the way I have been advocating mimetic/compatible spaces for atmosphere/ocean with terrain-following meshes is to use the Piola transform, this does indeed make the horizontal space no longer horizontal as you say. This allows an easy implementation of the u.n=0 boundary condition on sloping surfaces. For our tests for flows over mountains, this doesn't cause any problems as far as I can see. This is slightly different from the classical approach which is to keep storing horizontal velocities, but this leads to a more complicated coupled boundary condition on sloping surfaces.
On 24 September 2015 at 07:46, Tuomas Karna <tuomas.karna@gmail.com> wrote:
Hi all,
I have a question related to mimetic element spaces on extruded meshes.
Hydrostatic ocean models solve a momentum equation for the horizontal
velocity components uv = (u, v, 0), while w is computed from the
continuity equation diagnostically.
I've been using the following spaces for uv and w:
# for horizontal velocity components
Uh_elt = FiniteElement('RT', triangle, self.order+1)
Uv_elt = FiniteElement('DG', interval, self.order)
U_elt = HDiv(OuterProductElement(Uh_elt, Uv_elt))
# for vertical velocity component
Wh_elt = FiniteElement('DG', triangle, self.order)
Wv_elt = FiniteElement('CG', interval, self.order+1)
W_elt = HDiv(OuterProductElement(Wh_elt, Wv_elt))
U = FunctionSpace(self.mesh, U_elt) # uv
W = FunctionSpace(self.mesh, W_elt) # w
This works fine for orthogonal extrusion, where all horizontal faces are
strictly horizontal. However, when you extrude the mesh over variable
topography this is no longer true. Then the U space is no longer
strictly horizontal which breaks the model. For example projecting a
vector (1, 0, 0) on U space on highly deformed mesh doesn't give you (1,
0, 0).
Earlier Andrew suggested enriching the U space with the W elements to
better represent a true 3d vector:
UW_elt = EnrichedElement(U_elt, W_elt)
U = FunctionSpace(self.mesh, UW_elt)
This has couple of issues though:
- the U space no longer has an equivalent 2d vector space, so 2d-3d
coupling breaks
- this is fairly complex space, and hence slow.
Do you see any way around this? Would it make more sense to just use DG
space for U and W instead?
Cheers,
Tuomas
_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake
--
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
--
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake