Reference documentation for deal.II version SVN Revision 32629
< types::boundary_id, const
Function< dim > * >
This class declares a local typedef that denotes a mapping between a boundary indicator (see GlossBoundaryIndicator) that is used to describe what kind of boundary condition holds on a particular piece of the boundary, and the function describing the actual function that provides the boundary values on this part of the boundary. This type is required in many functions in the library where, for example, we need to know about the functions used in boundary conditions
An example is the function KellyErrorEstimator::estimate() that allows us to provide a set of functions for all those boundary indicators for which the boundary condition is supposed to be of Neumann type. Of course, the same kind of principle can be applied to cases where we care about Dirichlet values, where one needs to provide a map from boundary indicator to Dirichlet function if the boundary conditions are given as
This is, for example, the case for the VectorTools::interpolate() functions.
Tutorial programs step-6, step-7 and step-8 show examples of how to use function arguments of this type in situations where we actually have an empty map (i.e., we want to describe that no part of the boundary is a Neumann boundary). step-16 actually uses it in a case where one of the parts of the boundary uses a boundary indicator for which we want to use a function object.
It seems odd at first to declare this typedef inside a class, rather than declaring a typedef at global scope. The reason is that C++ does not allow to define templated typedefs, where here in fact we want a typdef that depends on the space dimension. (Defining templated typedefs is something that is possible starting with the C++11 standard, but that wasn't possible within the C++98 standard in place when this programming pattern was conceived.)
|typedef std::map<types::boundary_id, const Function<dim>*> FunctionMap< dim >::type|