> I was actually thinking in terms of continues finite elements. Thought it
> would be nice to implement the jump in a strong sense.
You can't. Imagine a line where the coefficient on one side is e1 and on the
other side e2. Then you know that
n . (e1 grad(u1)) = n . (e2 grad(u2))
where u1, u2 are the solution function evaluated at the two sides of the
interface.
Now imagine that this line cuts through part of the domain where e1=e2, i.e.,
we're considering a line where the coefficient is not actually discontinuous.
The condition then in essence means that the solution's gradient is the same
from the two sides, i.e., the solution is continuous differentiable (in the
space C^1).
Now think what would happen if you tried to enforce something like this
strongly on a discrete solution. For simplicity, take linear triangles. If you
want the gradient on both sides to be the same, that means that the function
on both sides of the interface is simply linear across the interface. Since
this has to be the case at *all* internal interfaces, you'll end up with a
discrete solution that is *globally* just a linear function -- in general a
rather poor "approximation" of the exact solution, and one that doesn't get
better by mesh refinement.
In other words, you really don't want to enforce the flux condition strongly :-)
> In any case case. For the 'regular' implementation Deal.ii nicely deals with
> the material discontinuity, see the image above.
>
> But the idea was to impose the jump, some how, such that the method could
> stick to larger elements at the interface without triggering refinements there.
That's a separate issue. You are using the Kelly error estimator (I suppose)
which looks at the difference of the gradients on both sides of a cell
interface. What you want to do is use a refinement criterion that looks at the
*fluxes* at both sides of a cell interface, i.e., the gradient times the
coefficient. You can achieve this by passing a coefficient to the Kelly error
estimator class.