// ---------------------------------------------------------------------
// $Id: fe_values.inst.in 30049 2013-07-18 19:42:40Z maier $
//
// Copyright (C) 1998 - 2013 by the deal.II authors
//
// This file is part of the deal.II library.
//
// The deal.II library is free software; you can use it, redistribute
// it, and/or modify it under the terms of the GNU Lesser General
// Public License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// The full text of the license can be found in the file LICENSE at
// the top level of the deal.II distribution.
//
// ---------------------------------------------------------------------


// Instantiations of functions in FEValuesViews (explicitly write
// dealii:: namespace in order to not confuse the compiler with
// FEValuesViews::Vector).

for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
  {
#if deal_II_dimension <= deal_II_space_dimension
#if (deal_II_space_dimension == DIM_A) || (deal_II_space_dimension == DIM_B)

    template class FEValuesData<deal_II_dimension,deal_II_space_dimension>;
    template class FEValuesBase<deal_II_dimension,deal_II_space_dimension>;
    template class FEValues<deal_II_dimension,deal_II_space_dimension>;
    template class FEValuesBase<deal_II_dimension,deal_II_space_dimension>::
      CellIterator<DoFHandler<deal_II_dimension,deal_II_space_dimension>::cell_iterator>;

    template class FEFaceValuesBase<deal_II_dimension,deal_II_space_dimension>;
    template class FEFaceValues<deal_II_dimension,deal_II_space_dimension>;
    template class FESubfaceValues<deal_II_dimension,deal_II_space_dimension>;


    namespace FEValuesViews
      \{
      template class Scalar<deal_II_dimension, deal_II_space_dimension>;
      template class Vector<deal_II_dimension, deal_II_space_dimension>;
      template class SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>;
      template class Tensor<2, deal_II_dimension, deal_II_space_dimension>;
      \}
#endif
#endif
  }


for (dof_handler : DOFHANDLER_TEMPLATES; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; lda : BOOL)
  {
#if deal_II_dimension <= deal_II_space_dimension
#if (deal_II_space_dimension == DIM_A) || (deal_II_space_dimension == DIM_B)

    template void FEValues<deal_II_dimension,deal_II_space_dimension>::reinit(
    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >);
    template void FEFaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int);
    template void FESubfaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int, unsigned int);
#endif
#endif
  }



for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
  {
#if deal_II_dimension <= deal_II_space_dimension
#if (deal_II_space_dimension == DIM_A) || (deal_II_space_dimension == DIM_B)
    template
      void FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>
      ::get_function_values<dealii::VEC>
      (const dealii::VEC&, std::vector<value_type>&) const;
    template
      void FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>
      ::get_function_gradients<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>
      ::get_function_hessians<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<2,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>
      ::get_function_laplacians<dealii::VEC>
      (const dealii::VEC&, std::vector<double>&) const;

    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_values<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_gradients<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<2,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_symmetric_gradients<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::SymmetricTensor<2,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_curls<dealii::VEC>
      (const dealii::VEC&, std::vector<curl_type>&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_divergences<dealii::VEC>
      (const dealii::VEC&, std::vector<double>&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_hessians<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<3,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
      ::get_function_laplacians<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;

    template
      void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>
      ::get_function_values<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::SymmetricTensor<2,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>
      ::get_function_divergences<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;

    template
      void FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>
      ::get_function_values<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<2,deal_II_space_dimension> >&) const;
    template
      void FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>
      ::get_function_divergences<dealii::VEC>
      (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;
#endif
#endif
  }



for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
  {
#if deal_II_dimension <= deal_II_space_dimension
#if (deal_II_space_dimension == DIM_A) || (deal_II_space_dimension == DIM_B)

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<double> > >, bool) const;
//     template
//       void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_values<VEC>
//       (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
//        VectorSlice<std::vector<std::vector<float> > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_gradients<VEC>
      (const VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_gradients<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<1,deal_II_space_dimension> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_gradients<VEC>
      (const VEC&, std::vector<std::vector<dealii::Tensor<1,deal_II_space_dimension> > > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_gradients<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<1,deal_II_space_dimension> > > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_hessians<VEC>
      (const VEC&, std::vector<dealii::Tensor<2,deal_II_space_dimension> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_hessians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<2,deal_II_space_dimension> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_hessians<VEC>
      (const VEC&, std::vector<std::vector<dealii::Tensor<2,deal_II_space_dimension> > > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_hessians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<2,deal_II_space_dimension> > > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<double> > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_space_dimension>::get_function_laplacians<VEC>
      (const VEC&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<float> > &, bool) const;

#endif
#endif
  }


// instantiations for VEC=IndexSet

for (deal_II_dimension : DIMENSIONS)
  {
#if (deal_II_dimension == DIM_A) || (deal_II_dimension == DIM_B)
    template
	void FEValuesViews::Scalar<deal_II_dimension>::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<double>&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension>::get_function_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension>::get_function_hessians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension>::get_function_laplacians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<double>&) const;

    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_symmetric_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::SymmetricTensor<2,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_curls<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<curl_type>&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<double>&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_hessians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<3,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension>::get_function_laplacians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;

    template
	void FEValuesViews::SymmetricTensor<2,deal_II_dimension,deal_II_dimension>::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::SymmetricTensor<2,deal_II_dimension> >&) const;
    template
	void FEValuesViews::SymmetricTensor<2,deal_II_dimension,deal_II_dimension>::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;

	template
	void FEValuesViews::Tensor<2,deal_II_dimension,deal_II_dimension>::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension> >&) const;
    template
	void FEValuesViews::Tensor<2,deal_II_dimension,deal_II_dimension>::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;


#if deal_II_dimension != 3
    template
	void FEValuesViews::Scalar<deal_II_dimension, deal_II_dimension+1>
	::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<value_type>&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension, deal_II_dimension+1>
	::get_function_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension, deal_II_dimension+1>
	::get_function_hessians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Scalar<deal_II_dimension, deal_II_dimension+1>
	::get_function_laplacians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<double>&) const;

    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_symmetric_gradients<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::SymmetricTensor<2,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<double>&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_hessians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<3,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Vector<deal_II_dimension, deal_II_dimension+1>
	::get_function_laplacians<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> >&) const;

    template
	void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_dimension+1>
        ::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::SymmetricTensor<2,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_dimension+1>
        ::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> >&) const;

    template
	void FEValuesViews::Tensor<2, deal_II_dimension, deal_II_dimension+1>
        ::get_function_values<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension+1> >&) const;
    template
	void FEValuesViews::Tensor<2, deal_II_dimension, deal_II_dimension+1>
        ::get_function_divergences<dealii::IndexSet>
	(const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> >&) const;

#endif
#endif
  }



// Instantiations of functions in FEValuesBase and IndexSet=IndexSet

for (deal_II_dimension : DIMENSIONS)
  {
#if (deal_II_dimension == DIM_A) || (deal_II_dimension == DIM_B)
    template
	void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<double> > >, bool) const;
//     template
//       void FEValuesBase<deal_II_dimension>::get_function_values<IndexSet>
//       (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
//        VectorSlice<std::vector<std::vector<float> > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_gradients<IndexSet>
      (const IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_gradients<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<1,deal_II_dimension> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_gradients<IndexSet>
      (const IndexSet&, std::vector<std::vector<dealii::Tensor<1,deal_II_dimension> > > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_gradients<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<1,deal_II_dimension> > > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_hessians<IndexSet>
      (const IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_hessians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<2,deal_II_dimension> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_hessians<IndexSet>
      (const IndexSet&, std::vector<std::vector<dealii::Tensor<2,deal_II_dimension> > > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_hessians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<2,deal_II_dimension> > > >, bool) const;

    template
	void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<double> > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<float> > &, bool) const;


#if deal_II_dimension != 3

    template
	void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<double> > >, bool) const;
//     template
//       void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_values<IndexSet>
//       (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
//        VectorSlice<std::vector<std::vector<float> > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_gradients<IndexSet>
      (const IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension+1> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_gradients<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<1,deal_II_dimension+1> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_gradients<IndexSet>
      (const IndexSet&, std::vector<std::vector<dealii::Tensor<1,deal_II_dimension+1> > > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_gradients<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<1,deal_II_dimension+1> > > >, bool) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_hessians<IndexSet>
      (const IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension+1> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_hessians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<dealii::Tensor<2,deal_II_dimension+1> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_hessians<IndexSet>
      (const IndexSet&, std::vector<std::vector<dealii::Tensor<2,deal_II_dimension+1> > > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_hessians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       VectorSlice<std::vector<std::vector<dealii::Tensor<2,deal_II_dimension+1> > > >, bool) const;

    template
	void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<float>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<double>&) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&, std::vector<float>&) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<double> > &) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<Vector<float> > &) const;

    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<double> > &, bool) const;
    template
      void FEValuesBase<deal_II_dimension,deal_II_dimension+1>::get_function_laplacians<IndexSet>
      (const IndexSet&, const VectorSlice<const std::vector<types::global_dof_index> >&,
       std::vector<std::vector<float> > &, bool) const;

#endif
#endif

  }
