Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran90 issue: nonzero out of bounds array elements

  1. Nov 10, 2013 #1
    Hi to all.

    I am programing a new code for some calculation and i have detected a strange issue.
    I have my all arrays strictly defined for example

    real, dimension(-2:2,-3:2) A, B
    complex, dimension(-2:2,1:2) C

    In my time dependend calculations i expect the matrix element C(-2,1) to have a maximum value during the whole run, to be approximately about 1.5 and if you attempt the plot t vs C(-2,1) then the curve seems like a Gaussian.

    While i use the ifort and gfortran compilers, i attempted an "experiment" to write the matrix element C(-3,1) (which is NOT defined anywhere initialy in my program... because i have complex, dimension(-2:2,1:2) C and not complex, dimension(-3:2,1:2) C)

    The i i descovered that if i plot t vs C(-3,1) then the curve i get is a similar to t vs C(-2,1) which is completely strange because is not defined anywhere so i expect to have zero value every time.

    I repeat, every array in my program has been defined bounds as i shown above.

    How does it happen??
  2. jcsd
  3. Nov 10, 2013 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    A description of what is happening is nice, but it is better to have a look at your source code. There may be another issue which you have overlooked.

    If you wish to post your source code, please use the
    Code (Text):
  4. Nov 10, 2013 #3
    Ok then, I just attempt another experiment which i resize the matrix C from (-2:2,1:2) to (-3:2,1:2) then run the code and you get zero C(-3,2) element. It is about how the memory works i guess. I think this is not a critical issue.
  5. Nov 10, 2013 #4
    Yes, it is a memory thing...the truth is that you have no business with memory that you have not defined...for all we know, it is part of some other program running in your computer.

    You should probably look into compiling flags to keep an eye on arrays at run time...something like arraybounds or checkarrays or something like that...then, when you run your program and attempt to access an index outside the defined range, the program will stop and let you know.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook