Comment 8 for bug 1077912

Revision history for this message
Anders Logg (logg) wrote : Re: [Bug 1077912] [NEW] Incorrect DirichletBC behaviour with assemble_system

I agree it may be confusing and I can clarify this in the
documentation. But I would not call this a bug. It is a well-known
feature that DirichletBC can be used to set "boundary conditions"
anywhere. It's been like that for ca 10 years. That's also why we have
the on_boundary parameter to allow setting conditions on the actual
boundary.

--
Anders

On Tue, Nov 13, 2012 at 10:40:04AM -0000, Martin Sandve Alnæs wrote:
> Boundary (topology), the closure minus the interior of a subset of a
> topological space; an edge in the topology of manifolds, as in the case
> of a 'manifold with boundary'
>
> As I said above, this is at the very least a documentation bug. The
> sentence I quote makes no sense when all facets may be considered on the
> boundary. I.e. "a facet that is entirely on the boundary". An
> alternative interpretation of what "boundary" means also does not match
> the on_boundary argument to subdomain.inside. And BoundaryMesh takes the
> exterior boundary. Right? So some clarification of terms is in order, at
> least in the DirichletBC documentation.
>
> Martin
>
> Den 13. nov. 2012 kl. 10:12 skrev Anders Logg <email address hidden>:
>
> > This is not a bug. The problem is the interpretation of what boundary
> > means. The boundary is whatever the user specifies and it can lie in
> > the interior.
> >
> >> Public bug reported:
> >>
> >> According to
> >>
> >> http://fenicsproject.org/documentation/dolfin/1.0.0/python/programmers-
> >> reference/fem/bcs/DirichletBC.html#dolfin.fem.bcs.DirichletBC
> >>
> >> "The topological approach is faster, but will only identify degrees of
> >> freedom that are located on a facet that is entirely on the boundary."
> >>
> >> However, this does not seem to be the case. I will attach here a code
> >> which changes behaviour when switching between marking all facets or all
> >> facets on the boundary, look for the lines:
> >>
> >> if enable_bug:
> >> boundaries.set_all(walldomain)
> >> else:
> >> Wall().mark(boundaries, walldomain)
> >>
> >> ** Affects: dolfin
> >> Importance: Undecided
> >> Status: New
> >>
> >
>