Fortran 2018 Examples
Easy examples of scientific computing with modern, powerful, easy Fortran 2018 standard. Fortran 2018 began as the TS18508 extension, formerly known as Fortran 2015.
Modern Fortran benefits from modern CMake, which supports Fortran features such as
- detecting specific support of Fortran features (so users know their compiler is too old)
Based on widespread compiler support and beneficial features, most new and upgraded Fortran programs should use at least portions of the Fortran 2008 standard.
- Linux / Windows:
apt install cmake gfortran libhdf5-dev libopenmpi-dev libnetcdff-dev libcoarrays-dev open-coarrays-bin
brew install gcc cmake open-mpi opencoarrays
The CMake or Meson build system automatically walks through the subdirectories:
cmake -B build cmake --build build --parallel cd build ctest --parallel --output-on-failure
meson build meson test -C build
Be sure you have the
Intel Parallel Studio Cluster Edition
FC=ifort CC=icc CXX=icpc cmake ..
Flang / Clang
Flang is a Free compiler.
FC=flang CC=clang CXX=clang++ cmake ..
PGI is available at no cost.
FC=pgf90 CC=pgcc CXX=pgc++ cmake ..
Each directory has its own README and examples.
- array/: Array math in modern CMake and Fortran, including MKL, BLAS, LAPACK and LAPACK95.
- block/: Highly useful
blockelement is demonstrated
- coarray/: modern Fortran is the only major compiled language standard with intrinsic massively parallel arrays.
- contiguous/: Fortran 2008
contiguousarray examples, including Fortran preprocessor with modern CMake.
- mpi/: OpenMPI parallel computing examples
- namelist/: Fortran 90 / 2003 Namelist parsing -- native text config files for Fortran
- openmp/: OpenMP threading exmaples
- random/: random numbers with modern Fortran
- io/: modern Fortran File I/O
- netcdf/: Easy multidimensional file IO with NetCDF
- hdf5/: HDF5 is one of the most popular self-describing file formats for massively scalable files.
- CMake/: CMake work well with modern Fortran features
- cxx/: standard Fortran C / C++ bindings
- real/: Numerous examples dealing with practical features of real floating point numbers, including sentinel NaN and polymorphism.
- character/: String handling is easy and performant in modern Fortran.
- standard/: advanced features that can be done with Fortran standard coding
- submodule: Fortran 2008 and CMake ≥ 3.12 enable even better large program architecture with
- system/: system (hardware) functionality accessible via Fortran
Flang 6 and PGI 18.10 seem to have a bug with
iso_fortran_env that doesn't allow
compiler_options to work unless
use iso_fortran_env is ONLY used in
program and NOT
module even if using
Thus, simple programs like
pragma.f90 work, but not the usual programs to print the compiler versions and options with Flang and PGI.
Fortran I 1956 manual
Fortran II 1958 manual
Fortran 66 standard
Fortran 77 langauge reference
Fortran 90 / 95 manual
- Modern Fortran Explained: Incorporating Fortran 2018. Metcalf, Reid, Cohen. 5th Ed, Nov 2018. ISBN: 978-0198811886.
- Modern Fortran: Building Efficient Parallel Applications. Milan Curcic. Feb. 2019. ISBN: 978-1617295287.