2012/4/13 Andreas Kloeckner <lists(a)informa.tiker.net>et>:
What is the physical application that leads to this?
I was thinking about propagation of elastic waves in solids with
cracks, in the context of contact mechanics . But there should be
applications in other domains as well.
As an interim solution, you should be able to use a
(unfortunately, this would have to be a volume field, so the flag
wouldn't be 100% exact) to decide which flux you want. You should then
be able to use a pymbolic.primitives.If to implement the condition.
Thanks for this idea. My first tests, in 2D, show that it works quite
well. What I finally did is to define two surfaces, with different
tags, one on each side of the crack. The tags allow to define a scalar
indicator, crack, inside the state vector, with three different
values: -1 on the first (for instance: left) side, +1 on the other
(right) side and 0 elsewhere. The widths of the surfaces are not
The numerical flux that I use is then multiplied by: abs(crack.int) *
- crack.ext) * 0.5
This way, the special flux is multiplied by zero everywhere except
and crack.ext are different, that is where the two
elements are located on a different side of the crack.
This method allows us to select numerical fluxes for a specific
interface. I haven't tried to use pymbolic.If yet.