<div dir="ltr"><div dir="ltr">On Wed, Jan 15, 2020 at 10:26 AM Дмитрий Мельничук <<a href="mailto:dmitry.melnichuk@geosteertech.com">dmitry.melnichuk@geosteertech.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);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:rgb(255,255,255);color:rgb(0,0,0);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:rgb(255,255,255);color:rgb(0,0,0);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:rgb(255,255,255);color:rgb(0,0,0);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:rgb(255,255,255);color:rgb(0,0,0);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></div></blockquote><div><br></div><div>Barry,</div><div><br></div><div>It looks like the ftn-auto interfaces are using 'integer' for the error code, whereas the ftn-custom is using PetscErrorCode.</div><div>Could we make the generated ones use integer?</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Therefore I was forced to define <em>ierr </em>as <em>PetscInt </em>for <span style="background-color:rgb(255,255,255);color:rgb(0,0,0);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" <<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@mcs.anl.gov</a>>:</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" target="_blank">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></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>