* a different kind of boundary condition in the partial differential
* equation.
*
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
* @ingroup grid
* @author Wolfgang Bangerth, 1998-2006
*/
* @ref GlossBlock "block entry of this glossary".
* </dd>
*
+ *
* <dt class="glossary">@anchor GlossBoundaryForm <b>%Boundary form</b></dt>
*
* <dd>For a dim-dimensional triangulation in dim-dimensional space,
* cell. </dd>
*
*
+ * <dt class="glossary">@anchor GlossBoundaryIndicator <b>%Boundary indicator</b></dt>
+ *
+ * <dd>
+ * In a Triangulation object, every part of the boundary is associated with
+ * a unique number (of type types::boundary_id) that is used to identify which
+ * boundary geometry object is responsible to generate new points when the mesh
+ * is refined. By convention, this boundary indicator is also often used to
+ * determine what kinds of boundary conditions are to be applied to a particular
+ * part of a boundary. The boundary is composed of the faces of the cells and, in 3d,
+ * the edges of these faces.
+ *
+ * By default, all boundary indicators of a mesh are zero, unless you are
+ * reading from a mesh file that specifically sets them to something different,
+ * or unless you use one of the mesh generation functions in namespace GridGenerator
+ * that have a 'colorize' option. A typical piece of code that sets the boundary
+ * indicator on part of the boundary to something else would look like
+ * this, here setting the boundary indicator to 42 for all faces located at
+ * $x=-1$:
+ * @code
+ * for (typename Triangulation<dim>::active_cell_iterator
+ * cell = triangulation.begin_active();
+ * cell != triangulation.end();
+ * ++cell)
+ * for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+ * if (cell->face(f)->at_boundary())
+ * if (cell->face(f)->center()[0] == -1)
+ * cell->face(f)->set_boundary_indicator (42);
+ * @endcode
+ * This calls functions TriaAccessor::set_boundary_indicator. In 3d, it may
+ * also be appropriate to call TriaAccessor::set_all_boundary_indicators instead
+ * on each of the selected faces. To query the boundary indicator of a particular
+ * face or edge, use TriaAccessor::boundary_indicator.
+ *
+ * The code above only sets the boundary indicators of a particular part
+ * of the boundary, but it does not by itself change the way the Triangulation
+ * class treats this boundary for the purposes of mesh refinement. For this,
+ * you need to call Triangulation::set_boundary to associate a boundary
+ * object with a particular boundary indicator. This allows the Triangulation
+ * object to use a different method of finding new points on faces and edges
+ * to be refined; the default is to use a StraightBoundary object for all
+ * faces and edges.
+ *
+ * The second use of boundary indicators is to describe not only which geometry
+ * object to use on a particular boundary but to select a part of the boundary
+ * for particular boundary conditions. To this end, many of the functions in
+ * namespaces DoFTools and VectorTools take arguments that specify which part of
+ * the boundary to work on. Examples are DoFTools::make_periodicity_constraints,
+ * DoFTools::extract_boundary_dofs, DoFTools::make_zero_boundary_constraints and
+ * VectorTools::interpolate_boundary_values,
+ * VectorTools::compute_no_normal_flux_constraints.
+ *
+ * @note Boundary indicators are inherited from mother faces and edges to
+ * their children upon mesh refinement. Some more information about boundary
+ * indicators is also presented in a section of the documentation of the
+ * Triangulation class.
+ *
+ * @note For meshes embedded in a higher dimension (i.e., for which the
+ * 'dim' template argument to the Triangulation class is less than the
+ * 'spacedim' argument -- sometimes called the 'codimension one' or 'codimension
+ * two' case), the Triangulation also stores boundary indicators for cells, not just
+ * faces and edges. In this case, the boundary object associated with a particular
+ * boundary indicator is also used to move the new center points of cells back
+ * onto the manifold that the triangulation describes whenever a cell is refined.
+ * </dd>
+ *
+ * @see @ref boundary "The module on boundaries"
+ *
+ *
* <dt class="glossary">@anchor GlossComponent <b>Component</b></dt>
*
* <dd> When considering systems of equations in which the solution is not
* The type used to denote boundary indicators associated with every
* piece of the boundary and, in the case of meshes that describe
* manifolds in higher dimensions, associated with every cell.
- *
- * There is a special value, numbers::internal_face_boundary_id
- * that is used to indicate an invalid value of this type and that
- * is used as the boundary indicator for faces that are in the interior
- * of the domain and therefore not part of any addressable boundary
- * component.
+ *
+ * There is a special value, numbers::internal_face_boundary_id
+ * that is used to indicate an invalid value of this type and that
+ * is used as the boundary indicator for faces that are in the interior
+ * of the domain and therefore not part of any addressable boundary
+ * component.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
typedef unsigned char boundary_id;
* default value. We assume that
* all valid boundary_ids lie in the
* range [0, invalid_boundary_id).
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
const types::boundary_id invalid_boundary_id = static_cast<types::boundary_id>(-1);
* differentiate between faces that lie at the boundary of the domain
* and faces that lie in the interior of the domain. You should never try
* to assign this boundary indicator to anything in user code.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
const types::boundary_id internal_face_boundary_id = static_cast<types::boundary_id>(-1);
* @note This function will not work for DoFHandler objects that are
* built on a parallel::distributed::Triangulation object.
*
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
* @author Matthias Maier, 2012
*/
template<typename DH>
* @note This function will not work for DoFHandler objects that are
* built on a parallel::distributed::Triangulation object.
*
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
* @author Matthias Maier, 2012
*/
template<typename DH>
*
* @note This function will not work for DoFHandler objects that are
* built on a parallel::distributed::Triangulation object.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template<typename DH>
void
*
* @note This function will not work for DoFHandler objects that are
* built on a parallel::distributed::Triangulation object.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template<typename DH>
void
* If it is a non-empty list, then the function only considers
* boundary faces with the boundary indicators listed in this
* argument.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* If it is a non-empty list, then the function only considers
* boundary faces with the boundary indicators listed in this
* argument.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* function says that it is
* nonzero on any face on one of
* the selected boundary parts.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
*
* See the general doc of this
* class for more information.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* degrees of freedom at the boundary will be considered.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, int spacedim, template <int, int> class DH>
void
* indicator of a face can be changed using a call of the kind
* <code>cell-@>face(1)-@>set_boundary_indicator(42);</code>.
*
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*
*
* <h3>History of a triangulation</h3>
* replaces the boundary object given
* before by a straight boundary
* approximation.
- *
- * @ingroup boundary
+ *
+ * @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void set_boundary (const types::boundary_id number,
const Boundary<dim,spacedim> &boundary_object);
* undoes assignment of a different
* boundary object by the function of
* same name and two arguments.
- *
- * @ingroup boundary
+ *
+ * @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void set_boundary (const types::boundary_id number);
* this triangulation. Number is
* the same as in
* @p set_boundary
- *
- * @ingroup boundary
+ *
+ * @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
const Boundary<dim,spacedim> &get_boundary (const types::boundary_id number) const;
* the number of different
* indicators (which is greater
* or equal one).
- *
- * @ingroup boundary
+ *
+ * @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
std::vector<types::boundary_id> get_boundary_indicators() const;
* value numbers::internal_face_boundary_id,
* then this object is in the
* interior of the domain.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
types::boundary_id boundary_indicator () const;
* sense under the current circumstances.
*
* @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void set_boundary_indicator (const types::boundary_id) const;
* current function.
*
* @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void set_all_boundary_indicators (const types::boundary_id) const;
* value numbers::internal_face_boundary_id,
* then this object is in the
* interior of the domain.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
types::boundary_id boundary_indicator () const;
* sense under the current circumstances.
*
* @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void
set_boundary_indicator (const types::boundary_id);
* argument.
*
* @ingroup boundary
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
void
set_all_boundary_indicators (const types::boundary_id);
* function with remapped
* arguments.
*
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* interpolate_boundary_values()
* function, see above, with
* <tt>mapping=MappingQ1@<dim@>()</tt>.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* with remapped arguments.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* <tt>mapping=MappingQ1@<dim@>()</tt>.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <class DH>
void
* the face.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim>
void project_boundary_values_curl_conforming (const DoFHandler<dim> &dof_handler,
* Same as above for the hp-namespace.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim>
void project_boundary_values_curl_conforming (const hp::DoFHandler<dim> &dof_handler,
* boundary.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template<int dim>
void project_boundary_values_div_conforming (const DoFHandler<dim> &dof_handler,
* Same as above for the hp-namespace.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template<int dim>
void project_boundary_values_div_conforming (const hp::DoFHandler<dim> &dof_handler,
* these points.
*
* @ingroup constraints
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, template <int, int> class DH, int spacedim>
-
void
compute_no_normal_flux_constraints (const DH<dim,spacedim> &dof_handler,
const unsigned int first_vector_component,
*
* See the general documentation of this
* class for further information.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, int spacedim>
void create_boundary_right_hand_side (const Mapping<dim,spacedim> &mapping,
* create_boundary_right_hand_side()
* function, see above, with
* <tt>mapping=MappingQ1@<dim@>()</tt>.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, int spacedim>
void create_boundary_right_hand_side (const DoFHandler<dim,spacedim> &dof,
/**
* Same as the set of functions above,
* but for hp objects.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, int spacedim>
void create_boundary_right_hand_side (const hp::MappingCollection<dim,spacedim> &mapping,
* therefore will only work if
* the only active fe index in
* use is zero.
+ *
+ * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
*/
template <int dim, int spacedim>
void create_boundary_right_hand_side (const hp::DoFHandler<dim,spacedim> &dof,