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.

Reply via email to