Update since Nov 5, full list here
Astronomy and Astrophysics
cufQUMC: CUDA Fortran version of QU-fitting with replica exchange MCMC method (parallel tempering), with a Python interface, by Shinsuke Ideguchi
DarkLim: statistical tools for calculating dark matter exclusion limits and sensitivity estimates, from SPICE/HeRALD
DYnamics, Age and Metallicity Indicators Tracing Evolution (DYNAMITE): Schwarzschild- and stellar-population modelling of stellar systems
GALAXEV-fortran: Galaxy Spectral Evolution Library, by G. Bruzual and S. Charlot
img2nc: converts planetary Digital Elevation Model (DEM) data into NetCDF, allowing one to draw a topographic map of the Moon, by ShinobuAmasaki.
Benchmarks
plb2: nqueen, matmul, sudoku, and bedcov benchmarks in Fortran, C, Lisp, Go, Java, JavaScript, Julia, Python, Rust, and other languages
Biology and Medicine
Illustrate: biomolecular illustration tool. Associated paper: Goodsell, D.S., Autin, L, Olson, A.J.,Goodsell, D. S., Autin, L., & Olson, A. J. (2019). Illustrate: Software for biomolecular illustration. Structure, 27(11), 1716-1720.e1.
Computational Chemistry
GWMlib: Generic Water isotope Modelling Library, by Didier M. Roche
Containers and Generic Programming
enhanced-allocatables: proposal to extend allocatable arrays to be dynamically reallocatable/resizable, with an implementation that calls C++, by PierUgit
fortran-dictionary: implementation of a hashmap aka dictionary, by Elias Toivanen
Computational Fluid Dynamics
FortranVortexIdentify: identifies discrete vortices from the velocity field data, using MPI, which are the result of a DaVis PIV process, by RickXie43
Navier_Stokes_Spectral_Method: Navier Stokes simulation using the spectral method, visualized with gtk-fortran, by Jules Minard
Synthetic Eddy Method (SEM): code associated with paper Extended synthetic eddy method to generate inflow data for turbulent thermal boundary layer, by Geunwoo Oh et al., International Journal of Heat and Mass Transfer, 2019. A related project is Synthetic-Eddies by Bojan Niceno.
Earth Science
AGNI: 1D radiative-convective model for the atmospheres of hot terrestrial planets, in Fortran and Julia, by Harrison Nicholls
Aquatic Optics Monte Carlo Model (AOMC): simulates the propagation of light in an optically shallow, vertically heterogeneous aquatic medium, by Manny Gimond
EXSIM: stochastic finite-fault program, as modified by Karen Assatourians and Gail Atkinson. Associated paper: Stochastic Finite-Fault Modeling Based on a Dynamic Corner Frequency (2005), Bulletin of the Seismological Society of America
hbi: multi-dimensional earthquake cycle simulation code based on Boundary Element Method with H-matrices, associated with the paper by So Ozawa, Akihiro Ida, Tetsuya Hoshino, Ryosuke Ando (2023), Large-scale earthquake sequence simulations of 3D geometrically complex faults using the boundary element method accelerated by lattice H-matrices, Geophysical Journal International,232 (3), 1471-1481
Heavy-review: calculates the change in gravity caused by the change in groundwater storage as predicted by a MODFLOW groundwater-flow model, by Jeff Kennedy. Gravity change is calculated relative to the initial time step at user-specified locations (e.g., measurement locations).
HypoTremorMCMC: associated preprint: Locating tectonic tremors with uncertainty estimates: Time- and amplitude-difference optimization, wave propagation-based quality control, and Bayesian inversion(2023) by Takeshi Akuhara et al.
IF-77 Air-to-Ground Propagation Model (Gierhart-Johnson): propagation model from the Federal Aviation Administration applicable to air/ground, air/air, ground/satellite, and air/satellite paths. It can also be used for ground/ground paths that are line-of-sight or smooth earth.
PICO_Fortran: implementation by Didier M. Roche of the Potsdam Ice-shelf Cavity mOdel from the paper Antarctic sub-shelf melt rates via PICO, by Ronja Reese et al., (2018).
Tropospheric ultraviolet-extended (TUV-x): photolysis rate calculator from NCAR. Associated paper: Madronich, Sasha, and Siri Flocke (1999), The role of solar radiation in atmospheric chemistry, in Handbook of Environmental Chemistry, edited by P. Boule, pp. 1-26, Springer-Verlag.
File I/O
cprnc: tool for analyzing a netCDF file or comparing two netCDF files, from Earth System Model Computational Infrastructure
fortran-sperr: interface bindings by Oscar Mojica to SPERR, a lossy scientific (floating-point) data compressor in C and C++ that produces one of the best rate-distortion curves
Finite Elements
sam-lib: collection of FORTRAN 77 subroutines, originally by Kolbein Bell, for handling different tasks in finite element method solvers, such as the assembly of element matrices into their global counterparts, solving global linear systems of equations, solving eigenvalue problems, and some other lower-level matrix utilities
Fortran Books and Tutorials
githubactions_intro: introduces Github Actions as a tool for lightweight automation of scientific data workflows, with examples in Python and Fortran using gnuplot, by Oscar Mojica
Games
wumpus: Hunt the Wumpus game in Fortran, LISP, Prolog, and Literate-Java, by Yeon Ju
General Purpose
Batteries Included Fortran Library (BiF-lib): modules for dates, dynamic arrays, error handling, I/O, parsing equations, statistics, prime numbers, random number generation, finding roots, sorting, strings, and data types such as list
and dict
that mimic Python, by Scott Boyce
M_sets: basic set functions reminiscent of those in Matlab: union
, unique
, intersect
, setdiff
, ismember
, setxor
, by urbanjost
timer: module to get the number of seconds between two timestamps, by zoziha
Graphics, Plotting, and User Interfaces
cairo-fortran: libcairo bindings for Fortran from the gtk-fortran project available as a separate fpm package, by Carlos Une
ForColormap: small colormap library independent of any graphical toolkit, by Vincent Magnin. It just converts a real value to RGB values, that can be used with any toolkit offering bitmap drawingâŠ
forimage: library for working with image files (PNM format) and managing colors effectively, by by Seyed Ali Ghasemi
fortran-simplify: module to reduce the over-sampled resolution of a polyline, implementing the nth_point, radial_distance, perpendicular distance, and Reumann-Witkam algorithms, by Joshua Aiken. This process can be useful when working with data that is noisy but usable with a significantly reduced resolution.
pltFor: Fortran-Python interface library to plot figures directly in Fortran, by Damien Minenna
Interoperability
Cython_ISO_Fortran_binding: code for using ISO_Fortran_binding.h from Cython, by Yuichiro Sakamoto. By using ISO_Fortran_binding.pxd, it is possible to call Fortran from Cython in the same way as one calls Fortran from C.
dynload-julia: dynamically load Julia from Fortran, by brocolis
fodbc: interface to Open Database Connectivity (ODBC), by RainBarrel
FortranInterop: documentation and example code on how to make Fortran interoperate with the .NET framework, covering callbacks, strings and mixed mode assemblies, by Christ Akkermans, with links to three blog posts.
hwinfo-fortran: provides access to hardware information using OS APIs for Unix-like operating systems, by Shinobu Amasaki
Mariadb_connector_fortran: wrapper library for Mariadb-connector/C, by Vu Hoang Giang. It can be used to connect to Mairadb, MySQL, and Oracle databases.
PythonFortran: simple example for Python calling Fortran codes in MPI, by Takao Kotani. The main program, which calls Fortran subroutines, is in Python invoking MPI by mpi4py.
sockets-in-Fortran: demonstration of a Fortran code communicating through a socket with a a C code that acts as a client in a socket based server/client communication, by Philippe Preux
Interpolation
stripy: Python interface from underworldcode to TRIPACK and STRIPACK Fortran code for (constrained) triangulation in Cartesian coordinates and on a sphere. Stripy is an object-oriented package and includes routines from SRFPACK and SSRFPACK for interpolation (nearest neighbor, linear and hermite cubic) and to evaluate derivatives.
Linear Algebra
eigensolvers based on unitary core transformations (eiscor): subroutines for accurately and efficiently solving matrix eigenvalue problems using essentially 2x2 unitary matrices. An associated paper is Jared L. Aurentz, Thomas Mach, Raf Vandebril, and David S. Watkins. Fast and stable unitary QR algorithm. Electronic Transactions on Numerical Analysis. Vol. 44, pp. 327-341. 2015.
fordot: overloads the dot_product function to enable efficient dot product with/without coarrays, by Seyed Ali Ghasemi
fortran-lapack: modern Fortran implementation of the Reference-LAPACK library, by Federico Perini. The reference Fortran 77 library is automatically downloaded from its master repository, and processed to create Modern Fortran modules with full explicit typing features.
keksipurkki-demos-qr: implicit QR method, by Elias Toivanen
Lin_Alg: pedagogical codes for Cholesky, QR, and Hessenberg decompositions, Gram-Schmidt orthonormalization, matrix inversion, RQ process diagonalization + shift method, Jacobi diagonalization, iterative power diagonalization + shift method, eigenvectors using iterative method, and A.x = b solution with residual improvement, by Quentin Marecat
LSMR: code for sparse equations and least squares, originally by David Fong and Michael Saunders, updated by Jacob Williams
Small Fortran Solvers (SFS): linear equation solvers, including preconditioned conjugagate gradient, by Bojan Niceno, adapted from Numerical Analysis: Mathematics of Scientific Computing, by David Kincaid & Ward Cheney, using OpenACC to access GPUs
Spectrum-Revealing CUR (SR-CUR): tool for the low rank CUR decomposition of sparse matrices, by Onyebuchi Ekenta. SR-CUR implements a novel CUR decomposition method that allows it to scale to larger matrices and produce more accurate factorizations than previous methods.
Mesh Generation
smesh: package for generating and handling unstructured triangular and polygonal meshes, by Simone Chiocchetti and Michael Schlottke-Lakemper
Numerical
chebpak: routines for Chebyshev polynomials, derivatve matrices, and interpolation, by Sarit Dutta
dfsaneacc: R package with underlying Fortran code implementing the algorithm in Secant Acceleration of Sequential Residual Methods for Solving Large-Scale Nonlinear Systems of Equations, by Ernesto G. Birgin and J. M. MartĂnez, SIAM Journal on Numerical Analysis, Vol. 60, Iss. 6 (2022)
HDMod: hyperdual number based calculations, from atmmod
NAFPack: numerical analysis package, offering a comprehensive set of algorithms for diverse numerical computations, by Jules Minard. These computations include Fast Fourier Transform, linear system solving, and eigenvalue/eigenvector calculations.
NCAR-Classic-Libraries-for-Geophysics: FFTPACK: A library of fast Fourier transforms; FISHPACK: subprograms for solving separable elliptic partial differential equations (PDEs); FISHPACK 90: FISHPACK subprograms with a Fortran 90 interface; MUDPACK: Multigrid subprograms for solving separable and non-separable elliptic PDEs; and SPHEREPACK: A library for modeling geophysical processes
specfun: modernization by Jacob Williams of specfun.f from SciPy from the book Computation of Special Functions, by Shanjie Zhang and Jianming Jin, Wiley (1996).
Optimization
ucminf: R package by Hervé Dakpo with Fortran code originally by Robert Schnabel et al. for general-purpose unconstrained non-linear optimization. The algorithm is of quasi-Newton type with BFGS updating of the inverse Hessian and soft line search with a trust region type monitoring of the input to the line search algorithm. A Fortran 90 version of uncmin by John Burkardt is here.
Parallel Programming
havaita: MPI Fortran type inference â shows how to write a modern Fortran interface to MPI which infers arguments that are already contained in the Fortran type itself, such as element type and count, and renders optional arguments when context is sufficient, by Jeff Hammond
Particle Physics
bmad-ecosystem: library for the simulation of charged particles and X-rays in accelerators and storage rings, by David Sagan et al.
Plasma Physics
Reactive Multifluid and Kinetic Transport in 1D (ReMKiT1D): framework for building 1D multi-fluid models of the tokamak Scrape-Off Layer with support for kinetic electron effects and collisional-radiative modelling, by Stefan Mijin and Alfie Adhemar
Physics
fundamental_constants: modules with the CODATA fundamental physical constants, generated by a Python script from the NIST website, by Vincent Magnin
LibForQ-v1: performs several numerical tasks one frequently needs when working in quantum information science, such as trace, partial trace, and partial transpose; entanglement, discord, and coherence quantifiers; Pauli group (PG), Generalized Gell Mann Matrices (GGMM), and Bloch vector and correlation matrix with GGMM, by Jonas Maziero
libTNSP: code for paper TNSPackage: A Fortran2003 library designed for tensor network state methods, by Shaojun Dong et al., Computer Physics Communications, Volume 228, July 2018, Pages 163-177
NDO: code by Shaojun Dong to make computing Neural Density Operators (NDO) for quantum tomography straightforward, simple and fast
PyHub: easy-to-use, hybrid Python/Fortran package to solve efficiently the Fermi-Hubbard Model, by Quentin Marecat
Temperature Dependent Effective Potentials (TDEP): tools to build accurate model Hamiltonians for finite temperature lattice dynamics from first principles, associated with a paper by Florian Knoop et al. in the Journal of Open Source Software
Random Number Generation
Knuth-FLRNG: Fibonacci Lagged integer and double precision RNGs from Section 3.6 of Volume 2 of TAOCP (Semi-numerical Algorithms); slightly reformatted and changed by Marco Antoniotti from the versions downloadable from the code section of TAOCP site
Statistics
islasso: R package with underlying Fortran code applying the induced smoothing (IS) idea to lasso regularization models to allow estimation and inference on the model coefficients (currently hypothesis testing only), by Gianluca Sottile. Linear, logistic, Poisson and gamma regressions with several link functions are implemented.
StatLib: codes from the journal Applied Statistics, mostly in Fortran 77 or earlier standards. Alan Millerâs translations of some of them to Fortran 90 are here.
Strings
forgex: regular expression engine using a deterministic finite automaton (DFA) approach, by Shinobu Amasaki. It provides .in.
and .match.
operators to detect if a pattern is contained in or exactly matches a string.
fortran-ascii: functions which operate on ASCII characters, by Ivan Pribec, aiming to reproduce the functionality found in <ctype.h> header of the C standard library or std.ascii namespace from the D runtime library.
fortran-shlex: port by Federico Perini of Pythonâs shlex shell-like lexer. The interface comes with two functions, split
which parses a command-like string and returns an array of allocatable character strings; and shlex
that performs the same, but returns a list of type(shlex_token)
tokens.
fsys: library by Jason Christopherson containing system operations and supporting types: string
, similar to the iso_varying_string
, but with a few differences and a few additional operations, and string_builder
, a type that allows concatenating strings while minimizing memory reallocation operations, that behaves similarily to the .NET StringBuilder
class
utf8-f: UTF-8 manipulation, by St-Maxwell. The underlying data in a utf8_string object is a deferred-length string of character(len=:, kind=c_char)
type.
Unit Testing
fordebug: library designed for debugging Fortran code, especially within pure procedures, by Seyed Ali Ghasemi