Multidimensional arrays are a powerful feature in Fortran that allow you to work with data in more than one dimension. This is particularly useful in scientific and engineering applications where data is often represented in matrices or higher-dimensional arrays.

Key Concepts

  1. Definition and Declaration:

    • Multidimensional arrays are declared similarly to one-dimensional arrays but with additional dimensions.
    • Syntax: type, dimension(dim1, dim2, ..., dimN) :: array_name
  2. Initialization:

    • Arrays can be initialized at the time of declaration or later in the code.
    • Syntax: array_name = reshape([values], shape)
  3. Accessing Elements:

    • Elements in a multidimensional array are accessed using indices for each dimension.
    • Syntax: array_name(i, j, ..., k)
  4. Common Operations:

    • Assigning values, performing arithmetic operations, and using intrinsic functions.

Practical Examples

Example 1: Declaring and Initializing a 2D Array

program multidimensional_example
    implicit none
    integer, dimension(3, 3) :: matrix
    integer :: i, j

    ! Initializing the array
    matrix = reshape([1, 2, 3, 4, 5, 6, 7, 8, 9], shape(matrix))

    ! Printing the array
    do i = 1, 3
        do j = 1, 3
            print *, 'matrix(', i, ',', j, ') = ', matrix(i, j)
        end do
    end do
end program multidimensional_example

Explanation:

  • The matrix is declared as a 3x3 integer array.
  • The reshape function is used to initialize the array with values from 1 to 9.
  • Nested loops are used to print each element of the array.

Example 2: Working with a 3D Array

program three_dimensional_array
    implicit none
    real, dimension(2, 2, 2) :: tensor
    integer :: i, j, k

    ! Initializing the array
    tensor = reshape([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0], shape(tensor))

    ! Printing the array
    do i = 1, 2
        do j = 1, 2
            do k = 1, 2
                print *, 'tensor(', i, ',', j, ',', k, ') = ', tensor(i, j, k)
            end do
        end do
    end do
end program three_dimensional_array

Explanation:

  • The tensor is declared as a 2x2x2 real array.
  • The reshape function is used to initialize the array with values from 1.0 to 8.0.
  • Triple nested loops are used to print each element of the array.

Practical Exercises

Exercise 1: Create and Initialize a 4x4 Matrix

Task:

  • Declare a 4x4 integer matrix.
  • Initialize it with values from 1 to 16.
  • Print the matrix in a formatted way.

Solution:

program four_by_four_matrix
    implicit none
    integer, dimension(4, 4) :: matrix
    integer :: i, j

    ! Initializing the array
    matrix = reshape([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], shape(matrix))

    ! Printing the array
    do i = 1, 4
        do j = 1, 4
            write(*, '(I3)', advance='no') matrix(i, j)
        end do
        print *
    end do
end program four_by_four_matrix

Exercise 2: Sum of Elements in a 3D Array

Task:

  • Declare a 3x3x3 real array.
  • Initialize it with values from 1.0 to 27.0.
  • Calculate and print the sum of all elements in the array.

Solution:

program sum_of_3d_array
    implicit none
    real, dimension(3, 3, 3) :: tensor
    real :: sum
    integer :: i, j, k

    ! Initializing the array
    tensor = reshape([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0], shape(tensor))

    ! Calculating the sum of all elements
    sum = 0.0
    do i = 1, 3
        do j = 1, 3
            do k = 1, 3
                sum = sum + tensor(i, j, k)
            end do
        end do
    end do

    ! Printing the sum
    print *, 'Sum of all elements in the tensor = ', sum
end program sum_of_3d_array

Common Mistakes and Tips

  • Indexing Errors: Ensure that you use the correct indices for each dimension. Fortran arrays are 1-based by default.
  • Initialization: When using reshape, make sure the number of elements matches the total size of the array.
  • Memory Usage: Be mindful of the memory usage when working with large multidimensional arrays.

Conclusion

In this section, you learned how to declare, initialize, and manipulate multidimensional arrays in Fortran. These arrays are essential for handling complex data structures in scientific and engineering applications. Practice the exercises to reinforce your understanding and prepare for more advanced topics.

© Copyright 2024. All rights reserved