Arrays are collection of elements of similar type. This data structure allows to implement mathematical objects like vectors, matrices and tensors.
To declare an array with 3 real elements we use
real, dimension(3) :: v or real :: v(3) real v(3)Particular entries of the array can be accessed with an index, running from 1 through the number of entries.
v(1)=1.0; v(2)=2.0; v(3)=3.0One can assign values to all elements of v at once using an array constructor. A constructor is a list of scalar values delimited by (/ ... /). For example the same initialization of v can be achieved using
v = (/ 1.0, 2.0, 3.0 /)An even more compact initialization is achieved using an implicit do loop:
v = (/ (i, i=1,3) /)
In Fortran jargon the one-dimensional object v is called a rank-1 array (its entries are accessed using a single index). One can define multi-dimensional arrays as well. A rank-2 array can be defined for example as
real, dimension(2,3) :: A or real :: A(2,3) real A(2,3))A particular element is now accessed using two indices: A(i,j) where and .
One can initialize a rank-n array using constructors. The list of entries in a constructor is one-dimensional; we need to map this one-dimensional list onto the k-dimensional array. This is done using the intrinsic function reshape. For example, we can initialize the 6 entries of A using
A = reshape( (/ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 /), (/ 2, 3 /) )The first argument of the reshape function is the constructor, the second is another constructor containing the shape of A. Reshape initializes the entries of A in column-wise order; the result of the above operation is
Arrays can be used as arguments for input/output purposes. For example
read*, Awill (expect to) read 6 numbers from the console and assign the values to elements of A in column-wise order. Similarly,
print*, Aprints the elements of A one after another in column-wise order.