[petsc-users] error: cannot convert ‘bool’ to ‘PetscBool’ for argument ‘2’

Ted Sariyski tsariysk at craft-tech.com
Sun May 3 13:05:32 CDT 2015


Thanks!
--Ted

On 05/03/2015 12:04 PM, Barry Smith wrote:
>> On May 3, 2015, at 10:14 AM, Ted Sariyski <tsariysk at craft-tech.com> wrote:
>>
>> Hi,
>> I am looking at petsc-3.5.3/src/snes/examples/tutorials. All examples, except ex12.c, works fine.
>> ex12.c compiles with error: "... cannot convert ‘bool’ to ‘PetscBool’ ..." (see attachment). Do I miss something, or it's a bug?
>    It is a bug. Currently PetscBool is an integer so a bool (for example (a == 2)) cannot be passed in when a PetscBool is expected. One needs to use
> ((a == 2) ? PETSC_TRUE: PETSC_FALSE) to convert the bool to a PetscBool.
>
>    Barry
>
>    Note that PETSc supports C89 which does not have a bool and compiling as C++ code which handles bools slightly differently than C which is why we haven't just converted over to using a bool and dropped the PetscBool. Hopefully eventually we'll be able to drop the PetscBool.
>
>
>> Thanks,
>> --
>> Ted
>>
>>
>> /> make ex12
>> *********************W-a-r-n-i-n-g*************************
>> Your PETSC_DIR may not match the directory you are in
>> PETSC_DIR  /home/tsariysk/MFEMv3/pkgs/petsc-3.5.3/petsc-complex-dbg Current directory /work/tsariysk/MFEMv3/tars/petsc-3.5.3/src/snes/examples/tutorials
>> Ignore this if you are running make test
>> ******************************************************
>> mpicxx -o ex12.o -c -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g -O0   -fPIC -I/home/tsariysk/MFEMv3/pkgs/petsc-3.5.3/petsc-complex-dbg/include -I/home/tsariysk/MFEMv3/pkgs/petsc-3.5.3/petsc-complex-dbg/include -I/home/tsariysk/MFEMv3/pkgs/metis/include -I/home/tsariysk/MFEMv3/pkgs/petsc-3.5.3/petsc-complex-dbg/include -I/opt/mpich-3.1.4/include    `pwd`/ex12.c
>> /work/tsariysk/MFEMv3/tars/petsc-3.5.3/src/snes/examples/tutorials/ex12.c: In function ‘PetscErrorCode SetupDiscretization(DM, AppCtx*)’:
>> /work/tsariysk/MFEMv3/tars/petsc-3.5.3/src/snes/examples/tutorials/ex12.c:505:155: error: cannot convert ‘bool’ to ‘PetscBool’ for argument ‘2’ to ‘PetscErrorCode DMPlexAddBoundary(DM, PetscBool, const char*, const char*, PetscInt, void (*)(), PetscInt, const PetscInt*, void*)’
>> make: *** [ex12.o] Error 1
>>
>>
>> ENVIRONMENT:
>> ---------------------
>> Linux  2.6.18-128.1.1.el5 #1 SMP Tue Feb 10 11:36:29 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
>> g++ (GCC) 4.7.1
>> mpich-3.1.4
>>
>> BUILD:
>> ---------
>> export PETSC_ARCH=petsc-complex-dbg
>> export PETSC_CMAKE_ARCH=${PETSC_ARCH}
>> ./configure                                        \
>> PETSC_DIR=${PETSC_DIR}  PETSC_ARCH=${PETSC_ARCH}   \
>> --prefix=${PETSC_INSTALL_DIR}/${PETSC_ARCH}        \
>> --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 \
>> --CFLAGS=-O                             \
>> --with-x                                \
>> --with-precision=double                 \
>> --with-scalar-type=complex               \
>> --with-clanguage=c++                    \
>> --with-debugger=gdb                       \
>> --with-debugging                            \
>> --with-fortran-datatypes=1                 \
>> --with-metis-dir=${PKGSDIR}/metis         \
>> --download-f2cblaslapack=yes \
>> --download-hdf5=yes \
>> --with-valgrind=1
>>



More information about the petsc-users mailing list