Corners where boundary conditions change from Neumann to Dirichlet are ambiguous because Dirichlet conditions are assigned to vertices while Neumann conditions should be assigned to boundary edges; yet Gfem does not give access to edge numbers. Understanding how these are implemented helps overcome the difficulty.
All boundary conditions are converted to mixed Fourier/Robin conditions:
id(u) a + dnu(u) b = c;
For Dirichlet conditions a is set to 1.0e12
and c
is multiplied by the same;
for Neumann a=0
. Thus Neumann condition is present even when there
is Dirichlet but the later overrules the former because of the large
penalty number. Functions a,b,c
are piecewise linear continuous, or
discontinuous if precise
is set.
In case of Dirichlet-Neumann corner (with Dirichlet on one side and Neumann
on the other) it is usually better to put a Dirichlet logic at the corner.
But if fine precision is needed then the option precise
can guarantee that
the integral on the edge near the corner on the Neumann side is properly taken
into account because then the corner has a Dirichlet value and a Neumann value
by the fact that functions are discontinuous.