[petsc-users] SGI compiler (mpt-2.11) and fortran interface
Barry Smith
bsmith at mcs.anl.gov
Wed Feb 11 13:12:43 CST 2015
> On Feb 11, 2015, at 11:32 AM, Matteo Parsani <parsani.matteo at gmail.com> wrote:
>
> Dear Petsc Users and Developers,
> Recently, I have compiled my fortran code using the SGI compiler (mpt-2.11). Previously I was using openmpi 1.7.3 and everything worked fine.
Almost for sure your code is now being compiled to check for out of bounds in array access. You need to turn that off if you use VecGetArray() you need to check the documentation for your compiler to find the flag to turn it off.
Or you can switch to using VecGetArrayF90() which will also simplify your code slightly and is the post-f77 way of accessing arrays from PETSc vectors.
Barry
>
> Now, with when I run the code compiled with SGI I get the following error:
>
> At line 1921 of file mpi_module.F90
> Fortran runtime error: Array reference out of bounds for array 'xx_v', upper bound of dimension 1 exceeded (349921 > 1)
>
> Precisely the line that gives troubles is the following
>
> x_ghost(i_dir,i_loc) = xx_v(n_tot+3*(i_loc-1) + i_dir)
>
>
> The variables xx_v is a fortran pointer which I get using
>
> call VecGetArrayF90(x_local, xx_v, i_er)
>
> where i_err is defined as
>
> PetscErrorCode i_err
>
> Do you have any idea what I am doing wrong?
>
> Thank you!
>
> --
> Matteo
More information about the petsc-users
mailing list