Check petsc examples You would use 'PetscErrorCode ierr' - not 'INTEGER(4) or INTEGER(8)
Some routines probably don't have Interface definitions - hence compiler can't cat this issue with all functions. [but they all consistently need PetscErrorCode] Satish On Wed, 1 Feb 2023, Mike Michell wrote: > Hi all, > > I want to use PETSc with 64-bit indices with a Fortran90 code. It seems > some PETSc functions have no problem, but some of the others do not accept > 32-bit error code integer (e.g., "ierr" declared as PetscErrorCode type). > > For example, > > call DMPlexGetChart(dm, pst, pend, ierr);CHKERRA(ierr) works okay, > > but > > call DMPlexGetDepthStratum(dm, 0, vst, vend, ierr);CHKERRA(ierr) gives an > error regarding the datatype of ierr. The error basically leads: > Error: Type mismatch in argument ‘b’ at (1); passed INTEGER(4) to INTEGER(8) > > I tried to declare ierr as integer(kind=8) type, but there are still some > problems. If PETSc is configured with 32-bit indices, the Fortran code > works without problem. > > What surprising to me is that as mentioned above, DMPlexGetChart() works > okay, but DMPlexGetDepthStratum() does not work with "ierr (PetscErrorCode > type)" variable with 64-bit indices. > > Can I get any comments on it? > > Thanks, > Mike >
