+++ /dev/null
-######################################################################
-# Definitions for vectors of common template instantiations
-######################################################################
-package dealiitemplates;
-
-use strict;
-use warnings;
-
-BEGIN {
- use Exporter();
- our @ISA = qw(Exporter);
- our @EXPORT = qw(&multisubst
- @dimensions @codim1_dimensions @dofhandlers @dofhandler_templates
- @real_scalars @complex_scalars @all_scalars
- @deal_vector_templates @deal_vectors @deal_real_vectors @deal_complex_vectors @deal_parallel_vectors
- @trilinos_vectors @petsc_vectors
- @sequential_vectors @parallel_vectors
- @sparsity_patterns);
-}
-
-our @EXPORT;
-
-######################################################################
-# A function substituting multiple patterns in a string with all
-# combinations of values of the vectors provided and printing the result.
-#
-# Its arguments are
-#
-# 1. The text with patterns to be replaced
-# 2. A reference to an array with all the patterns
-# 3. For each pattern, a reference to an array with replacements
-#
-# The function will then loop through all vectors in lexicographical
-# order, first fastest, and replace globally all occurences of each
-# pattern. This is only done if the pattern is not part of a C++ token.
-#
-######################################################################
-# Usage example:
-######################################################################
-#
-# use strict;
-# use dealiitemplates;
-#
-# my $text = <<'EOT'
-# template class Test<D,S1,V1>;
-# template void Test<D,S1,V1>::Dimension();
-# EOT
-# ;
-# my @patterns = qw(D S1 V1);
-#
-# multisubst($text, \@patterns, \@dimensions, \@real_scalars, \@sequential_vectors)
-#
-######################################################################
-sub multisubst
-{
- my $text = shift;
- my $patterns = shift;
-
- my $npat = $#{$patterns}+1;
- my $nvec = $#_+1;
- ($nvec == $npat) ||
- die "multisubst function received $npat replacement patterns, but $nvec vectors\n",
- "Did you by chance use '\@vec' instead of '\\\@vec?";
-
- my @sizes = map { $#{$_} } @_;
- my $n = 1;
- grep { $n *= ($_+1); } @sizes;
- my @index = map { 0 } @sizes;
-
- for (my $i=0;$i<$n;++$i)
- {
- my $t = $text;
- for (my $j=0;$j<=$#sizes;++$j)
- {
- my $v = $patterns->[$j];
- my $r = $_[$j]->[$index[$j]];
- $t =~ s/(?<![\w_])$v(?![\w_])/$r /g;
- }
- print "$t\n";
- for (my $j=0;$j<=$#sizes;++$j)
- {
- if ($index[$j] < $sizes[$j])
- {
- ++$index[$j];
- last;
- }
- else
- {
- $index[$j] = 0;
- }
- }
- }
-}
-
-
-
-
-our $t;
-
-# Dimensions
-our @dimensions = (1,2,3);
-our @codim1_dimensions = (1,2);
-
-# DoFHandlers
-our @dofhandler_templates = qw(DoFHandler hp::DoFHandler MGDoFHandler);
-our @dofhandlers = map { $t = $_ ; map { "$_<$t>" } @dofhandler_templates } @dimensions;
-
-# All possible number types
-our @real_scalars = ('float', 'double', 'long double');
-our @complex_scalars = map { "std::complex<$_>" } @real_scalars;
-our @all_scalars = (@real_scalars, @complex_scalars);
-
-# The vectors built into deal.II
-our @deal_vector_templates = qw(Vector BlockVector);
-our @deal_real_vectors = map { $t = $_ ; map { "$_<$t >" } @deal_vector_templates } @real_scalars;
-our @deal_complex_vectors = map { $t = $_ ; map { "$_<$t >" } @deal_vector_templates } @complex_scalars;
-our @deal_vectors = (@deal_real_vectors, @deal_complex_vectors);
-
-### Array of all sequential vectors, which includes deal.II vectors.
-our @sequential_vectors = @deal_real_vectors;
-
-### Array of all parallel vectors.
-our @deal_parallel_vectors = map { $t = $_ ; map { "parallel::distributed::$_<$t >" } @deal_vector_templates } @real_scalars;
-our @parallel_vectors = (@deal_parallel_vectors);
-
-######################################################################
-# Configured arrays start here.
-######################################################################
-# For each of those, first set up a temporary array with parameters
-# replaced by autoconf. Then, copy into the actual array, omitting all
-# empty strings.
-######################################################################
-our @tmp;
-
-@tmp = ('@DEAL_II_EXPAND_TRILINOS_VECTOR@',
- '@DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@',
- '');
-our @trilinos_vectors = grep {!/^$/} @tmp;
-push(@sequential_vectors, @trilinos_vectors);
-
-@tmp = ('@DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@',
- '@DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@',
- '');
-push (@trilinos_vectors, grep {!/^$/} @tmp);
-push (@parallel_vectors, grep {!/^$/} @tmp);
-
-######################################################################
-
-@tmp = ('@DEAL_II_EXPAND_PETSC_VECTOR@',
- '@DEAL_II_EXPAND_PETSC_BLOCKVECTOR@',
- '');
-our @petsc_vectors = grep {!/^$/} @tmp;
-push(@sequential_vectors, @petsc_vectors);
-
-@tmp = ('@DEAL_II_EXPAND_PETSC_MPI_VECTOR@',
- '@DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@',
- '');
-push (@petsc_vectors, grep {!/^$/} @tmp);
-push (@parallel_vectors, grep {!/^$/} @tmp);
-
-######################################################################
-
-@tmp = qw(SparsityPattern
- CompressedSparsityPattern
- CompressedSetSparsityPattern
- CompressedSimpleSparsityPattern
- @DEAL_II_EXPAND_TRILINOS_SPARSITY_PATTERN@
- BlockSparsityPattern
- BlockCompressedSparsityPattern
- BlockCompressedSetSparsityPattern
- BlockCompressedSimpleSparsityPattern
- @DEAL_II_EXPAND_TRILINOS_BLOCK_SPARSITY_PATTERN@);
-our @sparsity_patterns = grep {!/^$/} @tmp;
+++ /dev/null
-
-template void ConstraintMatrix::condense<Vector<float > >(const Vector<float > &, Vector<float > &) const;
-template void ConstraintMatrix::condense<Vector<float > >(Vector<float > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<Vector<float > > (
- const Vector<double>&, const std::vector<unsigned int> &, Vector<float > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<Vector<float > >(const Vector<float > &, Vector<float > &) const;
-template void ConstraintMatrix::distribute<Vector<float > >(Vector<float > &) const;
-
-
-template void ConstraintMatrix::condense<BlockVector<float > >(const BlockVector<float > &, BlockVector<float > &) const;
-template void ConstraintMatrix::condense<BlockVector<float > >(BlockVector<float > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<BlockVector<float > > (
- const Vector<double>&, const std::vector<unsigned int> &, BlockVector<float > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<BlockVector<float > >(const BlockVector<float > &, BlockVector<float > &) const;
-template void ConstraintMatrix::distribute<BlockVector<float > >(BlockVector<float > &) const;
-
-
-template void ConstraintMatrix::condense<Vector<double > >(const Vector<double > &, Vector<double > &) const;
-template void ConstraintMatrix::condense<Vector<double > >(Vector<double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<Vector<double > > (
- const Vector<double>&, const std::vector<unsigned int> &, Vector<double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<Vector<double > >(const Vector<double > &, Vector<double > &) const;
-template void ConstraintMatrix::distribute<Vector<double > >(Vector<double > &) const;
-
-
-template void ConstraintMatrix::condense<BlockVector<double > >(const BlockVector<double > &, BlockVector<double > &) const;
-template void ConstraintMatrix::condense<BlockVector<double > >(BlockVector<double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<BlockVector<double > > (
- const Vector<double>&, const std::vector<unsigned int> &, BlockVector<double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<BlockVector<double > >(const BlockVector<double > &, BlockVector<double > &) const;
-template void ConstraintMatrix::distribute<BlockVector<double > >(BlockVector<double > &) const;
-
-
-template void ConstraintMatrix::condense<Vector<long double > >(const Vector<long double > &, Vector<long double > &) const;
-template void ConstraintMatrix::condense<Vector<long double > >(Vector<long double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<Vector<long double > > (
- const Vector<double>&, const std::vector<unsigned int> &, Vector<long double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<Vector<long double > >(const Vector<long double > &, Vector<long double > &) const;
-template void ConstraintMatrix::distribute<Vector<long double > >(Vector<long double > &) const;
-
-
-template void ConstraintMatrix::condense<BlockVector<long double > >(const BlockVector<long double > &, BlockVector<long double > &) const;
-template void ConstraintMatrix::condense<BlockVector<long double > >(BlockVector<long double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<BlockVector<long double > > (
- const Vector<double>&, const std::vector<unsigned int> &, BlockVector<long double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<BlockVector<long double > >(const BlockVector<long double > &, BlockVector<long double > &) const;
-template void ConstraintMatrix::distribute<BlockVector<long double > >(BlockVector<long double > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::Vector<float > >(const parallel::distributed::Vector<float > &, parallel::distributed::Vector<float > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::Vector<float > >(parallel::distributed::Vector<float > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::Vector<float > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::Vector<float > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<float > >(const parallel::distributed::Vector<float > &, parallel::distributed::Vector<float > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<float > >(parallel::distributed::Vector<float > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<float > >(const parallel::distributed::BlockVector<float > &, parallel::distributed::BlockVector<float > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<float > >(parallel::distributed::BlockVector<float > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::BlockVector<float > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::BlockVector<float > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<float > >(const parallel::distributed::BlockVector<float > &, parallel::distributed::BlockVector<float > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<float > >(parallel::distributed::BlockVector<float > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::Vector<double > >(const parallel::distributed::Vector<double > &, parallel::distributed::Vector<double > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::Vector<double > >(parallel::distributed::Vector<double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::Vector<double > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::Vector<double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<double > >(const parallel::distributed::Vector<double > &, parallel::distributed::Vector<double > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<double > >(parallel::distributed::Vector<double > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<double > >(const parallel::distributed::BlockVector<double > &, parallel::distributed::BlockVector<double > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<double > >(parallel::distributed::BlockVector<double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::BlockVector<double > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::BlockVector<double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<double > >(const parallel::distributed::BlockVector<double > &, parallel::distributed::BlockVector<double > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<double > >(parallel::distributed::BlockVector<double > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::Vector<long double > >(const parallel::distributed::Vector<long double > &, parallel::distributed::Vector<long double > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::Vector<long double > >(parallel::distributed::Vector<long double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::Vector<long double > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::Vector<long double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<long double > >(const parallel::distributed::Vector<long double > &, parallel::distributed::Vector<long double > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::Vector<long double > >(parallel::distributed::Vector<long double > &) const;
-
-
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<long double > >(const parallel::distributed::BlockVector<long double > &, parallel::distributed::BlockVector<long double > &) const;
-template void ConstraintMatrix::condense<parallel::distributed::BlockVector<long double > >(parallel::distributed::BlockVector<long double > &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::BlockVector<long double > > (
- const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::BlockVector<long double > &, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<long double > >(const parallel::distributed::BlockVector<long double > &, parallel::distributed::BlockVector<long double > &) const;
-template void ConstraintMatrix::distribute<parallel::distributed::BlockVector<long double > >(parallel::distributed::BlockVector<long double > &) const;
-
-
-template void ConstraintMatrix::set_zero<Vector<float > >(Vector<float > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<BlockVector<float > >(BlockVector<float > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<Vector<double > >(Vector<double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<BlockVector<double > >(BlockVector<double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<Vector<long double > >(Vector<long double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<BlockVector<long double > >(BlockVector<long double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::Vector<float > >(parallel::distributed::Vector<float > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::BlockVector<float > >(parallel::distributed::BlockVector<float > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::Vector<double > >(parallel::distributed::Vector<double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::BlockVector<double > >(parallel::distributed::BlockVector<double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::Vector<long double > >(parallel::distributed::Vector<long double > &) const;
-
-
-
-template void ConstraintMatrix::set_zero<parallel::distributed::BlockVector<long double > >(parallel::distributed::BlockVector<long double > &) const;
-
-
-
-template void ConstraintMatrix::condense<float >(const SparseMatrix<float >&, SparseMatrix<float > &) const;
-template void ConstraintMatrix::condense<float >(SparseMatrix<float >&) const;
-template void ConstraintMatrix::condense<float >(BlockSparseMatrix<float >&) const;
-
-
-template void ConstraintMatrix::condense<double >(const SparseMatrix<double >&, SparseMatrix<double > &) const;
-template void ConstraintMatrix::condense<double >(SparseMatrix<double >&) const;
-template void ConstraintMatrix::condense<double >(BlockSparseMatrix<double >&) const;
-
-
-template void ConstraintMatrix::condense<long double >(const SparseMatrix<long double >&, SparseMatrix<long double > &) const;
-template void ConstraintMatrix::condense<long double >(SparseMatrix<long double >&) const;
-template void ConstraintMatrix::condense<long double >(BlockSparseMatrix<long double >&) const;
-
-template void ConstraintMatrix::condense<float ,Vector<float > >(SparseMatrix<float >&, Vector<float >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<float > >(BlockSparseMatrix<float >&, BlockVector<float >&) const;
-template void ConstraintMatrix::condense<float ,Vector<float > >(
- const SparseMatrix<float >&, const Vector<float >&, SparseMatrix<float > &, Vector<float >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<float > >(
- const SparseMatrix<float >&, const BlockVector<float >&, SparseMatrix<float > &, BlockVector<float >&) const;
-
-template void ConstraintMatrix::condense<double ,Vector<float > >(SparseMatrix<double >&, Vector<float >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<float > >(BlockSparseMatrix<double >&, BlockVector<float >&) const;
-template void ConstraintMatrix::condense<double ,Vector<float > >(
- const SparseMatrix<double >&, const Vector<float >&, SparseMatrix<double > &, Vector<float >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<float > >(
- const SparseMatrix<double >&, const BlockVector<float >&, SparseMatrix<double > &, BlockVector<float >&) const;
-
-template void ConstraintMatrix::condense<long double ,Vector<float > >(SparseMatrix<long double >&, Vector<float >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<float > >(BlockSparseMatrix<long double >&, BlockVector<float >&) const;
-template void ConstraintMatrix::condense<long double ,Vector<float > >(
- const SparseMatrix<long double >&, const Vector<float >&, SparseMatrix<long double > &, Vector<float >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<float > >(
- const SparseMatrix<long double >&, const BlockVector<float >&, SparseMatrix<long double > &, BlockVector<float >&) const;
-
-template void ConstraintMatrix::condense<float ,Vector<double > >(SparseMatrix<float >&, Vector<double >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<double > >(BlockSparseMatrix<float >&, BlockVector<double >&) const;
-template void ConstraintMatrix::condense<float ,Vector<double > >(
- const SparseMatrix<float >&, const Vector<double >&, SparseMatrix<float > &, Vector<double >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<double > >(
- const SparseMatrix<float >&, const BlockVector<double >&, SparseMatrix<float > &, BlockVector<double >&) const;
-
-template void ConstraintMatrix::condense<double ,Vector<double > >(SparseMatrix<double >&, Vector<double >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<double > >(BlockSparseMatrix<double >&, BlockVector<double >&) const;
-template void ConstraintMatrix::condense<double ,Vector<double > >(
- const SparseMatrix<double >&, const Vector<double >&, SparseMatrix<double > &, Vector<double >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<double > >(
- const SparseMatrix<double >&, const BlockVector<double >&, SparseMatrix<double > &, BlockVector<double >&) const;
-
-template void ConstraintMatrix::condense<long double ,Vector<double > >(SparseMatrix<long double >&, Vector<double >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<double > >(BlockSparseMatrix<long double >&, BlockVector<double >&) const;
-template void ConstraintMatrix::condense<long double ,Vector<double > >(
- const SparseMatrix<long double >&, const Vector<double >&, SparseMatrix<long double > &, Vector<double >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<double > >(
- const SparseMatrix<long double >&, const BlockVector<double >&, SparseMatrix<long double > &, BlockVector<double >&) const;
-
-template void ConstraintMatrix::condense<float ,Vector<long double > >(SparseMatrix<float >&, Vector<long double >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<long double > >(BlockSparseMatrix<float >&, BlockVector<long double >&) const;
-template void ConstraintMatrix::condense<float ,Vector<long double > >(
- const SparseMatrix<float >&, const Vector<long double >&, SparseMatrix<float > &, Vector<long double >&) const;
-template void ConstraintMatrix::condense<float ,BlockVector<long double > >(
- const SparseMatrix<float >&, const BlockVector<long double >&, SparseMatrix<float > &, BlockVector<long double >&) const;
-
-template void ConstraintMatrix::condense<double ,Vector<long double > >(SparseMatrix<double >&, Vector<long double >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<long double > >(BlockSparseMatrix<double >&, BlockVector<long double >&) const;
-template void ConstraintMatrix::condense<double ,Vector<long double > >(
- const SparseMatrix<double >&, const Vector<long double >&, SparseMatrix<double > &, Vector<long double >&) const;
-template void ConstraintMatrix::condense<double ,BlockVector<long double > >(
- const SparseMatrix<double >&, const BlockVector<long double >&, SparseMatrix<double > &, BlockVector<long double >&) const;
-
-template void ConstraintMatrix::condense<long double ,Vector<long double > >(SparseMatrix<long double >&, Vector<long double >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<long double > >(BlockSparseMatrix<long double >&, BlockVector<long double >&) const;
-template void ConstraintMatrix::condense<long double ,Vector<long double > >(
- const SparseMatrix<long double >&, const Vector<long double >&, SparseMatrix<long double > &, Vector<long double >&) const;
-template void ConstraintMatrix::condense<long double ,BlockVector<long double > >(
- const SparseMatrix<long double >&, const BlockVector<long double >&, SparseMatrix<long double > &, BlockVector<long double >&) const;
-
--- /dev/null
+for (S: REAL_SCALARS; T : DEAL_II_VEC_TEMPLATES)
+ {
+ template void ConstraintMatrix::condense<T<S> >(const T<S> &, T<S> &) const;
+ template void ConstraintMatrix::condense<T<S> >(T<S> &vec) const;
+ template void ConstraintMatrix::distribute_local_to_global<T<S> > (
+ const Vector<double>&, const std::vector<unsigned int> &, T<S> &, const FullMatrix<double>&) const;
+ template void ConstraintMatrix::distribute<T<S> >(const T<S> &, T<S> &) const;
+ template void ConstraintMatrix::distribute<T<S> >(T<S> &) const;
+ template void ConstraintMatrix::set_zero<T<S> >(T<S> &) const;
+ }
+
+
+for (S: REAL_SCALARS; T : DEAL_II_VEC_TEMPLATES)
+ {
+ template void ConstraintMatrix::condense<parallel::distributed::T<S> >(const parallel::distributed::T<S> &, parallel::distributed::T<S> &) const;
+ template void ConstraintMatrix::condense<parallel::distributed::T<S> >(parallel::distributed::T<S> &vec) const;
+ template void ConstraintMatrix::distribute_local_to_global<parallel::distributed::T<S> > (
+ const Vector<double>&, const std::vector<unsigned int> &, parallel::distributed::T<S> &, const FullMatrix<double>&) const;
+ template void ConstraintMatrix::distribute<parallel::distributed::T<S> >(const parallel::distributed::T<S> &, parallel::distributed::T<S> &) const;
+ template void ConstraintMatrix::distribute<parallel::distributed::T<S> >(parallel::distributed::T<S> &) const;
+ template void ConstraintMatrix::set_zero<parallel::distributed::T<S> >(parallel::distributed::T<S> &) const;
+ }
+
+
+for (V: EXTERNAL_SEQUENTIAL_VECTORS)
+ {
+ template void ConstraintMatrix::condense<V >(const V&, V&) const;
+ template void ConstraintMatrix::condense<V >(V&vec) const;
+ template void ConstraintMatrix::distribute_local_to_global<V > (
+ const Vector<double>&, const std::vector<unsigned int> &, V&, const FullMatrix<double>&) const;
+ template void ConstraintMatrix::distribute<V >(const V&, V&) const;
+ template void ConstraintMatrix::distribute<V >(V&) const;
+ template void ConstraintMatrix::set_zero<V >(V&) const;
+ }
+
+
+for (V: EXTERNAL_DISTRIBUTED_VECTORS)
+ {
+ template void ConstraintMatrix::set_zero<V >(V&) const;
+ }
+
+
+for (S : REAL_SCALARS)
+ {
+ template void ConstraintMatrix::condense<S>(const SparseMatrix<S>&, SparseMatrix<S> &) const;
+ template void ConstraintMatrix::condense<S>(SparseMatrix<S>&) const;
+ template void ConstraintMatrix::condense<S>(BlockSparseMatrix<S>&) const;
+ }
+
+
+for (S1 : REAL_SCALARS; S2 : REAL_SCALARS)
+ {
+ template void ConstraintMatrix::condense<S1,Vector<S2> >(SparseMatrix<S1>&, Vector<S2>&) const;
+ template void ConstraintMatrix::condense<S1,BlockVector<S2> >(BlockSparseMatrix<S1>&, BlockVector<S2>&) const;
+ template void ConstraintMatrix::condense<S1,Vector<S2> >(
+ const SparseMatrix<S1>&, const Vector<S2>&, SparseMatrix<S1> &, Vector<S2>&) const;
+ template void ConstraintMatrix::condense<S1,BlockVector<S2> >(
+ const SparseMatrix<S1>&, const BlockVector<S2>&, SparseMatrix<S1> &, BlockVector<S2>&) const;
+ }
+++ /dev/null
-######################################################################
-# $Id$
-######################################################################
-#
-# Copyright (C) 2011, 2012 by the deal.II authors
-#
-# This file is subject to QPL and may not be distributed
-# without copyright and license information. Please refer
-# to the file deal.II/doc/license.html for the text and
-# further information on this license.
-#
-######################################################################
-
-use strict;
-use warnings;
-use dealiitemplates;
-
-my $vector_functions = <<'EOT'
-
-template void ConstraintMatrix::condense<V1 >(const V1 &, V1&) const;
-template void ConstraintMatrix::condense<V1 >(V1 &vec) const;
-template void ConstraintMatrix::distribute_local_to_global<V1 > (
- const Vector<double>&, const std::vector<unsigned int> &, V1&, const FullMatrix<double>&) const;
-template void ConstraintMatrix::distribute<V1 >(const V1 &, V1&) const;
-template void ConstraintMatrix::distribute<V1 >(V1 &) const;
-EOT
- ;
-
-my $vector_functions_also_parallel = <<'EOT'
-
-template void ConstraintMatrix::set_zero<V1 >(V1&) const;
-
-EOT
- ;
-
-my $scalar_functions = <<'EOT'
-
-template void ConstraintMatrix::condense<S1>(const SparseMatrix<S1>&, SparseMatrix<S1> &) const;
-template void ConstraintMatrix::condense<S1>(SparseMatrix<S1>&) const;
-template void ConstraintMatrix::condense<S1>(BlockSparseMatrix<S1>&) const;
-EOT
- ;
-
-my $scalar_scalar_functions = <<'EOT'
-template void ConstraintMatrix::condense<S1,Vector<S2> >(SparseMatrix<S1>&, Vector<S2>&) const;
-template void ConstraintMatrix::condense<S1,BlockVector<S2> >(BlockSparseMatrix<S1>&, BlockVector<S2>&) const;
-template void ConstraintMatrix::condense<S1,Vector<S2> >(
- const SparseMatrix<S1>&, const Vector<S2>&, SparseMatrix<S1> &, Vector<S2>&) const;
-template void ConstraintMatrix::condense<S1,BlockVector<S2> >(
- const SparseMatrix<S1>&, const BlockVector<S2>&, SparseMatrix<S1> &, BlockVector<S2>&) const;
-EOT
- ;
-
-######################################################################
-# End of definitions, now come the loops
-######################################################################
-
-multisubst($vector_functions, ['V1'], \@sequential_vectors);
-multisubst($vector_functions, ['V1'], \@deal_parallel_vectors);
-multisubst($vector_functions_also_parallel, ['V1'], \@sequential_vectors);
-multisubst($vector_functions_also_parallel, ['V1'], \@parallel_vectors);
-multisubst($scalar_functions, ['S1'], \@real_scalars);
-multisubst($scalar_scalar_functions, ['S1','S2'], \@real_scalars, \@real_scalars);