From af109f5ac38f9f5fe0d2093135eb7042c720da06 Mon Sep 17 00:00:00 2001
From: Wolfgang Bangerth <bangerth@colostate.edu>
Date: Mon, 30 Oct 2017 16:33:17 -0600
Subject: [PATCH] Make things work with complex-valued vectors.

---
 source/numerics/error_estimator_1d.cc | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/source/numerics/error_estimator_1d.cc b/source/numerics/error_estimator_1d.cc
index d49a71b914..d6482821cb 100644
--- a/source/numerics/error_estimator_1d.cc
+++ b/source/numerics/error_estimator_1d.cc
@@ -308,8 +308,8 @@ estimate (const Mapping<1,spacedim>                  &mapping,
                   std::vector<std::vector<Tensor<1,spacedim,number> > >(2, std::vector<Tensor<1,spacedim,number> >(n_components)));
   std::vector<std::vector<std::vector<Tensor<1,spacedim,number> > > >
   gradients_neighbor (gradients_here);
-  std::vector<Vector<number> >
-  grad_neighbor (n_solution_vectors, Vector<number>(n_components));
+  std::vector<Vector<typename ProductType<number,double>::type> >
+  grad_neighbor (n_solution_vectors, Vector<typename ProductType<number,double>::type>(n_components));
 
   // reserve some space for coefficient values at one point.  if there is no
   // coefficient, then we fill it by unity once and for all and don't set it
@@ -436,12 +436,14 @@ estimate (const Mapping<1,spacedim>                  &mapping,
                 if (component_mask[component] == true)
                   {
                     // get gradient here
-                    const number grad_here = gradients_here[s][n][component]
-                                             * normal;
-
-                    const number jump = ((grad_here - grad_neighbor[s](component)) *
-                                         coefficient_values(component));
-                    (*errors[s])(cell->active_cell_index()) += numbers::NumberTraits<number>::abs_square(jump) * cell->diameter();
+                    const typename ProductType<number,double>::type
+                    grad_here = gradients_here[s][n][component] * normal;
+
+                    const typename ProductType<number,double>::type
+                    jump = ((grad_here - grad_neighbor[s](component)) *
+                            coefficient_values(component));
+                    (*errors[s])(cell->active_cell_index())
+                    += numbers::NumberTraits<typename ProductType<number,double>::type>::abs_square(jump) * cell->diameter();
                   }
           }
 
-- 
2.39.5