<div dir="ltr">On Thu, Sep 5, 2013 at 12:31 PM, Harshad Sahasrabudhe <span dir="ltr"><<a href="mailto:hsahasra@purdue.edu" target="_blank">hsahasra@purdue.edu</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry the last line of the error should read like this:<br>
<br>
    test.cpp:9:8: note:   no known conversion for argument 3 from 'cusp::complex<double>' to 'std::complex<double>&'<br>
<br>
Didn't copy it properly the last time.<br>
<span class="HOEnZb"><font color="#888888"><br>
Harshad<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
----- Original Message -----<br>
From: "Harshad Sahasrabudhe" <<a href="mailto:hsahasra@purdue.edu">hsahasra@purdue.edu</a>><br>
To: "Matthew Knepley" <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>><br>
Cc: <a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a><br>
Sent: Thursday, September 5, 2013 1:29:38 PM<br>
Subject: Re: [petsc-users] cusp complex and std complex<br>
<br>
Hi Matt,<br>
<br>
I have attached a small test case which reproduces the problem. Here is the compilation command with the error:<br>
<br>
<br>
    gcc -c test.cpp -I/u/sciteam/sahasrab/NEMO5/libs/petsc/include -I/u/sciteam/sahasrab/NEMO5/libs/petsc/arch-linux2-cxx-opt-cplx/include/ -I/opt/cray/mpt/6.0.1/gni/mpich2-<br>
    cray/81/include/ -I/u/sciteam/sahasrab/NEMO5/libs/petsc/cusplibrary-master/ -I/opt/nvidia/cudatoolkit/5.0.35/include/<br>
<br>
    test.cpp: In function 'int main()':<br>
    test.cpp:24:27: error: no matching function for call to 'VectorP<std::complex<double> >::dot_product(VectorP<std::complex<double> >&, VectorP<std::complex<double> >&,<br>

    cusp::complex<double>&)'<br>
       a.dot_product(a, b, p[1]);<br>
                           ^<br>
    test.cpp:24:27: note: candidate is:<br>
    test.cpp:9:8: note: void VectorP<T>::dot_product(VectorP<T>&, VectorP<T>&, T&) [with T = std::complex<double>]<br>
       void dot_product(VectorP<T>& vecA, VectorP<T>& vecB, T& prod)<br>
            ^<br>
    test.cpp:9:8: note:   no known conversion for argument 3 from 'cusp::complex<double>' to 'std::complex<double<br>
<br>
My question is, is there no alternative to using VectorP<PetscScalar>?<br></div></div></blockquote><div><br></div><div>I am not sure what you want. This is a problem with your own type definitions. If you want a dot_product that returns PetscScalar, </div>
<div>define the overloaded function. If that is a pain, consider using C++. Personally, I would counsel anyone writing a new code to</div><div>abandon C++.</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">
NOTE: PETSc is compiled with CUSP.<br>
<br>
Thanks,<br>
Harshad<br>
<br>
<br>
<br>
<br>
    >Are we supposed to guess where this happens? Please send the entire compile error, and if its in your code, send<br>
    >a simple code that demonstrates the problem.<br>
<br>
<br>
    >Matt<br>
<br>
    >--<br>
    >What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
    >-- Norbert Wiener<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>