Define operator for jump over surface
From Mehdi Nikbakht:
Assume this weak form for Poisson equation with discontinuities.
inner(grad(u), grad(v))*dx + k*[[u]]*[[v]]*dc - v*f*dx = 0
where f
and k
are source term and the interface stiffness, respectively. In this form, we need to compute jump of solution over discontinuity surface.
The current jump()
operator can't be used since it just computes jump over facets(positive and negative sides)
We can either modify jump()
operator to perform this functionality or we can define a new operand called djump()
.
Based on the discussion that Kristian and I had, we think defining djump()
will be more suitable.
In XFEM approach, we define
$u = \hat{u} + H \bar{u}$
A continuous space is enriched by a discontinuous space. Note that djump
operator is corresponding to discontinuous parts of solution in this case
djump(u) = \bar(u).
I think this can be related to the discussion that Marie and I had on split functionality for enriched elements.
https://lists.launchpad.net/dolfin/msg01913.html
if we have this form,
elem_c = FiniteElement("Lagrange", "tetrahedron", 1)
elem_d = ElementRestirction(elem_c, dc)
element = elem_c + elem_d
v = TestFunction(element) # Test function
v0, v1 = split(v)
Since djump(v)
should return v1
in this case.
Comments (3)
-
reporter -
reporter The split function should not be used for this purpose, the semantics are not the same as the current behaviour. A separate function with another name shouldn't be a problem.
Anyway, without more interest show by the requesters, this won't be considered for implementation.
-
- edited description
- Log in to comment
Andre Massing says: Don't know about the enriched elements but having a djump() operator sounds good. It would also be useful for us in our implementation of Nitsche's method on overlapping meshes.