Felix,
I think I ran into another bug here, but there is always the possibilty that I
just tried to do something stupid. Therefore, before I post this on GitHub,
I'd like someone who knows what he/she is doing to have a look at that.
Outline of the Problem: Use Nedelec Elements to compute time-harmonic
Maxwell's Equation in 2D on a circle, with the Boundary condition of vanishing
normal component (that actually holds true for the magnetic B-field on the
surface of perfect electric conductor).
That can't be right. If you have the curl-curl equation, you need to use the
Nedelec element and can then only prescribe the tangential component only. If
you want to prescribe the *normal* component at the boundary, then you need
either an H_div element (such as the Raviart-Thomas element) or an H^1 element
(such as the regular Q_k elements) and the equation cannot be the curl-curl
equation.
The boundary conditions
compute_no_normal_flux_constraint(...) cannot be applied, yielding the error
at the end of the mail. A minimal-ish example of just the constructor of the
problem is attached.
The fact that the error message is not more descriptive is a bug, even though
the function cannot work in that context. Can you open a bug report for the
lack of an intelligible error message?
Another question: if I use a spherical manifold for the boundary before global
refinement, and try to set up the system with the working FESystem composite
element, the function compute_no_normal_flux_constraints crashes as well,
telling me that "I gave it a manifold instead of boundaries". I don't
understand how to handle that. In this case, I hope a short code snippet is
enough:
GridGenerator::hyper_ball(triangulation);
static const SphericalManifold<dim> bound;
triangulation.set_all_manifold_ids_on_boundary(1);
triangulation.set_manifold(1,bound);
triangulation.refine_global(3);
dof_handler.distribute_dofs(fe);
std::set<types::boundary_id> bd_id;
bd_id.insert(0);
VectorTools::compute_no_normal_flux_constraints(dof_handler,0,bd_id,constraints);
That is because of a historical wart we'd like to fix after the upcoming
release: we have two ways to describe geometries -- one is the Manifold class
that can be attached to cells, faces, and edges; and the other is the Boundary
class that can only be attached to boundary faces and edges via the
boundary_id tag. The function you call only works with the latter. But you use
the former. You will want to use the HyperBallBoundary class for the boundary.
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email: bange...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.