u.Other() semantics

Hi, I’ve been trying to understand what NGSolve does when integrating over boundary elements or facets if the integrand specifies u.Other() with no dummy argument. Is it simply ignored by the integrator? Many of the iTutorials seem to use Other() in this way.

For example, when using a symmetric interior penalty method for diffusion, I see three different boundary behaviors depending on my jump condition (with skeleton=True)
u - u.Other() # seems to give an unconstrained boundary condition
u - u.Other(bnd=u) # usually gives an unconstrained condition, but in some cases, we get instability at the boundary
u - u.Other(bnd=0) # tries to enforce a zero Dirichlet condition.

Also, I would very much like to know how to enforce a zero Neumann condition using this method in NGSolve.


Hi Dow,

a very simple answer: To get a homogeneous Neumann bc you just add nothing (i.e. none of the 3 DG terms) at the Neumann boundary.

The meaning of the u.Other() depends a bit whether you apply an operator, or assemble a matrix. For assembling a matrix it doesn’t make sense to specify an inhomogeneous boundary value.

best, Joachim