New Fortran projects

Yes, Rust’s package management was the inspiration for fpm. You should make your code an fpm package. As we are improving fpm, it is or will be as easy to install any Fortran package just like it is with a Rust package.

We have many threads here on better error handling for Fortran. What is the error handling approach that you like?

3 Likes

Thanks for the suggestion, @certik. It seems I should largely rewrite the program and its documentation making it an fpm package, which I will do although it’s not my programming priority now.

I don’t want to make a lengthy off-topic in this thread or start a new language battle! I’m afraid that if you follow my purely-amateur suggestions on the package manager, error handling, or virtually any other aspect of the language or its environment, it will be no longer Fortran but a nearly exact clone of Rust. :wink: Also, it will break compatibility with all the code written during the last 65 years while breaking things is precisely the thing I dislike most about certain programming languages…

As I’m not very “technical” I don’t really think too much about the Rust’s famous memory safety–I just get too irritated when something doesn’t work and things get broken, so I seek a solid technology to build on. I open a file. But what if the file does not exist? I should definitely think of a way to handle this situation… and explicitly define the behaviour in my code but also, I don’t want to type too much to handle the error:
let my_text = fs::read_to_string(my_input_file).expect("Something went wrong reading the file!");

And if I don’t handle errors explicitly in my code everywhere an error can potentially occur, like in the Rust example above, in my opinion the source code should never compile! What’s the point in compiling an incorrect program? :stuck_out_tongue_closed_eyes: For an amateur non-professional programmer like me, it is easier to code in Rust than in Fortran because Rust to a higher extent prevents me from doing nonsense things. Also, recently I found very useful Clippy–a tool which helps to enhance the Rust code even more.

I won’t comment on fpm for now–I’m very curious to see how the project develops. But recently, I gave a try the Ada’s Alire package manager which -according to the developers- “aims to fulfill a similar role to Rust’s cargo”. Although I really like the Ada’s design and philosophy I almost immediately uninstalled Alire. I couldn’t see much “similarity” to Cargo. Rust’s crates.io is not a kind of set of links to GitHub repositories and there’s no need to upload Rust code to GitHub! Instead, crates.io is a server the code samples of Rust programmers are “physically” uploaded to for direct download and stored “in perpetuity”. Even if at some point in future I get crazy and yank an uploaded library, my library will stay there available for download forever for the programs which depend on it, no matter what, because the ecosystem must never get broken. As far as I understand, the Ada’s ecosystem based on the Alire package manager does not give me that same guarantee that my programs depending on other people’s libraries won’t suddenly stop to compile because someone has changed something or removed from GitHub.

1 Like

Thanks for the feedback @piotr. Indeed errors should not go silently, I think that can be done even in Fortran without breaking compatibility. Good ideas about uploading to crates.io versus using github to host. Rust is great, you might like our initial Fortran to Rust backend in LFortran: Rust backend by lucifer1004 · Pull Request #812 · lfortran/lfortran · GitHub.

1 Like

:smiley: :smiley: :smiley:

Update since Sep 9, full list here.

Astronomy and Astrophysics

python-fsps: Python bindings to Charlie Conroy’s Flexible Stellar Population Synthesis (FSPS) Fortran code

Biology and Medicine

Motility Analysis of T-Cell Histories in Activation (MATCHA): designs virtual T cells that move like biological T cells, from BerkeleyLab and Northern New Mexico College. The virtual T cells will match the speed and turning angle distributions of biological cells.

Climate and Weather

GemmesF90: code corresponding to paper “Financial impacts of climate change mitigation policies and their macroeconomic implications: a stock-flow consistent approach.” Climate Policy 20.2 (2020): 179-198, by timongo

Containers and Generic Programming

smart-pointers: tracks references to program resources and automates the freeing of those resources if and only if the reference count drops to zero, by Damian Rouson et al. Most commonly, the reference is a pointer and the resource is memory.

Earth Science

fastscapelib-fortran: Fortran (+ Python bindings) library of efficient algorithms for landscape evolution modeling, by Benoit Bovy et al.

GSW-Fortran: Gibbs-SeaWater Oceanographic Toolbox in Fortran, by Glenn Hyland et al.

Halfspace deformation (hdef): forward calculation of displacements, strains, and stresses in an elastic half-space. The sources are fault slip models, using the solutions derived in Okada (1992) and in Meade (2007).

Economics

defaultModel: Fortran+OpenMP implementation of the canonical sovereign default model with long-term debt, by Gabriel Mihalache. Solved with discrete choice methods. The MaturityExtension repo is associated with the paper Sovereign default resolution through maturity extension, Journal of International Economics (2020).

File I/O

io_utilities: modules to help with input and output, by Arjen Markus: cmdparse parser for minimalistic commands (keyword and zero or more arguments), keyvars read in INI-files and fill in the values of the variables automatically, can also save the data in an INI-file, progressbar presents a progress bar on the screen (supports different styles)

nmlinput.f90: helper routines to use namelists as input files, by Loïc Reynier

Games

3Drendering: 3D engine written to Linux framebuffer, ray-casting, by Ross J. Stewart

fcurses: module for Linux terminal control over cursor position, character drawing, raw keyboard input, and simple beep sounds, by Ross J. Stewart. Sufficent to write text based games in Fortran.

General Purpose

xslib - Extra-Small Library: library consisting of useful utilities and functions as stand-in for Fortran “standard” library, by JureCerar. Has modules for string handling, error handling, memory allocation, regression, timing, sorting, statistics, and other topics

Graphics, Plotting, and User Interfaces

fortran2018-asymptote: generate drawings using the Asymptote Vector Graphics Language, by Kevin Matthes

Linear Algebra

madrigal: matrix derivative tests for forward and reverse mode automatic differentiation, by R. Quast

Neural Networks and Machine Learning

fnn: implements simple, sequential neural networks, by CEREA DA-ML team. Once a network is constructed, the forward operator is available with apply_forward and can be applied both in training and inference mode.

roseNNa: fast, portable, and minimally-intrusive library for neural network inference, by Ajay Bati and Spencer Bryngelson. The library is optimized Fortran and outperforms PyTorch (by a factor between 2 and 5x) for the relatively small neural networks used in physics applications, like CFD.

Numerical

fastmath: library for fast, approximate math functions: exp, log, 1/sqrt, by Federico Perini. These functions provide fast, approximate evaluations of the exponential, logarithm and normalization functions in 64-bit precision.

polyroots-fortran: modern Fortran library for finding the roots of polynomials, by Jacob Williams

Ordinary Differential Equations

odepack: Modern Fortran interface by Nick Wogan for the LSODA and LSODAR routines in ODEPACK, which is for solving ordinary differential equation initial value problems. This repository contains a modified version of ODEPACK which is threadsafe.

runge-kutta-fortran: Fixed and variable-step Runge-Kutta solvers in Modern Fortran, by Jacob Williams

Optimization

Open source Fortran Simulated Annealing Module (OpenFSAM): module that can be generally assigned to solve a simulated annealing optimization problem, by Nicholas Herring. A user can easily add this module to any existing modern Fortran program since the module is self contained and sufficiently abstracted.

Random Number Generation

rng_fortran: generates random integers, uniform, normal, and Poisson variates, and random points on a circle or sphere, using the xoroshiro128plus generator, by jannisteunissen

Statistics

fitpack: modern Fortran translation by Federico Perini of the FITPACK package for curve and surface fitting by Paul Dierckx

get_moments: maximum entropy based reconstruction of a function from its moments, by Daniel Price

statislib: library for statistical distributions, by Jim-215-Fisher. The library includes various distributions’ random number generators, probability density function or probability mass function, and cumulative distribution function.

Strings

stringParseMods: routines for easy string parsing and for geometric domains, by Ross J. Stewart

Unit Testing

Fortran Unit Testing Objects (Fortuno): flexible and extensible Fortran unit testing framework for testing serial, MPI-parallelized and coarray-parallelized applications, by Bálint Aradi

7 Likes

As one can see in your postings that follow, you still do look and add :wink: That’s great but if you ever decide to actually stop looking and adding, I’d volunteer for the Astronomy and Astrophysics domain if you shared the places to look.

I periodically do a Github search for “fortran”, ranked by recency, and a search for language:fortran stars:“>0”. To save time I am less likely to add domain-specific projects, but if I see one with many stars, I still do. If anyone thinks there is a noteworthy project to be added, (and if you have suggestions for Astronomy and Astrophysics), please raise an issue at GitHub or message me here.

End-of-year update since Nov 19, full list here.

Climate and Weather

Global ECMWF Fire Forecast (GEFF) model (geff): calculates fire danger indices from atmospheric inputs. It implements the Fire Weather Index, the National Fire Danger Rating System and the McArthur ratings in one single infrastructure.

Code Tools

fortran2018-conditional-memory: library for the conditional allocation and deallocation of allocatable objects of Fortran intrinsic types, by Kevin Matthes

Containers and Generic Programming

collections: set of types supporting collections in Fortran, by Jason Christopherson. Currently, the library contains a generic, dynamically sizable list and a generic linked-list type.

Computational Fluid Dynamics

Propeller Panel Method (PROPAN): panel code for the calculation of steady and unsteady potential flow around foils, open and ducted propellers, and wind and marine current turbines. PROPAN was developed by MARETEC (Marine and Environmental Technology Research Centre) at Instituto Superior Técnico (IST), which belongs to Lisbon University.

Earth Science

Data-Interpolating Variational Analysis (DIVA): spatial interpolation of data (analysis) in an optimal way, comparable to optimal interpolation (OI), by Sylvain Watelet et al. In comparison to OI, it takes into account coastlines, sub-basins and advection.

D-Claw: numerical software for modeling granular-fluid flows. It is built on top of Clawpack (clawpack.org), and is an extension and generalization of the shallow-water code GeoClaw (geoclaw.org), which includes algorithms for general shallow earth-surface flows.

pygtide: Python module that wraps around ETERNA PREDICT 3.4 which is compiled from Fortran into an executable using f2py. The original ETERNA PREDICT 3.3 was written by H.-G. Wenzel in a mix of Fortran 77 and 90.

Error Handling

Fortran-Assertion-Module: simple module which adds an assertion function, by alecksandr26. It works by enabling -cpp the c preprocesor directives in the Fortran compiler.

File I/O

IO Fortran Library: module providing high level routines for doing internal and external IO, by Austin C. Bullock. In particular, the module provides a handful of generic interfaces for performing string-based and array-based IO that are useful for recording program data, reading data into programs, and for writing formatted logs and output.

General Purpose

fwalk: Fortran bindings by Andre Smit for libcwalk, a lightweight C path manipulation library for Unix and Windows

Graphics, Plotting, and User Interfaces

M_slices: basic slice plot module based on M_draw(3f), by urbanjost. A 3-d surface is plotted by plotting slices through the volume which are parallel to the x-y plane.

Numerical

fortran-bessels: Fortran port (stub) of the Bessels.jl repository, by Federico Perini et al.

Optimization

Jlp22: software for mathematical and statistical computations, with special reference to linear programming in forestry, by Juha Lappi

Physics

LibForQ: 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

Quantum Chemistry and Electronic Structure

TBmodels: collection of non-interacting Tight Binding models, often used as a basis for interacting problem calculations, by Adriano Amaricci

Statistics

fstats: modern statistical library containing routines for computing basic statistical properties, hypothesis testing, regression, special functions, and even experimental design, by Jason Christopherson

Functional Single Index Model (FSIM): codes for simulations and real data analysis, which appears in the manuscript entitled, “Functional Single Index Model” by Jiang, F., Baek, S., Cao, J., and Ma, Y.

Strings

fortran-regex: port by Federico Perini of the tiny-regex-c library for regular expressions. It is based on the original C implementation, but the API is modelled in Fortran style, which is similar to the intrinsic index function.

7 Likes

Crytography

sodium: fortran bindings to the libsodium software library for encryption, decryption, signatures, password hashing, etc.

1 Like

Thanks. I created a cryptography category with sodium and Frypto.

Update since Dec 24, 2022, full list here

Astronomy and Astrophysics

mercury: N-Body integrator based on Bulirsh-Stoer, Everhart and other methods, originally by John E. Chambers, that can integrate any star system, such as the Solar System

Climate and Weather

SPEEDY-ML: combines the atmospheric general circulation model (AGCM) SPEEDY with a reservoir computing-based machine learning algorithm for weather prediction and climate simulations, by Troy Arcomano.

Code Tools

Audito: automatic differentiation tool for Fortran, by Michel V. Heinz. The mathematical operators have been overloaded to work with the newly defined types, which include not only the function value, but also the gradient, Hessian and Laplacian.

Computational Chemistry

Chemistry discovery engine (CDE): implements several different calculation types associated with chemical reaction-path analysis, by Joe Gilkes and Scott Habershon

Cryptography

sodium: Fortran bindings by Andre Smit for libsodium, a C library for encryption, decryption, signatures, password hashing, etc.

Earth Science

Tomofast-x v.1.6: parallel inversion platform to run single domain or joint inversion (gravity and magnetic data), by V. Ogarko, J. Giraud, R. Martin and M. Jessell. It can use local weighting of gradient regularization function, global and local petrophysical constraints (Gaussian mixture model and multiple disjoint bound constraints).

Error Handling

assert-fortran: simple module which adds an assertion function, by alecksandr26. It works by enabling -cpp the c preprocesor directives in the Fortran compiler.

Fast Fourier Transform

fftw3_wrapper: Fortran wrapper library around the FFTW C library that tries to mimic the Matlab and NumPy interfaces, by Kuan-Chih Wang

Finite Elements

metis-fpm: Fortran API and a source repackaging by gnikit of METIS, a set of serial programs for partitioning graphs, partitioning finite element meshes, and producing fill reducing orderings for sparse matrices, from KarypisLab

General Purpose

apps: utility programs to evaluate FORTRAN77-like mathematical expressions in line mode, print specified columns of a file, split Fortran source file into individual files, find the pathname of commands and optionally perform commands on them, change case of free-format Fortran file or remove comments, issue Unix-like commands, compute checksums of files, and do other things, by urbanjost
[This repo aggregates codes in small repos that have been deleted.]

argparse-f: Modern Fortran command line parser, implemented with OOP, by 0382 and zoziha

forclust: manage and control a Linux system, such as adjusting the settings of the CPU and other components, by Seyed Ali Ghasemi

QDUtilLib: modules for numerical parameters, strings, reading and write matrices, and linear algebra, by lauvergn

Graphics, Plotting, and User Interfaces

button: library to use graphical buttons with PGPLOT, by Nicolás Cardiel

fortran-dialog: wrapper module by interkosmos around dialog to create text user interfaces in Fortran 2008, similar to pythondialog for Python

M_color: convert between RGB color values and other common color models, by urbanjost

Interoperability

fcppstring: Fortran wrapper for C++ strings, by Will Dickson

Linear Algebra

Matrix Equations PACKage (MEPACK): library for the solution of dense Sylvester-like matrix equations, by Martin Köhler. Martin Köhler

minres: implementation of MINRES by Will Dickson based on the original Fortran 90 code by Chris Paige, Sou-Cheng Choi, and Michael Saunders, which solves sparse symmetric systems Ax = b

Neural Networks and Machine Learning

fortran-pytorch-lib: code and examples on directly calling Pytorch ML models from Fortran, from Cambridge-ICCS

fortran-tf-lib: code and examples on directly calling Tensorflow / Pytorch / Keras ML models from Fortran, from Cambridge-ICCS

Numerical

library: code for array operations, numerical differentiation and integration, mathematical and physical constants, FFTs, interpolation, optimization, ODEs, finding roots, random number generation, sorting, statistics, strings, and other topics, by Alexander Mead

Numerical Integration (Quadrature)

IntegralALL: integrate arrays and functions numerically using Gauss-Legendre Quadrature, Simpson’s rule, the trapezoidal rule, and other methods, by Jean Gomes. The Python package pyintegralall calls the Fortran code.

Plasma Physics

Onion-Skin Modeling + EIRENE + DIVIMP for edge analysis (OEDGE): OEDGE/DIVIMP/LIM plasma edge simulation codes for fusion reactor applications, from ORNL-Fusion

Physics

Neural-Network-Quantum-States: machine learning demonstration of neural network quantum states, by acbbullock

NuHamil-public: matrix elements of NN+3N interactions based on chiral effective field theory, by Takayuki Miyagi

Quantum Chemistry and Electronic Structure

Atoms and Molecules with Quantum Monte Carlo (Amolqc): electronic structure calculations with quantum Monte Carlo (QMC), from Lüchow Group. The code features strong multideterminant and optimization capabilities.

Strings

M_regex: Fortran interface by urbanjost to the POSIX 1003.2 regular expression library using ISO_C_BINDING

Time Series

FortranCWT: fast implementation of the Continuous Wavelet Transform of the 1D signals, by WangYun1995

Unit Testing

fortran_test_helper: library to provide assistance to testing, by Jason Christopherson

4 Likes

Update since Feb 18, full list here

Astronomy and Astrophysics

aquila astrophotography package: small LRGB astrophotography reduction and processing package, by Dominik Gronkiewicz. The package consists of the programs aqstack for stacking and reduction of monochromatic CCD images and aqlrgb for compositing images from many filters into one color picture.

CUMC3D-Ver1.28: parallel code for high-energy astrophysical simulations, by Ho Sang (Leon) Chan et al. It includes basic MHD solvers and models for simulating accretion discs around supermassive black holes.

DarkLim: statistical tools for calculating dark matter exclusion limits and sensitivity estimates, from SPICE/HeRALD

FastQSL: code associated with Zhang, P., Chen, J., Liu, R. and Wang, C., FastQSL: A Fast Computation Method for Quasi-separatrix Layers. The Astrophysical Journal, 2022, 937, 26

FEMlimb-Astrophysics: algorithm described in the paper Measuring limb darkening of stars in high-magnification microlensing events by the Finite Element Method, by L. Golchin and S. Rahvar, Monthly Notices of the Royal Astronomical Society (2020)

FluxConserving: Fortran code to compute the flux-density conservation, with a Python interface, by Jean Gomes

libTheSky: computes the positions and other properties of celestial bodies (Moon, planets, comets, asteroids, stars), events (e.g. lunar phases) and coordinate transformations, by Marc van der Sluys and AstroFloyd. It forms the core of the software that is used to create the Dutch popular-astronomy website http://hemel.waarnemen.com.

NASA Ames Mars Global Climate Model (AmesGCM): simulates the atmosphere and climate of the planet Mars using an external finite volume dynamical core to predict the global atmospheric state given various planetary parameters and physical parameters.

PhotochemPy: photochemical model of rocky planet’s atmospheres, by Nicholaswogan. Given inputs, like the stellar UV flux, the atmospheric temperature structure, etc., this code will find the steady-state chemical composition of an atmosphere, or evolve atmospheres through time. Photochem is a rewrite in modern Fortran.

Biology and Medicine

hole2: analysis and visualisation of the pore dimensions of the holes through molecular structures of ion channels, by Oliver Smart et al.

ktz-phasediag: generates phase diagram for the KTz Neuron. Code written for the paper Girardi-Schappo M, Bortolotto GS, Stenzinger RV, Gonsalves JJ, Tragtenberg MHR (2017) Phase diagrams and dynamics of a computationally efficient map-based neuron model. PLoS ONE 12(3): e0174621.

RBC3D: spectral boundary integral solver for cell-scale blood flow. Associated paper: Bryngelson, S. H., Guéniat, F., & Freund, J. B. (2019), Irregular dynamics of cellular blood flow in a model microvessel, Physical Review E, 100, 012203.

Climate and Weather

Automatic Lidar and Ceilometer Processing Framework (ALCF): tool for processing of automatic lidar and ceilometer (ALC) data and intercomparison with atmospheric models such as general circulation models (GCMs), numerical weather prediction models (NWP) and reanalyses with a lidar simulator using the COPS instrument simulator framework running offline on model output

Cloud Layers Unified By Binormals (clubb_release): single-column atmospheric model, with associated preprint CLUBB-SILHS: A parameterization of subgrid variability in the atmosphere, by Vincent E. Larson

dwarf-p-cloudsc: standalone mini-app of the ECMWF cloud microphysics parameterization, by Michael Lange, Willem Deconinck, and Balthasar Reuter

fst-tools: tools to manipulate RPN standard files, from Meteorological Research Informatics Services of Canada

GVTD-X: implements numerical method to retrieve tangential and radial wind components in atmospheric vortices from single-Doppler radar observations, which is named from pronounciation of a abbreviation “GVTD-HeCs” (Generalized Velocity Track Display with the Helmholtz-decomposition-based Closure assumption). By Satoki Tsujino.

UCLALES-SALSA: large-eddy model coupled with a detailed sectional microphysics module for aerosol, clouds and precipitation, by Juha Tonttila et al.

Code Tools

version-f: implementation of Semantic Versioning 2.0.0 by Minh Dao that aims to be a user-friendly tool for handling versions in Fortran projects.

Computational Chemistry

EMsoft: computation and visualization of scanning electron microscopy diffraction patterns, notably EBSD, ECP, TKD, and EKP, by Marc de Graef et al. In addition, there are programs for TEM defect image contrast, CBED, PED, Laue x-ray diffraction, and a new series of programs for computational polarized light microscopy. EMsoftOO is an object-oriented version under development in Fortran 2018.

International Association for the Properties of Water and Steam (iapws): library providing the formulas for computing light and heavy water properties, by Milan Skocic, with interfaces to C and (in pyiapws) Python

MolAlignLib: Fortran and Python library based on random rotations and quasi-local RMSD minimizations to align rigid molecules and clusters. Associated paper: M. Vasquez-Perez, L. A. Zarate-Hernandez, C. Z. Gomez-Castro, U. A. Nolasco-Hernandez. A Practical Algorithm to Solve the Near-Congruence Problem for Rigid Molecules and Clusters, Journal of Chemical Information and Modeling (2023)

QMC=Chem: Reference: Quantum Monte Carlo for large chemical systems: Implementing efficient strategies for petascale platforms and beyond, by Anthony Scemama , Michel Caffarel, Emmanuel Osere.t and William Jalby (2013), Journal of Computational Chemistry, 34:11(938–951)

string-amber: adaptive string method implementation in sander (AmberTools 22.3). Associated paper: Adaptive Finite Temperature String Method in Collective Variables, by Kirill Zinovjev and Iñaki Tuñón, J. Phys. Chem. A 2017, 121, 51, 9764–9772 (2017).

Containers and Generic Programming

Fortran Elements Library: list, dictionary, shared pointer, and error handler, by Dominik Gronkiewicz

hashtable: hash tables by Jeremie Vandenplas based on the function hashword in lookup3.c by Bob Jenkins. Five derived types are available, for character, integer, and real scalars, and for integer and real arrays

Computational Fluid Dynamics

afivo-streamer: code for fluid simulations of streamer discharges, from Multiscale Dynamics - CWI. It is based on the afivo framework, which provides adaptive mesh refinement (AMR) and a multigrid solver for Poisson’s equation.

C81-Interface: parses and creates C81 formatted airfoil tables, by Cibin Joseph

CP3d: code associated with Z. Gong, Z. Wu, C. An, B. Zhang, X. Fu, CP3d: A comprehensive Euler-Lagrange solver for direct numerical simulation of particle-laden flows, Computer Physics Communications, 286 (2023) 108666.

HORSES3D High-Order (DG) Spectral Element Solver: multiphysics environment where the compressible Navier-Stokes equations, the incompressible Navier–Stokes equations, the Cahn–Hilliard equation and entropy–stable variants are solved. Arbitrary high–order, p–anisotropic discretisations are used, including static and dynamic p–adaptation methods (feature-based and truncation error-based).

ps3d: pseudo-spectral code for turbulent flows in 3D, associated with the paper The stability of inviscid Beltrami flow between parallel free-slip impermeable boundaries, by David Dritschel and Matthias Frey, Journal of Fluid Mechanics (2023)

Dates and Times

datetime: library for simple, time-zone-independent date and time management, by Patrizia Favaron

Earth Science

Anura3D_OpenSource: numerical modelling of large deformations and soil–water–structure interaction using the material point method (MPM)

Ecosystem Demography Biosphere Model (ED2): integrated terrestrial biosphere model incorporating hydrology, land-surface biophysics, vegetation dynamics, and soil carbon and nitrogen biogeochemistry

External Drift Kriging (EDK): program from the Helmholtz Centre for Environmental Research. An associated paper is Zink, M., R. Kumar, M. Cuntz, and L. Samaniego (2017), A high-resolution dataset of water fluxes and states for Germany accounting for parametric uncertainty, Hydrol. Earth Syst. Sci., 21(3), 1769–1790, doi:10.5194/hess-21-1769-2017.

EQdyna: parallel finite element software to simulate earthquake spontaneous dynamic rupture, seismic wave propagation and high frequency deterministic ground motions, by Dunyu Liu. It focuses on simulating earthquakes on geometrically complex fault systems with other heterogeneities in mind.

gufm1-webservice: four centuries of geomagnetic secular variation from historical records. This Fortran-backed webservice by Martin Rehfeld provides an interface to the gufm1 model as published by Andrew Jackson, Art R. T. Jonkers and Matthew R. Walker.

hypoellipse: determines hypocenters and magnitudes of near regional earthquakes and the ellipsoids that enclose the 68-percent confidence volumes of the computed hypocenters. HYPOELLIPSE was developed to meet the needs of U.S. Geological Survey (USGS) scientists studying crustal and sub-crustal earthquakes recorded by a sparse regional seismograph network.

insol: calculates paleo and future daily insolation at the top of the atmosphere, by Alexander Robinson

LinSlipInv: Linear multi time-window earthquake slip inversion with k^-2 smoothing, by Frantisek Gallovic. Suite of codes for linear slip inversions and resolution analysis.

Multicomponent Aerosol FORmation (mafor): Lagrangian type sectional aerosol box model which includes gas phase and aqueous phase chemistry in addition to aerosol dynamics. The model simultaneously solves the time evolution of both the particle number and the mass concentrations of aerosol components in each size section.

Multi-Physics Problem (MPP): solves biophysics problems relevant to global land surface models (LSMs). Associated paper: Bisht, G., Riley, W. J., Hammond, G. E., and Lorenzetti, D. M., Development and evaluation of a variably saturated flow model in the global E3SM Land Model (ELM) version 1.0, Geosci. Model Dev., 11, 4085-4102, 2018

Open-source geomagneToSphere prOpagation tool (OTSO): geophysics tool used to compute the trajectories of cosmic rays within the Earth’s magnetosphere, by Nicholas Larsen. These computations are used to determine physical values, such as cut-off rigidities and asymptotic cones for locations on the Earth, that are needed by the cosmic ray research community.

Pecube_D: version of Pecube 3D thermal model that tracks exhumed sample cooling histories and calculated predicted cooling ages, by Todd Ehlers et al. It also allows for the simulation of topographic evolution and is (optionally) coupled with the CASCADE surface process model.

Perple_X: programs for calculating phase diagrams, manipulating thermodynamic data, and modeling equilibrium phase fractionation and reactive transport, by James A. D. Connolly

pycathy_wrapper: Python wrapper for the CATHY (V1, and plant model version) Fortran code allowing mesh creation, forward and inverse modeling, and simple output visualization of CATHY simulations. Associated paper: Camporese, M., Paniconi, C., Putti, M., Orlandini, S., 2010. Surface-subsurface flow modeling with path-based runoff routing, boundary condition-based coupling, and assimilation of multisource observation data..Water Resources Research 46.

PyProSAIL: Python interface by Robin Wilson to the ProSAIL combined leaf optical properties (PROSPECT) and canopy bi-directional reflectance (SAIL) model, in Fortran

ReosProject: tools for hydrological and hydraulic analysis

seismo_tools: utilities for working with seismological data formats, seismic catalogs, and other common tasks such as calculating distances, computing arrival times, displaying seismograms, etc., by Antonio Villaseñor

Structure for Unifying Multiple Modeling Alternatives (SUMMA): hydrologic modeling framework that can be used for the systematic analysis of alternative model conceptualizations with respect to flux parameterizations, spatial configurations, and numerical solution techniques, by Martyn P. Clark et al.

Super-Fast INundation of CoastS (SFINCS): reduced-complexity model designed for super-fast modelling of compound flooding events in a dynamic way, from Deltares

Economics

DeadlyDebtCrises: code and data appendix for Deadly Debt Crises: COVID-19 in Emerging Markets, accepted for publication by The Review of Economic Studies, by Cristina Arellano, Yan Bai, and Gabriel Mihalache

Engineering

Generator’s high-current bus ducts: computation of current distributions, power losses, and magnetic fields of the high-current, shielded generator bus ducts, by Petar Sarajcev

pyAVL: stripped down version of Mark Drela and Harold Youngren’s famous AVL code for the aerodynamic and flight-dynamic analysis of rigid aircraft of arbitrary configuration, wrapped in Python with f2py by Josh Anibal. This allows one to more easily conduct large parameter sweeps in AVL or to include AVL into a larger model.

THOR: discrete ordinates radiation transport code using the AHOT-C method on unstructured meshes (can be generated using Gmsh and converted using OpenMeshConverter) and multigroup XS (can be generated using OpenMC and converted using OpenXSConverter), by Nicholas Herring et al.

File I/O

Fortran 90 General I/O Interface (F90GIO): provides I/O interface for NetCDF, HDF4, HDF5 reading and writing, by Cheng Da

fortran-messagepack: prototype library for MessagePack (an efficient binary serialization format) support in Fortran, by Kelly Schultz

Finite Elements

ParallelFEM-Fortran: Parallel programming for Finite Element Analysis using Fortran and PETSc, by chennachaos. This code includes several parallel implementations for the Lapalace equation and linear elasticity in 2D and 3D.

ParMETIS for fpm: Fortran API and a source repackaging by gnikit of ParMETIS, an MPI-based library for partitioning graphs, serial programs for partitioning graphs, partitioning finite element meshes, and producing fill reducing orderings for sparse matrices, from KarypisLab

tensor-algebra: some frequently required methods for the implementation of problems in the field of continuum mechanics, e.g. tensor algebra, by CfKu. These methods are usually needed and used to implement user subroutines in finite element software written in Fortran.

Fortran Books and Tutorials

Computational_Techniques: Computational Techniques and Numerical Calculations course of the Erasmus Mundus Theoretical Chemistry and Computational Modelling Master’s program. Part 1 introduces Fortran, and later parts discuss numerical methods.

FortranCourse: short course with each concept illustrated by a Fortran program, by Guillaume Roullet

fortran_examples: examples using advanced features of Fortran, by Philippe Carphin, Samuel Gilbert, and Michel Valin

RCDS-introduction-to-fortran: introductory course delivered by Chris Cooling at the Imperial College London Graduate School.

General Purpose

cernlib: large collection of general purpose libraries and modules maintained and offered in both source and object code form on the CERN central computers. Most of these programs were developed at CERN and are therefore oriented towards the needs of a physics research laboratory that is general mathematics, data analysis, detectors simulation, data-handling etc… applicable to a wide range of problems. nanoncernlib is a collection of commonly used cernlib routines packaged with cmake to easily build on modern systems.

Interoperability

f2py-with-derived-types: demonstrates how to use f2py with Fortran derived types with type-bound procedures, by Nick Wogan

java-f90-jni-dll: demonstrates calling a Fortran dynamic link library (DLL) from Java bean by using JNI/JNA, by John Van Derton

Interpolation

interpolation: Matlab/Octave-like interpolation functions such as linear and PCHIP (Piecewise Cubic Hermite Interpolating Polynomial), by Jiří Fürst

pytspack: Python wrapper by Barry Baker and Zachary Moon of Robert J. Renka’s TSPACK, a curve-fitting package based on exponential tension splines with automatic selection of tension factors. TSPACK is a curve-fitting package based on exponential tension splines with automatic selection of tension factors.

Linear Algebra

fortran_csr: library to construct and multiply a matrix in compressed sparse row (CSR) format, by Yuki Nagai

GEVP-PDHGEQZ: parallel ScaLAPACK-style package of routines for solving nonsymmetric real generalized eigenvalue problems, from NLAFET

insitu_array: in-place array transpose for Fortran, by Paul Stryck. Module uses a 1D array for storage and mimics differently shaped views to the same underlying data via pointer reassignment.

JKogb: software supplement for the paper Kogbetliantz-type algorithm for the hyperbolic SVD, by Vedran Novaković & Sanja Singer, Numerical Algorithms volume 90, pages 523–561 (2022)

psfun: library under development focused on the computation of matrix-function vector products equation for large and sparse matrix in a distributed setting, by Fabio Durastante and Salvatore Filippone

Materials Science

GraSPH: Smoothed-particle Hydrodynamics (SPH) program originally intended for simulations of bulk granular material as well as fluids, by Edward Yang. Src_CAF contains code intended to run multi-core configuration enabled with the Coarray Fortran 2008 features, and src_GPU contains code intended to run on a CUDA-enabled GPU.

Mesh Generation

OpenMeshConverter: open source utility to convert various publicly available mesh formats, by Nicholas Herring. It takes a version 4 Gmsh file (tested with version 4.1) and converts it to the THOR mesh format, and there are plans to extend this converter to intake other versions of Gmsh and exodus.

Molecular Dynamics

Empirical Valence Bond - Quantum mechanical derived force field (EVB-QMDFF): Ring Polymer Molecular Dynamics (RPMD) and rate constant calculations on black-box potential energy surfaces, by Julien Steffen

Relativistic and Electromagnetic Molecular Dynamics Simulation for Nanoscale Phenomena: associated paper: M. Tanaka and M. Murakami, Relativistic and electromagnetic molecular dynamics simulations for a carbon-gold nanotube accelerator, Computer Physics Communications, 241, 56-63 (2019)

Neural Networks and Machine Learning

util: machine learning, optimization, and data science utilities package, by tchlux. tlux has code for nonlinear regression and the ball tree algorithm for nearest neighbors

Numerical

fastconv: simple library for 1D and 2D convolutions, by Dominik Gronkiewicz

monolis_utils: utilities for monolithic library of numerical simulation, by Naoki Morita. There are modules for I/O, data processing, algebraic computations, memory allocation and release, MPI, tabular data, bounding boxes, Kd-trees, and hashing.

naglib - NAG Routine Replacements: replacements for some NAG Library routines root-finding, quadrature, sine and cosine transforms, solving ODEs, interpolation, random number generation, and special functions, by Ricardo Yanez

Naval Surface Warfare Center (NSWC) Mathematical Library: collection of Fortran 77 routines specializing in numerical mathematics. Subroutines are available in the following areas: elementary operations, geometry, special functions, polynomials, vectors, matrices, large dense systems of linear equations, banded matrices, sparse matrices, eigenvalues and eigenvectors, L1 solution of linear equations, least-squares solution of linear equations, optimization, transforms, approximation of functions, curve fitting, surface fitting, manifold fitting, numerical integration, integral equations, ordinary differential equations, partial differential equations, and random number generation.

Ordinary Differential Equations

dvode: Modern Fortran Edition of the DVODE ODE Solver, by Jacob Williams

RKAdaptiveMethods: implements adaptive Runge-Kutta methods rk54Sharp, rk54Dormand, rk65Dormand, rk87Dormand, rk87EnrightVerner, rk108Feagin, rk109Legendre, rk1210Feagin, rk1211Peter, rk1412Long, and rk1412Feagin and tests them on the Pleiades problem, a 7 body 2-dimensional gravitational system, by kayejlli. Can be called by Python via f2py or by a Fortran main program.

Optimization

prima: Reference Implementation for Powell’s methods with Modernization and Amelioration, by Zhang Zaikun and Tom M. Ragonneau. PRIMA implements of Powell’s derivative-free optimization methods, namely COBYLA, UOBYQA, NEWUOA, BOBYQA, and LINCOA.

Parallel Programming

ACM40640-PH504: Introduction to HPC and Parallel Programming Module, by Buket Benek Gursoy et al.

Partial Differential Equations

pdecheb: Chebyshev polynomial software for elliptic-parabolic Systems of PDEs, by Ivan Pribec

Particle Physics

Cosmic ray and HadROnic interactiOn MOnte-carlo frontend (chromo): generic user interface to popular event generators used in cosmic ray and high-energy particle physics, from impy-project

Physics

Accurate Biot-Savart routines with Correct Asymptotic Behaviour (abscab-fortran): computes the magnetic field and the magnetic vector potential of filamentary current carriers in the form of a circular loop and straight segments, by Jonathan Schilling. Arbitrary geometries of conductors can be approximated by a polygon along its contour and the connecting segments between the polygon vertices are modeled by straight segments.

Cartesian-coordinate Oblique-boundary Particles and Thermals In Cell (COPTIC): moves particles in three dimensions of space and time (6 phase-space dimensions) and simultaneously calculates the self-consistent electrostatic potential in the presence of a neutralizing species governed by a thermal Boltzmann factor, or of a second particle species, by ihutch and chaako

codata: provides the codata constants 2010, 2014 and 2018, by Milan Skocic. The raw codata from http://physics.nist.gov/constants are parsed line by line where the columns name, value, uncertainty and unit are formatted to be conform to Fortran double precision. pycodata is a Python wrapper.

electron-phonon Boltzmann transport (elphbolt): Fortran 2018 code for solving the coupled electron and phonon Boltzmann transport equations (BTEs), by nakib. Using ab initio electron-phonon and phonon-phonon interactions and a fully wave vector and electron band/phonon branch resolved formulation of the BTEs, elphbolt can calculate the phonon and electronic thermal conductivities; electronic conductivity; phonon and electronic contributions to the thermopower; and effect of the mutual electron-phonon drag on the transport coefficients listed above.

EMUstack: simulation package for calculating light propagation through multi-layered stacks of dispersive, lossy, nanostructured, optical media, by Bjorn Sturmberg. It implements a generalised scattering matrix method, which extends the physical intuition of thin film optics to complex structures.

Green-Tea-: Green’s functions quantum transport solver based on ab-initio physical models, associated with paper Unit cell restricted Bloch functions basis for first-principle transport models: Theory and application, by M. G. Pala, P. Giannozzi, and D. Esseni, Phys. Rev. B 102, 2020

semba-fdtd: parallel Finite-Difference Time-Domain (FDTD) simulator. An associated paper is Miguel Ruiz Cabello, Maksims Abalenkovs, Luis Diaz Angulo, Clemente Cobos Sanchez, Franco Moglie, Salvador Gonzalez Garcia, Performance of parallel FDTD method for shared- and distributed-memory architectures: Application to bioelectromagnetics, PLOS ONE 15(9): e0238115, 2020

Treecode-Accelerated Boundary Integral Poisson-Boltzmann (TABI-PB) solver: employs a well-conditioned boundary integral formulation for the electrostatic potential and its normal derivative on the molecular surface. Associated paper: J. Chen and W. Geng, On preconditioning the treecode-accelerated boundary integral (TABI) Poisson-Boltzmann solver, J. Comput. Phys., 373, 750-762 (2018).

3 Likes

Continuation of previous message (due to size limit):

Quantum Chemistry and Electronic Structure

cct3: plugin to PSI4 capable of executing a number of closed- and open-shell coupled-cluster (CC) calculations with up to triply excited (T3) clusters, by J. Emiliano Deustua et al.

Full-potential Linearized Augmented Plane Wave code (FLEUR): FLAPW (full-potential linearized augmented planewave) code, based on density-functional theory, from JuDFTteam. The FLAPW-Method is an all-electron method which within density functional theory is universally applicable to all atoms of the periodic table and to systems with compact as well as open structures.

gfn0: stand-alone implementation of the GFN0-xTB method, described in preprint A Robust Non-Self-Consistent Tight-Binding Quantum Chemistry Method for large Molecules (2019), by Philipp Pracht, Eike Caldeweyher, Sebastian Ehlert, and Stefan Grimme

HoneyTools modules by Gabriele Bellomia to easily deal with nontrivial honeycomb structures in real-space: generate the coordinates, compute all the neighbor-shells, get direct access to logical masks for nearest and next-nearest neighbors (nth-order can be easily computed from the shell table), hence readily build tight-binding hamiltonians, or any other lattice quantity requiring real-space geometrical information.

Orthogonalized Linear Combination of Atomic Orbitals (olcao): all-electron density functional theory (DFT) based method that uses local atomic orbitals in the basis expansion, associated with book Electronic Structure Methods for Complex Materials: The orthogonalized linear combination of atomic orbitals, by Wai-Yim Ching, Paul Rulis, Oxford University Press (2012)

spinProjection: carries out spin-projection for unrestricted Hartree-Fock theory, by Hrant P. Hratchian. Other codes are spinContaminationChecker to carry out spin contamination checks, analysis, and related models and nio for Natural Ionization Orbital analysis

x2dhf: finds virtually exact solutions of the Hartree-Fock and density functional theory equations for diatomic molecules and atoms, by Susi Lehtola and Jacek Kobus The lowest energy eigenstates of a given irreducible representation and spin can be obtained.

Random Number Generation

normal-deviates: generates normal univariate and multivariate deviates, by Patrizia Favaron, using an improved Ziggurat method by Jurgen A. Doornik and the Cholesky decomposition

Sorting

Fortran-Code-Snippits: codes for sorting and searching, including the Boyer–Moore string-search algorithm, by Peter Kelly

Statistics

peaks: peak detection library meant to locate peaks and valleys in a signal, by Jason Christopherson. This library works on both smooth data and on noisy data where other routines, especially those that rely upon derivatives, have difficulties.

XA_GRM: estimates the genomic relationship matrix (GRM) in combined population using ancestry-specific allele frequency and ancestry-specific genetic architecture. Associated paper: Momin, M. M., Shin, J., Lee, S., Truong, B., Benyamin, B., & Lee, S. H. (2021). A novel method for an unbiased estimate of cross-ancestry genetic correlation using individual-level data. Nature communications, 2023. 14(722).

Unclassified

dwnominate: provides a simplified R interface by Will May to the DW-NOMINATE roll call scaling program, based on Fortran code of Keith Poole. DW-NOMINATE (Dynamic Weighted NOMINAl Three-step Estimation) estimates dynamic models of legislator ideology using roll call votes, and can efficiently estimate static ideology models across multiple legislative sessions.

4 Likes

Update since March 12, full list here

Astronomy and Astrophysics

GaiaHub: Python/Fortran tool that computes proper motions combining data from Gaia and the Hubble Space Telescope, associated with paper GaiaHub: A Method for Combining Data from the Gaia and Hubble Space Telescopes to Derive Improved Proper Motions for Faint Stars, by del Pino, Andrés et al., The Astrophysical Journal, Volume 933, Issue 1, id.76, 18 pp. (2022)

halo: orbit solver that can be used to generate long-duration Earth-Moon halo orbits in the ephemeris model. Reference: J. Williams et al., Targeting Cislunar Near Rectilinear Halo Orbits for Human Space Exploration, 27th AAS/AIAA Space Flight Mechanics Meeting, 2017

Nbody6++GPU - Beijing version: N-body star cluster simulation code, by Rainer Spurzem and team. It is an offspring of Sverre Aarseth’s direct N-body codes.

stochastic-parker: solves the Parker’s transport equation (and its extensions) using the stochastic method. Associated paper: Modeling Electron Acceleration and Transport in the Early Impulsive Phase of the 2017 September 10th Solar Flare, by Xiaocan Li, Fan Guo, Bin Chen, and Chengcai Shen, and Lindsay Glesener, The Astrophysical Journal Jun 2022

Biology and Medicine

Parse: predicts protein regions that are disordered, and which subset of those can undergo phase separation. Associated paper: Paiz, E.A., Allen, J.H., Correia, J.J., Fitzkee, N.C., Hough, L.E., Whitten, S.T. Beta turn propensity and a model polymer scaling exponent identify intrinsically disordered phase-separating proteins J. Biol. Chem. 297, 101343 (2021).

QMCube (ren-qm3): suite written in Python, calling Fortran codes, initially focused on multiscale QM/MM simulations of biological systems, but open enough to address other kinds of problems. Associated paper: QMCube (QM3): An all-purpose suite for multiscale QM/MM calculations, by Sergio Martí, J. Comput. Chem. 2021, 42, 447-457

Climate and Weather

Hail Trajectory Clustering: groups three-dimensional hail trajectories into similar clusters. Associated with paper Adams-Selin, R., 2023: A three-dimensional trajectory clustering technique. Monthly Weather Review

Compiler Tests

Fortran Tests: set of tests for Modern Fortran, by Galen M. Shipman

Computational Chemistry

Dynemol: tools for studying Dynamics of Electrons in Molecules, by Luis G. C. Rego and albertotrj

hibridon: solves the close-coupled equations which occur in the quantum treatment of inelastic atomic and molecular collisions. Gas-phase scattering, photodissociation, collisions of atoms and/or molecules with flat surfaces, and bound states of weakly-bound complexes can be treated.

Kinetic PreProcessor (KPP): tool that assists the computer simulation of chemical kinetic systems, by Adrian Sandu et al. Also KPP-AR-boxmodel, a box-model for a KPP-generated chemistry mechanism using the auto-reduce feature to speed up computation

multi-crystal indexing data processing suite in macromolecular crystallography (MCDPS): associated with paper Zhou, Q., Gao, Z.Q., Dong, Z., Jiang, Y.M., She,Z., Geng, Z.& Dong, Y.H.(2021). A reference-based multi-lattice indexing method integrating prior information correction and iterative refinement in protein crystallography. Acta Cryst. A77

pydock3: Python package wrapping the DOCK Fortran program that provides tools to help standardize and automate the computational methods employed in molecular docking. Docking is the identification of the low-energy binding modes of a small molecule, or ligand, within the active site of a macromolecule, or receptor, whose structure is known.

Surface Assessment via Grid Evaluation (SuAVE): accounts for the effect of curvature in the calculations of structural properties of chemical interfaces regardless of the chemical composition, asymmetry, and level of atom coarseness, by Denys E. S. Santos et al. It employs differential geometry techniques, enabling the representation of chemical surfaces as fully differentiable.

Containers and Generic Programming

array_range: provides user-defined types array_range{1|2|3}d_type to improve the manipulation of bounds of Fortran arrays, by Tomohiro Degawa

enumul: incomplete typed enumerator emulator for Fortran, by Tomohiro Degawa

Computational Fluid Dynamics

asimov-ccs: CFD and combustion code designed to scale to large numbers of cores. It follows a "separation of concerns’ design that separates interfaces from implementations, and physics from parallelisation.

CMPLXFOIL: version of Mark Drela’s XFOIL code for the design and analysis of subsonic isolated airfoils with the GUI features removed and gradient computation implemented with the complex-step method, from mdolab

Fortran Environment for Numerics (FEN): environment for performing numerical simulations, including a finite difference solver for the incompressible Navier-Stokes equations, fast direct solver for the solution of the Poisson equation, volume of Fluid solver (MTHINC) for multiphase simulations, direct forcing immersed boundary method for simulation of flow around solid objects, and computational parallelism by MPI, by Francesco De Vita

Inverse-gas-dynamic-tables-and-codes: programs and input data files for finding the Mach number through inverses of supersonic area ratio, subsonic area ratio, and Prandtl-Meyer angle, by anillals

nekStab: toolbox based on Krylov methods for highly parallel global linear stability analysis of incompressible flow problems for Nek5000, with theoretical framework described in Krylov Methods for Large-Scale Dynamical Systems: Application in Fluid Dynamics, by R. A. S. Frantz, J.-Ch. Loiseau, J.-Ch. Robinet, Appl. Mech. Rev. May 2023, 75(3).

Dates and Times

time-f: wraps time.h of the C standard library, by 0382

Earth Science

1D3CSEM: one-dimensional (1D) three-component (3C) spectral element modeling (SEM) of seismic wave propagation in nonlinear media with pore-pressure effects, by Elif Oral, extending a code by Elise Delavaud

A-New-BellHope: mirror of the original Fortran BELLHOP/BELLHOP3D underwater acoustics simulators, with numerical properties and robustness improved and bugs fixed. These changes were made in support of the multithreaded C++/CUDA version of BELLHOP/BELLHOP3D: bellhopcxx/bellhopcuda

Environmental Fluid Dynamics Code (EFDC+): multifunctional surface water modeling engine that includes hydrodynamic, sediment-contaminant, and eutrophication components designed to simulate aquatic systems in one, two, and three dimensions

exascale Subsurface Transport Over Multiple Phases (eSTOMP-WR): highly scalable (parallel), general-purpose tool for simulating subsurface flow and reactive transport in variably saturated geologic media, from Pacific Northwest National Laboratory (PNNL)

Genetic-Algorithm-for-Causeway-Modification: prototypes a genetic algorithm (GA) coupled to a numerical estuarine circulation model of Old Tampa Bay, FL (OTB), by Steven D. Meyers and Mark E. Luther. The GA is designed to generate modifications (cut-throughs) of causeways in OTB and rank them based on their impact on modeled hydrodynamic flushing.

GROWTH-23: integrated code for inversion of complete Bouguer gravity anomaly or temporal gravity changes, by Jose Fernandez

GROWTH_3.0: 3-D gravity inversion tool based on exploration of model possibilities. Associated paper: Camacho, A.G. and Fernandez, J. (2019). Modeling 3D free-geometry volumetric sources associated to geological and anthropogenic hazards from space and terrestrial geodetic data. Remote Sens., 11(17), 2042

gufm1-webservice: four centuries of geomagnetic secular variation from historical records. This Fortran-backed webservice by Martin Rehfeld provides an interface to the gufm1 model as published by Andrew Jackson, Art R. T. Jonkers and Matthew R. Walker.

HAZ: Probabilistic Seismic Hazard Analysis, by Norm Abrahamson

HYbrid Coordinate Ocean Model (HYCOM): data-assimilative hybrid isopycnal-sigma-pressure (generalized) coordinate ocean model, with objectives of three-dimensional depiction of the ocean state at fine resolution in real time, provision of boundary conditions for coastal and regional models, and provision of oceanic boundary conditions for a global coupled ocean-atmosphere prediction model

psi3d: semi-implicit 3D hydrodynamic model parallelized for computation across CPU threads using OpenMP, by Sergio Valbuena et al. Technical details regarding governing equations and numerical schemes are in the paper A Semi-Implicit, Three-Dimensional Model for Estuarine Circulation by Peter E. Smith.

Surface Wave Multipathing (swmp): surface wave multipathing ray tracing code, associated with paper Hauser, J., Sambridge, M. and Rawlinson, N. (2008). Multiarrival wavefront tracking and its applications. Geochem. Geophys. Geosyst., 9(11), Q11001

VolumeLibrary: National Volume Estimator Library (NVEL) is a collection of the standing tree volume estimators used by the U.S. Forest Service

Error Handling

errstat: error status and message handling library for Modern Fortran, by Tomohiro Degawa. Also fassert, a simple assertion library

Fast Fourier Transform

kissfft-f: wrapper by zozhia for KISS FFT, a mixed-radix Fast Fourier Transform in C

File I/O

Fortran-OpenPMD-File-Writers: writes in parallel 2D/3D mesh field data and particle data into HDF5 files using the OpenPMD standard, by Frank S. Tsung et al.

toml-f: TOML parser implementation for data serialization and deserialization in Fortran. jonquil provides a compatibility layer to enable TOML Fortran using libraries to consume JSON as well as allow JSON consuming libraries to try out TOML.

Finite Elements

MultiFEBE: associated with paper MultiFEBE: A multi-domain finite element–boundary element solver for linear mixed-dimensional mechanical problems, by D.R. Bordón, G.M. Ãlamo, L.A. Padrón, J.J. Aznárez, O. Maeso, SoftwareX 20, 101265, 2022

Fortran Books and Tutorials

Fortran-MOOC: reading material, source code, and software stack for the PRACE MOOC on Fortran for scientific programming, by Geert Jan Bex et al.

fortran_oop_as_a_second_language: Software-Carpentry-style workshop teaching object-oriented features of Fortran, from acenet-arc. Also Ftn-sample-code, example code for a Fortran workshop

Games

TREK7: Star Trek simulation game written by Donald M. Ecclestone in the early 70ties for the PDP-10. The game was ported to VAX computers running VMS in 1978 by the author with the help of Dan Gahlinger.

General Purpose

fortran_utilities: procedures to add colour to output via ANSI colour codes, create a progress bar, turn variables into strings, and print the time, by Lewis McMillan

Futilities: unsorted Fortran utility modules: codes for multidimensional spline interpolation and integration, successive over-relaxation solution of partial differential equations, a First In First Out memory buffer, a basic Message Passing Interface (MPI) queue scheduler, shuffle array indices, flatten a multidimensional array into 1D and revert the operation, and other topics, by Chris Ringeval

Interoperability

dopey: library for passing Fortran dope vectors to C++, from Los Alamos National Laboratory

examples: examples of Fortran and C++ interaction, by Pat Nichols

fortran-in-python: examples of how to build and call Fortran modules in Python using ctypes and f2py, by HugoMVale

popen-fortran: module for popen() by Jacob Williams, which executes a command specified by a string argument, creates a pipe between the calling program and the executed command, and returns a pointer to a stream that can be used to either read from or write to the pipe.

sysexits-f18: Fortran 2018 version of the sysexits.h codes, by Kevin Matthes

Linear Algebra

linalg_fortran: interface to Lapack procedures that invert matrices, compute determinants, compute eigenvalues and eigenvectors of symmetric or Hermitian matrices, and compute UAU.T, by Euler-37

M_LA: small collection of linear algebra routines, including reshaping an array, creating a magic square array, and computing the determinant and inverse of a matrix, by urbanjost

Materials Science

MulSKIPS: Kinetic Monte Carlo super-Lattice code designed to simulate with atomic resolution the kinetics of processes (e.g., PVD, CVD, laser annealing) involving elements, alloys and compounds characterized by the sp3 bond symmetry. An associated paper is G. Calogero et al., Multiscale modeling of ultrafast melting phenomena, npj Computational Materials 8, 36 (2022)

Mesh Generation

overkit-fortran: overset grid assembly and remapping toolkit, by Matt Smith. Overset meshes are a method for representing complex geometry in computational fluid dynamics and other types of PDE-based simulations. There is a parallel C++ version.

Molecular Dynamics

Playmol: software for building molecular models, by ‪Charlles Abreu‬ et al. Molecules are created with simple scripts consisting of a small set of commands, molecular topology arises naturally when atoms are connected (automatic detection of angles and dihedrals), integration with Packmol provides a way of creating complex molecular systems, and generation of LAMMPS and OpenMM files provides a way of performing efficient MD simulations.

Neural Networks and Machine Learning

fastGPT: fast GPT-2 inference, by Ondřej Čertík, described in a post FastGPT: Faster than PyTorch in 300 Lines of Fortran

Inference-Engine: software library by Damian Rouson et al. for researching ways to efficiently propagate inputs through deep, feed-forward neural networks exported from Python by the companion package nexport

Numerical

OEIS-Search-GCD-reduced: extended search in the On-Line Encyclopedia of Integer Sequences (OEIS) with GCD reduction and data variants, by Hugo Pfoertner

s2hat: C and Fortran for spherical harmonics operations, by B3Dcmb

Optimization

lbfgsb: limited memory code for solving bound constrained optimization problems, by Jorge Nocedal and Jose Luis Morales

mknapsack: algorithms for solving knapsack problems with Python, calling Fortran code from the book Knapsack problems: algorithms and computer implementations (1990), by Silvano Martello and Paolo Toth

Parallel Programming

ExaTENSOR: basic numerical tensor algebra library for distributed HPC systems equipped with multicore CPU and NVIDIA (or AMD) GPU, by Dmitry I. Lyakh. The hierarchical task-based parallel runtime of ExaTENSOR is based on the virtual tensor algebra processor architecture, i.e. a software processor specialized to numerical tensor algebra workloads on heterogeneous HPC systems (multicore/KNL, NVIDIA or AMD GPU).

nbody-ifx-do-concurrent: N-body Fortran code port to test ifx (Intel Fortran) GPU offload of do concurrent, by Saroj Adhikari

PM-Programming-Language: The PM Programming Language, implemented in Fortran 95 by Tim Bellerby, is designed to facilitate the creation of numerical models on parallel systems. It combines concepts of parallelisation and vectorisation into a unified model.

ur-parallel-programming: notes and cheatsheets on the course Parallel Programming in Fortran at the University of Regensburg, covering Fortran in general, MPI, and OpenMP, by Jonas Süskind

Partial Differential Equations

spherepack: computes common spherical differential operators including divergence, vorticity, latitudinal derivatives, gradients, the Laplacian of both scalar and vector functions, and the inverses of these operators, by Jon Lo Kim Lin. For example, given divergence and vorticity, the package can be used to compute velocity components, then the Laplacian inverse can be used to solve the scalar and vector Poisson equations.

Surfaces: Code for discretizing certain singular integral operators given on surfaces, including single and double layer potentials, associated with paper A Nyström method for weakly singular integral operators on surfaces, by James Bremer and Zydrunas Gimbutas, Journal of Computational Physics Volume 231, Issue 14, 20 May 2012, Pages 4885-4903

Plasma Physics

gkvp: Vlasov simulation code based on delta-f gyrokinetic equations in a local flux-tube geometry. The code has been developed for analyzing plasma turbulence in magnetized plasmas, such as magnetic fusion and magnetosphere.

New Hampshire Dispersion relation Solver (NHDS): solves the linear hot-plasma dispersion relation based on the Vlasov-Maxwell set of equations, by Daniel Verscharen

Physics

BDpack: GPU-enabled Brownian dynamics package for simulation of polymeric solutions, by Amir Saadat. An associated paper is Computationally efficient algorithms for incorporation of hydrodynamic and excluded volume interactions in Brownian dynamics simulations: A comparative study of the Krylov subspace and Chebyshev based techniques, A. Saadat and B. Khomami, J. Chem. Phys., 140, 184903 (2014).

Driver-Database: collection of programs that solve problems using libraries from QcmPlab, including Dmft_ED for Exact Diagonalization based DMFT method, SlaveSpins for the Slave Spins method, and Lattice_ED for programs implementing lattice Exact Diagonalization

EDRIXS: simulates RIXS spectra based on exact diagonalization (ED) for strongly correlated materials. Associated paper: EDRIXS: An open source toolkit for simulating spectra of resonant inelastic x-ray scattering, Y.L. Wang, G. Fabbris, M.P.M. Dean and G. Kotliar, Computer Physics Communications, 243, 151 (2019),

fortran_udunits2: interface by mfvalin to the libudunits2 C library from Unidata that provides for arithmetic manipulation of units and for conversion of numeric values between compatible units

inverse-obstacle-scattering2d: solves inverse obstacle scattering problems to recover the shape of the obstacle for sound soft, sound hard, and penetrable objects, by Manas Rachh and Travis Askham

Numerical Reactive Gas-dynamics (NRG): by Ivan Yakovenko

PArticles and RAdiation MOnitor (Paramo): solves the Fokker-Planck equation and calculates synchrotron and inverse Compton emission, by Jesus M Rueda-Becerril

Quantum Chemistry and Electronic Structure

General Quantum Chemistry Properties Grabber (gpg): obtains a wide range of properties, including molecular geometries, electronic energies, dipole moments, vibrational frequencies, from the output files of popular quantum chemistry software packages, including ORCA, Qchem and Turbomole, by Lukas Wittmann

HFSzaboOstlund: Hartree-Fock program as shown by Szabo and Ostlund in their book Modern Quantum Chemistry

superdyson: property evaluation for general configuration interaction (CI) expansions, from MBI-Theory. All the quantum chemistry data are taken from GAMESS-US.

Random Number Generation

approx_stdnormal: fast generation of an array of standard normal variates using a (modified) Box-Muller transform, by SomajitDey

Statistics

quantregpy: code for quantile regression by Roger Koenker with a Python interface

Strings

M_overload: overloads of standard operators and intrinsic procedures, including // to concatenate any two intrinsic types into a string, a format operator to convert a variable to a string, int and real for string and logical arguments, merge for strings of different lengths, == and /= for logical variables, by urbanjost

Time Series

spectrum: library containing signal analysis routines with a focus towards spectral routines, by Jason Christopherson

Unit Testing

par-funnel: unit test parameterizer using namelist, by Tomohiro Degawa. Par-funnel is not a unit test framework but is intended to be used with other unit test frameworks.

6 Likes

Update since April 16, full list here

Astronomy and Astrophysics

Adaptive Spherical Overdensity Halo Finder (ASOHF): primarily designed to identify bound dark matter structures (dark matter haloes), as well as their stellar counterparts (galaxies) in the outputs of cosmological simulations. Associated paper: The halo-finding problem revisited: a deep revision of the ASOHF code, by David Vallés-Pérez, Susana Planelles, and Vicent Quilis, Astronomy&Astrophysics, 664 (2022).

pycalc11: Python interface by Adam Lanman for running the CALC delay modeling tool, written in Fortran, by providing parameters as astropy objects. CALC aims to compute VLBI baseline delays to picosecond precision by incorporating general relativistic deflection from the Sun, Earth, and other planets, solid Earth and ocean tide loading, and atmospheric contributions

cleanest: semiautomatic removal of cosmic rays in astronomical images, by Nicolás Cardiel and Sergio Pascual

DarkLim: statistical tools for calculating dark matter exclusion limits and sensitivity estimates, from SPICE/HeRALD

GR1D: general relativistic, spherically symmetry, neutrino transport code for stellar collapse. Associated paper: An Open-Source Neutrino Radiation Hydrodynamics Code for Core-Collapse Supernovae, by Evan O’Connor, Astrophysical Journal Supplement Series, Volume 219, Number 2 (2015)

madwave3: wave packet propagation program for reactive collisions and photodissociation of triatomic systems, by Octavio Roncero

Mini-chem: kinetic chemistry network solver primarily for gas giant atmospheric modelling, pared down from the large chemical networks, associated with paper A mini-chemical scheme with net reactions for 3D general circulation models II. 3D thermochemical modelling of WASP-39b and HD 189733b, by Elspeth K. H. Lee, Shang-Min Tsai, Mark Hammond, and Xianyu Tan, Volume 672 (2023) Astronomy&Astrophysics, 672 (2023) A110

swiftest: n-body Integrator for gravitational systems, by Carlisle Wishard et al. It contains the Wisdom-Holman Mapping (WHM), Regularized Mixed Variable Symplectic (RMVS), Democratic Heliocentric (HELIO), and Symplectic Massive Body Algorithm (SyMBA) numerical integrators.

Benchmarks

fortran-math-tests: test programs for Fortran math libraries, by L. Fu

fortran-speed: compares speed of looping over individual arrays of variables with multiple dimensions to looping over arrays of derived types, where e.g., the last dimension is contained within the derived type, by Alex Robinson

matmul: matrix multiplication benchmark by Ondřej Čertík

miniApps-for-hpc: set of small codes representative of larger application programs run on supercomputers, by Vivek Kale. The reason that these codes were developed was to experiment with performance optimizations done on larger application programs.

Biology and Medicine

CAMI-Gz-Effects-Model-CGEM-: resource flow-based model of symptom induction and recovery from Gz accelerations in aeronauts. Associated report: Cerebral Blood Flow Based Computer
Modeling of Gz-Induced Effects
, by Kyle Copeland and James E. Whinnery, Civil Aerospace Medical Institute (CAMI) (2023)

ParizPLOS2021: code associated with paper Pariz A, Fischer I, Valizadeh A, Mirasso C (2021) Transmission delays and frequency detuning can regulate information flow between brain regions. PLoS Comput Biol 17(4)

qptabsearch: tableau-based protein substructure search using quadratic programming. Associated paper: Stivala, A., Wirth, A. and Stuckey, P., Tableau-based protein substructure search using quadratic programming, BMC Bioinformatics 2009, 10:153

songbird-evo-model-FORTRAN: models evolution in a genetically simple population of songbirds, by Kaw-Han

Climate and Weather

Climate Modelling and Diagnostics Toolkit (climt): Python based library which provides a modular and intuitive approach to writing numerical models of the climate system. climt provides state-of-the art components and an easy-to-use interface to allow writing research quality models without modifying the underlying Fortran code.

Cloud-J: multi-scattering eight-stream radiative transfer model for solar radiation based on Fast-J, originally developed by Michael J. Prather (UCI)

dinsol-v1.0-linux: simulates the incoming solar radiation at the top of the atmosphere following the Milankovitch cycles theory, by Emerson Damasceno Oliveira. The tool is ideal for preparing the boundary conditions of climate models, beyond being a helpful tool for educational purposes.

Model of an idealized Moist Atmosphere (MiMA): intermediate-complexity General Circulation Model with interactive water vapor and full radiation. It is published in M Jucker and EP Gerber, 2017: Untangling the annual cycle of the tropical tropopause layer with an idealized moist model, Journal of Climate 30, 7339-7358.

tcane_fortran: evaluate pre-trained artificial neural networks to estimate consensus hurricane intensity and track errors, as well as the associated uncertainties of the network predictions. Associated paper: Barnes, Elizabeth A., Randal J. Barnes and Nicolas Gordillo, 2021: Adding Uncertainty to Neural Network Regression Tasks in the Geosciences

Code Tools

m_ad: collection of matrix derivative tests for forward and reverse mode algorithmic differentiation, by R. Quast. Associated paper: Giles, M. (2008) Collected matrix derivative results for forward and reverse mode algorithmic differentiation, Advances in Automatic Differentiation pp 35-44

Compiler Tests

fortran-wringer-tests: collection of non-portable Fortran usage, standard-conformant or otherwise, by Peter Klausler, accumulated during the development of the f18 Fortran compiler (also known as “LLVM Flang”)

Computational Chemistry

molecular-tools: modules that undertake a number of basic molecular modelling / computational chemistry analysis and manipulations, such as structure file reading and writing (including pdb, gro, g96, xyz), and parsing output files from programs as Gaussian (fchk and log) and Molpro retrieving informations such as geometry, frequencies, normal modes, Hessian, Gradient, molecular orbital coefficients, etc., by Javier Cerezo

SPECIAL_BLEND: Supernova Parameter Estimation Code based on Insight on Analytic Late-time Burst Light-curve at Earth Neutrino Detector, by Akira Harada

Containers and Generic Programming

any: user-defined type for mimicking procedures that can return different types, by Tomohiro Degawa

flinkedlist: object-oriented library providing an simple linked list, with the ability to sort elements with a user-defined function, apply a user-defined function in each node, and a convenience method to aid print debugging by automatically displaying variables of built-in types and providing a dedicated display function for user-defined types, by Yuichiro Sakamoto

maps: wrapper by Tomohiro Degawa for stdlib_hashmaps that simplifies adding a key-value mapping and getting the value mapped to a key

repot: abstract data types designed for the repository pattern for reading configuration files in Fortran, by Tomohiro Degawa. The repository pattern is a design pattern that makes an object persistent in a repository and reconstructs it from the repository. Repot_examples has practical usage examples.

Computational Fluid Dynamics

Exact_Riemann_Solver: code associated with The exact solution of the Riemann problem in relativistic magnetohydrodynamics, by B. Giacomazzo and L. Rezzolla, Journal of Fluid Mechanics 562, 223 (2006)

fvortex: implements vortex method, with applications to Elliptic Lamb–Oseen vortex and Melander, McWilliams, and Zabusky vortex, by Sergey Litvinov

LPPM: Lagrangian Particle-Panel Method for solving the barotropic vorticity equation and the advection equation on the sphere and in the plane. Associated paper: P. Bosler, L. Wang, R. Krasny, and C. Jablonowski, 2014, A Lagrangian particle/panel method for the barotropic vorticity equation on a rotating sphere, Fluid Dynamics Research, 46 : 031406.

Nek_me: Nek5000 user-defined code and examples, by yhaomin2007

Earth Science

AmplitudeSourceLocation: package containing the Amplitude Source Location method using depth-dependent 1-D velocity structure and 3-D attenuation structure, relative source location method using seismic amplitudes, and relative source location method using arrival times of seismic waves. Associated paper: Ogiso, M. and K. Yomogida (2021), Estimation of Relative source locations from seismic amplitude: application to earthquakes and tremors at Meakandake volcano, eastern Hokkaido, Japan, Earth, Planets and Space, 73:29

beamforming: seismo-acoustic array processing routines, by Jelle Assink. An associated paper is Fast Frequencyâ€Wavenumber Analysis and Fisher Signal Detection in Realâ€Time Infrasonic Array Data Processing (1971), by Smart, E. and Flinn, E. A., Geophysical Journal of the Royal Astronomical Society, 26: 279-284.

caneill-et-al-JPO-nemo-transition-zone: code associated with paper Caneill, R., Roquet, F., Madec, G., and Nycander, J. (2022). The polar transition from alpha to beta regions set by a surface buoyancy flux inversion., Journal of Physical Oceanography.

ClusterIn: add-on for aerosol microphysics models for explicitly simulating the dynamics of particle formation from vapors. Associated paper: Role of gas–molecular cluster–aerosol dynamics in atmospheric new-particle formation, by Tinja Olenius & Pontus Roldin, Scientific Reports volume 12, Article number: 10135 (2022).

CoastalApp: modeling framework for coastal applications and regional forecasts, from NOAA’s Office of Coast Survey. It consists of coupled modeling components that link the atmospheric, ocean and terrestrial realms under one common framework.

Eulerian Level set Model of FIRE Spread (ELMFIRE): operational wildland fire spread model, by Chris Lautenberger et al. Some of its common applications include forecasting spread of fires in real time, reconstructing spread of historical fires, quantifying landscape-scale potential fire behavior potential, and estimating annual burn probability and fire severity

Fast Shallow Landslide Assessment Model (fslam): applies the infinite slope theory at regional scale to identify potentially unstable areas, by Marcel Hürlimann and Vicente Medina, part of the SMuCPhy (Slope mass-wasting under climate change) project

fwin: module for reading seismic waveform data in WIN and WIN32 formats, by Takuto Maeda

GR4-StateSpace: state-space version of a lumped rainfall-runoff model. Associated paper: Santos, L., Thirel, G., and Perrin, C., (2018), Continuous state-space representation of a bucket-type rainfall-runoff model: a case study with the GR4 model using state-space GR4 (version 1.0), Geosci. Model Dev., 11, 1591-1605

ioapi-3.2: provides Fortran and C APIs for environmental model data access together with related utility routines and tools for analysis and manipulation of data stored by way of that API, by cjcoats

MAIZSIM: mechanistic model of maize growth, development and yield, written in C++ (crop) and Fortran (soil). The model is interfaced with 2DSOIL, a two dimensional simulator of soil water and heat movement, and solute transport.

Marine Biogeochemistry Library (MARBL): software package to be used by ocean general circulation models

MN Earth System Model for Ocean Biogeochemistry (MESMO): Associated paper: Matsumoto, K., Tokos, K. S., Price, A. R., & Cox, S. J. (2008). First description of the Minnesota Earth System Model for Ocean biogeochemistry (MESMO 1.0). Geoscientific Model Development, 1(1), 1–15.

pizza: high-performance numerical code for quasi-geostrophic and non-rotating convection in a 2-D annulus geometry, by Thomas Gastine et al. pizza solves for the Navier-Stokes equation including Coriolis force coupled with a temperature equation and/or an equation for the chemical composition under the Boussinesq approximation.

rotunno83: Python and Fortran scripts by Ewan Short for solving the differential equations in Rotunno’s 1983 paper On the Linear Theory of the Land and Sea Breeze

sbetr: standalone reactive transport libary designed to be integrated into land surface models such as CLM and ALM. Associated paper: Tang, J., Riley, W. J., and Zhu, Q.: Supporting hierarchical soil biogeochemical modeling: version 2 of the Biogeochemical Transport and Reaction model (BeTR-v2), Geosci. Model Dev., 15, 1619–1632

Theriak-Domino: calculate and plot thermodynamic functions, equilibrium assemblages and rock-specific equilibrium assemblage diagrams, by Christian de Capitani

Engineering

Long-Time-Dynamics: studies cascade overlap and defect annealing on damage and time scales up to 1 dpa and a few seconds, respectively, by Angel Chavira. Irradiation cascades are modeled by two methods: random frenkel pair insertion analogous to electron irradiation and actual ion damage events whose dynamics are driven by traditional MD simulation.

Expression Parsers

hp: rpn calclulator with a maximum stack size of 5, by sgeard. It has full support for real and complex numbers and will calculate summary statistics for a set of reals of real pairs.

File I/O

H5_Assist: HDF5 interface libraries for Fortran, Java, and C#, by EcohydrologyTeam

High Performance Parallel Data Interface to HDF5 (h5part): interface to the structured HDF5 data format that stores multiple time-step data for particle simulation scenarios and can be used for ParaView / VisIt visualization, by zoziha

io_utilities: modules to help with input and output, by Arjen Markus: cmdparse parser for minimalistic commands (keyword and zero or more arguments), keyvars read in INI-files and fill in the values of the variables automatically, can also save the data in an INI-file, progressbar presents a progress bar on the screen (supports different styles)

modernfortran-libs: module that simulates the GNU Octave dlmread and dlmwrite functions to read and write text files, and a generic doubly linked list module, by Yuichiro Sakamoto

Finite Elements

calliope: project by N. N. Carlson to create general 1D, 2D, and 3D GWMFE reference codes, implemented in modern object-oriented Fortran, that will replace the original archaic Fortran 77 codes in legacy-gwmfe, associated with paper N. N. Carlson and K. Miller, Design and Application of a Gradient-Weighted Moving Finite Element Code II: in Two Dimensions, SIAM J. Sci. Comput., 19(3), 766-798 (1998)

Fortran Books and Tutorials

FORTRAN_INTRO: intro exercises for the multi-scale modelling summerschool 2023 in Lahti, by Morten Engsvang

fortran-tuto: code of the Fortran video tutorial by Derek Banas

Modern-Fortran: materials for a 4-day workshop covering Fortran and models of scientific parallel programming: OpenMP, OpenACC, CUDA Fortran and MPI, from WVU Research Computing

old-programming-idioms: explains old-style programming idioms used in FORTRAN 77 programs, such as array(*) versus array(:), array(10) as a starting point, COMMON blocks and BLOCK DATA, named and blank COMMON, the history of computers, equivalence, constants as actual arguments, intent, temporary arrays - non-contiguous arrays, implicit types, double precision versus kind, and other topics, by Arjen Markus

General Purpose

fortran-sigwatch: library of routines to provide simple signal watching for Fortran programs, originally by Norman Gray, modified by Michael Hirsch. This allows a minimal level of control of a running program from outside it, for example to tell it to checkpoint itself on receipt of a signal.

fortran_utilities: procedures to add colour to output via ANSI colour codes, create a progress bar, turn variables into strings, and print the time, by Lewis McMillan

Graphics, Plotting, and User Interfaces

fortran-grace: collection of Fortran 2018 interfaces to the scientific plotting tool Grace/XmGrace, by interkosmos. This library covers the FORTRAN 77 and the C API of Grace. This library covers the FORTRAN 77 and the C API of Grace.

ftk: provides a straightforward means to build graphical user-interfaces in Fortran based on Tcl/Tk, by Arjen Markus. In its current state it is proof of concept, not a full-fledged library.

M_fixedform: simplifies creating a TUI (Terminal User Interface) with Ncurses from Fortran, by urbanjost. It facilitates creating simple forms in terminal windows.

plplot-windows-bin: provides a binary distribution for PLplot on Windows, even if only ad hoc and limited to Fortran, by Arjen Markus. There are examples of calling PLplot from Fortran.

Interoperability

arrow-fortran: automatic bindings by Ludovico Nicotina and Vincent Magnin to the C API for the arrow project. Arrow is a language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware like CPUs and GPUs.

cuda_demo: minimal working example (MWE) demonstrating how to use CUDA with Fortran using the ISO_C_BINDING module, using gfortran and g++, by Ramón L. Panadés-Barrueta

Linking-f90-C-C-and-CUDA: Initial steps for calling C, C++ and CUDA from Fortran using the iso_c_binding, by Felipe_SC

Interpolation

interpolation2d3d: interpolation in two and three dimensions, by Arjen Markus. The packages srfpak, sphpak, qshep2d and qpshep3d implement an object-oriented interface to the interpolation packages by Robert Renka.

Linear Algebra

FLAPWxHZ: Hari-Zimmermann complex generalized hyperbolic SVD and EVD. Associated paper: The LAPW Method with Eigendecomposition Based on the Hari–Zimmermann Generalized Hyperbolic SVD, by Sanja Singer, Edoardo Di Napoli, Vedran NovakovicÌ, and Gayatri ČaklovicÌ, SIAM Journal on Scientific Computing, Vol. 42, Iss. 5 (2020)

linear_system_solvers: wrappers by M-Badri for libraries solving systems of linear equations, including Lis: Library of Iterative Solvers for Linear Systems

MClib: library for matrix computations, including the LU decomposition of general and banded matrices, and matrix multiplication for banded or triangular matrices, and reading and writing matrices, by Ilya Tretyak

pfapack-sys-rs: Rust bindings by Dimitri Bonanni-Surprenant to the Fortran library pfapack, a library by Michael Wimmer for numerically computing the Pfaffian of a real or complex skew-symmetric matrix

Molecular Dynamics

AUTOSURF-v1.3: suite of codes for the automated construction of potential energy surfaces (PES) for van der Waals systems. The fitting algorithms implemented in the code are based on the L-IMLS methodology, and have many advanced features such as options for data-point placement, flexibility to include gradients in the fit, iterative refinement, and symmetry recognition.

DeePMD-kit-Fortran-Cpp-interface: Fortran interface by Yongbin Zhuang and Futaki Haduki to DeePMD-kit, a package written in Python and C++, designed to minimize the effort required to build deep learning-based model of interatomic potential energy and force field and to perform molecular dynamics (MD).

Neural Networks and Machine Learning

forncnn: experimental Fortran binding for ncnn c_api, by mizu-bai. Ncnn is a high-performance neural network inference framework optimized for the mobile platform.

KohonenF03: library for Self-Organizing Maps, by Oscar Garcia-Cabrejo. Self-Organizing Maps or Kohonen Maps are powerful computational tools to cluster multivariate data using a topology preservation approach

Numerical

fortran-numerical-methods: implements methods for solving ordinary differential equations, numerical interpolation, finding roots of equations, and other topics, by Carlos Raúl

mpfun90: software by David H. Bailey that permits a new or existing Fortran 90 program to utilize multiple-precision arithmetic, or in other words a level of numeric precision that ranges from 50 digits to hundreds or thousands of digits if required. A more recent version is MPFUN2020.

Numeric Library for Modern Fortran: scope: Integer (handling integer constants, digits, convert to string with format); Real (handling real constants, convert to string with format); Non-number (handling quiet nan and positive/negative inf as constants, check whether an array of floating-point numbers has at least one quiet nan, positive/negative inf value), by Tomohiro Degawa

Numerical_Methods: numerical methods with specific applications to classical, statistical and quantum physics, including root-finding, minimization and integration, diagonalizing NxN matrices, methods for ordinary, stochastic and partial differential equations, Monte Carlo simulations and pseudo-random number generators, and path integral and quantum systems simulations, by Dario Maglio

Numerical Integration (Quadrature)

Legendre-Gauss-Lobatto-Quadrature: module that calculates the Legendre-Gauss-Lobatto Quadrature as well as a useful set of functions for the Jacobi polynomials, by SpirosZafeiris

Ordinary Differential Equations

diffeq: library providing an object-oriented approach to solving ordinary differential equations, by Jason Christopherson. Available ODE solvers are 4th Order Runge-Kutta and Adams-Bashforth-Moulton (fixed step) and Dormand-Prince Runge-Kutta 5th/4th Order and Bogacki-Shampine Runge-Kutta 3rd/2nd Order (variable step).

twopnt: modern Fortran translation by Federico Perini of the TWOPNT program for boundary value problems

Optimization

libdlfind: C-API and Python interface to the DL-FIND geometry optimization library. It is mainly intended for use in high-level libraries as an optimization backend.

PyDQED: Python wrapper for the DQED Fortran code that solves bounded and constrained least squares and nonlinear equations, by Richard Hanson and Fred Krogh, updated to Fortran 90 by John Burkardt

vc-sqnm: implements the vc-sqnm and stabilized quasi Newton method (SQNM) optimization algorithms in C++, Fortran and Python. The SQNM is a fast and reliable optimization method that is well adapted to find local minima on the potential energy surface. Associated preprint: Efficient variable cell shape geometry optimization, by Moritz Gubler, Marco Krummenacher, Hannes Huber, and Stefan Goedecker.

Partial Differential Equations

cedar: robust, variational multigrid library implementing Black Box Multigrid (BoxMG) on large scale parallel systems, by David Moulton, Luke N. Olson and Andrew Reisner

lpm-v2: Lagrangian Particle Methods for PDEs. Associated paper: P. Bosler, J. Kent, R. Krasny, and C. Jablonowski. A Lagrangian particle method with remeshing for tracer transport on the sphere, Journal of Computational Physics, Volume 340, (2017), Pages 639-654

Particle Physics

DDCalc: set of routines and a frontend for doing various dark matter direct detection calculations for several experimental results, from GambitBSM. Most notably, these include Poisson likelihoods (binned and unbinned) and p-values based on the maximum gap method (Yellin 2002).

4 Likes

Continuation of previous post, due to character limit.

Physics

chunkmatc: high order layer potential evaluation library in R^2, solving the Laplace and Helmholtz equations, by Zydrunas Gimbutas

CRYSTAL: code for crystal diffraction in X-ray Oriented Programs (XOP) (perfect, bent, mosaic crystals in Bragg and Laue geometries), associated with paper Simulation of X-ray diffraction profiles for bent anisotropic crystals, by M. Sanchez del Rio, N. Perez-Bocanegra, X. Shi, V. Honkimäki and L. Zhang, Journal of Applied Crystallography (2015). 48, 477-491

libnegf: calculates Equilibrium and Non Equilibrium Green’s Function in open systems and related quantities, within an efficient sparse iterative scheme. Associated paper: Non-equilibrium Green’s functions in density functional tight binding: method and applications, by A Pecchia, G Penazzi, L Salvucci and A Di Carlo, 2008 New J. Phys. 10 065022

Los Alamos Crystal Cut (LCC): simple crystal builder, an easy-to-use and easy-to-develop code to make crystal solid/shape and slabs from a crystal lattice, by Christian Negre

Maxwell Construction Solver: finds the saturation pressure, vapor and liquid density at a saturation temperature (Tsat) for Van der Waals (VW), Peng-Robinson (PR), Redlich-Kwong (RK), Soave-Redlich-Kwong (SRK), Carnahan-Starling (CS). Associated paper: Multipseudopotential interaction: A consistent study of cubic equations of state in lattice Boltzmann models, by S. Khajepor and B. Chen, Physical Review E 93 (1), 013303 (2016)

MolForge: suite of codes using MPI for the simulation of quantum spin dynamics at the atomistic level, by Alessandro Lunghi. The codes iare developed to readily interface with electronic structure codes and make it possible to predict spin decoherence and spin-phonon relaxation fully ab initio.

shadow3: ray tracing code for modeling optical systems, targeted to synchrotron radiation beamlines, with unique features for designing X-ray optical systems. Associated paper: M. Sanchez del Rio, N. Canestrari, F. Jiang and F. Cerrina SHADOW3: a new version of the synchrotron X-ray optics modelling package, Journal of Synchrotron Radiation Volume 18, Part 5 (2011)

TemkinPoetParallel: solves the scattering problem (electron-Hydrogen atom) in the Temkin-Poet model using MPI, by Ana Laura Frapiccini

TimeDependentSchrodingerHydrogen: solves the Time Dependent Schrodinger equation for hydrogen encapsulated in fullerene interacting with a laser field, by Ana Laura Frapiccini

Quantum Chemistry and Electronic Structure

Cornell-Holland Ab-initio Materials Package (CHAMP): quantum Monte Carlo suite of programs for electronic structure calculations on a variety of systems (atoms, molecules, clusters, solids and nanostructures) principally by Cyrus Umrigar, Claudia Filippi, Julien Toulouse et al.

DAMQT: cross platform GUI-enabled package for fast and efficient analysis of molecular electron density, electrostatic potential, molecular orbitals and much more, by Jaime Fernández Rico et al.

Random Number Generation

pointsets: modules to construct points in N-dimensional space, such as methods to visit grid points in N-dimensional space, generate points in N-dimensional space based on Latin hypercube samping, generate regularly spaced and pseudo-random points in N-dimensional space, generate quasi-random points in Euclidean N-dimensional space, unit circle, disk, sphere or ball, and return an array of integers in a random order, by Arjen Markus

rngff: unified abstract interface for an object-oriented random number generator and a collection of implementations using various algorithms, by Brad Richardson

sobseq: generates points in Sobol series, in a continuous or strided (2^n) manner, by Daan van Vugt and Koen Beljaars. The Sobol sequence is a low-discrepancy sequence that can be used for more efficient (Quasi-)Monte-Carlo integration.

Statistics

BayesRCO: complex trait prediction with Bayesian hierarchical models using genome-wide genetic variation grouped into potentially overlapping annotation categories based on prior biological information (e.g., functional annotations, candidate gene lists, known causal variants), by Fanny Mollandin and Andrea Rau.

Fitter_MC: general-purpose bootstrap Monte Carlo utility for fitting a model to a set of (x,y,err_y) data and obtaining both fitted parameter values with error bars and properties expressed in terms of those parameters with error bars, by Neil Drummond

Grid Projected Kernel Density Estimation (gpkde): performs Grid Projected Kernel Density Estimation (GPKDE) of a discrete dataset in one, two or three dimensional domains and is parallelized with the OpenMP library, from upc-ghs. It works as a standalone program by reading an input simulation file, which configures the loading of a source file with data points and additional parameters for defining the reconstruction grid and the optimization for bandwidth selection.

nested_fit: analysis based on the Bayesian statistics for the computation of, for a given set of data and chosen model, the complete probability distribution for each parameter and the Bayesian evidence. It is written in Fortran with some Python complementary routines for visualizing the output results and for doing automatic analyses of series of data. Associated paper: M. Trassinelli, The Nested_fit Data Analysis Program, Proceedings 33, 14 (2019)

wvdecomp: wavelet decomposition algorithm, by Alexey Vikhlinin. A write-up describes its use to restore images with Gaussian or Poisson noise.

Strings

Fortran-String-to-Real: converts strings to reals without using an internal read, by Carltoffel. Fortran-String-to-Num is a fork by jalvesz that aims for further improvements on the ASCII to numerical data conversion.

scanner: text scanner for parsing, by Andre Smit

Unit Testing

M_framework: aggregate of Fortran modules useful for creating terminal messages, comparing expected values to results, writing logfiles and playback journals and performing unit tests for Fortran, by urbanjost

Web Programming

http-client: HTTP client library, by Rajkumar Dongre and Milan Curcic

9 Likes

Update since June 15, full list here

Astronomy and Astrophysics

IMage COMbination (IMCOM): software associated with Optimal Linear Image Combination, by Barnaby Rowe, Barnaby, Christopher and Jason Rhodes, The Astrophysical Journal, Volume 741, Issue 1, (2011).

shark: code associated with Protostellar collapse simulations in spherical geometry with dust coagulation and fragmentation (2023), by Ugo Lebreuilly, Valentin Vallucci-Goy, Vincent Guillet, Maxime Lombart, and Pierre Marchand, Monthly Notices of the Royal Astronomical Society, Volume 518, Issue 3, Pages 3326-3343

Climate and Weather

prepbufr_decoder: decode prepBUFR files to CSVs and encode CSVs to prepBUFR files, by Shawn Murdzek. BUFR (Binary Universal Form for the Representation of meteorological data) is Table Driven Data Representation Forms approved by the World Meteorological Organization (WMO) for operational use since 1988.

Code Tools

ffixed2free: converts FORTRAN fixed-format source code (FORTRAN 77 style) to free-format source code (Fortran 90 style), by Pirmin Kaufmann and Martin Schraner. Ffixed2free does not require the fixed-format code to be restricted to the FORTRAN 77 standard.

progress-bar: simple progress bar module that is typically used to display the time integration process, by zoziha

Computational Chemistry

YA_EoS: thermodynamic equations of state library with both automatic and analytical derivation capabilities, by Federico E. Benelli

Containers and Generic Programming

Fortran_competitive_library: library for solving AtCoder problems, implementing a binary indexed tree, hash table, linked list, tuples, and merge and selection sort

Computational Fluid Dynamics

Broadcast: discretises the compressible Navier-Stokes equations and then extracts the linearised N-derivative operators through Algorithmic Differentiation (AD), providing a toolbox for laminar flow dynamics. Associated paper: BROADCAST: A high-order compressible CFD toolbox for stability and sensitivity using Algorithmic Differentiation, by Arthur Poulain et al., Computer Physics Communications, Volume 283, 2023, 108557.

Earth Science

Parameterization for Unified Microphysics Across Scales (PUMAS): code for most versions of the Morrison-Gettleman (MG) microphysics as well as the version which includes a unified ice closure and is now called PUMAS. Associated publication: Gettelman, A., H. Morrison, K. Thayer-Calder, and C. M. Zarzycki. 2019. The Impact of Rimed Ice Hydrometeors on Global and Regional Climate. Journal of Advances in Modeling Earth Systems.

SIBERIA: simulates the evolution of landscapes under the action of runoff and erosion over long times scales. An associated publication is Hancock, G.R.; Gibson, Abraham; Wells, T.; 2021. Hillslope erosion in a grassland environment: Calibration and evaluation of the SIBERIA landscape evolution model. Earth Surface Processes and Landforms, 46, 728-743

smash: Python library that provides a variety of user-friendly routines for hydrological modeling, including data preprocessing, high-dimensional optimization tools, sensitivity and signatures analysis, all interfaced with an efficient Fortran solver

Economics

econ-toolchain: general tools used for structural macroeconomic modeling, including codes for global optimization, I/O, Markov chains, finding roots, golden-section search, and unit testing, by Renato Zimmermann.

Engineering

Deformation Monitoring Package (DMPACK): package for sensor control and automated time series processing in geodesy and geotechnics, consisting of a library libdmpack and additional programs based on it which serve as a reference implementation of solutions to various problems in deformation monitoring, by Philipp Engel

File I/O

EasyNC: encapsulation for Fortran netcdf I/O with different data type, dimension, struct data, etc., by Roadelse

rsfio: RSF file input/output module, by Wansoo Ha, independent from Madagascar. It can be used to read and write integer and single precision real and complex data in up to 9 dimensions, with a separate header text file.

SUIO: library for input/output of SU files, by Wansoo Ha, independent from the Seismic Unix package

TinyTOML: small, single-file TOML parser, by Thomas Marks

Games

Rhythm-Game-Fortran: Rhythm Game using raylib.f90, by SomeUnusualGames

General Purpose

fortime: provides a timer object for measuring elapsed time, by gha3mi. It includes procedures for starting and stopping the timer, as well as calculating and printing the elapsed time in seconds.

Graphics, Plotting, and User Interfaces

forcurses: ncurses wrapper by Joshua Kinder. Ncurses is a programming library that provides an API (Application Programming Interface) for building text-based user interfaces in a terminal.

Interoperability

Fcpp: seamless interoperability between C++ containers and Fortran arrays, by Ivan Pribec. Two classes are provided, cdesc and cdesc_ptr, that act as adaptors between C++ and Fortran, helping to re-establish type and attribute safety when moving between languages.

interfacing_fortran_from_python: training course – interfacing Fortran and Python: using cffi, ctypes and Cython, by Oscar Mojica. It focuses on the explicit C interface route, that is, coding explicit C interface in Fortran and calling that with Python libraries.

pmem_fortran_interface: interface by Adrian Jackson to the libpmem library from the PMDK set of libraries. The aim is to allow persistent memory to be programmed directly from Fortran, rather than requiring every Fortran code developer to create their own interface or C/C++ code to exploit this functionality.

Mesh Generation

TetMeshF90: mesh Library, based on the Hierarchical Array-based Half-facet Data Structure by X. Zhao et al, for representation and multilevel refinement of 3D tetrahedral meshes, by Nonso Mgbechi

Molecular Dynamics

SIS: coarse-grained molecular dynamics simulation with the Single-Interaction-Site RNA model, by Naoto Hori et al.

Neural Networks and Machine Learning

rwkv.f90: port by Matteo Grella and Marco Nicola of RWKV-LM, an open-source large language model initially developed in Python. RWKV is an RNN with Transformer-level LLM performance, which can also be directly trained like a GPT transformer

TensorFlow Fortran Binding library (TFFB): loads and evaluates Keras models directly from Fortran in a straightforward manner. Associated preprint: Towards Exascale CFD Simulations Using the Discontinuous Galerkin Solver FLEXI, by Marcel Blind, Min Gao, Daniel Kempf, Patrick Kopper, Marius Kurz, Anna Schwarz, and Andrea Beck, 2023.

Numerical

Fast Bessel Transform: performing fast Bessel transforms of Transverse Momentum Distributions using Ogata quadrature, by John Terry et al.

fordiff: numerical differentiation using the complex step method or finite differences, by gha3mi

FURY: Fortran Units (environment) for Reliable phYsical math, by Stefano Zaghi

GaussJacobiQuad: routines for the Gauss-Jacobi Quadrature, by Rohit Goswami and Ondřej Čertík

rational_number: procedures for rational numbers, such as arithmetic operations, conversion to and from real variables, and conversion to a string, by art-rasa

Ordinary Differential Equations

rklib: Fixed and variable-step Runge-Kutta solvers in Modern Fortran, by Jacob Williams

Optimization

fOptimize: 1-D optimization methods of Bisection, Golden Ratio, Newton, and Secant, and N-D methods of Gradient (Cauchy), Newton, Self-scaling Davidon–Fletcher–Powell (DFP), Self-scaling Broyden–Fletcher–Goldfarb–Shanno (BFGS), Self-scaling Broyden family (DFP+BFGS), Box Method (Direct coordinate search), and Hooke & Jeeves, by Diego Volpatto

rrelaxiv: R interface for RELAX-IV minimum cost flow solver in FORTRAN by Dimitri P. Bertsekas and Paul Tseng

Parallel Programming

cafut: provides a simple, object-oriented unit testing framework meant for applications using Coarray Fortran, by Renato Zimmermann

Particle Physics

IMPACT-Z: parallel+serial particle-in-cell code whose primary purpose is to model the dynamics of multiple charged particle beams in linear and ring accelerators, by Ji Qiang et al.

Plasma Physics

I2MEX: ideal 2-d Magnetohydrodynamic Equilibrium on Xplasma: by providing a standard equilibrium representation, allows stability codes to obtain metric information from a variety of equilibrium sources. These include GEQDSK (EFIT format), INP1/inp1.cdf (CHEASE), eqdsk.cdf (JSOLVER) as well as TRANSP run data stored on local file system or in the MDSPlus tree.

Zero-Dimensional Plasma Kinetics solver (ZDPlaskin): module designed to follow the time evolution of the species densities and gas temperature in a non-thermal plasma with an arbitrarily complex chemistry

Physics

DFermion: implements a dual fermion framework for general lattice model, together with the iQIST package, by Li Huang

unrestricted_hartree_fock: unrestricted Hartree-Fock solutions to the Hubbard model at finite-temperature in a grand canonical ensemble, by xiaobo-23

Quantum Chemistry and Electronic Structure

Finite Element Solvers for Atomic Structure Calculations (featom): library implementing accurate and efficient radial Schrödinger and Dirac finite element solvers, by Ondřej Čertík, Rohit Goswam, and Isuru Fernando. The formulation admits general potentials and meshes: uniform, exponential, or other.

qfitlib: API intended to be used to fit partial atomic charges to a molecular electrostatic potential (MEP or molecular ESP) that is evaluated on a grid, by Casper Steinmann et al. The charges can be determined using constraints on the total charge and the total permanent dipole moment.

turborvb: package for ab initio Quantum Monte Carlo (QMC) simulations of both molecular and bulk electronic systems, originally developed by Sandro Sorella and Michele Casula

Strings

strith: converts a variable representing a long integer into a string by performing arithmetic operations on numbers in strings, by Tomohiro Degawa

Unit Testing

fort_test: very lightweight testing framework that supports basic assertions and running of test sets, by Thomas Marks

Web Programming

github-org-analyzer: procedures to analyze GitHub organizations and retrieve valuable information about their repositories, by Rajkumar Dongre. By leveraging the power of the http-client package, this analyzer fetches data from the GitHub API to generate insightful reports.

9 Likes

Update since July 22, full list here.

Astronomy and Astrophysics

BI-spectra and Non-Gaussianity Operator (BINGO): numerically evaluates the scalar bi-spectrum and the non-Gaussianity parameter fNL in single field inflationary models involving the canonical scalar field, by dkhaz. The code is based on the Maldacena formalism to evaluate the bi-spectrum.

pycalc11: Python interface by Adam Lanman for running the CALC delay modeling tool, written in Fortran, by providing parameters as astropy objects. CALC aims to compute VLBI baseline delays to picosecond precision by incorporating general relativistic deflection from the Sun, Earth, and other planets, solid Earth and ocean tide loading, and atmospheric contributions

Toolkit for High-ORder Neutrino Radiation Hydrodynamics (thornado): neutrino radiation-hydrodynamics code aiming to simulate core-collapse supernovae using discontinuous Galerkin methods, by Eirik Endeve et al.

Biology and Medicine

covid19-vac-st: code and data for the paper Effects of infection fatality ratio and social contact matrices on vaccine prioritization strategies, by A. Schulenburg, W. Cota, G. S. Costa, and S. C. Ferreira, Chaos. 2022 Sep;32(9):093102

droplets_simulation: simulation of virus-laden droplets behavior from AFDET (Advanced Fluid Dynamics and Energy Transfer Lab)

dynSIS: code for paper Optimized Gillespie algorithms for the simulation of Markovian epidemic processes on large and heterogeneous networks, by Wesley Cota and Silvio C. Ferreira, Computer Physics Communications v. 219 (2017) pp 303-312

Code Tools

f2f90: utility to convert FORTRAN 77 fixed source form to Fortran 90 free source form, by Michael Metcalf, Peter A. Rochford, and Ben Trettel

Computational Chemistry

cofimaker: command-line tool for manipulating atomic coordinate files, by skoerbel

kanon: program to compute chirality indices and assess molecular symmetry, by Asdrubal Lozada-Blanco

Containers and Generic Programming

list: easy-to-use implementation of Python-like lists, with methods append(), clear(), copy(), count(), extend(), insert(), pop(), remove(), reverse(), sort(), by Zdenek Grof

multidim_loop_iterator: versatile iterator for multi-dimensional loops with customizable lower bounds, upper bounds, and strides for each dimension, by Zdenek Grof. It simplifies the process of iterating over multi-dimensional arrays by abstracting the complexities of nested loops.

slinked-list: simple generic singly linked list module for in-memory storage of small amounts of data, by zoziha

Computational Fluid Dynamics

SIMS_MHT: numerical simulation of multibody suspensions of magnetic particles using Langevin and Stokesian Dynamics, optimized for magnetic hyperthermia simulations. Associated paper: The influence of hydrodynamic effects on the complex susceptibility response of magnetic fluids undergoing oscillatory fields: New insights for magnetic hyperthermia, by Guimaraes, A. B. ; Cunha, F. R., and Gontijo, R. G., Physics of Fluids, v. 32, p. 012008-012008-17, 2020.

Earth Science

DC3D.f90: calculates displacement and its space derivative at an arbitrary point on the surface or inside of the semi-infinite medium due to a point source (DC3D0) or a finite rectangular fault (DC3D) based on the formulation by Okada (1992) [Bull. Seism. Soc. Am., 82, 1018-1040]. Translated to free source form by Takuya Miyashita.

hashwrap: Python wrapper by Mike Hagerty of HASHv1.2 Fortran library. An associated paper is Hardebeck, Jeanne L. and Peter M. Shearer, Using S/P Amplitude Ratios to Constrain the Focal Mechanisms of Small Earthquakes, Bulletin of the Seismological Society of America, 93, 2434-2444, (2003).

International Geomagnetic Reference Field (igrf): standard mathematical description of the Earth’s main magnetic field, used widely in studies of the Earth’s deep interior, crust, ionosphere, and magnetosphere, callable from Python and Matlab

LTRANS_microplastics: code associated with paper J.-H. Liang et al., Including the Effects of Subsurface Currents on Buoyant Particles in Lagrangian Particle Tracking Models: Model Development and its Application to the Study of Riverborne Plastics over the Louisiana/Texas Shelf. Ocean Modelling (2021).

multifluids_icferst: reservoir simulator based on DCVFEM, dynamic mesh optimisation and surface-based modelling. An associated paper is Modelling saline intrusion using dynamic mesh optimization with parallel processing, by A. Hamzehloo et al., Advances in Water Resources, v164, (2022).

Games

fortran-raylib: interface bindings to raylib 4.5, for 2-D and 3-D game programming, by interkosmos

Graphics, Plotting, and User Interfaces

fortran_stb_image: bindings by Lewis McMillan for stb_image and stb_image_write, for reading, loading, and processing images

Interoperability

call-rust-from-fortran: shows how to call Rust from Fortran, by Luca Ciucci

fortran-lua54: Fortran 2008 interface bindings to Lua 5.4, from interkosmos. There is also fortran-lua53.

Interpolation

kernelyze-base: computes low-rank approximations of two-variable functions (“kernels”). For many practically useful two-variable functions (“sign-regular kernels”), KernelyzeBase can compute new approximations which numerically achieve the smallest possible worst-case error among all rank-n approximations.

Linear Algebra

ForBLAS: compile the BLAS and their drivers using the Fortran Package Manager, by Seyed Ali Ghasemi. ForLAPACK does so for LAPACK. ForSVD provides functions and subroutines for calculating the singular value decomposition (SVD) of a matrix, calling LAPACK. ForEig calculates eigenvalues and eigenvectors using LAPACK or MKL. ForPCA does principal component analysis (PCA).

Pinverse calculates the pseudoinverse of a matrix using singular value decomposition.

formatmul: library that overloads the matmul function to enable efficient matrix multiplication with coarrays, by Seyed Ali Ghasemi

transpose-free Quasi Minimal Resdiual library for GPUs (tfQMRgpu): solves linear equations for several right hand sides (RHSs) at a time using vectorization over CUDA threads, for block sparse matrices in BSR format, by Paul Baumeister et al. Written in CUDA C and callable from Fortran.

Materials Science

gbXstallography: programs used to compute and plot distributions of grain boundary properties, by Gregory S. Rohrer et al. More information is here.

RuSseL3D: applies the Finite Element Method to run three-dimensional calculations on heterogeneous polymer systems, based on Self-Consistent Field Theory (SCFT), by Constantinos J. Revelas et al. It can address homopolymer melts in contact with solid surfaces and provide with useful results regarding the thermodynamics and the structural properties of the system.

Molecular Dynamics

AUTOSURF-v1.3: suite of codes for the automated construction of potential energy surfaces (PES) for van der Waals systems. The fitting algorithms implemented in the code are based on the L-IMLS methodology, and have many advanced features such as options for data-point placement, flexibility to include gradients in the fit, iterative refinement, and symmetry recognition.

Caracal: enables a wide variety of molecular dynamics applications. Associated paper: Caracal: A Versatile Ring Polymer Molecular Dynamics Simulation Package, by Julien Steffen, J. Chem. Theory Comput. 2023

Neural Networks and Machine Learning

ANN-Fortran: Fortran-C interface from Box-Tools for using ANN, a C++ library for both exact and approximate nearest neighbor searching in spaces of various dimensions, by David M. Mount and Sunil Arya

llama2.f90: Toy LLaMA2 model inference, by rbitr, based on llama2.c by Andrej Karpathy

TorchFort: deep learning training and inference interface from NVIDIA for HPC programs implemented using LibTorch, the C++ backend used by the PyTorch framework. This library can be invoked directly from Fortran or C/C++ programs.

Numerical

forsolver: solves linear and nonlinear equations, by Seyed Ali Ghasemi. For nonlinear equations the available methods are newton, newton-modified, newton-quasi-fd, newton-quasi-fd-modified, newton-quasi-cs, and newton-quasi-cs-modified, where “fd” and “cs” stand for the finite difference and complex step methods.

fortran_toolkit: modules for statistics, linear algebra, optimization and other topics, by Borja Petit

Numerical-Methods: codes for course in numerical methods, including linear equations, finding roots, eigenvalue problems, interpolation and approximation, numerical integration and differentiation, random numbers, and Monte Carlo, by Manan Rawat and H. M. Antia. Codes from Antia’s book are here and archived here.

Optimization

gadfit: global nonlinear curve fitting, based on a modified Levenberg-Marquardt algorithm, by Raul Laasner. Global fitting refers to fitting many datasets simultaneously with some parameters shared among the datasets. The fitting procedure is very fast and accurate thanks to the use of automatic differentiation.

Parallel Programming

cuf23-tutorial: coarray Fortran tutorial with three standalone parallel programs: an unsteady 2D heat equation solver, a simple “Hello, world!” program, and an asynchronous “Hello, world!” program, by Damian Rouson

Plasma Physics

KiNetic Orbit-averaging SOlver for Stellarators (KNOSOS): calculates neoclassical transport in low-collisionality plasmas of three-dimensional magnetic confinement devices by solving the radially local drift-kinetic and quasineutrality equations, by José Luis Velasco. It relies on orbit-averaging to solve the drift-kinetic equation very fast.

Physics

libmbd: implements the many-body dispersion (MBD) method in several programming languages and frameworks. The Fortran implementation is the reference, most advanced implementation, with support for analytical gradients and distributed parallelism, and additional functionality beyond the MBD method itself.

Random Number Generation

mod_rndgen: module for the KISS random number generator that allows the use of multiple independent random number generators at the same time, by Wesley Cota

ranlux: random number generator described in the paper RANLUX: A Fortran implementation of the high-quality pseudorandom number generator of Lüscher, by F. James, Computer Physics Communications, Volume 79, Issue 1 (1994). A Fortran 90 version by Alan Miller is here.

Statistics

Bunch-Gay-Welsch Statistical Estimation (BGW): R package with Fortran code that exploits the special structure of statistical estimation problems within a trust-region-based optimization approach to produce an estimation algorithm that is much more effective than the usual practice of using optimization methods and codes originally developed for general optimization. It implements a function that performs maximum likelihood estimation (MLE) for a user-provided model object that computes probabilities (a.k.a. probability densities).

CohensdpLibrary: R package with Fortran code to compute the Cohen d_p and its confidence intervals in any experimental design, by Denis Cousineau

lib_statistics: code for logistic regression, by Alan Miller, packaged for FPM by Sebastian Dyrda

Monitor: the verification package in HARMONIE is designed to be a self-contained stand alone package dealing with pre-extracted model and observational data. The package calculates several standard verification scores.

Strings

fortran202x_split: Fortran implementation of the Fortran 202X split intrinsic subroutine, by Milan Curcic and Sebastian Ehlert

fortran_wrapper_for_regex_functions: call POSIX regex functions, such as regcomp, regexec, regerror, and regfree, in the C libraries, by borderite

Time Series

Time-Weighted Dynamic Time Warping (twdtw): R package with Fortran code for quantifying time series similarity, applicable to multi-dimensional time series of various resolutions. Associated paper: Maus, V., Camara, G., Appel, M., & Pebesma, E. (2019). dtwSat: Time-Weighted Dynamic Time Warping for Satellite Image Time Series Analysis in R. Journal of Statistical Software, 88(5), 1-31.

4 Likes

Update since Sep 4, full list here

Biology and Medicine

Asexual Penna model: implementation of a biological aging model, as introduced in the paper by Thadeu Penna, A Bit-String Model for Biological Aging, Journal of Statistical Physics 78 (1995)

Containers and Generic Programming

rearrayfx: demonstrates a reallocatable array structure with overprovision at re-allocation in order to decrease the number of reallocations, by Bálint Aradi

Computational Fluid Dynamics

pyAVL: stripped-down version by Josh Anibal of Mark Drela and Harold Youngren’s famous AVL code wrapped in python with f2py. This allows one to more easily conduct large parameter sweeps in AVL or to include AVL into a larger model.

Earth Science

rsofun: R Simulating Optimal FUNctioning (RSOFUN) framework with underlying Fortran code for site-scale simulations of ecosystem processes, with modules for the P-model, SPLASH, and BiomeE, from GECO

Engineering

DigiTWind: advancement of digital-twin for floating offshore wind turbine applications, by Yuksel-Rudy et al. It is related to the OpenFAST project

Radar_ElectroOptical_Simulation: models and simulates the inner workings of Radar systems, Electro-Optical active and passive sources of IR radiation, and missile guidance systems, by Bernard Gingold

File I/O

flibcsv: bindings by Andre Smit to libcsv, a fast and flexible CSV library written in pure ANSI C that can read and write CSV data

Self-Baked-Fortran-NetCDF-Library: light-weight NetCDF C Library wrapper and an intermediate interface, by Han Tang. The major difference between this library and most of the other implementations (for example nc4fortran) is that this library is built on top of NetCDF C library directly.

Graphics, Plotting, and User Interfaces

7-Fortran-plots: demonstrates the usage of 7 DISLIN routines for data plotting, creating line graphs, color and contour plots, and surface, bar, and pie charts, by Shahid718

fdata2pyplot: simple module for passing Fortran output to a Python script to later use Matplotlib to make a figure, by Jiachen An

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.

Interoperability

fpq: modules with postgreSQL (libpq) Fortran bindings, by Andre Smit

libpq-fortran: interface by ShinobuAmasaki to the PostgreSQL libpq C Library

uint-fortran: unsigned integer, 16 or 32 bit, that is interoperable with C, by Shinobu Amasaki

Interpolation

HiPPIS: polynomial-based data-bounded and positivity-preserving interpolation software for function approximation and mapping data values between structure (uniform and nonuniform) meshes. Associated preprint: Algorithm xxxx: HiPPIS A High-Order Positivity-Preserving Mapping Software for Structured Meshes, by Timbwaoga A. J. Ouermi, Robert M Kirby, Martin Berzins (2023)

Linear Algebra

FSPARSE: object-oriented API for sparse matrices with some basic kernels and utility functions, such as conversion from dense matrices and matrix-vector products, by jalvesz. Supported sparse matrix types are COordinate Sparse format (COO), Compressed Sparse Row format (CSR), Compressed Sparse Column format (CSC), and ELLPACK (ELL).

LightKrylov: provides a simple set of Krylov-based techniques to study the spectral properties of the exponential propagator. Associated paper: R. S. Frantz, J.-Ch. Loiseau, and J.-Ch. Robinet. Krylov methods for large-scale dynamical systems: applications in fluid dynamics. Appl. Mech. Rev., 2023.

Mesh Generation

geompack: modernization by Jason Christopherson of the GEOMPACK Fortran 77 library by Barry Joe for computing Delaunay triangulations

meshf: 2D Delaunay triangulation, by ofgn. Future plans include implementing Delaunay refinement, constrained Delaunay, 3D Delaunay, and structured mesh capabilities.

Neural Networks and Machine Learning

ferrite: code for simple, lightweight transformers, such as a Sentence Transformer, by Andrew Marble

FTorch: code and examples on directly calling Pytorch ML models from Fortran, from Cambridge-ICCS

Numerical

BesselEval: rapidly evaluates of Bessel functions J_nu and Y_nu of the first and seconds kinds of nonnegative real orders and positive real arguments, based on precomputed expansions, with the algorithm described in a preprint, An algorithm for the numerical evaluation of Bessel function real orders and arguments, by James Bremer

ellipFor: evaluates Legendre elliptic integrals and Jacobi elliptic functions for generalized input parameters, by Sean Trim

fast_math: collection of functions for fast number crunching, including a fast and precise sum and dot_product for 1D arrays, a reciprocal square root, the logarithm, and trigonometric functions, by jalvesz

fortran-primes: library to return the nth prime number, the prime numbers in a range, test if a number is prime, return the nth prime number greater than a specified number, and factor a number into primes, by Federico Perini, based in part on codes by Michal Forisek, David Deley and Primes.jl

Numerical Integration (Quadrature)

F90-Extrapolation-Integration: implements the extrapolation method on 1-, 2- and 3-dimensional scalar or vector integrals, by Ãlvaro R. Puente-Uriona. It specializes in providing an adaptive method, based on extrapolation over the trapezium method, to obtain increasingly accurate values for, depending only on the number of sample points in which the integrand is evaluated.

GGQ: package for constructing generalized Chebyshev and generalized Gaussian quadrature rules for collections of univariate and bivariate functions, by James Bremer

Ordinary Differential Equations

n-dimensional-scalar: computes a basis of the solution space of n^th order scalar equations, time-independent of the magnitude and complexity of the coefficient functions, associated with preprint The Levin approach to the numerical calculation of phase functions (2023), by Murdock Aubry and James Bremer

Physics

Methods-in-Computational-Physics: codes for various methods used in computational physics, such as Monte Carlo, Verlet Algorithm, and Euler and Runge-Kutta algorithms for ordinary differential equations, by Suresh Parekh

Strings

enclose: procedures for enclosing a string in brackets, by Tomohiro Degawa

FortCharConv: converts character strings to numbers, by Niranama. The conversions between string and floating-point (real) number are based on various binary-decimal conversion algorithms including Dragonbox, Ryu, Schubfach, Clinger and Eisel-Lemire.

Time Series

vector_fit: code by Chris Smartt for the vector fitting algorithm of the paper Rational approximation of frequency domain responses by vector fitting, by B. Gustavsen and A. Semlyen, IEEE Trans. Power Delivery, vol. 14, no. 3, pp. 1052-1061, (1999)

Unit Testing

Fortran-Unit-Test: shows how to link Fortran code with C/C++ and a testing framework such as Google Test, by Rich Morrison

ftest: minimalistic unit testing, by Ladislav Méri

Web Programming

ForCompile: library to access the Compiler Explorer API, by Seyed Ali Ghasemi

13 Likes

@gak ran a script to find 27 broken links in my list, and he created issues for each, for which I thank him. I will remove broken links, but if a project has been renamed or merged into another project, I would like to include that information in the commit message. If you like you can supply information about your renamed or merged project in the relevant issue.

3 Likes