Modules

What is a module?

A module is a way to store variables and functions/subroutines that are available everywhere in the program and modifiable from anywhere in the program.

How to write a module

To store variables that must be accessible everywhere in a program, you need to create a file called (for example) mymodule.f90 which contains the following

module mymodule
  implicit none
  real :: a
  real :: b
  a = 5
  b = 6
  contains
    function functionInModule(x,y)
      implicit none
      real :: x, y, functionInModule
      functionInModule = x-y
    end function
end module

And the main program becomes

program myprogram
  use mymodule
  implicit none
  real :: w, z
  some code here
  w = 2
  z = functionInModule(w,w)
end program

Note the use mymodule at the beginning of the program before the implicit none. Because of this line, all the variables and functions/subroutines declared in the module can be used in the program.

One can also use use mymodule, only: variable/function/subroutine to make only part of the variables or functions available. For example

program myprogram
  use mymodule, only: functionInModule
  implicit none
  real :: w,z,r
  w = 1
  r = 2
  z = functionInModule(w,r)
end program

This can be done to make sure that other parameters contained in the module are not inadvertently modified in the program.

Last updated