VecGetArrayF90 should work with newer gfortran versions. https://petsc.org/release/docs/manualpages/Vec/VecGetArrayF90.html
Check the examples listed above to see if usage in your code is different. [run them with your build of petsc/compilers to verify] And make sure you are using the latest version of PETSc. If you still have issues - send us a reproducible example. Satish On Tue, 21 Sep 2021, 李昊霖 wrote: > Dear all, > > I used PETSc in my full Fortran codes and it worked well when my codes were > compiled by GNU Fortran (GCC) 4.8.4. But for some reasons, I had to update > the GNU Fortran (GCC) to version 10.0.1. Then I reinstalled the MPICH and > PETSc with the newer complier and compiled my codes successfully. However, I > got the following error massage: > > Index '1' of dimension 1 of array 'xx' above upper bound of 0. > > where xx is the Fortran pointer obtained by calling > VecGetArrayF90(vec,xx,ierr). > > The vector was built successfully, but it seemed that the Fortran pointer xx > was not built. I got the same error massage when using VecGetArrayReadF90(). > So, are the VecGetArrayF90() and VecGetArrayReadF90() not compatible with the > recent versions of GNU Fortran? Or is there any other way to access the > vectors? For solving a linear problem Ab=x, I use VecGetArrayF90() to get the > Fortran pointer to update b and use VecGetArrayReadF90() to get the values of > x. After some tests, I found that VecGetArrayF90() could be replaced by > VecSetValues(), but VecGetValues() used to replace VecGetArrayReadF90() could > not be run with multiple threads. > > I look forward to your reply and thank you for any suggestions. > > Best regards, > > Haolin Li