const std::vector<bool> &component_mask_)
{
const unsigned int dim=DH::dimension;
+ const unsigned int spacedim=DH::space_dimension;
Assert ((component_mask_.size() == 0) ||
(component_mask_.size() == dof.get_fe().n_components()),
const unsigned int n_components = DoFTools::n_components(dof);
const bool fe_is_system = (n_components != 1);
- for (typename FunctionMap<DH::space_dimension>::type::const_iterator i=function_map.begin();
+ for (typename FunctionMap<spacedim>::type::const_iterator i=function_map.begin();
i!=function_map.end(); ++i)
Assert (n_components == i->second->n_components,
ExcDimensionMismatch(n_components, i->second->n_components));
std::vector<unsigned int> face_dofs;
face_dofs.reserve (DoFTools::max_dofs_per_face(dof));
- std::vector<Point<DH::space_dimension> > dof_locations;
+ std::vector<Point<spacedim> > dof_locations;
dof_locations.reserve (DoFTools::max_dofs_per_face(dof));
// array to store the values of
// the interpolation points of all
// finite elements that may ever be
// in use
- hp::FECollection<dim> finite_elements (dof.get_fe());
+ hp::FECollection<dim,spacedim> finite_elements (dof.get_fe());
hp::QCollection<dim-1> q_collection;
for (unsigned int f=0; f<finite_elements.size(); ++f)
{
- const FiniteElement<dim> &fe = finite_elements[f];
+ const FiniteElement<dim,spacedim> &fe = finite_elements[f];
// generate a quadrature rule
// on the face from the unit
// hp::FEFaceValues object that we
// can use to evaluate the boundary
// values at
- hp::MappingCollection<dim> mapping_collection (mapping);
- hp::FEFaceValues<dim> x_fe_values (mapping_collection, finite_elements, q_collection,
- update_quadrature_points);
+ hp::MappingCollection<dim,spacedim> mapping_collection (mapping);
+ hp::FEFaceValues<dim,spacedim> x_fe_values (mapping_collection, finite_elements, q_collection,
+ update_quadrature_points);
typename DH::active_cell_iterator cell = dof.begin_active(),
endc = dof.end();
for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
++face_no)
{
- const FiniteElement<dim,DH::space_dimension> &fe = cell->get_fe();
+ const FiniteElement<dim,spacedim> &fe = cell->get_fe();
// we can presently deal only with
// primitive elements for boundary
{
// face is of the right component
x_fe_values.reinit(cell, face_no);
- const FEFaceValues<dim> &fe_values = x_fe_values.get_present_fe_values();
+ const FEFaceValues<dim,spacedim> &fe_values = x_fe_values.get_present_fe_values();
// get indices, physical location and
// boundary values of dofs on this
// face
face_dofs.resize (fe.dofs_per_face);
face->get_dof_indices (face_dofs, cell->active_fe_index());
- const std::vector<Point<DH::space_dimension> > &dof_locations
+ const std::vector<Point<spacedim> > &dof_locations
= fe_values.get_quadrature_points ();
if (fe_is_system)
&& ! excluded_dofs[dof_to_boundary_mapping[i]])
{
Assert(numbers::is_finite(boundary_projection(dof_to_boundary_mapping[i])), ExcNumberNotFinite());
-
+
// this dof is on one of the
// interesting boundary parts
//
ConstraintMatrix &,
const std::vector<bool> &);
+#if deal_II_dimension < 3
+template
+void VectorTools::interpolate_boundary_values (
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ std::map<unsigned int,double> &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ std::map<unsigned int,double> &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const MGDoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ std::map<unsigned int,double> &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const MGDoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const Mapping<deal_II_dimension,deal_II_dimension+1> &,
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const Mapping<deal_II_dimension,deal_II_dimension+1> &,
+ const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const Mapping<deal_II_dimension,deal_II_dimension+1> &,
+ const MGDoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values (
+ const MGDoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ ConstraintMatrix &,
+ const std::vector<bool> &);
+#endif
+
template
void VectorTools::project_boundary_values<deal_II_dimension>
(const Mapping<deal_II_dimension> &,
-// // Due to introducing the DoFHandler as a template parameter,
-// // the following instantiations are required in 1d
-// #if deal_II_dimension == 1
-// template
-// void VectorTools::interpolate_boundary_values<deal_II_dimension>
-// (const Mapping<1> &,
-// const DoFHandler<1> &,
-// const unsigned char,
-// const Function<1> &,
-// std::map<unsigned int,double> &,
-// const std::vector<bool> &);
-// #endif
-
-// the following two functions are not derived from a template in 1d
-// and thus need no explicit instantiation
-//#if deal_II_dimension > 1
template
void VectorTools::interpolate_boundary_values
(const Mapping<deal_II_dimension> &,
std::map<unsigned int,double> &,
const std::vector<bool> &);
-//#endif
+#if deal_II_dimension < 3
+template
+void VectorTools::interpolate_boundary_values
+(const Mapping<deal_II_dimension,deal_II_dimension+1> &,
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const FunctionMap<deal_II_dimension+1>::type &,
+ std::map<unsigned int,double> &,
+ const std::vector<bool> &);
+
+template
+void VectorTools::interpolate_boundary_values
+(const Mapping<deal_II_dimension,deal_II_dimension+1> &,
+ const DoFHandler<deal_II_dimension,deal_II_dimension+1> &,
+ const unsigned char,
+ const Function<deal_II_dimension+1> &,
+ std::map<unsigned int,double> &,
+ const std::vector<bool> &);
+#endif
template