Compiling as a library with PETSc 3.5.2 produce an error (due to a change of the API of PETSc)
Hello, if you compile the source to make the library using the command
make lib
and you link PETSc 3.5.2 you obtain an error (some of the functions in PETSc have change the signature).
Here is the full error:
In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp: In member function ‘virtual int linearSystemPETSc::systemSolve()’: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:371:40: error: ‘SAME_PRECONDITIONER’ was not declared in this scope _try(KSPSetOperators(_ksp, _a, _a, SAME_PRECONDITIONER)); ^ /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:373:60: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, SAME_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:375:65: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, DIFFERENT_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp: In instantiation of ‘int linearSystemPETSc::systemSolve() [with scalar = double]’: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:17:16: required from here /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:373:60: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, SAME_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:375:65: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, DIFFERENT_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp: In instantiation of ‘int linearSystemPETSc::systemSolve() [with scalar = fullMatrix]’: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:116:16: required from here /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:373:60: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, SAME_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ In file included from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:15:0: /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.hpp:375:65: error: too many arguments to function ‘PetscErrorCode KSPSetOperators(KSP, Mat, Mat)’ _try(KSPSetOperators(_ksp, _a, _a, DIFFERENT_NONZERO_PATTERN)); ^ In file included from /usr/local_machine/petsc-3.5.2/include/petscsnes.h:6:0, from /usr/local_machine/petsc-3.5.2/include/petscts.h:7, from /usr/local_machine/petsc-3.5.2/include/petsc.h:26, from /usr/local_machine/gmsh-2.8.5-source/Solver/linearSystemPETSc.cpp:10: /usr/local_machine/petsc-3.5.2/include/petscksp.h:260:29: note: declared here PETSC_EXTERN PetscErrorCode KSPSetOperators(KSP,Mat,Mat); ^ make[3]: *** [CMakeFiles/lib.dir/Solver/linearSystemPETSc.cpp.o] Error 1 make[2]: *** [CMakeFiles/lib.dir/all] Error 2 make[1]: *** [CMakeFiles/lib.dir/rule] Error 2 make: *** [lib] Error 2
Cheers, Marco.