From 8b23f7ab472d7782bf4f0b0a66cdaabe7bb44464 Mon Sep 17 00:00:00 2001 From: Daniel Arndt Date: Sun, 27 May 2018 17:30:35 +0200 Subject: [PATCH] Bugfix: Add missing instantiations --- source/lac/affine_constraints.cc | 17 +++++++++++++++++ source/lac/affine_constraints.inst.in | 24 +++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/source/lac/affine_constraints.cc b/source/lac/affine_constraints.cc index d318ac69a7..aef54fb03a 100644 --- a/source/lac/affine_constraints.cc +++ b/source/lac/affine_constraints.cc @@ -21,6 +21,17 @@ DEAL_II_NAMESPACE_OPEN #include "affine_constraints.inst" +/* + * FIXME: This mixed variant is needed by the multigrid - it currently only + * supports AffineConstraints. If someone has the patience to + * templateify the 10 custom wrapper classes around AffineConstraints, + * please go ahead, fix the multigrid classes and remove this + * instantiation: + */ +template void +dealii::AffineConstraints::condense>( + dealii::BlockVector &) const; + /* * Note: You probably do not want to add your custom instantiation down * here but use affine_constraints.inst.in instead. We use the following @@ -31,6 +42,12 @@ DEAL_II_NAMESPACE_OPEN #define INSTANTIATE_DLTG_VECTOR(VectorType) \ template void \ + AffineConstraints::condense( \ + const VectorType &, VectorType &) const; \ + template void \ + AffineConstraints::condense( \ + VectorType &) const; \ + template void \ AffineConstraints::distribute_local_to_global< \ VectorType>( \ const Vector &, \ diff --git a/source/lac/affine_constraints.inst.in b/source/lac/affine_constraints.inst.in index 2c41b463e2..5d47c6796d 100644 --- a/source/lac/affine_constraints.inst.in +++ b/source/lac/affine_constraints.inst.in @@ -300,11 +300,33 @@ for (S : REAL_AND_COMPLEX_SCALARS; T : DEAL_II_VEC_TEMPLATES) LinearAlgebra::distributed::T &) const; } +for (S : COMPLEX_SCALARS; T : DEAL_II_VEC_TEMPLATES) + { + template void AffineConstraints::distribute>(T &) + const; + + template void AffineConstraints::distribute< + LinearAlgebra::distributed::T>(LinearAlgebra::distributed::T &) + const; + + template void AffineConstraints::set_zero>(T &) + const; + + template void AffineConstraints::set_zero< + LinearAlgebra::distributed::T>(LinearAlgebra::distributed::T &) + const; + } for (S : REAL_AND_COMPLEX_SCALARS) + { + template void AffineConstraints::distribute>( + LinearAlgebra::Vector &) const; + } + +for (S : COMPLEX_SCALARS) { template void - AffineConstraints::distribute>( + AffineConstraints::distribute>( LinearAlgebra::Vector &) const; } -- 2.39.5