[petsc-dev] c++, float128 and complex patch
Michael Gegg
michael.gegg at tu-berlin.de
Wed Sep 6 11:34:26 CDT 2017
Hello everyone,
a while ago I wrote about a patch for petsc with complex number c++ and
float128 using c99 complex numbers and you suggested to just use petsc
with a c build and then just call it from c++ (see below).
I thought that this worked, but I only tried it for my patched version.
Now I tried to do this for the normal v3.7.6 and I get a lot of errors
that PetscCompex is not defined when I call it from c++. The
installation works fine and also the tutorial examples. (which are all c)
It seems that if I call petsc from c++ it tries to switch to c++ complex
numbers even though I build petsc with c, which are obviously not defined.
So, could you give me a hint on how I should configure petsc so that
this works? Is there a way to enforce the c99 complex numbers even when
calling petsc from c++? I always used
./configure ... --with-cc=gcc --with-cxx=g++ --with-fc=gfortran
--download-mpich --with-clanguage=c --with-scalar-type=complex
--with-precision=__float128 --download-f2cblaslapack
As I said, with my patch this works fine. Thanks in advance.
Also I realized that parmetis does only support double and not float128
and so building petsc with float128 and parmetis crashes. I also made a
patch for that, that just declares all parmetis relevant parameters as
real_t instead of PetscReal. Would you be interested in including this
patch? (its only 2 lines)
Thank you.
Michael
Am 03.05.2017 um 18:08 schrieb Michael Gegg:
>
>
>
> Am 03.05.2017 um 16:27 schrieb Matthew Knepley:
>> On Wed, May 3, 2017 at 9:22 AM, Michael Gegg
>> <michael.gegg at tu-berlin.de <mailto:michael.gegg at tu-berlin.de>> wrote:
>>
>> Hello Petsc developers,
>>
>> thank you for providing such a marvellous numerics package, we
>> had/have a lot of fun using it. For our purposes it was necessary
>> to use Petsc with c++, float128 and complex. Since this is not
>> possible with the standard build we made a patch. It uses c style
>> complex numbers as a workaround.
>> It can be used with the Parmetis package (there is a little fix
>> in the interface there) and we have made a Slepc patch that then
>> also allows to use c++, float128 and complex.
>> It would be great if you could include it in the petsc software.
>> We checked the patch for v3.7.6 and v3.7.3 (latest Slepc release)
>>
>>
>> One question. Why would you compile PETSc with C++ if you wanted to
>> use C99 complex? You can do that with the C build, and call
>> PETSc the same way from C++.
>>
> No specific reason. Thanks for the hint, I tried it and it works. I
> could have saved some effort there, but I also learned a thing or two
> ;) I just didn't know that this was possible.
> Thanks,
> Michael
>> Thanks,
>>
>> Matt
>>
>> With best regards,
>>
>> Michael Gegg
>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which
>> their experiments lead.
>> -- Norbert Wiener
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170906/647ec472/attachment.html>
More information about the petsc-dev
mailing list