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