Source: https://sites.ualberta.ca/~ygu/courses/geoph624/codes/Fortran.pdf