On 9/17/19 6:58 PM, Doug wrote: > > /home/ddong/Libraries/dealii/include/deal.II/base/numbers.h:583:3: > note: no known conversion for argument 1 from ‘const > Sacado::Fad::DFad<double>’ to ‘const std::complex<long double>&’ > In file included from > /home/ddong/Libraries/dealii/include/deal.II/base/cuda.h:21:0, > from > /home/ddong/Libraries/dealii/include/deal.II/base/memory_space.h:22, > from > /home/ddong/Libraries/dealii/include/deal.II/lac/la_parallel_vector.h:21, > from > /home/ddong/Libraries/dealii/source/lac/la_parallel_vector.cc:16: > /home/ddong/Libraries/dealii/include/deal.II/base/exceptions.h:1671:42: > error: no matching function for call to > ‘std::complex<double>::complex(const Sacado::Fad::DFad<double>&)’ > dealii::ExcNumberNotFinite(std::complex<double>(number))) > > It is basically part of the same call to AssertIsFinite to generate the > Exception. Note that it could hit this assertion much more directly > since > /home/ddong/Libraries/dealii/include/deal.II/lac/la_parallel_vector.templates.h > > itself calls AssertIsFinite. e.g. line 1450
But I don't know how we get there. What does the rest of the error message look like? The place you show looks like this: template <typename Number, typename MemorySpaceType> void Vector<Number, MemorySpaceType>::add(const Number a) { AssertIsFinite(a); so 'a' is of type Sacado::Fad::DFad<double>. It then needs to call numbers::is_finite (Sacado::Fad::DFad<double>), which doesn't exist. It probably just tries to go through all of the overloads of numbers::is_finite() and wants to see whether it can convert the argument Sacado::Fad::DFad<double> to the argument type of these overloads. The error message you show then would just explain why this one possibility (namely, numbers::is_finite(std::complex<long double>&)) does not work. But that doesn't mean that this is the right overload anyway -- I suspect that your compiler produces similar error messages above or below the one you show for all of the other overloads, right? I *think* that the solution is to simply provide an overload for numbers::is_finite (const Sacado::Fad::DFad<double> &x) Can you try this? You could declare it in your own .cc file before you #include <deal.II/lac/la_parallel_vector.templates.h> Best W. -- ------------------------------------------------------------------------ Wolfgang Bangerth email: bange...@colostate.edu www: http://www.math.colostate.edu/~bangerth/ -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to dealii+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/846b94a1-9c0c-babc-daa3-11653974365b%40colostate.edu.