<div><span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">> And I'm not sure why you are having to use PetscInt for ierr. All PETSc routines should be suing 'PetscErrorCode for ierr'</span><div><br /><span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">If I define <em>ierr </em>as <em>PetscErrorCode </em>for all subroutines given below<br /><br />call VecDuplicate(Vec_U,Vec_Um,ierr)</span></div><div><span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">call VecCopy(Vec_U,Vec_Um,ierr)</span></div><div><span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">call VecGetLocalSize(Vec_U,j,ierr)</span></div><div><span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">call VecGetOwnershipRange(Vec_U,j1,j2,ierr)</span></div></div><div><br />then errors occur with first three subroutines:<br /><em>Error: Type mismatch in argument «z» at (1); passed INTEGER(4) to INTEGER(8).</em><br /><br />Therefore I was forced to define <em>ierr </em>as <em>PetscInt </em>for <span style="background-color:#ffffff;color:#000000;float:none;font-family:'arial' , sans-serif;font-size:15px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px">VecDuplicate, VecCopy, VecGetLocalSize subroutines to fix these errors.</span><br />Why some subroutines sue 8-bytes integer type of <em>ierr </em>(<em>PetscInt</em>), while others - 4-bytes integer type of <em>ierr </em>(<em>PetscErrorCode</em>) remains a mystery for me.<br /><br />> What version of PETSc are you using?<br /><br />version 3.12.2<br /><br />> Are you seeing this issue with a PETSc example?<br /><br />I will check it tomorrow  and let you know.<br /><br />Kind regards,<br />Dmitry Melnichuk<br /><br /> <br /> </div><div>15.01.2020, 17:14, "Balay, Satish" <balay@mcs.anl.gov>:</div><blockquote><p>-fdefault-integer-8 is likely to break things [esp with MPI - where 'integer' is used everywhere for ex - MPI_Comm etc - so MPI includes become incompatible with the MPI library with -fdefault-integer-8.]<br /><br />And I'm not sure why you are having to use PetscInt for ierr. All PETSc routines should be suing 'PetscErrorCode for ierr'<br /><br />What version of PETSc are you using? Are you seeing this issue with a PETSc example?<br /><br />Satish<br /><br />On Wed, 15 Jan 2020, Дмитрий Мельничук wrote:<br /> </p><blockquote> Hello all!<br />  At present time I need to compile solver called Defmod (<a href="https://bitbucket.org/stali/defmod/wiki/Home">https://bitbucket.org/stali/defmod/wiki/Home</a>), which is written in Fortran 95.<br /> Defmod uses PETSc for solving linear algebra system.<br /> Solver compilation with 32-bit version of PETSc does not cause any problem. <br /> But solver compilation with 64-bit version of PETSc produces an error with size of ierr PETSc variable. <br />  <br /> 1. For example, consider the following statements written in Fortran:<br />  <br />  <br /> PetscErrorCode :: ierr_m<br /> PetscInt :: ierr<br /> ...<br /> ...<br /> call VecDuplicate(Vec_U,Vec_Um,ierr) <br /> call VecCopy(Vec_U,Vec_Um,ierr)<br /> call VecGetLocalSize(Vec_U,j,ierr)<br /> call VecGetOwnershipRange(Vec_U,j1,j2,ierr_m)<br />  <br />  <br /> As can be seen first three subroutunes require ierr to be size of INTEGER(8), while the last subroutine (VecGetOwnershipRange) requires ierr to be size of INTEGER(4).<br /> Using the same integer format gives an error:<br />  <br /> There is no specific subroutine for the generic ‘vecgetownershiprange’ at (1)<br />  <br /> 2. Another example is:<br />  <br />  <br /> call MatAssemblyBegin(Mat_K,Mat_Final_Assembly,ierr)<br /> CHKERRA(ierr)<br /> call MatAssemblyEnd(Mat_K,Mat_Final_Assembly,ierr)<br />  <br />  <br /> I am not able to define an appropriate size if ierr in CHKERRA(ierr). If I choose INTEGER(8), the error "Type mismatch in argument ‘ierr’ at (1); passed INTEGER(8) to<br /> INTEGER(4)" occurs.<br /> If I define ierr  as INTEGER(4), the error "Type mismatch in argument ‘ierr’ at (1); passed INTEGER(4) to INTEGER(8)" appears.<br />   <br /> 3. If I change the sizes of ierr vaiables as error messages require, the compilation completed successfully, but an error occurs when calculating the RHS vector with<br /> following message:<br /> [0]PETSC ERROR: Out of range index value -4 cannot be negative <br />  <br /><br /> Command to configure 32-bit version of PETSc under Windows 10 using Cygwin:<br /> ./configure --with-cc=x86_64-w64-mingw32-gcc --with-cxx=x86_64-w64-mingw32-g++ --with-fc=x86_64-w64-mingw32-gfortran --download-fblaslapack<br /> --with-mpi-include=/cygdrive/c/MPISDK/Include --with-mpi-lib=/cygdrive/c/MPISDK/Lib/libmsmpi.a --with-mpi-mpiexec=/cygdrive/c/MPI/Bin/mpiexec.exe --with-debugging=yes<br /> -CFLAGS='-O2' -CXXFLAGS='-O2' -FFLAGS='-O2 -static-libgfortran -static -lpthread -fno-range-check' --with-shared-libraries=no<br />  Command to configure 64-bit version of PETSc under Windows 10 using Cygwin:./configure --with-cc=x86_64-w64-mingw32-gcc --with-cxx=x86_64-w64-mingw32-g++<br /> --with-fc=x86_64-w64-mingw32-gfortran --download-fblaslapack --with-mpi-include=/cygdrive/c/MPISDK/Include --with-mpi-lib=/cygdrive/c/MPISDK/Lib/libmsmpi.a<br /> --with-mpi-mpiexec=/cygdrive/c/MPI/Bin/mpiexec.exe --with-debugging=yes -CFLAGS='-O2' -CXXFLAGS='-O2' -FFLAGS='-O2 -static-libgfortran -static -lpthread -fno-range-check<br /> -fdefault-integer-8' --with-shared-libraries=no --with-64-bit-indices --known-64-bit-blas-indices<br /><br />  <br /> Kind regards,<br /> Dmitry Melnichuk<br /><br /> </blockquote></blockquote>