> On Feb 26, 2018, at 4:47 PM, frank <hengj...@uci.edu> wrote: > > Hello, > > It works after changing PETSC_NULL_INTEGER to 0. Thank you so much. > > Does this mean the 3rd argument is a Fortran integer rather than PestcInt?
No it is actually a PetscInt so technically you should declare PetscInt zero zero = 0 and pass in zero. The reason PETSC_NULL_INTEGER doesn't work is 1) it should not be used as a synonym for 0; it is a "pointer" to null not zero 2) PETSC_NULL_INTEGER is actually declared as an array of size 1 (this is why you get the confusing message about no specific subroutine that matches). PETSC_NULL_INTEGER can only be passed where PETSc expects and integer array, not an integer scalar. Barry > > Regards, > > Frank > > On 02/26/2018 02:35 PM, Smith, Barry F. wrote: >> It should be >> >>> call MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, 0, dummyVecs, >>> nullspace, ierr) >> If this doesn't work please send your test code that I can compile myself >> and figure out what is going on. >> >> Barry >> >> >> >> >>> On Feb 26, 2018, at 4:18 PM, frank <hengj...@uci.edu> wrote: >>> >>> Hello, >>> >>> I have a question of the Fortran interface of subroutine MatNullSpaceCreate. >>> >>> I tried to call the subroutine in the following form: >>> >>> Vec :: dummyVec, dummyVecs(1) >>> MatNullSpace :: nullspace >>> INTEGER :: ierr >>> >>> (a) call MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, >>> PETSC_NULL_INTEGER, dummyVec, nullspace, ierr) >>> >>> (b) call MatNullSpaceCreate( PETSC_COMM_WORLD, PETSC_TRUE, >>> PETSC_NULL_INTEGER, dummyVecs, nullspace, ierr) >>> >>> (a) and (b) gave me the same error during compilation: no specific >>> subroutine for the generic MatNullSpaceCreate. >>> >>> I am using the latest version of Petsc. I just did a "git pull" and >>> re-build it. >>> How can I call the subroutine ? >>> >>> In addition, I found two 'petscmat.h90' : >>> petsc/include/petsc/finclude/ftn-auto/petscmat.h90 and >>> petsc/src/mat/f90-mod/petscmat.h90. >>> The former defines a subroutine MatNullSpaceCreate in the above form (b). >>> The latter provides generic interface for both (a) and (b). >>> I am not sure if this relates to the error I get. >>> >>> Thank you. >>> >>> Frank >