[petsc-users] PetscScatterCreate type mismatch after update.

Jed Brown jed at jedbrown.org
Tue Mar 12 17:57:57 CDT 2019


Did you just update to 'master'?  See VecScatter changes:

https://www.mcs.anl.gov/petsc/documentation/changes/dev.html

Manuel Valera via petsc-users <petsc-users at mcs.anl.gov> writes:

> Hello,
>
> I just updated petsc from the repo to the latest master branch version, and
> a compilation problem popped up, it seems like the variable types are not
> being acknowledged properly, what i have in a minimum working example
> fashion is:
>
> #include <petsc/finclude/petscvec.h>
>> #include <petsc/finclude/petscdmda.h>
>> #include <petsc/finclude/petscdm.h>
>> #include <petsc/finclude/petscis.h>
>> #include <petsc/finclude/petscksp.h>
>> USE petscvec
>> USE petscdmda
>> USE petscdm
>> USE petscis
>> USE petscksp
>> IS                     :: ScalarIS
>> IS                     :: DummyIS
>> VecScatter             :: LargerToSmaller,to0,from0
>> VecScatter             :: SmallerToLarger
>> PetscInt, ALLOCATABLE  :: pScalarDA(:), pDummyDA(:)
>> PetscScalar            :: rtol
>> Vec                    :: Vec1
>> Vec                    :: Vec2
>> ! Create index sets
>>             allocate( pScalarDA(0:(gridx-1)*(gridy-1)*(gridz-1)-1) ,
>> pDummyDA(0:(gridx-1)*(gridy-1)*(gridz-1)-1) )
>>             iter=0
>>             do k=0,gridz-2
>>                 kplane = k*gridx*gridy
>>                 do j=0,gridy-2
>>                     do i=0,gridx-2
>>                         pScalarDA(iter) = kplane + j*(gridx) + i
>>                         iter = iter+1
>>                     enddo
>>                 enddo
>>             enddo
>>             pDummyDA = (/ (ind, ind=0,((gridx-1)*(gridy-1)*(gridz-1))-1) /)
>>             call
>> ISCreateGeneral(PETSC_COMM_WORLD,(gridx-1)*(gridy-1)*(gridz-1), &
>>
>>  pScalarDA,PETSC_COPY_VALUES,ScalarIS,ierr)
>>             call
>> ISCreateGeneral(PETSC_COMM_WORLD,(gridx-1)*(gridy-1)*(gridz-1), &
>>
>>  pDummyDA,PETSC_COPY_VALUES,DummyIS,ierr)
>>             deallocate(pScalarDA,pDummyDA, STAT=ierr)
>>             ! Create VecScatter contexts: LargerToSmaller & SmallerToLarger
>>             call DMDACreateNaturalVector(daScalars,Vec1,ierr)
>>             call DMDACreateNaturalVector(daDummy,Vec2,ierr)
>>             call
>> VecScatterCreate(Vec1,ScalarIS,Vec2,DummyIS,LargerToSmaller,ierr)
>>             call
>> VecScatterCreate(Vec2,DummyIS,Vec1,ScalarIS,SmallerToLarger,ierr)
>>             call VecDestroy(Vec1,ierr)
>>             call VecDestroy(Vec2,ierr)
>
>
> And the error i get is the part i cannot really understand:
>
> matrixobjs.f90:99.34:
>>             call
>> VecScatterCreate(Vec1,ScalarIS,Vec2,DummyIS,LargerToSmaller,ie
>>                                                  1
>> Error: Type mismatch in argument 'a' at (1); passed TYPE(tvec) to
>> INTEGER(4)
>> matrixobjs.f90:100.34:
>>             call
>> VecScatterCreate(Vec2,DummyIS,Vec1,ScalarIS,SmallerToLarger,ie
>>                                                  1
>> Error: Type mismatch in argument 'a' at (1); passed TYPE(tvec) to
>> INTEGER(4)
>> make[1]: *** [matrixobjs.o] Error 1
>> make[1]: Leaving directory `/usr/scratch/valera/ParGCCOM-Master/Src'
>> make: *** [gcmSeamount] Error 2
>
>
> What i find hard to understand is why/where my code is finding an integer
> type? as you can see from the MWE header the variables types look correct,
>
> Any help is appreaciated,
>
> Thanks,


More information about the petsc-users mailing list