On Wed, 14 Mar 2012 18:02:38 +0100, Wolfgang Bangerth
<[email protected]> wrote:
Jennifer,
Sure, here's what I came up with. From what I can see, it looks like
the
difference between this program and test case 8 is the use of
HalfHyperShellBoundary.
After looking at it, this is sort of an awkward problem. What is
happening is that you are attaching the hypersphere boundary to
boundary indicator zero of your geometry. The problem is that as per
the documentation of the GridGenerator::half_hyper_shell function, by
default, *all* parts of the boundary have boundary indicator zero
(but
this can be changed using the 'colorize' argument). This includes the
two faces in radial direction that terminate the half shell for which
this boundary description is definitely not appropriate.
What happens then is sort of a complex travesty: the no_flux function
wants to know the normal vectors of the two faces on the last cell of
the half circle that come together at the left terminating vertex;
the
normal vectors at this point should have been
(-1, 0) (for the face on the outer radius)
(0, -1) (for the radial face that terminates the half-circle)
which at the common vertex span the entire space as expected. But,
due to the erroneous choice of boundary geometry, the second face
believes that it, too, is on the outer perimeter of the domain and
also reports
(-1, 0)
which then leads through complicated machinations to the error
message.
I don't really know how one could have caught this error up front. If
you hadn't computed no_normal_flux constraints, you would have
noticed
upon inspection of the mesh after one refinement since there would
have been a mis-placed new vertex. In essence, however, the error
message simply says that something strange is happening that the
library doesn't understand, but there are too many ways something
could have gone wrong to actually point the finger at any one cause
in
the error message...
Does this make sense?
Yes, this makes sense. I missed the fact that HalfHyperShellBoundary
would apply a curved boundary everywhere instead of only where
appropriate. Changing colorize to true and applying
HalfHyperShellBoundary to only boundary indicators 0 and 1 fixes the
problem. Thanks,
Jennifer
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii