# New Fortran projects

**URL:** <https://fortran-lang.discourse.group/t/new-fortran-projects/2000>\
**Category:** Uncategorized\
**Created:** [October 4, 2021, 3:44pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000 "2021-10-04T15:44:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [October 4, 2021, 3:44pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/1 "2021-10-04T15:44:46Z")

</div>

Here is list of projects from [Fortran Code on Github](https://github.com/Beliavsky/Fortran-code-on-GitHub/blob/main/README.md) that were added since the beginning of September. I can update this monthly if there is interest. For brevity I have excluded projects from domain-specific categories such as Astrophysics or Earth Science. They are on the main list. Some “new” projects are years old but were only recently added.

## Benchmarks

[cumsum\_benchmark](https://github.com/ivan-pi/cumsum_benchmark): benchmarks for the cumulative sum of an array, in Fortran, C++, Matlab, and Python, using various methods

[Simple N-Body with LeapFrog integrator](https://github.com/marblestation/benchmark-leapfrog): Implementation in C, Fortran, Go, Julia and Rust of a very simple N-Body simulator with 3 particles using a LeapFrog integrator. Presented in What can the programming language Rust do for astrophysics?, to appear in the Proceedings of the IAU Symposium 325 on Astroinformatics.

[Traveling Salesman Problem Exact algorithm](https://github.com/harveytriana/TspApproach): fastest to slowest are C++, Rust, Go, C#, Fortran, Dart, and Python, by Luis Harvey Triana Vega

## Code Tools

[adjac](https://github.com/pv/adjac): automatic differentiation for generating sparse Jacobians, using Fortran 95 and operator overloading, by pv.

[autodiff](https://github.com/sgeard/autodiff): automatic differentiation for up to 4th derivatives, by Simon Geard

[fortran-git](https://github.com/interkosmos/fortran-git): Fortran 2008 ISO C binding interfaces to [libgit2](https://github.com/libgit2/libgit2), by interkosmos

[Fortran-RefCount](https://github.com/LadaF/Fortran-RefCount): simple reference counting for Fortran

## Compiler Tests

[infnan](https://github.com/zaikunzhang/infnan): functions for checking Inf/NaN, Zaikun Zhang. They should work even if the compilers are invoked with aggressive optimization flags such as `gfortran -Ofast` .

## File I/O

[easy-netcdf](https://github.com/onepieceze/easy-netcdf): OOP Interface to the [netcdf Fortran library](https://github.com/Unidata/netcdf-fortran), by onepieceze

[Object-oriented Fortran 2018 HDF5 interface](https://github.com/fccf/hdf5_interface): very simple single-file/module access to HDF5, by fccf. More advanced object-oriented Fortran HDF5 access is also available but not compatible with HDF5 1.10 like this program.

[HDF5 wrapper](https://github.com/mpickem/hdf5_wrapper): minimalistic hdf5 wrapper for Fortran90/95, by Matthias Pickem

[M\_display](https://github.com/urbanjost/M_display): standard Fortran 95 module for printing scalars, vectors, and matrices to external files, by urbanjost. The module can display variables of default kind of all intrinsic types (integer, real, complex, logical, and character), and add-on modules are provided for data of the nondefault kind.

[mo\_netcdf](https://github.com/schaefed/mo_netcdf): object-oriented wrapper around the NetCDF Fortran 90 interface, by David Schaefer et al.

[NetCDF95](https://github.com/lguez/NetCDF95): interface to the NetCDF library, by Lionel Guez. Compared to the Fortran 90 NetCDF interface, the NetCDF95 interface is meant to be friendlier and more secure, for example freeing the user from the cumbersome task of handling the error status.

[oo\_hdf](https://github.com/rjgtorres/oo_hdf): object-oriented Fortran HDF5 module, by Ricardo Torres. This library aims to create a group of classes in Fortran to interact with HDF5.

## Fortran Books and Tutorials

[OOP-Fortran-Examples](https://github.com/cmacmackin/OOP-Fortran-Examples): examples of using the object-oriented features in Fortran, taken from a presentation by Chris MacMackin at [RSECon 2019](https://rseconuk2019.sched.com/)

## General Purpose

[cernlib](https://github.com/apc-llc/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.

[f90getopt](https://github.com/haniibrahim/f90getopt): getopt()- and getopt\_long()-like functionality (similar to the C-functions) for Fortran 90, by Hani Andreas Ibrahim

[Fortran General Library (FGL)](https://github.com/mobius-eng/FGL): code for bitstrings, exception handling, hash tables, lists, logging, queues, strings, sorting, JSON parsing, and other topics, from mobius-eng

[Fortran Equation Parser (feqparse)](https://github.com/FluidNumerics/feq-parse): equation parser Fortran class that is used to interpret and evaluate functions provided as strings, by Joe Schoonover

[fortran-list](https://github.com/LadaF/fortran-list): generic list implementation in Fortran 2003, by Vladimír Fuka. Uses unlimited polymorphics or parametric polymorphism.

[Fortran Logging Library: Flogging](https://github.com/cmacmackin/flogging): provides an easy-to-use interface for logging events and errors in Fortran applications and libraries, by Chris MacMackin. Its use and functionality is similar to that of [logging](https://docs.python.org/2/library/logging.html) library in Python.

[Fortran Parameter List (FPL)](https://github.com/victorsndvg/FPL): Fortran 2003 library that can manage the parameters of a program from a single point, by victorsndvg. FPL is an extendible container (dictionary) of \<Key, Value\> pairs, where the Key is a character string and the Value can be, by the default, of the basic data types.

[Fortran User Defined Exceptions Handler (ForEx)](https://github.com/victorsndvg/ForEx): Fortran 2003 project taking advantage of the C preprocessor capabilities in order to emulate exception handling, by victorsndvg

[FortranUtilities](https://github.com/ecasglez/FortranUtilities): functions for strings, numbers, precision, statistics and files, by Emilio Castro

[fstack](https://github.com/jake-87/fstack): custom stack type for Fortran 2003 that implements a C-style stack, by jake-87. The advantage of this model is that one can have multiple stacks at any one time, so there is no need to juggle them – just allocate another one.

[Futility](https://github.com/CASL/Futility): utilities for definition of kinds for intrinsic numeric data types, a unit test harness, definitions for some basic extensions to the Fortran language, geometry definitions and intersection routines, file wrapper functions, parallel wrapper functions, math utilities, a lightweight profiling interface, and other miscellaneous routines, from CASL

[futility](https://github.com/cmacmackin/futility): collection of modern Fortran utilities, including some numerical subroutines and a module for simplified input and output of arrays, by Chris MacMackin

[gFTL](https://github.com/Goddard-Fortran-Ecosystem/gFTL): provides a mechanism to easily create robust containers and associated iterators which can be used within Fortran applications, from Goddard-Fortran-Ecosystem. The primary methods are intended to be as close to their C++ STL analogs as possible. Also see [gFTL-shared](https://github.com/Goddard-Fortran-Ecosystem/gFTL-shared)

[Jumble](https://github.com/lguez/Jumble): library of various utilities in Fortran 2003, by Lionel Guez

[LinkedList](https://github.com/pedro-ricardo/LinkedList): simple implementation of heterogeneous linked list in a single module, by Pedro Ricardo C. Souza

[M\_calculator](https://github.com/urbanjost/M_calculator): parse Fortran-like double precision scalar expressions, by urbanjost

[M\_hashkeys](https://github.com/urbanjost/M_hashkeys): collection of hash key generator modules, by urbanjost

[M\_history](https://github.com/urbanjost/M_history): input line history editor, by urbanjost

[M\_msg](https://github.com/urbanjost/M_msg): convert all common variables to a string in Fortran using unlimited polymorphic variables, by urbanjost

[M\_path](https://github.com/urbanjost/M_path): creates an OOP (Object Oriented Programming) interface to other modules in the [General Purpose Fortran](https://github.com/urbanjost/general-purpose-fortran) package, by urbanjost.

It allows the typical components of a pathname on a POSIX system (Such as GNU/Linux, Unix and Cygwin) to be accessed easily, to render the full pathname of the path and to get basic file properties (permissions, size, ownership, …).

[PolyCon](https://github.com/cmacmackin/PolyCon): abstract container derived type which can be used as a sort of unlimited polymorphic entity whose contents are retrievable with type-guards, by Chris MacMackin. Different subclasses are created in order to hold different data-types.

## Graphics, Plotting, and User Interfaces

[cairo-fortran](https://github.com/brocolis/cairo-fortran): libcairo bindings for Fortran from the gtk-fortran project available as a separate fpm package, by Carlos Une

[M\_ncurses](https://github.com/urbanjost/M_ncurses): module that allows use of the C Ncurses library for controlling and formatting terminal displays, by urbanjost

## Interoperability

[MatlabFortran](https://github.com/aledinola/MatlabFortran): easily export data from Matlab to Fortran and back, by Alessandro Di Nola

[python-fortran](https://github.com/pnavaro/python-fortran): Python-Fortran bindings examples, by Pierre Navaro

## Interpolation

[Mean-preserving interpolation (mp-interp)](https://github.com/pjbartlein/mp-interp): implements four approaches for mean-preserving interpolation as might be applied, for example, to the interpolation of pseudo-daily values from monthly means, that when averaged, reproduce those monthly means, by Pat Bartlein

[NdSpline](https://github.com/Takayuki-Miyagi/NdSpline): multidimensional spline interpolation based on the B-spline method, by Takayuki Miyagi. For details, see G. D. Knott, [Interpolating cubic splines](https://www.springer.com/us/book/9781461270928), Springer 2000.

## Linear Algebra

[ARPACK\_PARPACK](https://github.com/KingJGod/ARPACK_PARPACK): solves large eigenvalue problems in double precision in standard Fortran 90, by KingJGod

[blas-interface](https://github.com/awvwgk/blas-interface): interface declarations for basic linear algebra subprograms, by Sebastian Ehlert

[Eigensolver\_gpu](https://github.com/NVIDIA/Eigensolver_gpu): generalized eigensolver for symmetric/hermetian-definite eigenproblems with functionality similar to the DSYGVD/X or ZHEGVD/X functions available within LAPACK/MAGMA, by Josh Romero et al. This solver has less dependencies on CPU computation than comparable implementations within MAGMA, which may be of benefit to systems with limited CPU resources or to users without access to high-performing CPU LAPACK libraries.

[libsparse](https://github.com/jvdp1/libsparse): Fortran 2003 library that provides objects to create and handle rectangular and square sparse matrices using different formats: Linked List, COOrdinate storage (with elements stored using a hashing function), or Compressed Row Storage, by Jeremie Vandenplas. The library relies on different libraries, such as BLAS/LAPACK libraries, PARDISO (at this stage, Intel MKL PARDISO), and METIS 5.

[LinAlgf90](https://github.com/Takayuki-Miyagi/LinAlgf90): modern Fortran wrappers for the eigenvalue functionality of Lapack, by Takayuki Miyagi

[LUSOL](https://github.com/Rioghasarig/trlu): maintains LU factors of a square or rectangular sparse matrix. This repository provides LUSOL source code and a Matlab interface.

[minila](https://github.com/ghbrown/minila): lightweight, standalone set of common linear algebraic operations for vectors and matrices, by Gabriel Brown

[moa-fortran](https://github.com/wyphan/moa-fortran): Mathematics of Arrays library for modern Fortran, by Wileam Y. Phan

[Monolis](https://github.com/nqomorita/monolis): Morita’s non-overlapping / overlapping domain decomposition based linear equation solver. Has both a direct solver (LU) and many iterative solvers

## Neural Networks and Machine Learning

[Tangent-linear and adjoint test of a neural network (nn\_tl\_ad)](https://github.com/samhatfield/nn_tl_ad): fully-connected neural network implemented in Fortran, along with its “tangent-linear” and “adjoint” versions (i.e. the Jacobian and transpose of the Jacobian), by Sam Hatfield. It also includes standard tests for the consistency of these.

## Numerical

[Field Abstract Calculus Type Usable and Aesthetic Library (FACTUAL)](https://github.com/cmacmackin/factual): provides abstract types to represent mathematical fields in Fortran, by Chris MacMackin. These are both scalar and vector fields. It also contains (at present) one concrete implementation of these types, using a pseudo-spectral approach and tracking field values at Chebyshev collocation points.

[forSISL](https://github.com/rweed/forSISL): Modern Fortran interfaces to the [SINTEF Spline Library (SISL)](https://github.com/SINTEF-Geometry/SISL), by Richard Weed

[GetRootsF](https://github.com/physicsfan/GetRootsF): routines for finding the roots of linear/non-linear equations, with or without derivative information, by Andrew Senchuk

[Modern Fortran Utilities (ModForUtils)](https://github.com/rweed/ModForUtils): variety of tasks including computing binomial coefficients, factorials, routines for checking for NaN and Infinity floating point exceptions, root finders, random number utils and array sorters, and findloc, by Richard Weed. Future releases will expand on these utilities and add interpolation routines and other utilities.

[NITSOL](https://github.com/cmacmackin/nitsol): Newton-iterative solution of large-scale nonlinear systems, by Homer F. Walker

[QD](https://github.com/highprecision/QD): double-double and quad-double package for Fortran and C++, by Michael Orlitzky and X. Sherry Li

## Numerical Integration (Quadrature)

[FORbID](https://github.com/giacrossi/FORbID): object-oriented Fortran 2008 library for numerical integration of definite integrals, by Giacomo Rossi and Stefano Zaghi

## Optimization

[differential-evolution\_f95](https://github.com/ian-mmm/differential-evolution_f95): basic differential evolution optimization algorithm, by Ian Morrall

[Differential Evolution Parallel Program (DEPP)](https://github.com/gbertoldo/DEPP): designed to solve non-linear optimization problems of real-valued functions (objective functions) constrained to boxed domains, by gbertoldo. Additionally, this software is gradient-free, it is not code-invasive, i.e., objective function is treated as a “black-box”, it is tolerant to failures, to poor precision calculated or noisy objective functions, it uses parallelization, that is particularly useful for handling computationally expensive objective functions, and it allows a Response Surface Methodology-Differential Evolution hybridization for convergence acceleration.

[Diver](https://github.com/patscott/Diver): fast parameter sampler and optimiser based on differential evolution, by Pat Scott et al.

[Minpack](https://github.com/jacobwilliams/minpack): modernization of the original Fortran 77 code, by Jacob Williams

[qnstop](https://github.com/vtopt/qnstop): suite of serial and parallel Fortran 95/2003 codes for deterministic global optimization and stochastic optimization by Layne Watson.

[quadprog](https://github.com/pedro-ricardo/quadprog): quadratic programming routine based on R Package sources, by Pedro Ricardo C. Souza. Changed to have a Matlab like interface and usage examples in C and Fortran.

## Parallel Programming

[Advanced MPI and parallel I/O](https://github.com/csc-training/advanced-mpi): Exercise material and model answers for the CSC course [Advanced MPI and parallel I/O](https://events.prace-ri.eu/event/1224/), by Jussi Enkovaara and Cristian-Vasile Achim

[dmr](https://github.com/giacrossi/dmr): Fortran 2008 library for mimicking OpenMP device memory routines in Fortran, by Giacomo Rossi

[Elements of high-performance computing](https://github.com/csc-training/elements-of-hpc): general level introduction to high-performance computing, from csc-training

[Emulators](https://github.com/sourceryinstitute/emulators): emulated collectives collection: collective subroutines and other procedures designed to emulate or extend standard language features, by Damian Rouson. Emulated features include the Fortran 2008 intrinsic function findloc and the Fortran 2018 collective subroutines co\_sum and co\_broadcast.

[matmul\_fortran\_tensor\_core](https://github.com/samhatfield/matmul_fortran_tensor_core): Example code for calling Tensor Core GEMM from Fortran, by Sam Hatfield

[NVIDIA OpenACC Course Sources and Labs](https://github.com/NVIDIA-OpenACC-Course/nvidia-openacc-course-sources): contains sources related to the lectures and labs for the [NVIDIA OpenACC course](https://developer.nvidia.com/openacc-courses).

[Particle-In-Cell Scalable Application Resource (PICSAR)](https://github.com/ECP-WarpX/picsar): high performance repository intended to help scientists porting their Particle-In-Cell (PIC) codes to the next generation of exascale computers. PICSAR exploits the three levels of parallelism that will be required to achieve good performances on future architectures: distributed memory parallelization (internode), shared memory parallelization (intranode) and vectorization.

## Partial Differential Equations

[ElliFEM](https://github.com/md861/ElliFEM): numerically solves the elliptic family of linear partial differential equations. Examples include the Poisson and Helmholtz equations. Reference: M. Drolia, et al. Enriched finite elements for initial-value problem of transverse electromagnetic waves in time domain. Computers & Structures, 182, 354-367, 2017.

[PoisFFT](https://github.com/LadaF/PoisFFT): solves the Poisson equation on a uniform Cartesian grid using the Fast Fourier Transform, by Vladimír Fuka and Javier Alejandro Acevedo Barroso. It calls the library FFTW3 and (if MPI is used) also PFFT.

[Spectral Element Libraries in Fortran (SELF)](https://github.com/FluidNumerics/SELF): object-oriented Fortran library that support the implementation of Spectral Element Methods for solving partial differential equations, by Joe Schoonover. The SELF API is designed based on the assumption that SEM developers and researchers need to be able to implement derivatives in 1-D and divergence, gradient, and curl in 2-D and 3-D on scalar, vector, and tensor functions using spectral collocation, continuous galerkin, and discontinuous galerkin spectral element methods.

## Random Number Generation

[LEcuyer-RNG-Fortran90](https://github.com/p-serna/LEcuyer-RNG-Fortran90): pseudo-random number generator, more precisely, a combined multiple recursive generator (CMRG), MRG32k3a, proposed by L’Ecuyer “Good parameters and implementations for combined multiple recursive random number generators”. Operations Research. 1999 Feb;47(1):159-64, by p-serna. This algorithm is well suited for parallel computing as it can initialize many long streams and substreams, with a total period length of 2191 and it passes diehard tests.

[pseudo\_RNG\_modules](https://github.com/pointedsphere/pseudo_RNG_modules): pseudo-random number generator modules in Fortran, with option to compile as Python modules and some basic randomness tests in Python, from pointedsphere

## Statistics

[amber](https://github.com/octoflar/amber): evaluate multivariate Bernstein polynomials for multivariate polynomial regression using de Casteljau’s algorithm, by R. Quast

[sampleSTAT](https://github.com/haniibrahim/sampleSTAT): command-line application to determine sampling distributions, by Hani Andreas Ibrahim. It goes a lot further than arithmetic mean and standard deviation.

[SparseReg](https://github.com/Hua-Zhou/SparseReg): Matlab toolbox for sparse regression calling Fortran code, by Hua-Zhou Hua Zhou and Brian Gaines

[System of Sequential Assimilation Modules (sesam)](https://github.com/brankart/sesam): perform the various basic operations that are required in sequential data assimilation systems. These operations include square root or ensemble observational updates (with global or local parameterization of the forecast error statistics), adaptive statistical parameterizations, anamorphosis transformations, or the computation of truncated Gaussian estimators.

## Strings

[M\_match](https://github.com/urbanjost/M_match): basic implementation in Fortran of a subset of regular expressions as described in “Software Tools” by Kernighan and Plauger, 1976.

## Unit Testing

[FyTest — Instant Fortran unit testing](https://github.com/aradi/fytest): lightweight unit testing framework for Fortran, by Bálint Aradi. Thanks to its header-only design, it can be easily bundled with any Fortran project without creating extra dependencies.

## Web Programming

[Fortran + Apache + BSD + sqlite (FABS)](https://github.com/bceverly/FABS): web framework that leverages Fortran for the middle-tier, by bceverly. The client is a standard HTML5/CSS3/Javascript that talks to a REST API that is exposed by the Fotran middle-tier code via an Apache content filter using CGI.

[fortran-machine](https://github.com/mapmeld/fortran-machine): MVC web stack written in Fortran 90, by Nick Doiron et al.

---

<div class="post-metadata">

**Author:** ![interkosmos](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/interkosmos/32/296_2.png) [@interkosmos](https://fortran-lang.discourse.group/u/interkosmos)\
**Post date:** [October 4, 2021, 5:10pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/2 "2021-10-04T17:10:28Z")

</div>

Perhaps, you could add some further sub-sections to General Purpose, as there is not much structure. For instance, command-line parsing, data structures, databases, and data exchange formats.

---

<div class="post-metadata">

**Author:** ![Ashok](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@Ashok](https://fortran-lang.discourse.group/u/Ashok)\
**Post date:** [October 5, 2021, 4:36am UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/3 "2021-10-05T04:36:39Z")

</div>

Excellent compilation @Beliavsky !  
Thank you.  
Yeah, it would be nice if it is updated every month.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [November 13, 2021, 4:12pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/4 "2021-11-13T16:12:41Z")

</div>

Update since Oct. 4, full list [here](https://github.com/Beliavsky/Fortran-code-on-GitHub)

## Art and Music

[TapTempo Fortran](https://github.com/vmagnin/TapTempo-Fortran): command line taptempo written in modern Fortran, by Vincent Magnin. Listen to a song and hit enter key with style and you’ll get the corresponding number of beats per minute (BPM).

## Astrophysics

[Discrete Element Model Body (DEMBody)](https://github.com/Bin-Cheng-THU/DEMBody): software for Granular Dynamics Simulation for Planetary Science and Geophysics, by Bin Cheng. It incorporates classical granular dynamics simulations and N-body self-gravity calculation.

[ramses](https://github.com/ALaDyn/ramses): models astrophysical systems, featuring self-gravitating, magnetised, compressible, radiative fluid flows. It is based on the Adaptive Mesh Refinement (AMR) technique on a fully-threaded graded octree.

## Benchmarks

[Himeno Benchmark in Modern Fortran](https://github.com/degawa/Himeno-Benchmark-in-Modern-Fortran): [Himeno benchmark](https://i.riken.jp/en/supercom/documents/himenobmt/) to evaluate performance of incompressible fluid analysis code, written in Modern Fortran style, achieving almost the same execution performance as the original version, by Tomohiro Degawa. In this program, global variables are eliminated, and some variable names and subroutine names are refactored.

## Biology and Medicine

[ANCC](https://github.com/YoushanLiu/ANCC): Python scripts and Fortran code for ambient noise tomography, such as computing cross-correlation (with parallel computing), and extracting dispersion curves, by Youshan Liu

[Fortran Image Processing](https://github.com/hpcnpatel/Fortran_Image_Processing): processing, manipulating, and filtering CT scan data, by Nisarg Patel. A CT scan data could be binary RAW data or VTK data.

## Climate and Weather

[ExoRT](https://github.com/storyofthewolf/ExoRT): reasonably flexible two-stream radiative transfer code designed for use with 3D climate models, by Eric T. Wolf. In this software, contained are builds for a 1-D offline version, and for directly interfacing with CESM/CAM4.

## Compiler Tests

[AdHoc](https://github.com/rouson/bug-reports): archives ad hoc tests for modern Fortran compilers used by Sourcery Institute, Sourcery, Inc., their collaborators, sponsors, and clients. These tests emphasize support for the Fortran 2003 and 2008 standards along with features proposed for Fortran 2015 in technical specification TS 29113 Further Interoperability with C and the draft technical specification TS 18508 Additional Parallel Features in Fortran.

[FCVS\_95](https://github.com/gklimowicz/FCVS_95): modified version of NIST F77 validation suite, updated for Fortran 95. The original is [FCVS](https://github.com/gklimowicz/FCVS).

## Computational Chemistry

[CoarseAIR](https://github.com/simoneventuri/CoarseAIR): Fortran 2008 Code for State-to-State and Coarse-Grained Quasi-Classical Trajectory (QCT) Method. Reference: S Venturi - “Machine Learning and Uncertainty Quantification Framework for Predictive Ab Initio Hypersonics” - Ph.D. Thesis, University of Illinois at Urbana-Champaign (2021)

[Donostia Natural Orbital Functional Software (DoNOFsw)](https://github.com/DoNOF/DoNOFsw): performs computational chemistry calculations based on the Natural Orbital Functional Theory (NOFT), including PNOF5, PNOF6 and PNOF7. Correlation corrections after PNOF calculations can be estimated by second order perturbation theories.

[linemake](https://github.com/vmplacco/linemake): atomic and molecular line list generator, by Chris Sneden et al. Rather than a replacement for a number of well-established atomic and molecular spectral databases, linemake aims to be a lightweight, easy-to-use tool to generate formatted and curated lists suitable for spectral synthesis work.

## Computational Fluid Dynamics

[AerOpt](https://github.com/DrBenEvans/AerOpt): aerodynamic optimisation code based on control node parameterisation, by Ben Evans et al.

[channel](https://github.com/davecats/channel): direct numerical simulation of an incompressible turbulent channel flow with two dimensional parallelization, by Davide Gatti

[Fluid2d](https://github.com/pvthinker/Fluid2d): versatile Python-Fortran CFD code that solves a large class of 2D flows, by Guillaume Roullet et al. It is designed to be used easily by Students learning Fluid Mechanics or Geophysical Fluid Dynamics and by their professors willing to illustrate their course and to organize numerical practicals.

[Fluid Transport Accelerated Solver (FluTAS)](https://github.com/Multiphysics-Flow-Solvers/FluTAS): modular, multiphysics code for multiphase fluid dynamics simulations. The code is written following a “functional programming” approach and aims to accommodate various independent modules. One of the main purposes of the project is to provide an efficient framework able to run both on many-CPUs (MPI) and many-GPUs (MPI+OpenACC+CUDA-Fortran).

[KatzPlotkin](https://github.com/cibinjoseph/KatzPlotkin): Fortran programs provided by Joseph Katz and Allen Plotkin in their book [Low-Speed Aerodynamics](https://www.amazon.com/Low-Speed-Aerodynamics-Second-Cambridge-Aerospace/dp/0521665523)

## Earth Science

[CoulombAnalysis](https://github.com/jjwangw/CoulombAnalysis): computes Coulomb stress changes induced by earthquakes, by jjwangw

[sailing](https://github.com/ntu-as-cooklab/sailing): sailing simulation based on CFSR wind and ocean current data, from ntu-as-cooklab. The goal is to simulate the sailing route of a sailing ship during different seasons based on a simple model, which may be helpful for studies on human migration across the ocean.

[Semi-implicit Cross-scale Hydroscience Integrated System Model (SCHISM)](https://github.com/schism-dev/schism): community-supported modeling system based on unstructured grids and designed for the seamless simulation of 3D baroclinic circulation across creek-lake-river-estuary-shelf-ocean scales.

[Tomofast-x v.1.2](https://github.com/TOMOFAST/Tomofast-x): parallel inversion platform to run single domain or joint inversion (gravity and magnetic data), by V. Ogarko 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).

[Tracmass](https://github.com/TRACMASS/Tracmass): Lagrangian trajectory code for ocean and atmospheric general circulation models, by Aitor Aldama and Kristofer Döös. The code makes it possible to estimate water paths, Lagrangian stream functions (barotropic, overturning, etc.), exchange times, etc.

[Universal Boltzmann Equation Solver (UBER)](https://github.com/zheng-lh/UBER): solves the general form of Fokker-Planck equation and Boltzmann equation, diffusive or non-diffusive, that appear in modeling planetary radiation belts, by Liheng Zheng

## File I/O

[json-fortran-benchmarks](https://github.com/jacobwilliams/json-fortran-benchmarks): benchmarks for JSON Fortran parsers, by jacobwilliams. Also comparison to Python. Discussed [here](https://fortran-lang.discourse.group/t/a-new-json-library/2197/11)

[fortran-yaml-cpp](https://github.com/Nicholaswogan/fortran-yaml-cpp): YAML parser for Fortran matching the YAML 1.2 spec, by Nick Wogan. This package uses the C++ package yaml-cpp to parse yaml documents and then stores the data in Fortran derived types created by fortran-yaml.

## Fortran Books and Tutorials

[Intro-to-Fortran](https://github.com/coolernato/Intro-to-Fortran): materials for an [online course](https://www.imperial.ac.uk/study/pg/graduate-school/students/doctoral/professional-development/research-computing-data-science/courses/intro-to-fortran/) by Chris Cooling

## General Purpose

[errorfx](https://github.com/aradi/errorfx): simple library for demonstrating exception like error handling strategy in Fortran, by Bálint Aradi. It provides an error handling mechanism which is robust, convenient, and PURE.

[FortranPatterns](https://github.com/farhanjk/FortranPatterns): Implementation of popular design patterns in Fortran, by Farhan J. Khan and zmiimz. This is intended to facilitate the community using Fortran for computationally expensive tasks. The main philosophy here is to make these patterns available for improving the reusability and efficiency of the code.

[ftime](https://github.com/wcdawn/ftime): basic timing routines in Fortran 2003, by William C. Dawn

[LinkedList](https://github.com/degawa/LinkedList): doubly linked list for Fortran 2003, by Tomohiro Degawa. The list is based on object-oriented programming, so the list can treat all types Fortran supports, including integer, real, character and derived types by using the unlimited polymorphism feature.

## Graphics, Plotting, and User Interfaces

[accis](https://github.com/ihutch/accis): plotting and graphics library by Ian Hutchinson. Related project: [PLOTTRACES](https://github.com/ihutch/PLOTTRACES)

[fortran-motif](https://github.com/interkosmos/fortran-motif): collection of ISO C binding interfaces to X/Motif, to create graphical user interfaces for Unix in Fortran 2008, by interkosmos. The library includes selected bindings to Xlib, Xt, Xm, and the XmHTML widget to render HTML 3.2 inside a Motif widget (optional).

[fortran-xlib](https://github.com/interkosmos/fortran-xlib): collection of ISO C binding interfaces to Xlib for Fortran 2003, by interkosmos. Currently, only a subset of Xlib is implemented. In order to work with XPM files, interfaces to libxpm are included.

## Interoperability

[Fortran-Lua-hook library (flook)](https://github.com/ElectronicStructureLibrary/flook): allows abstraction of input files to be pure Lua files to enable configuration of internal variables through an embedded Lua interpreter. Any valid Lua script can be executed from within any fortran application at points where the application creates Lua channels. Its main usage is the ability to change run-time variables at run-time in order to optimize, or even change, the execution path of the parent program.

## Linear Algebra

[JACSD](https://github.com/venovako/JACSD): utilities for the Jacobi-type (G/H)SVD algorithms and beyond, plus a Cosine-Sine Decomposition tester, by Vedran Novaković. Associated projects [here](https://github.com/venovako)

## Materials Science

[hyplas](https://github.com/mestradam/hyplas): finite element program for implicit small and large strain analysis of hyperelastic and elasto-plastic two-dimensional and axisymmetric solids, from the book [Computational Methods for Plasticity: Theory and Applications](https://www.wiley.com/legacy/wileychi/desouzaneto/)

## Molecular Dynamics

[Packmol](https://github.com/m3g/packmol): creates an initial point for molecular dynamics simulations by packing molecules in defined regions of space, from Martinez Molecular Modeling Group. The packing guarantees that short range repulsive interactions do not disrupt the simulations.

## Numerical

[compare](https://github.com/tcanich/compare): module to aid in comparison of real or complex numbers, by Tom Canich and Magnus Hagdorn. The module specifies a tolerance when making the comparisons to determine equality or inequality.

[Library of Numerical Analysis - Moscow State University](https://github.com/VadimAnIsaev/Library-of-Numerical-Analysis-MSU): Translation of subroutines into modern Fortran (Fortran90 or higher) from Fortran 66.

[Mittag Leffler function and its derivative](https://github.com/tranqv/Mittag-Leffler-function-and-its-derivative): translated from the Matlab code of Robert Garrappa

[NR\_util](https://github.com/lguez/NR_util): Fortran 2003 library by Lionel Guez containing basic mathematical constants and basic procedures for numerical tasks. NR\_util originates from the “utility routines” of Numerical Recipes in Fortran 90 (Press et al., 1996, Cambridge University Press, appendix C1), version 2.10a, contained in files nrtype.f90 and nrutil.f90. These files of Numerical Recipes were put in the public domain by Press et al.

[Numeric Library for Modern Fortran](https://github.com/degawa/fortran-numeric): 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

[SLATEC](https://github.com/MehdiChinoune/SLATEC): comprehensive software library containing over 1400 general purpose mathematical and statistical routines, translated to modern Fortran by Mehdi Chinoune

## Parallel Programming

[code\_examples](https://github.com/MeteoSwiss-APN/code_examples): collection of examples showing peculiarities when working with Fortran, OpenACC, PGI, or any other software extensively used at MeteoSwiss

[Hybrid CPU programming with OpenMP and MPI](https://github.com/csc-training/hybrid-openmp-mpi): exercise material and model answers for the [CSC course](https://events.prace-ri.eu/event/1225/), by Jussi Enkovaara and Martti Louhivuori

[MPI-course](https://github.com/SNIC-MPI-course/MPI-course): material for the course [An introduction to parallel programming using Message Passing with MPI](https://www.pdc.kth.se/about/events/training/an-introduction-to-parallel-programming-using-message-passing-with-mpi-1.1103658)

## Physics

[Acceleration by Laser and Dynamics of charged particles (ALaDyn)](https://github.com/ALaDyn/ALaDyn): particle-in-cell code firstly described in ALaDyn: A High-Accuracy PIC code for the Maxwell-Vlasov Equations by C. Benedetti et al., published on IEEE Transactions on Plasma Science, 36 4, 1790-1798 (2008) and then again in the update Charge preserving high order PIC schemes by P. Londrillo et al., published on Nucl. Instrum. Meth. A, 620 1, 28-35 (2010).

[Angular Momentum model Of Relativistic Electron beam transport (AMoRE)](https://github.com/michaeltouati/AMoRE): code parallelized using OpenMP for fast simulations of laser-generated relativistic electron beam transport in solid or dense plasma targets, by Michaël J. Touati. It computes the two first angular moments of the relativistic Vlasov-Fokker-Planck-Belaiev-Budker kinetic equation completed with the Minerbo maximum angular entropy closure and coupled with target Magneto-Hydrodynamic equations considering time scales during which the return current has already set up.

[fresco](https://github.com/I-Thompson/fresco): scattering code for coupled-channels calculations, by I-Thompson. [Frescox](https://github.com/LLNL/Frescox) is an updated version.

[libdlr](https://github.com/jasonkaye/libdlr): Fortran subroutines to build and work with the discrete Lehmann representation for single particle imaginary time Green’s functions, as well as the stand-alone Python module pydlr implementing the same functionality, by Jason Kaye and Hugo U.R. Strand

[Linear Electromagnetic Oscillations in Plasmas with Arbitrary Rotationally-symmetric Distributions (LEOPARD)](https://github.com/pastfalk/LEOPARD): dispersion relation solver which can derive the frequencies and growth rates of electromagnetic waves with arbitrary propagation angle in homogeneous plasmas with an arbitrary number of particle species, by Patrick Astfalk. LEOPARD allows the computation of the (fully-kinetic) dielectric tensor components for both bi-Maxwellian or arbitrary gyrotropic velocity distributions. The implemented expressions for the dielectric tensor components are based on ‘Kinetic Theory of Plasma Waves’ by M. Brambilla (1998).

[Quasilinear Electromagnetic Oscillations (QLEO)](https://github.com/pastfalk/QLEO): code based on the quasilinear kinetic equation which self-consistently describes how a given velocity distribution function of a homogeneous gyrotropic plasma evolves in time in the presence of an unstable spectrum of parallel propagating, electromagnetic linear eigenmodes, by Patrick Astfalk. The implemented formalism is based on the quasilinear kinetic equations given in, e.g., ‘Methods in Nonlinear Plasma Theory’ by R. C. Davidson (1972).

## Quantum Chemistry and Electronic Structure

[Abinitio DGA](https://github.com/AbinitioDGA/ADGA): implementation of a DGA approach for electronic structure calculations of materials, by Matthias Pickem. It allows the inclusion of non-local correlations beyond DMFT and the calculation of momentum-dependent susceptibilities.

[bands4vasp](https://github.com/QuantumMaterialsModelling/bands4vasp): post processing package for the analysis of unfolded eigenstates in VASP, and much more: band structures, 2D and 3D Fermi surfaces, Fermi vectors and spectral functions, by David Dirnberger and Michele Reticcioli

[ELectronic Structure Infrastructure (elsi)](https://github.com/ElectronicStructureLibrary/elsi-interface): provides and enhances scalable, open-source software library solutions for electronic structure calculations in materials science, condensed matter physics, chemistry, and many other fields. ELSI focuses on methods that solve or circumvent eigenvalue problems in electronic structure theory. The ELSI infrastructure should also be useful for other challenging eigenvalue problems.

[exciting](https://github.com/exciting/exciting): all-electron full-potential computer package for first-principles calculations, based on (linearized) augmented planewave + local orbital [(L)APW+lo] methods, by Stephan Sagmeister. This family of basis sets is known as the most precise numerical scheme to solve the Kohn-Sham equations of density-functional theory (DFT), reaching up to micro-Hartree precision.

[NECI](https://github.com/ghb24/NECI_STABLE): implements the Full Configuration Interaction Quantum Monte Carlo (FCIQMC) algorithm, a method based on a stochastic application of the Hamiltonian matrix on a sparse sampling of the wave function. The program utilizes a very powerful parallelization and scales efficiently to more than 24 000 central processing unit cores.

[omm-bundle](https://github.com/ElectronicStructureLibrary/omm-bundle): library implementing the orbital minimization method for solving the Kohn-Sham equation as a generalized eigenvalue problem, by Fabiano Corsetti et al.

[soap\_turbo](https://github.com/libAtoms/soap_turbo): code associated with paper Miguel A. Caro. “Optimizing many-body atomic descriptors for enhanced computational performance of machine learning based interatomic potentials”. Phys. Rev. B 100, 024112 (2019).

## Strings

[Fortran-String-to-Real](https://github.com/Carltoffel/Fortran-String-to-Real): converts strings to reals without using an internal read, by Carltoffel

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [December 13, 2021, 3:31pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/5 "2021-12-13T15:31:58Z")

</div>

Update since Nov. 13, full list [here](https://github.com/Beliavsky/Fortran-code-on-GitHub).

## Astronomy

[Automatic Line Fitting Algorithm (ALFA)](https://github.com/rwesson/ALFA): identifies and fits hundreds of lines in emission line spectra in just a few seconds. It does this using a genetic algorithm to optimise the line parameters, by Roger Wesson

[NEAT](https://github.com/rwesson/NEAT): calculates chemical abundances in photoionised nebulae, by Roger Wesson et al. It can propagate uncertainties and compensate for measurement biases affecting weak lines.

[SMERCURY-T](https://github.com/SMKreyche/SMERCURY-T): upgrade of the SMERCURY orbital integrator that includes modules to enable the solar tidal spin torque as well as the general relativistic force, by Steven M. Kreyche

## Astrophysics

[ARTEMIS-P](https://github.com/maserlib/ARTEMIS-P): Anisotropic Ray Tracer for Electromagnetism in Magnetospheres, Ionospheres and Solar wind, including Polarisation, by Baptiste Cecconi and C. Baskevitch

[Complete History of Interaction-Powered Supernovae (CHIPS)](https://github.com/DTsuna/CHIPS): simulates the circumstellar matter and light curves of interaction-powered transients, by DTsuna et al. Coupling the MESA stellar evolution code and codes implemented by the authors, the user can obtain the circumstellar matter profile and light curves of the interaction-powered supernovae.

[DAOPHOT-MCMC](https://github.com/skterry/daophot_mcmc): modified version of the subroutine NSTAR.F which implements a Markov chain Monte Carlo (MCMC) routine for fitting highly blended stellar positions and fluxes, by Sean Terry. This code is installed and implemented within the overall DAOPHOT-II structure.

[SpectralRadex](https://github.com/uclchem/SpectralRadex): Python library for spectral modelling and RADEX, by Jon Holdship et al. SpectralRadex uses F2PY to compile a version of RADEX written in modern Fortran, most importantly dropping the use of common blocks. As a result, running a RADEX model creates no subprocesses and can be parallelized.

## Benchmarks

[benchio](https://github.com/davidhenty/benchio): simple Fortran parallel IO benchmark for teaching and benchmarking purposes, by David Henty

## Biology and Medicine

[ECOSYS](https://github.com/jinyun1tang/ECOSYS): code for terrestrial ecosystem biogeochemistry, by Robert Grant. A related project is [EcoSim](https://github.com/jinyun1tang/EcoSIM).

[3D\_Convolusional\_Filtering](https://github.com/JoGebert/3D_Convolusional_Filtering): convolusional filtering of computed tomography scans, by JoGebert. Intended to get a clear separation between bone marrow and cancellous bone for subsequent binarization and calculations. Another project is [Binarization and Domain Decomposition](https://github.com/JoGebert/Binarize-Decomposite)

## Climate and Weather

[convert\_mpas](https://github.com/mgduda/convert_mpas): general conversion utility for MPAS-Atmosphere output files, by Michael Duda and David Ahijevych

[ExoRT](https://github.com/storyofthewolf/ExoRT): reasonably flexible two-stream radiative transfer code designed for use with 3D climate models, by Eric T. Wolf. In this software, contained are builds for a 1-D offline version, and for directly interfacing with CESM/CAM4.

[Himawari\_HSD\_Reader](https://github.com/simonrp84/Himawari_HSD_Reader): reader for data from Japan’s [Himawari satellite](https://en.wikipedia.org/wiki/Himawari_8), by Simon Proud. This utility reads ‘raw’ HSD format data and can convert it into more friendly formats such as NetCDF4.

[National Ocean Service Operational Forecast System from NCEP Central Operations (nosofs-NCO)](https://github.com/ioos/nosofs-NCO): copy from NOAA’s PMB website. This repository contains updates needed to run using GCC/GFortran compilers.

[prodsim](https://github.com/ARPA-SIMC/prodsim): collection of shell scripts and Fortran programs based on libsim, by Davide Cesari and ddales3. It is designed for processing raw numerical weather prediction (NWP) model output data and perform physically-based operations in order to obtain postprocessed data

[shumlib](https://github.com/metomi/shumlib): libraries which are used by the UM; the UK Met Office’s Unified Model, that may be of use to external tools or applications where identical functionality is desired. The hope of the project is to enable developers to quickly and easily access parts of the UM code that are commonly duplicated elsewhere.

[simple atmospheric models](https://github.com/mathewbarlow/simple-atmospheric-models): simple models of the atmosphere (and ocean), for classroom examples, by Mathew Barlow

## Code Tools

[Auto-Diff](https://github.com/zoziha/Auto-Diff): implementation in Modern Fortran of backward mode automatic differentiation, by zoziha

## Compiler Tests

[test\_compiler](https://github.com/zaikunzhang/test_compiler): tests the applicability of Fortran compilers in a project that develops optimization solvers, by Zhang Zaikun

## Computational Chemistry

[Aerosol Inorganic-Organic Mixtures Functional groups Activity Coefficients (AIOMFAC)](https://github.com/andizuend/AIOMFAC): thermodynamic group-contribution model to describe non-ideal mixing in liquid solutions

[chemfiles.f03](https://github.com/chemfiles/chemfiles.f03): Fortran 2003 binding to the [chemfiles](https://github.com/chemfiles/chemfiles) library, by Guillaume Fraux et al.

[ClassyMC](https://github.com/mrnucleation/ClassyMC): General Purpose Object Oriented Molecular Monte Carlo code. Classy is designed to be used for Metropolis Monte Carlo and other similar sampling methods in molecular simulations.

[Python-Fortran-Fluids (PyForFluids)](https://github.com/fedebenelli/PyForFluids): Python package focused in the calculation of Fluid properties based on Equations of State (EoS), by Federico E. Benelli et al. It provides a simple interface to work from Python but also exploits the high performance Fortran code for the more heavy calculations.

[structure analysis on the command line (struca)](https://github.com/hokru/struca): simple tool to help compare structures and compute trajectory data on the command line, by Holger Kruse

## Computational Fluid Dynamics

[2DEulerSolver](https://github.com/FrostyNip/2DEulerSolver): numerically solve the Euler equations over a channel with a bump using Jameson scheme finite volume analysis, by FrostyNip

[CFD Utility Software Library (CFDTOOLS)](https://github.com/nasa/cfdtools): contains nearly 30 numerical analysis libraries and close to 100 utility applications built upon those libraries. These utilities were developed over a rougly fifty year span to support aerospace research and development activities at NASA Ames Research Center (ARC).

[euler2D-kfvs-Fortran2003](https://github.com/truongd8593/euler2D-kfvs-Fortran2003): compressible Euler equations solver using kinetic flux vector splitting (KFVS) scheme, by truongd8593

[Fluid2d](https://github.com/pvthinker/Fluid2d): versatile Python-Fortran CFD code that solves a large class of 2D flows, by Guillaume Roullet et al. It is designed to be used easily by Students learning Fluid Mechanics or Geophysical Fluid Dynamics and by their professors willing to illustrate their course and to organize numerical practicals.

[IMEXLB-1.0](https://github.com/lucaso19891019/IMEXLB-1.0): Lattice Boltzmann Method (LBM) proxy application code-suite for heterogeneous platforms (such as ThetaGPU). A ProxyApp, by definition, is a proxy for a full-fledged application code that simulates a wider array of problems.

[interpolate-fields](https://github.com/p-costa/interpolate-fields): interpolates DNS data to a new grid using linear interpolation, by Pedro Costa. It can run and store the interpolated data in a massively-parallel setting using MPI I/O. For now, it assumes two regular Cartesian grids with the file format of CaNS.

[MGLC](https://github.com/cheryli/MGLC): multi-GPU parallel implementation of LBM(Lattice Boltzmann Method), using OpenACC to accelerate codes on single GPU and MPI for inter-GPU communication

[Multi-component Flow Code (MFC)](https://github.com/MFlowCode/MFC): parallel simulation software for multi-component, multi-phase, and bubbly flows, by Spencer Bryngelson et al.

[NekIBM](https://github.com/YunchaoYang/NekIBM): implementation of Immersed Boundary Method for for exascale simulation of multiphase flow based on the Spectral Element Method Nek5000/CMTnek code, by Yunchao Yang

[NGA2](https://github.com/desjardi/NGA2): high performance computing research library that provides a variety of finite volumes/finite difference solvers for typical fluid-related partial differential equations, by Olivier Desjardins and Austin Han

[Non-HydrostaticWave Model (NHWAVE)](https://github.com/MartinHu1997/NHWAVE): three-dimensional shock-capturing model which solves the incompressible Navier-Stokes equations in terrain and surface-following sigma coordinates. The model predicts instantaneous surface elevation and 3D flow field and is capable of resolving coastal wave processes (shoaling, refraction, diffraction, breaking etc.) as well as tsunami wave generation by landslide.

## Earth Science

[celltrack](https://github.com/lochbika/celltrack): finds continuous cells in 2D fields and tracks them in time. The primary use case is rain cell tracking. Related paper: Lochbihler, K., Lenderink, G., and Siebesma, A. P. (2017), The spatial extent of rainfall events and its relation to precipitation scaling, Geophys. Res. Lett., 44, 8629– 8636, doi:10.1002/2017GL074857.

[GOCART](https://github.com/GEOS-ESM/GOCART): aerosol model including process library and framework interfaces (MAPL, NUOPC, and CCPP), from Goddard Earth Observing System - Earth System Modeling

[MANDIFORE\_modeling](https://github.com/MortonArb-ForestEcology/MANDIFORE_modeling): Forestry x climate scenarios for NSF-funded MANDIFORE project, by Christy Rollinson and Lucien Fitzpatrick

[NM-CT](https://github.com/tuhouwang/NM-CT): Fortran and Matlab codes for the paper “A Chebyshev-Tau spectral method for normal modes of underwater sound propagation with a layered marine environment”, by H. Tu, Y. Wang, Q. Lan et al.

[PyRaysum](https://github.com/paudetseis/PyRaysum):g enerates sets of ray-theoretical seismograms for an incident plane wave (teleseismic approximation) for models consisting of a stack of layers with planar but nonparallel (dipping) interfaces, allowing the possibility of anisotropy in the layers. Incident P and S waves are supported.

PyRaysum is a Python wrapper around the Fortran software Raysum, originally developed by Andrew Frederiksen.

[Tracmass](https://github.com/TRACMASS/Tracmass): Lagrangian trajectory code for ocean and atmospheric general circulation models, by Aitor Aldama and Kristofer Döös. The code makes it possible to estimate water paths, Lagrangian stream functions (barotropic, overturning, etc.), exchange times, etc.

[Wetland Water Quality Model (WetQual-GUI)](https://github.com/USEPA/WetQual-GUI): simulates nitrogen (N), phosphorus (P), total suspended sediment (TSS) and carbon (C) cycles and their dynamics in wetlands, by Daniel Lee Young et al. The model partitions a wetland into three basic compartments: (1) (free) water column, (2) wetland soil layer, which is further portioned into aerobic and anaerobic zones, and (3) plant biomass.

[yelmo](https://github.com/palma-ice/yelmo): 3D ice-sheet-shelf model solving for the coupled dynamics and thermodynamics of the ice sheet system. Yelmo can be used for idealized simulations, stand-alone ice sheet simulations and fully coupled ice-sheet and climate simulations.

## Economics

[trendInflation](https://github.com/elmarmertens/trendInflation): code for trend inflation model of Mertens (2016, REStat, [http://dx.doi.org/10.1162/REST\_a\_00549](http://dx.doi.org/10.1162/REST_a_00549)) and Garnier, Mertens and Nelson (2015, IJCB, [Trend Inflation in Advanced Economies](http://www.ijcb.org/journal/ijcb15q4a2.htm)). The model implemented here is the variant with stochastic volatility in all inflation gaps.

## File I/O

[Convert Precision](https://github.com/p-costa/convert-precision): converts large binary files in parallel from/to single to/from double precision, using MPI-I/O, Pedro Costa. The code assumes that the each file contains only single- or double-precision floating-point.

[hdf5\_wrapper](https://github.com/cbusta/hdf5_wrapper): Fortran wrapper for HDF5 (.h5 files), by Christian Bustamente. It provides a simpler interface that allows easy writing and reading of h5 files for double precision and integer arrays of up to six dimensions. On top of the Fortran wrapper, the package provides a Matlab function that simplifies the process of reading entire h5 files.

[json-fortran](https://github.com/jonathanschilling/json-fortran): KISS Fortran routines to write (multi-dimensional) data as JSON, by Jonathan Schilling

[neasy-f](https://github.com/PlasmaFAIR/neasy-f): simple wrapper for netCDF-Fortran, from PlasmaFAIR. Rather than attempting to be a feature-complete replacement, neasy-f wraps some common functions together and is opinionated about usage.

## Games

[life](https://github.com/JeffIrwin/life): Conway’s game of life, by Jeff Irwin

[rubik](https://github.com/JeffIrwin/rubik): Rubik’s cube command line interface game, by Jeff Irwin

## General Purpose

[Auto-generated time-stamped folder](https://github.com/zaman13/Auto-generated-time-stamped-folder): code for auto generating a time-stamped folder, log file, and data file (csv) to store results of each run of the code, by Mohammad Asif Zaman. The submodules can be easily incorporated in any program. Useful for cases when the same program must be run many times and the corresponding data must be saved in files.

[flist](https://github.com/jacobwilliams/flist): modern Fortran linked lists using unlimited polymorphic derived types, by Jacob Williams

[Fortran pathlib](https://github.com/scivision/fortran-pathlib): Filesystem path manipulation utilities for standard Fortran, from scivision. Inspired by Python pathlib and C++17 filesystem.

[fuuid4](https://github.com/PlasmaFAIR/fuuid4): generates random (version 4) Universally Unique Identifiers (UUIDs). Fuuid4 can either wrap the libuuid generator, or use the bundled Mersenne Twister psuedo-random number generator (PRNG) to generate UUIDs itself.

[M\_msg](https://github.com/urbanjost/M_msg): convert all common variables to a string in Fortran using unlimited polymorphic variables, by urbanjost.

[M\_stopwatch](https://github.com/urbanjost/M_stopwatch): package for measuring cpu and wall clock execution time by urbanjost, based on [StopWatch](https://math.nist.gov/StopWatch/). It supports the wall clock, CPU clock, and a breakdown of the CPU clock into user and system times.

[progressbar](https://github.com/giambagiamba/progressbar): simple C library for drawing a progress bar on a memory mapped log file, designed to introduce as little overhead as possible, by G-Lorenz and giambagiamba. It is compatible with C++ and Fortran.

## Graphics, Plotting, and User Interfaces

[PlPlotLib](https://github.com/zoziha/PlPlotLib): wrapper for PlPlot inspired by the interface of matplotlib, by zoziha. It is intended to fill the need for rapid feedback while developing numerical simulations, and does not replace more sophisticated packages such as matplotlib or even direct use of PlPlot.

[PyFerret](https://github.com/NOAA-PMEL/PyFerret): Ferret is an interactive computer visualization and analysis environment designed to meet the needs of oceanographers and meteorologists analyzing large and complex gridded data sets, from NOAA/PMEL. It runs on recent Unix and Mac systems, using X windows for display. PyFerret, introduced in 2012, is a Python module wrapping Ferret.

[pnmio](https://github.com/JeffIrwin/pnmio): I/O routines for portable anymap image files (.pbm, .pgm, .ppm), by Jeff Irwin. Currently only output routines are provided.

## Interoperability

[Advanced Options and Tables in Universal Scripting (AOTUS)](https://github.com/haraldkl/aotus): wrapper around the C-API of the Lua scripting language, allowing a convenient usage of Lua scripts as configuration files in Fortran applications.

## Linear Algebra

[LSQR](https://github.com/jacobwilliams/LSQR): Fortran 2008 edition of [LSQR](https://web.stanford.edu/group/SOL/software/lsqr/), a conjugate-gradient type method for solving sparse linear equations and sparse least-squares problems, by Jacob Williams.

[Minimum Split Checkerboard Decomposition (MSCBDECOMP)](https://github.com/CaptainSifff/mscbdecomp): obtain sparse representations of the matrix exponential, by CaptainSifffl. Reference: Minimal Split Checkerboard Method for Exponentiating Sparse Matrices and Its Applications in Quantum Statistical Mechanics, by Che-Rung Lee, SIAM J. Sci. Comput. 35-2 (2013), pp. C143-C171

[ScalapackFx](https://github.com/dftbplus/scalapackfx): modern Fortran 2003 wrappers for the routines of the ScaLAPACK library, by Ben Hourahine et al. Currently mostly the routines related to diagonalization are covered.

[TensorTools](https://github.com/llamm-de/tensor_tools): modern Fortran library for tensor calculus, by Lukas Lamm

## Materials Science

[mef90](https://github.com/bourdin/mef90): reference implementation of the variational approach to fracture, as described in several papers, by Blaise Bourdin

[Nonlinear MetaMaterial MPI Solver (NM^3)](https://github.com/wonnie87/NMCube): codes and example files used in paper, “High-Performance Large-Scale Simulation of Multi-stable Metastructures”, by M. Hwang, C. Scalo, and A. F. Arrieta, to be published.

[Polymer Self-Consistent Field Theory (PSCF)](https://github.com/dmorse/pscf): numerically solves the polymer self-consistent field theory (SCFT) for spatially periodic structures formed by block copolymer melts and mixtures of block copolymers with linear homopolymers and/or small molecule solvents, by David Morse et al.

[sulfur-magma](https://github.com/charlesll/sulfur-magma): predicts of sulfur redox state in magmatic liquids, by Roberto Moretti and Charles Le Losq. Associated paper: Moretti, R., & Ottonello, G. (2003). A polymeric approach to the sulfide capacity of silicate slags and melts. Metallurgical and Materials Transactions B, 34(4), 399–410. [doi.org/10.1007/s11663-003-0066-1](http://doi.org/10.1007/s11663-003-0066-1)

[usrmat\_LS-Dyna\_Fortran](https://github.com/jfriedlein/usrmat_LS-Dyna_Fortran): basics to implement user-defined materials (usrmat, umat, utan) in [LS-Dyna](https://www.lstc.com/products/ls-dyna) with Fortran, by jfriedlein

## Mesh Generation

[High Order Hex-Quad Mesh (HOHQMesh)](https://github.com/trixi-framework/HOHQMesh): generates all-quadrilateral meshes with high-order boundary information, by David A. Kopriva et al.

## Molecular Dynamics

[dl-poly](https://github.com/ccp5UK/dl-poly): general-purpose classical molecular dynamics (MD) simulation software developed at Daresbury Laboratory since 1992. Over the years has been transformed from a replicated memory code to a distributed memory one.

[examples from “Computer Simulation of Liquids”](https://github.com/Allen-Tildesley/examples): code by Michael P. Allen and Dominic J. Tildesley to accompany book. The programs contain some explanatory comments, and are written, in the main, in Fortran 2003/2008.

## Neural Networks and Machine Learning

[Fortran-Torch-Adapter](https://github.com/luc99hen/FTA): integrates a deep learning model into a Fortran environment, by luc99hen

[MlFortran](https://github.com/Etdescamps/MlFortran): library designed for the writing and the development of Complex System models, by Etienne Descamps. It is written in a modern object-oriented Fortran 2008 and has a C and C++ interface. Its aim is to ease the development of complex models in lower level language such as C/C++ and Fortran by providing structures and algorithms that can be found in higher level programming language such as Matlab or Python/SciPy.

[pytorch-fortran](https://github.com/alexeedm/pytorch-fortran): provides Fortran HPC codes with a simple way to use Pytorch deep learning framework, so that Fortran developers can take advantage of rich and optimized Torch ecosystem from within their existing codes.

## Numerical

[Naval Surface Warfare Center (NSWC) Mathematical Library](https://github.com/jacobwilliams/nswc): 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.

[Nonlinear Equation Solver with Modern Fortran (nlesolver-fortran)](https://github.com/jacobwilliams/nlesolver-fortran): basic Newton-Raphson type nonlinear equation solver for dense systems with m functions of n input variables, by Jacob Williams. Uses LAPACK routines (dgesv or dgels) to solve the linear system.

## Optimization

[fmin](https://github.com/jacobwilliams/fmin): derivative-free 1D function minimizer in modern Fortran, by Jacob Williams

[Particle Swarm Optimization (PSO) code in Fortran 95](https://github.com/zaman13/Particle-Swarm-Optimization-Fortran-95): general code that can be used with any fitness function, by Mohammad Asif Zaman

## Parallel Programming

[f77\_zmq](https://github.com/zeromq/f77_zmq): Fortran 77 binding library for ZeroMQ, an open-source universal messaging library, by Anthony Scemama et al.

[galaxy-brain](https://github.com/jeffhammond/galaxy-brain): MPI Fortran type inference, by Jeff Hammond

[GPU programming with OpenMP offloading](https://github.com/csc-training/openmp-offload): exercises and other material for [course](https://events.prace-ri.eu/event/1273/), by Jussi Enkovaara et al.

[rpncomm](https://github.com/mfvalin/rpncomm): MPI-based communication routines for models, by mfvalin

## Partial Differential Equations

[Numerical Analysis Problems and Solutions](https://github.com/Papelbon/numerical-anal): codes to solve boundary value problems and the time-dependent (time-independent) heat equation over a one dimensional region, by Pavel Kureichyk

[pigasus](https://github.com/ratnania/pigasus): generic Python package for solving (system of) Partial Differential Equations, by Ahmed Ratnani. Its core is written in Fortran. The aim of Pigasus is to discretize spatial differential operators, which makes it easier to write different time schemes thanks to the oriented object aspect of Python.

[Sequential Software for the Robust Multigrid Technique](https://github.com/simartynenko/Robust_Multigrid_Technique_2020): code associated with book by S. I. Martynenko. Presents basic concepts of modern numerical methods for mathematical modeling of physical and chemical processes in the computational continuum mechanics (thermal conductivity, chemical hydrodynamics, convective heat transfer, electrodynamics, etc.). [Robust\_Multigrid\_Technique\_2021\_OpenMP](https://github.com/simartynenko/Robust_Multigrid_Technique_2021_OpenMP) is an OpenMP version.

## Particle Physics

[Cyclone](https://github.com/BruceMilton/Cyclone): cyclotron orbit code by Bruce F. Milton. It calculates orbits using both magnetic and electric field maps and is therefore useful for central region design.

[dmfortfactor](https://github.com/ogorton/dmfortfactor): program for experimental WIMP analysis that computes the differential event rate per recoil energy for WIMP-nucleon scattering events, by Calvin Johnson and Oliver Gorton

[GEometry ANd Tracking (geant3)](https://github.com/vmc-project/geant3): simulation software using Monte Carlo methods to describe how particles pass through matter, by Ivana Hrivnacova et al.

## Physics

[aorsa3d](https://github.com/ORNL-Fusion/aorsa3d): solves for the wave electric field and heating in a 3-D stellerator plasma heated by radio frequency waves using an all orders spectral algorithm, by Naoto Tsujii and David L. Green

[Dr. Probe command-line tools (drprobe\_clt)](https://github.com/ju-bar/drprobe_clt): CELSLC is a program to calculate object transmission functions to be used as phase gratings in a multislice algorithm for electron diffraction calculations. MSA is a program to calculate the diffraction of beam of probing electrons through a crystal. MSA is a program to calculate the diffraction of beam of probing electrons through a crystal.

[MagTense](https://github.com/cmt-dtu-energy/MagTense): magnetostatic and a micromagnetism calculation framework, in Fortran with Matlab MEX and Python interfaces, by Kaspar Kirstein Nielsen et al.

[SCENE](https://github.com/PlasmaFAIR/SCENE): tokamak equilibrium solver which can generate equilibria in a variety of file formats, from PlasmaFAIR

[Spherical-Coordinate Implicit Derivatives time-dependent Schroedinger equation (SCID-TDSE)](https://github.com/MBI-Theory/scid-tdse): numerical solution of TDSE for a one-electron atom subject to a laser field, by Serguei Patchkovskii. TDSE is solved in spherical coordinates, with the laser field treated in the velocity-gauge dipole approximation.

[stella](https://github.com/stellaGK/stella): solves the gyrokinetic-Poisson system of equations in the local limit using an operator-split, implicit-explicit numerical scheme, by Denis St-Onge et al. It is capable of evolving electrostatic fluctuations with fully kinetic electrons and an arbitrary number of ion species in general magnetic geometry, including stellarators.

[T-matrix for Electromagnetic Radiation with Multiple Scatterers (TERMS)](https://github.com/nano-optics/terms): simulates the near-field and far-field optical properties of collections of particles, by Dmitri Schebarchov et al. TERMS solves rigorously the Maxwell equations via the superposition T-matrix method, where incident and scattered fields are decomposed into a basis of multipolar electric and magnetic spherical waves.

## Quantum Chemistry and Electronic Structure

[eXternal OPTimizer for quantum chemistry (XOPT)](https://github.com/hokru/xopt): robust optimizer for quantum chemical and semi-empirical method that is suitable for large and complex molecules, by Holger Kruse

[ffr-PWDFT](https://github.com/f-fathurrahman/ffr-PWDFT): poor man’s program in simple Fortran 90 to carry out electronic structure calculations based on plane wave basis set and pseudopotential, by Fadjar Fathurrahman

[ffr-LFDFT](https://github.com/f-fathurrahman/ffr-LFDFT): solves electronic structure problems based on density functional theory (DFT) and Kohn-Sham equations using Lagrange basis functions, by Fadjar Fathurrahman

[Molecular Orbital PACkage (MOPAC)](https://github.com/openmopac/MOPAC): general-purpose semiempirical molecular orbital package for the study of solid state and molecular structures and reactions. The semiempirical Hamiltonians MNDO, AM1, PM3, PM6, RM1, MNDO-d, and PM7 are used in the electronic part of the calculation to obtain molecular orbitals, the heat of formation and its derivative with respect to molecular geometry.

[periodic-NBO](https://github.com/jrschmidt2/periodic-NBO): This projection code is capable of representing any plane-wave bands output by VASP into any user specified Gaussian type orbital basis set. Such an AO representation is required for the subsequent NBO analysis. The code is set up to then output all information necessary for periodic NBO analysis using the code of JRS and BDD.

[Plane Wave Density Functional Theory (PWDFT)](https://github.com/ebylaska/PWDFT): PW-DFT development for [NWChemEx](https://www.exascaleproject.org/research-project/nwchemex/), by Eric Bylaska et al.

[ShirleyForQE](https://github.com/subhayanrc/ShirleyForQE): distribution of the Quantum ESPRESSO suite of codes (ESPRESSO: opEn-Source Package for Research in Electronic Structure, Simulation, and Optimization).

[SkProgs](https://github.com/dftbplus/skprogs): generates Slater-Koster files for the Density Functional Based Tight Binding method (DFTB-method), by Bálint Aradi et al.

[soap\_turbo](https://github.com/libAtoms/soap_turbo): code associated with paper Miguel A. Caro. “Optimizing many-body atomic descriptors for enhanced computational performance of machine learning based interatomic potentials”. Phys. Rev. B 100, 024112 (2019).

[WFNSYM](https://github.com/abelcarreras/WFNSYM): calculates continuous symmetry measures (CSM) of the electronic wave function of molecules, by Abel Carreras and ‪Efrem Bernuz

## Random Number Generation

[FortRAND](https://github.com/llamm-de/fortrand): lightweight random sampling library written in modern Fortran, by Lukas Lamm. It provides a simple interface to the build in Fortran pseudo-random number generator for the generation of uniformly distributed random numbers. In addition, it also provides algorithms for sampling numbers from various other distributions.

## Reactor Physics

[MISA-SCD](https://github.com/MISA-SCD/misa-scd): parallel stochastic cluster dynamics simulation software for reactor structural material, by Chendandan

## Sorting

[M\_sort](https://github.com/urbanjost/M_sort): collection of Fortran procedures that do simple sorts, by urbanjost

## Statistics

[Bayesian Inference for Factor Modeling (BayesFM)](https://github.com/cran/BayesFM): R package with a collection of procedures to perform Bayesian analysis on a variety of factor models, calling Fortran 2003 code, by Rémi Piatek. It includes random number generators for uniform and non-uniform distributions.

[em-fortranbox](https://github.com/elmarmertens/em-fortranbox): econometrics modules by Elmar Mertens

[Optimal Subset CArdinality Regression models (oscar)](https://github.com/Syksy/oscar): R package with underlying Fortran code by T. D. Laajala

[pygslib](https://github.com/opengeostat/pygslib): GSLIB (Geostatistical Software LIBrary) Fortran code wrapped into python

## Strings

[fortran-pcre2](https://github.com/interkosmos/fortran-pcre2): Fortran 2018 ISO\_C\_BINDING interfaces to Perl-compatible Regular Expressions 2 (PCRE2), by interkosmos

## Time Series

[KFAS: R Package for Exponential Family State Space Models](https://github.com/helske/KFAS): provides tools for modelling exponential family state space models such as structural time series, ARIMA models, generalized linear models and generalized linear mixed models, by Jouni Helske et al., with underlying Fortran 95 code

[signal\_subspace](https://github.com/scivision/signal_subspace): 1-D and ensemble signal subspace analysis with methods such as Esprit and RootMusic in Fortran, C, and Python, from scivision, based in part upon the [Spectral Analysis Lib public domain code](https://github.com/vincentchoqueuse/spectral_analysis_project). The core subspace code is written in Fortran 2008 and is called from other languages (Python, C).

[Time Series Analysis with State Space Model (TSSS)](https://github.com/cran/TSSS): R package with underlying Fortran code, used in the book [Introduction to Time Series Modeling with Applications in R, 2nd ed.](https://www.routledge.com/Introduction-to-Time-Series-Modeling-with-Applications-in-R/Kitagawa/p/book/9780367187330), by Genshiro Kitagawa

---

<div class="post-metadata">

**Author:** ![fortran4r](https://avatars.discourse-cdn.com/v4/letter/f/9de0a6/32.png) [@fortran4r](https://fortran-lang.discourse.group/u/fortran4r)\
**Post date:** [December 13, 2021, 6:33pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/6 "2021-12-13T18:33:12Z")

</div>

This is really a great post. Can this list of new Fortran projects be added to the Fortran lang website?

---

<div class="post-metadata">

**Author:** ![msz59](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@msz59](https://fortran-lang.discourse.group/u/msz59)\
**Post date:** [December 13, 2021, 7:10pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/7 "2021-12-13T19:10:32Z")

</div>

What is the criterion for the distinction between Astronomy and Astrophysics? My impression is that is totally arbitrary and random. ALFA and SpectralRadex are both spectral line analysis and got added to different categories. I’d vote for making just one Astronomy category.

---

<div class="post-metadata">

**Author:** ![samharrison7](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/samharrison7/32/3868_2.png) [@samharrison7](https://fortran-lang.discourse.group/u/samharrison7)\
**Post date:** [December 13, 2021, 8:05pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/8 "2021-12-13T20:05:54Z")

</div>

Great list! If you’re interested, I have a Fortran error handling framework which you’re welcome to add: [GitHub - samharrison7/fortran-error-handler: Comprehensive error framework for applications requiring functional and robust error handling, utilising the power of modern object-oriented Fortran.](https://github.com/samharrison7/fortran-error-handler/)

It’s on my to-do list to make it fpm compatible, but it’s not yet I’m afraid.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [December 14, 2021, 12:11pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/9 "2021-12-14T12:11:11Z")

</div>

> [@msz59](#):
>
> What is the criterion for the distinction between Astronomy and Astrophysics? My impression is that is totally arbitrary and random.

It has been a bit arbitrary. Sometimes I have looked at the words used in the project description and the name of the journal in which an associated paper was published. I will combine the categories unless someone thinks a meaningful distinction can be made.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [January 15, 2022, 11:59pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/10 "2022-01-15T23:59:01Z")

</div>

Update since Dec. 13, 2021, full list [here](https://github.com/Beliavsky/Fortran-code-on-GitHub). The astronomy and astrophysics sections have been combined, as suggested.

## Astronomy and Astrophysics

[DUMSES-hybrid](https://github.com/marcjoos-cea/dumses-hybrid): 3D MPI/OpenMP & MPI/OpenACC Eulerian second-order Godunov (magneto)hydrodynamic simulation code in cartesian, spherical and cylindrical coordinates, by Marc Joos

[OrbFit](https://github.com/Fenu24/OrbFit): this version of the OrbFit package, by Marco Fenucci, contains a modified version of the orbit9 integrator. The integrator has been modified to integrate the spin axis dynamics of small asteroids, due to the Yarkovsky–O’Keefe–Radzievskii–Paddack (YORP) effect.

[Optab](https://github.com/nombac/optab): computes opacity based on user-provided chemical equilibrium abundances, and outputs mean opacities as well as monochromatic opacities, by Shigenobu Hirose. Consequently, one can have opacity tables consistent with one’s equation of state.

[POT3D: High Performance Potential Field Solver](https://github.com/predsci/POT3D): computes potential field solutions to approximate the solar coronal magnetic field using observed photospheric magnetic fields as a boundary condition. A version of POT3D that includes GPU-acceleration with both MPI+OpenACC and MPI+OpenMP was released as part of the Standard Performance Evaluation Corporation’s (SPEC) beta version of the SPEChpc™ 2021 benchmark suites.

## Benchmarks

[pi\_examples](https://github.com/UCL-RITS/pi_examples): calculate pi using numerical integration of `1/(1+x**2)`, using Fortran with do concurrent, MPI, OpenMP, OpenACC, and other languages, by Owain Kenway et al.

## Biology and Medicine

[Euplectella\_HPC](https://github.com/giacomofalcucci/Euplectella_HPC): code for paper [Extreme flow simulations reveal skeletal adaptations of deep-sea sponges](https://www.nature.com/articles/s41586-021-03658-1), by Giacomo Falcucci et al., Nature volume 595, pp 537–541 (2021)

## Climate and Weather

[Global Environmental Multiscale Model (GEM)](https://github.com/ECCC-ASTD-MRD/gem): integrated forecasting and data assimilation system developed by the Atmospheric Numerical Prediction Research Section, Meteorological Research Division, of Environment and Climate Change Canada.

[Noah-OWP-Modular](https://github.com/NOAA-OWP/noah-owp-modular): extended, refactored version of the [Noah-MP](https://github.com/NCAR/noahmp/) land surface model, by K. Jennings et al. In order to ease readability, adaptability, and interoperability, the model has been broken out into a series of modules and data types that represent various components of model information and parameters as well as the energy and water balances.

[NCEPLIBS G2](https://github.com/NOAA-EMC/NCEPLIBS-g2): Utilities for coding/decoding GRIB2 messages, by Hang Lei et al. This library contains Fortran 90 decoder/encoder routines for GRIB edition 2, as well as indexing/searching utility routines.

## Computational Chemistry

[QCxMS](https://github.com/qcxms/QCxMS): quantum chemical (QC) based program that enables users to calculate mass spectra (MS) using Born-Oppenheimer Molecular Dynamics (MD), by Jeroen Koopman and Sebastian Ehlert. It is the successor of the QCEIMS program, in which the EI part is exchanged to x (x=EI, CID) to account for the greater general applicability of the program. [Plot Mass Spectra (PlotMS)](https://github.com/qcxms/PlotMS) is an associated plotting program.

## Computational Fluid Dynamics

[EPIC](https://github.com/matt-frey/epic): Elliptical Parcel-in-Cell model for fluid dynamics, by Matt Frey

[LBcuda](https://github.com/copmat/LBcuda): CUDA Fortran code to solve Lattice Boltzmann equations of a multi-component flow interacting with rigid spherical particles, by Fabio Bonaccorso et al.

[ParaTC](https://github.com/GongZheng-Justin/ParaTC): high order finite difference solver for simulations of turbidity currents with high parallel efficiency, by Zheng Gong

[Smoothed Particle Hydrodynamics（SPH)](https://github.com/zoziha/SPH): uses code from the book [Smooth Particle hydrodynamics - A Meshfree Particle Method](https://www.worldscientific.com/worldscibooks/10.1142/5340) as a starting point, by zoziha

[Xoptfoil](https://github.com/montagdude/Xoptfoil): airfoil optimization code using the [Xfoil](https://web.mit.edu/drela/Public/web/xfoil/) aerodynamics engine, by montagdude and Geoff Sokoll

## Earth Science

[ECCOv4-Configurations](https://github.com/ECCO-GROUP/ECCO-v4-Configurations): documentation and model configuration files for official releases of the ECCO version 4 ocean and sea-ice state estimates, by Ou Wang et al. Model configuration files allow users to reproduce the state estimate or conduct new simulation experiments.

[Finite Element Heat and Mass Transfer Code: FEHM](https://github.com/lanl/FEHM): simulates groundwater and contaminant flow and transport in deep and shallow, fractured and un-fractured porous media throughout the US DOE complex. FEHM has been used in projects of national interest including Environmental Remediation of the Nevada Test Site, the LANL Groundwater Protection Program, geologic CO2 sequestration, Enhanced Geothermal Energy (EGS) programs, Oil and Gas production, Nuclear Waste Isolation, and Arctic Permafrost.

[Heavy](https://github.com/jkennedy-usgs/heavy): calculates the change in gravity caused by the change in groundwater storage as predicted by a [MODFLOW](https://github.com/MODFLOW-USGS/modflow6) groundwater-flow model, by Jeff Kennedy. Gravity change is calculated relative to the initial time step at user-specified locations (e.g., measurement locations).

[NanoFASE](https://github.com/NERC-CEH/nanofase): multimedia spatiotemporal model of nanomaterial fate, speciation and bio-uptake, by Sam Harrison and slofts

[Passive and Active Microwave TRANsfer (PAMTRA)](https://github.com/igmk/pamtra): Python/Fortran 90 package to solve the passive and active microwave radiative transfer in a plan parallel horizontally homogeneous atmosphere with hydrometeors, by Davide Ori et al.

[SWMM5 +](https://github.com/CIMM-ORG/SWMM5plus): prototype Fortran 2008 engine for the EPA Storm Water Management Model (SWMM), by Gerardo Andrés Riaño Briceño et al.

## File I/O

[h5fortran-mpi](https://github.com/scivision/h5fortran-mpi): HDF5-MPI parallel Fortran object-oriented interface, from scivision

## Fortran Books and Tutorials

[FortranTip](https://github.com/Beliavsky/FortranTip): short instructional Fortran codes associated with Twitter [@FortranTip](https://twitter.com/fortrantip), by Beliavsky et al.

## General Purpose

[Fortran Error Handler](https://github.com/samharrison7/fortran-error-handler): universal and comprehensive solution for applications requiring functional and robust error handling, utilising the power of modern object-oriented Fortran, by Sam Harrison and KellerV

[M\_kracken95](https://github.com/urbanjost/M_kracken95): Fortran 95 version of the kracken(3f) procedure (and related routines) for command line parsing, by urbanjost

[M\_readline](https://github.com/urbanjost/M_readline): interface to the commonly available C procedure readline(3c). to provide a familiar command history interface for interactive programs, by urbanjost

[paramcard](https://github.com/tueda/paramcard): command-line parameter input made simple, by Takahiro Ueda

## Graphics, Plotting, and User Interfaces

[graffer](https://github.com/jtappin/graffer): interactive tool for generating plots of data and/or functions, by James Tappin. The original graffer was an IDL program. This version provides most of the same functionality in a Fortran program using gtk-fortran and plplot for the GUI and plotting respectively. To display functions gdl (gnudatalanguage) or IDL is required.

[M\_pixel](https://github.com/urbanjost/M_pixel): creates pixel images with a vector-oriented graphics library that emulates a subset of the [M\_draw](https://github.com/urbanjost/M_draw) vector graphics library, by urbanjost. It is supplemented with additional modules that read and write GIF files, including animated GIFs.

## Interoperability

[fortran-cython-examples](https://github.com/Nicholaswogan/fortran-cython-examples): examples for how to wrap Fortran with Cython, by Nick Wogan

[Fortran Unsigned Wrapper (funsignedwrapper)](https://github.com/johandweber/funsignedwrapper): module with functions for accessing unsigned variables in standard Fortran 2008, by Johann Andreas Weber

## Linear Algebra

[SParse matrices in Object-Oriented Fortran (SPOOF)](https://github.com/samharrison7/spoof): modern, object-oriented Fortran library for sparse matrix computations, by Sam Harrison. It largely draws on the SPARSKIT library, adding an object-oriented interface to improve usability.

## Materials Science

[LBsoft](https://github.com/copmat/LBsoft): software for soft glassy emulsion simulations, by Fabio Bonaccorso et al.

## Molecular Dynamics

[Reactive\_PB\_NN\_MD](https://github.com/jmcdaniel43/Reactive_PB_NN_MD): reactive molecular dynamics code based on PB-NN potentials, in which neural networks are utilized in the off-diagonal elements of the Hamiltonian to mediate the chemical reactions, by Sam Delmerico et al. This code uses a custom update algorithm to calculate PME forces for the diabatic states in the Hamiltonian matrix.

[Structure\_factor\_FFT](https://github.com/jmcdaniel43/Structure_factor_FFT): computes structure factors using the particle mesh Ewald approach, by Jesse Gatten McDaniel. Either the electron density structure factor can be computed for X-ray scattering (uses form factors), or the total charge density can be computed (uses input force field charges) to evaluate sum rules

## Numerical

[Bessel-Hankel](https://github.com/TcheL/Bessel-Hankel): examples of the Hankel transformation and calculations of Bessel functions of the 1st kind and 2nd kind, their derivatives of the 1st order and 2nd order, and their zeros, by Tche Liu

[MPFUN2020](https://github.com/jacobwilliams/MPFUN2020): thread-safe arbitrary precision package that enables one to perform floating-point computations (real and complex) to arbitrarily high numeric precision, by making only relatively minor changes to existing Fortran-90 programs (mostly changes to type statements), by David H. Bailey. All basic arithmetic operations and transcendental functions are supported, together with several special functions.

[ToolboxFortran](https://github.com/aledinola/ToolboxFortran): code to replicate basic Matlab functions, sort, interpolate, optimize, find roots, and perform other numerical tasks, by Alessandro Di Nola. Also code to read and write multidimensional arrays.

## Numerical Integration (Quadrature)

[kronrod](https://github.com/jacobwilliams/kronrod): generates [Gauss-Kronrod](https://en.wikipedia.org/wiki/Gauss%E2%80%93Kronrod_quadrature_formula) coefficients, by Jacob Williams

[Quadpack2](https://github.com/jacobwilliams/quadpack): update by Jacob Williams and Sebastian Ehlert of QUADPACK, a FORTRAN subroutine package for the numerical computation of definite one-dimensional integrals

## Ordinary Differential Equations

[rkf45](https://github.com/zoziha/rkf45): Fehlberg fourth-fifth order Runge-Kutta method, adapted by zoziha from the code at Netlib

## Parallel Programming

[CoArray Fortran Framework of Efficient Interfaces to Network Environments (Caffeine)](https://github.com/rouson/caffeine): parallel runtime library that aims to support Fortran compilers with a programming-model-agnostic application binary interface (ABI) to various communication libraries, by Damian Rouson et al. Current work is on supporting the ABI with the GASNet-EX or with POSIX processes.

[Tensor Algebra Library Routines for Shared Memory Systems: Nodes equipped with multicore CPU, NVIDIA GPU, AMD GPU, and Intel Xeon Phi (TAL\_SH)](https://github.com/DmitryLyakh/TAL_SH): implements basic tensor algebra operations with interfaces to C, C++11, and Fortran 90+, by Dmitry I. Lyakh

## Particle Physics

[APFEL: A Parton Distribution Function Evolution Library](https://github.com/scarrazza/apfel): performs DGLAP evolution up to NNLO in QCD and to NLO in QED, both with pole and MSbar masses. The coupled DGLAP QCD+QED evolution equations are solved in x-space by means of higher order interpolations and Runge-Kutta techniques.

[remoll](https://github.com/JeffersonLab/remoll): simulations for the MOLLER Experiment at Jefferson Lab, which proposes to measure the parity-violating asymmetry in electron-electron (Møller) scattering

## Physics

[DASH](https://github.com/ccdc-opensource/dash): versatile and interactive package for solving crystal structures from powder diffraction data, by Jason Christopher Cole et al. DASH solves structures by simulated annealing of structural models to indexed diffraction data and features a helpful wizard to guide the user through the entire structure solution process.

[Phase Monte Carlo radiation transport (pMC)](https://github.com/lewisfish/pMC/): code by Lewis McMillan for paper [Imaging in thick samples, a phased Monte Carlo radiation transfer algorithm](https://www.spiedigitallibrary.org/journals/journal-of-biomedical-optics/volume-26/issue-09/096004/Imaging-in-thick-samples-a-phased-Monte-Carlo-radiation-transfer/10.1117/1.JBO.26.9.096004.full)

[Physical optics propagation through synchrotron radiation beamlines (PHASE)](https://github.com/flechsig/phase): tool for the optical design of synchrotron radiation beamlines, by Uwe Flechsig. It is based on analytic expressions for nonlinear transformation of beam coordinates across optical elements. Documented [here](https://www.helmholtz-berlin.de/forschung/oe/wi/undulators/arbeitsgebiete/phase_en.html)

[signedMCRT](https://github.com/lewisfish/signedMCRT): use of signed distance fields in Monte Carlo Radiative Transfer, by Lewis McMillan. This allows modelling of smooth surfaces without the need to use triangle or similar meshes.

## Quantum Chemistry and Electronic Structure

[A Fortran Electronic Structure Programme (AFESP)](https://github.com/brianz98/A-Fortran-Electronic-Structure-Programme): project based on the [Crawford Group’s C++ Programming Tutorial in Chemistry](https://github.com/CrawfordGroup/ProgrammingProjects), but written in Fortran, by Kirk Pearce et al. The end goal of this project will be performing HF, MP2, CCSD, and CCSD(T), as per the original tutorial, but with additional support for multicore processors (modern CPUs, GPUs).

[EDIpack](https://github.com/QcmPlab/EDIpack): Lanczos-based solver for generic quantum impurity models exploiting distributed memory MPI parallelisation, from QcmPlab. Related is [EDlattice](https://github.com/QcmPlab/EDlattice), a parallel Exact Diagonalization algorithm for interacting electrons on a lattice.

[fold2Bloch](https://github.com/rubel75/fold2Bloch-Wien2k): unfolding of first-principle electronic band structure obtained with WIEN2k DFT-(L)APW code, by Anton Bokhanchuk et al.

[peacemaker](https://github.com/awvwgk/peacemaker): quantum cluster equilibrium theory for applying statistical mechanics to quantum-chemically optimized clusters, forked by Sebastian Ehlert

[qe-gpu](https://github.com/fspiga/qe-gpu): GPU-accelerated Quantum ESPRESSO using CUDA Fortran, by Filippo Spiga

## Random Number Generation

[fortran-splitmix64](https://github.com/DSCF-1224/fortran-splitmix64): [splitmix64 RNG](https://rosettacode.org/wiki/Pseudo-random_numbers/Splitmix64) in Fortran 2008, by DSCF-1224

[xoshiro-fortran](https://github.com/DSCF-1224/xoshiro-fortran): implementation of xoshiro/xoroshiro in Fortran 2008, by DSCF-1224

## Reactor Physics

[PREPRO 2021](https://github.com/IAEA-NDS/PREPRO): collection of 18 module codes which are designed to convert ENDF/B formatted evaluated data from the originally distributed ENDF-6 format to formats in which the data can be used in application codes, by Georg Schnabel et al.

## Statistics

[Multi-Reader Multi-Case Analysis of Variance: MRMCaov](https://github.com/brian-j-smith/MRMCaov): R package with underlying Fortran code for statistical comparison of diagnostic tests - such as those based on medical imaging - for which ratings have been obtained from multiple readers and on multiple cases, by Brian J. Smith

## Strings

[Fregex](https://github.com/14NGiestas/fregex): Perl Compatible Regular Expressions (PCRE) wrapper for Fortran by Ian Giestas Pauli

## Time Series

[wavepack](https://github.com/zoziha/wavepack): computes the wavelet transform of a time series, and significance levels, by zoziha

## Unit Testing

[Fortran Unit Test Framework (FortUTF)](https://github.com/artemis-beta/FortUTF): unit test framework written purely in Fortran to be compatible with as many projects as possible, by Kristian Zarębski

[test-drive](https://github.com/fortran-lang/test-drive): lightweight, procedural unit testing framework based on nothing but standard Fortran, by Sebastian Ehlert and Jeremie Vandenplas. Integration with meson, cmake and Fortran package manager (fpm) is available.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [April 21, 2022, 2:15pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/11 "2022-04-21T14:15:52Z")

</div>

Update since Jan. 15 2022, full list [here](https://github.com/Beliavsky/Fortran-code-on-GitHub). A project may be years old but newly added to the list.

## Astronomy and Astrophysics

[astro-fortran](https://github.com/jacobwilliams/astro-fortran): modern Fortran implementations of standard models used in fundamental astronomy, by Jacob Williams. It is a refactoring of [IAU SOFA](https://github.com/jacobwilliams/IAU_SOFA).

[dStar](https://github.com/nworbde/dStar): computing neutron star structure and evolution, by Edward Brown et al.

## Benchmarks

[Bandwidth Benchmark (Fortran version)](https://github.com/RRZE-HPC/TheBandwidthBenchmark-F90): collection of simple streaming kernels for teaching purposes, from RRZE-HPC. It is heavily inspired by John McCalpin’s [STREAM](https://www.cs.virginia.edu/stream/).

[Compiler-benchmark-suites](https://github.com/quepas/Compiler-benchmark-suites): list of benchmark suites (and some loose kernels) in C and Fortran used in the research related to compilers, program performance, scientific computations etc.

[Julia Syntax: Comparison with Fortran](https://github.com/pnavaro/fortran-vs-julia): simple cheatsheet and some performance comparison for scientific programmers who are interested in discover Julia, by Pierre Navaro

## Biology and Medicine

[EpiDetector](https://github.com/pecanka/epidetector): identifies epistasis (i.e., gene-to-gene interactions) in a genome-wide analysis setting, by Jakub Pecanka. EpiDetector implements several flavors of a two-stage testing approach. The underlying methodology is described in this [paper](https://academic.oup.com/biostatistics/article/18/3/477/2970370?) and [book chapter](https://link.springer.com/protocol/10.1007/978-1-0716-0947-7_6).

## Code Tools

[adjac](https://github.com/pv/adjac): automatic differentiation for generating sparse Jacobians, using Fortran 95 and operator overloading, by Pauli Virtanen

[fazang](https://github.com/yizhang-yiz/fazang): library for reverse-mode automatic differentiation, inspired by Stan/Math library, by Yi Zhang

[Fortran Debug Utilities](https://github.com/plevold/fortran-debug-utils): collection of some utilities useful for debugging code, by Pål Levold

## Computational Chemistry

[Kinetic Monte Carlo of Systems (kmcos)](https://github.com/kmcos/kmcos): lattice based kinetic Monte Carlo with a Python front-end and Fortran back-end, by Max Hoffmann et al.

[MobCal-MPI](https://github.com/HopkinsLaboratory/MobCal-MPI): parallelization of the commonly used MobCal suite to calculate ion mobilities and collision cross sections, by Christian Ieritano and Scott Hopkins

[mstore](https://github.com/grimme-lab/mstore): molecular structure store for testing, from grimme-lab

## Containers and Generic Programming

[fdict](https://github.com/zerothi/fdict): native Fortran 90 dictionary with hash tables for retaining any data-type in a Python-like dictionary, by Nick Papior

[FMacro](https://github.com/hsnyder/FMacro): template preprocessor for Fortran, by Harris Snyder. Aims to address Fortran’s lack of support for generic programming with a simple preprocessor, modeled after some of the language committee’s early ideas for a template language feature, to be included in a future Fortran standard.

[Fortran Implementation of Abstract Types (FIAT)](https://github.com/Fortran-FOSS-Programmers/FIAT): aims to implement various common data structures in Fortran, by Chris MacMackin and gitter-badger. These will be implemented in a generic manner using a container type. This was originally developed in [PolyCon](https://github.com/cmacmackin/PolyCon) but has since been folded into FIAT, with some improvements.

[Fortran Preprocessor Templates for Dynamic Data Structures (FPT-DDS)](https://github.com/alexispaz/FortranTemplates): implements Fortran templates to create dynamic data structures using preprocessor directives, by Sergio Alexis Paz. A data structure for an arbitrary data type can be easily constructed by defining a few preprocessor variables and including the corresponding files distributed in the include folder.

[Fortran Template Library (FTL)](https://github.com/SCM-NV/ftl): generic containers, versatile algorithms, easy string manipulation, and more, by Robert Rüger and Tomáš Trnka. It is heavily inspired by C++'s standard library, especially the part that is commonly referred to as the Standard Template Library (STL).

[Fortran Template Library (FTL)](https://github.com/ffadrique/FTL): object-oriented implementation of generic containers similar to the C++ STL (Standard Template Library), by Fran Martinez Fadrique. Not all elements present in STL are implemented in FTL, yet the documentation in [http://www.cplusplus.com/reference/stl/](http://www.cplusplus.com/reference/stl/) can be used as generic conceptual reference.

[FTObjectLibrary](https://github.com/trixi-framework/FTObjectLibrary): provides a collection of reference counted Fortran 2003 classes to facilitate writing generic object oriented Fortran programs, by David A. Kopriva et al.

[qContainers](https://github.com/darmar-lt/qcontainers): container library for Fortran language. It enables one to store any internal Fortran data type and any derived data type to the container. It implements containers for key/value pairs: tree table and hash table, and containers for objects: list and vector.

## Computational Fluid Dynamics

[Turbulent Flows (T-Flows)](https://github.com/DelNov/T-Flows): computational fluid dynamics program originally developed at Delft University of Technology, the Netherlands. It features second order accurate, unstructured, cell-centered, finite volume discretization of incompressible Navier-Stokes equations with heat transfer and species transport. It is written in Fortran 90 and uses Message Passing Interface (MPI) for parallel execution.

## Earth Science

[CLM-Microbe](https://github.com/email-clm/CLM-Microbe): modeling work within the Ecological Modeling and Integration Laboratory at SDSU. One publication is [Substrate and environmental controls on microbial assimilation of soil organic carbon: a framework for Earth system models](https://onlinelibrary.wiley.com/doi/10.1111/ele.12254).

[Coupled Water Balance and Vegetation Optimality Model (VOM)](https://github.com/schymans/VOM): predicts vegetation water use based on meteorological information, soils and topography only, without the need for prescribing site-specific vegetation properties or calibration against observed fluxes, by Stan Schymanski et al.

[Dynamically Simple Model of Atmospheric Chemical Complexity (DSMACC)](https://github.com/barronh/DSMACC): tropospheric chemistry box model designed to help understand the composition of the troposphere in a flexible and friendly manner. It is written to address a range of problems ranging from calculating the expected concentrations of atmospheric radicals to comparing chemistry schemes.

[Earth System Modeling Framework (ESMF)](https://github.com/esmf-org/esmf): suite of software tools for developing high-performance, multi-component Earth science modeling applications, by Gerhard Theurich et al.

[EddyPro](https://github.com/LI-COR/eddypro-engine): processes eddy covariance data, by LI‑COR Biosciences. It computes fluxes of water vapor (evapotranspiration), carbon dioxide, methane, other trace gases, and energy with the Eddy Covariance method.

[GSFLOW](https://github.com/rniswon/gsflow_v2): coupled Groundwater and Surface-water FLOW model based on the integration of the USGS Precipitation-Runoff Modeling System (PRMS-V) and the USGS Modular Groundwater Flow Model (MODFLOW-2005 and MODFLOW-NWT), by Steve Regan et al.

[JAGURS](https://github.com/jagurs-admin/jagurs): tsunami simulation code solving linear/nonlinear long-wave/Boussinesq equations with/without effects of elastic deformation of the Earth due to tsunami load and vertical profile of seawater density stratification. This code was parallelized by using OpenMP and MPI.

[MCDisp](https://github.com/xin2zhang/MCDisp): surface wave dispersion curve inversion using Monte Carlo sampling. The 1d modal approximation code used to compute dispersion curves is from [Computer Programs in Seismology](http://www.eas.slu.edu/eqc/eqccps.html). This package by xin2zhang provides a Python interface for the original Fortran code.

[MCTomo](https://github.com/xin2zhang/MCTomo): 3D Monte Carlo tomography package using reversible jump McMC method and 3D Voronoi tessellation, by Xin Zhang and Andrew Curtis

[mesoscale Hydrological Model (mHM)](https://github.com/mhm-ufz/mhm): mHM is based on accepted hydrological conceptualizations and is able to reproduce as accurately as possible not only observed discharge hydrographs at any point within a basin but also the distribution of soil moisture among other state variables and fluxes.

[pyOM2](https://github.com/ceden/pyOM2): ocean circulation model with Fortran and Python front end, by ceden

[Routing Application for Parallel computatIon of Discharge (RAPID)](https://github.com/c-h-david/rapid): river network routing model, by Cedric H. David et al. Given surface and groundwater inflow to rivers, this model can compute flow and volume of water everywhere in river networks made out of many thousands of reaches.

[seismo-fortran](https://github.com/anowacki/seismo-fortran): utility modules for dealing with generally-anisotropic elastic constants and other geophysics problems, by Andy Nowacki

[Telewavesim](https://github.com/paudetseis/Telewavesim): teleseismic body wave modeling through stacks of (submarine/anisotropic) layers, by Pascal Audet

[Topo](https://github.com/NCAR/Topo): NCAR global model topography generation software for unstructured grids

## Economics

[firingcosts\_petit2021](https://github.com/borjapetit/firingcosts_petit2021): replication package for the working paper [Aggregate effects of firing costs with endogenous firm productivity growth (2021)](https://borjapetit.github.io/files/papers/petit_firing.pdf) by Borja Petit. The codes use OpenMP for parallelization and GNUplot to generate the graphs.

## File I/O

[flexout](https://github.com/BoldingBruggeman/flexout): Fortran-based flexible output manager with support for NetCDF and text formats, by Jorn Bruggeman et al.

[qfyaml](https://github.com/yantosca/qfyaml): quick Fortran YAML parser, by Bob Yantosca

[Return of JSON for Fortran (rojff)](https://github.com/everythingfunctional/rojff): with an interface inspired by [jsonff](https://gitlab.com/everythingfunctional/jsonff), the data semantics and parser are redesigned to allow for high performance, by Brad Richardson and kmorris

## Finite Elements

[feappv](https://github.com/sanjayg0/feappv): free personal version of the [FEAP](http://projects.ce.berkeley.edu/feap/) (A Finite Element Analysis Program), associated with the book [The Finite Element Method: Its Basis and Fundamentals, 7th ed.](https://www.elsevier.com/books/the-finite-element-method-its-basis-and-fundamentals/zienkiewicz/978-1-85617-633-0), by O.C. Zienkiewicz, R.L. Taylor and J.Z. Zhu, Elsevier, Oxford, 2013

## Fortran Books and Tutorials

[Introduction to Modern Fortran](https://github.com/ARCHER2-HPC/archer2-fortran-intro): aimed at users and developers who know how to program, but have little or no experience in Fortran, and those who may wish to have a refresher in Fortran, by Kevin Stratford

[rocket-science](https://github.com/everythingfunctional/rocket-science): case study in modernizing legacy Fortran software, by Brad Richardson et al. This repository contains a modern mini-application for simulating solid rocket motors using an object-oriented, functional programming style in Fortran 2018, a legacy motor simulator demonstrating the solution of the same governing equations using a procedural programming style in Fortran 77/90, and a refurbished motor simulator demonstrating one modernization path for making the legacy solver object-oriented but without the radical redesign that affords the above purely functional programming style.

[Upgrading-to-Fortran90](https://github.com/nickbrady/Upgrading-to-Fortran90): programs from [Upgrading to Fortran 90](https://link.springer.com/book/10.1007/978-1-4612-2562-1) by Cooper Redwine (1995)

## General Purpose

[argv-fortran](https://github.com/jacobwilliams/argv-fortran): a better get\_command\_argument for Fortran that returns the argument in an allocatable character string, by Jacob Williams

[cpu\_timer](https://github.com/jlokimlin/cpu_timer): Fortran 2008 object-oriented library for computing elapsed CPU time, by Jon Lo Kim Lin

[erloff](https://github.com/everythingfunctional/erloff): errors and logging for Fortran, by Brad Richardson. The basic usage is that a procedure can have intent(out) message and/or error list arguments, or as a component of its return value.

[Fortran Input Parser](https://github.com/nextnano/FortranInputParser): typical application is the reading in of input parameters (input file) and material parameters (database) from two text files for e.g. a scientific code

[Quantities for Fortran (quaff)](https://github.com/everythingfunctional/quaff): makes math with units more convenient, by Brad Richardson et al. This library provides all the functionality necessary to almost treat quantities with units associated with them as though they were just intrinsic real values

[SQLite for Fortran (sqliteff)](https://github.com/everythingfunctional/sqliteff): thin wrapper around the SQLite library, by Brad Richardson. The sqliteff\_\* functions are effectively identical to the sqlite3\_\* functions that would be called from C, but with Fortran intrinsics and types.

[TimerClass](https://github.com/DannyVanpoucke/TimerClass): object-oriented Fortran 2003 timer class, by Danny Vanpoucke

## Graphics, Plotting, and User Interfaces

[Dislin\_x\_y\_plot](https://github.com/andizuend/Dislin_x_y_plot): generates plots from within a Fortran program nearly as easily as with the provided [Dislin](https://www.dislin.de/) “quickplots”, by Andi Zuend. However, unlike the quickplots, this module offers a lot more options for controlling the plot page, axis system and various curve properties. It also makes adding multiple x–y data sets (curves) to a single plot easy.

## Interoperability

[fortran-c-cpp-interface](https://github.com/scivision/fortran-c-cpp-interface): interoperability examples between C, C++ and Fortran, from scivision. Uses the standard C binding to define variable and bind functions/subroutines.

[fpydemo](https://github.com/banskt/fpydemo): demonstration of packaging a command line tool written in Python and Fortran, by Saikat Banerjee. The minimum working example has native Fortran codes compile to a shared library with F2PY, Lapack routines, and uses mpi4py for MPI parallelization.

[Tcl/Tk 8.6 for Fortran 2018](https://github.com/interkosmos/fortran-tcl86): ISO\_C\_BINDING interface library for interoperability with Tcl/Tk 8.6, by interkosmos, allowing the user to embed Tcl into Fortran, create Tcl extensions in Fortran (with Tcl Stubs), access (a subset of) the Tcl/Tk C API from Fortran, use Tcl as an evaluatable configuration file format, and add graphical user interfaces to Fortran programs.

## Interpolation

[lagrange\_interpolator](https://github.com/jlokimlin/lagrange_interpolator): OOP library for 1 and 2-dimensional Lagrange interpolation, by Jon Lo Kim Lin

## Linear Algebra

[amg4psblas](https://github.com/sfilippone/amg4psblas): Algebraic Multigrid Package based on PSBLAS (Parallel Sparse BLAS version 3.7), for the iterative solution of large and sparse linear systems, by sfilippone et al.

[qrupdate-ng](https://github.com/mpimd-csc/qrupdate-ng): library for fast updating of QR, LU, and Cholesky decompositions, by Jaroslav Hajek, updated by M. Koehler and C. Himpe

[STCollection](https://github.com/oamarques/STCollection): contains matrices that have been used for testing LAPACK’s symmetric tridiagonal eigensolvers and bidiagonal SVD algorithms. The collection includes symmetric tridiagonal matrices and (upper) bidiagonal matrices. The original set of matrices in the collection has been described in Marques, Demmel, Voemel, and Parlett, [A Testing Infrastructure for Symmetric Tridiagonal Eigensolvers](https://people.eecs.berkeley.edu/~demmel/Demmel_pubs_07_11_final/J82_Alg880_Testing_Infrastructure_for_LAPACK.pdf), ACM TOMS, 35:2008.

## Numerical

[MPFUN2020](https://github.com/jacobwilliams/MPFUN2020): thread-safe arbitrary precision package that enables one to perform floating-point computations (real and complex) to arbitrarily high numeric precision, by making only relatively minor changes to existing Fortran-90 programs (mostly changes to type statements), by David H. Bailey. All basic arithmetic operations and transcendental functions are supported, together with several special functions. FPM package by Jacob Williams [here](https://github.com/jacobwilliams/mpfun2020-var1)

[pypolsys](https://github.com/nennigb/pypolsys): Python wrapper to [POLSYS\_PLP](https://dl.acm.org/doi/abs/10.1145/347837.347885) Fortran 90 package from Layne T. Watson, Steven M. Wise, Andrew J. Sommese, August, 1998. POLSYS\_PLP is a solver for N complex coefficients polynomial systems of equations in N unknowns by a probability-one, globally convergent homotopy method.

[special\_functions](https://github.com/ameli/special_functions): Cython and Python API for some Fortran and C libraries of special functions, by Siavash Ameli

[Warton Legacy](https://github.com/daoudclarke/wartonlegacy): RSA code scrambling and unscrambling, code generating via robust prime construction, code breaking and secret sharing, by Robert Warton. Routines in number theory and algebraic numbers exist both within programs and separately.

## Ordinary Differential Equations

[dde\_solver](https://github.com/WarrenWeckesser/dde_solver): update by Warren Weckesser of Shampine and Thompson’s DDE\_SOLVER, a Fortran library for delay differential equations

## Optimization

[EMSOL](https://github.com/ERGO-Code/EMSOL): primal simplex linear programming solver

[FortranFilterSLP](https://github.com/ERGO-Code/FortranFilterSLP): for a particular class of non-convex nonlinear programming problems, this implementation of FilterSLP by jajhall uses sequential linear programming to find a (local) optimal solution.

[L-BFGS-B-NS](https://github.com/wilmerhenao/L-BFGS-B-NS): code for thesis by Wilmer Henao, [An L-BFGS-B-NS optimizer for non-smooth functions](https://cs.nyu.edu/~overton/mstheses/henao/msthesis.pdf)

[libdogleg-f](https://github.com/ivan-pi/libdogleg-f): Fortran bindings to libdogleg - a large-scale nonlinear least-squares optimization library, by Ivan Pribec. Currently only the dense optimizer calls are supported.

[Trust Region Derivative-Free algorithm (TRDF)](https://github.com/fsobral/trdf): by F. N. C. Sobral. Reference: P. D. Conejo, E. Karas, and L. G. Pedroso, [A trust-region derivative-free algorithm for constrained optimization](https://www.tandfonline.com/doi/abs/10.1080/10556788.2015.1026968), Optim. Methods Softw., vol. 30, no. 6, pp. 1126–1145, Nov. 2015. Also [vkpss](https://github.com/fsobral/vkpss): algorithm based on sampling approaches for building models in derivative-free trust-region optimization problems, [skinny](https://github.com/fsobral/skinny): derivative-free direct search algorithm for constrained problems, [fird](https://github.com/fsobral/fird): solves general derivative-free constrained optimization problems in which the derivatives of the objective function are not available

## Parallel Programming

[Coarray Collectives](https://github.com/nncarlson/coarray-collectives): module aims to provide various collective parallel procedures for Fortran coarray programs, by Neil Carlson. These are in addition to the several intrinsic collectives introduced in Fortran 2018. Currently the module provides a single procedure, co\_sum\_scan which computes a prefix sum across all images, similar to MPI\_Scan.

[Examples from OpenMP Application Programming Interface](https://github.com/OpenMP/Examples/tree/v5.0.1): examples from [OpenMP Application Programming Interface](https://www.openmp.org/wp-content/uploads/openmp-examples-5-0-1.pdf) in Fortran, C, and C++

[Index Map](https://github.com/nncarlson/index-map): index\_map\_type Fortran module, by Neil Carlson, provides core capabilities that support use of distributed arrays in MPI-based SPMD programs through the index\_map derived type that describes the mapping of an array’s index set to processes. The mapping allows for overlap between processes, and provides collective array gather procedures and scatter reduction procedures associated with that overlap.

[INHDF5](https://github.com/nompelis/INHDF5): various utilities for using the parallel HDF5 library with MPI and Fortran, by Ioannis Nompelis

[INshm](https://github.com/nompelis/INshm): library for accessing chunks of shared memory across process running on a Unix host in Fortran, by Ioannis Nompelis

## Partial Differential Equations

[spherepack](https://github.com/jlokimlin/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.

## Particle Physics

[JHUGen](https://github.com/JHUGen/JHUGen): generator giving parton-level information including full spin and polarization correlations for the processes ab → X → VV (V=Z,W,gamma), VBF, X+JJ, pp → VX, ee → VX

## Plasma Physics

[Flexible Optimized Coils Using Space curves (FOCUS)](https://github.com/PrincetonUniversity/FOCUS): nonlinear optimization code for designing 3D coils. Its sibling, FAMUS, can be use to design permanent magnets.

## Physics

[flex-general](https://github.com/johndeisz/flex-general): applies the Fluctuation Exchange Approximation (FLEX) to study superconductivity and magnetism in multiband tight-binding models, by John Deisz. [flex-stripes](https://github.com/johndeisz/flex-stripes) analyzes charge and magnetic stripe formation in one-band tight-binding models.

[Generalized Spallation Model and Event Generator](https://github.com/lanl/generalized-spallation-model): composed of several sub-models, consisting primarily of the Standard and Modified Dubna Cascade Models (DCM), a Coalescence model, Preequilibrium model, and the GEM2 (Generalized Evaporation Model), being used for simulating compound Evaporation and fission, from Los Alamos National Laboratory.

[IrisFDTD-Academic](https://github.com/IrisFDTD/IrisFDTD-Academic): implements the Finite-Difference Time-Domain (FDTD) method. It is a “toy version” of the [IrisFDTD](https://github.com/IrisFDTD/IrisFDTD) program, a Maxwell’s equations solver in the field of computational electrodynamics for photonics and nanotechnology, by Sergio G Rodrigo.

[Koko Optical Design Software (KODS)](https://github.com/dinosauria123/Koko): raytracing software for the design and analysis of optical imaging and illumination systems. Koko has evolved from the optics design program KDP-2 that was made open-source by its original developer James E. Klein.

[Uppsala Atomistic Spin Dynamics software (UppASD)](https://github.com/UppASD/UppASD): simulation suite to study magnetization dynamics by means of the atomistic version of the Landau-Lifshitz-Gilbert (LLG) equation, by Anders Bergman et al. Related book: [Atomistic Spin Dynamics: Foundations and Applications](https://global.oup.com/academic/product/atomistic-spin-dynamics-9780198788669?cc=us&lang=en&)

## Quantum Chemistry and Electronic Structure

[ddX](https://github.com/ACoM-Computational-Mathematics/ddX): package for continuum solvation models based on the domain decomposition paradigm. It contains a common interface for the three different methods ddCOSMO, ddPCM and ddLPB for the numerical solution to the COSMO, PCM and LPB solvation models, by mnottoli et al.

[Environ](https://github.com/environ-developers/Environ): computational library aimed at introducing environment effects into atomistic first-principles simulations, in particular for applications in surface science and materials design

[Humble Interface for Vasp outputEditing (HIVE4-tools)](https://github.com/DannyVanpoucke/HIVE4-tools): Post-processing tool-set for ab-intio calculations obtained with [VASP](https://www.vasp.at/), by Danny Vanpoucke

[libconeangle](https://github.com/kjelljorner/libconeangle): library for calculating exact ligand cone angles according to the paper Bilbrey, J. A.; Kazez, A. H.; Locklin, J.; Allen, W. D. [Exact Ligand Cone Angles.](https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.23217) Journal of Computational Chemistry 2013, 34 (14), 1189–1197.

[Molecular Orbital KIT (MOKIT)](https://github.com/1234zou/MOKIT): utilities and modules to transfer MOs among various quantum chemistry software packages, by jxzou. In addition, the automr program in MOKIT can set up and run common multi-reference calculations in a block-box way.

[nonadiabatic statistical theory (NAST) package](https://github.com/svarganov/NAST): predicts kinetics of spin-dependent processes, including intersystem crossings, spin-forbidden reactions, and spin crossovers, by Sergey Varganov. The NAST package can calculate the probabilities and rates of transitions between the electronic states of different spin multiplicities.

## Random Number Generation

[M\_random](https://github.com/urbanjost/M_random): module of pseudo random procedures, by urbanjost

## Sorting

[orderpack](https://github.com/urbanjost/orderpack): clone by urbanjost of [Orderpack 2.0](http://www.fortran-2000.com/rank/) from Michel Olagnon that has been restructured so as to be useable as an fpm package. It provides order and unconditional, unique, and partial ranking, sorting, and permutation.

## Statistics

[Bayesian Modeling (BaM)](https://github.com/BaM-tools/BaM): framework aimed at estimating a model using a Bayesian approach and using it for prediction, with a particular focus on uncertainty quantification, by Ben Renard and Emeline Perret

[fsklearn](https://github.com/zhoutengye/fsklearn): simple module for machine learning in Fortran using scikit-learn, by Zhouteng Ye. The module can be used to do training and prediction in Fortran, the training part uses scikit-learn library by calling Python from Fortran, and the prediction part, as it may be called frequently by a Fortran code, is written in Fortran 2003.

[Fortran](https://github.com/nevillejackson/Fortran): programs and subroutine libraries useful in statistical analysis and quantitative genetics. Some are by Neville Jackson and others are collected from the public domain.

[SLICE](https://github.com/ericlindsey/slice): efficient N-Dimensional Monte Carlo inversion algorithm, by ericlindsey

## Strings

[fString](https://github.com/dpettas/fString): contains methods to add strings to values or split the context of a string of more than one substrings or even extract specific values using the pattern method, by Dionisis Pettas. The main idea comes from Python and how uses its strings.

[iso\_varying\_string](https://github.com/everythingfunctional/iso_varying_string): implementation of the ISO\_VARYING\_STRING module as defined in the ISO standard, by Brad Richardson

[parff](https://github.com/everythingfunctional/parff): functional style parser combinator library, by Brad Richardson and Patrick Raynaud. By using a library like this, it is possible to implement parsers for complex formats by composing independent little pieces.

[ryu\_fortran](https://github.com/St-Maxwell/ryu_fortran): Ryu algorithm which converts floating point numbers to decimal strings, by St Maxwell. It is more effective than internal file approach. This implementation is based on the Scala version of Ryu.

[strff](https://github.com/everythingfunctional/strff): library of string functions, by Brad Richardson

## Time Series

[SLICOT System Identification Toolbox](https://github.com/SLICOT/SLICOT-SystemIdentification): includes SLICOT-based MATLAB and Fortran tools for linear and Wiener-type, time-invariant discrete-time multivariable systems. Subspace-based approaches MOESP - Multivariable Output-Error state SPace identification, N4SID - Numerical algorithms for Subspace State Space System IDentification, and their combination, are used to identify linear systems, and to initialize the parameters of the linear part of a Wiener system. See also [SLICOT Basic Systems and Control Toolbox](https://github.com/SLICOT/SLICOT-BasicControl) and [SLICOT Library](https://github.com/SLICOT/SLICOT-Reference).

## Unit Testing

[Testing Or ASsertion Toolkit (TOAST)](https://github.com/thomasms/toast): unit testing library by thomasms and Bob Apthorpe

[Vegetables](https://github.com/everythingfunctional/vegetables): unit testing framework written using functional programming principles, by Brad Richardson. As many of its procedures as possible are marked with the pure keyword, while still allowing the framework to test impure code.

[XFunit](https://github.com/ffadrique/XFunit): object oriented framework to implement unit testing in Fortran 2018, by Fran Martinez Fadrique. Unit testing with XFunit is structured in suites and units. A test suite typically define all test to be implemented for a Fortran module.

---

<div class="post-metadata">

**Author:** ![everythingfunctional](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/everythingfunctional/32/176_2.png) [@everythingfunctional](https://fortran-lang.discourse.group/u/everythingfunctional)\
**Post date:** [April 21, 2022, 3:08pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/12 "2022-04-21T15:08:41Z")

</div>

> [@Beliavsky](#):
>
> [rocket-science](https://github.com/everythingfunctional/rocket-science): case study in modernizing legacy Fortran software, by Brad Richardson et al.

I appreciate the publicity, but I think @rouson should probably be listed as first author on this one.

---

<div class="post-metadata">

**Author:** ![everythingfunctional](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/everythingfunctional/32/176_2.png) [@everythingfunctional](https://fortran-lang.discourse.group/u/everythingfunctional)\
**Post date:** [April 21, 2022, 3:11pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/13 "2022-04-21T15:11:13Z")

</div>

> [@Beliavsky](#):
>
> [Vegetables](https://github.com/everythingfunctional/vegetables): unit testing framework written using functional programming principles, by Brad Richardson.

Could you update this entry to [veggies](https://github.com/everythingfunctional/veggies)/[garden](https://github.com/everythingfunctional/garden)?

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [July 8, 2022, 1:35pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/14 "2022-07-08T13:35:34Z")

</div>

Update since April 21, 2022. Going forward, to save time, I will not be looking for and adding new packages in scientific domains, such as Astronomy and Astrophysics or Earth Science, but I will still periodically scan for new packages to solve numerical problems, such as optimization or quadrature. I will add any projects submitted in issues that people think are noteworthy.

## Astronomy and Astrophysics

[optool](https://github.com/cdominik/optool): computes complex dust particle opacities from the command line, by Carsten Dominik and Ryo Tazaki. It is derived from Michiel Min’s DHS [OpacityTool](https://dianaproject.wp.st-andrews.ac.uk/data-results-downloads/fortran-package/) and also implements Ryo Tazaki’s MMF theory for highly porous aggregates.

[White Dwarf Evolution Code (WDEC)](https://github.com/kim554/wdec): code associated with paper [WDEC: A Code for Modeling White Dwarf Structure and Pulsations](https://iopscience.iop.org/article/10.3847/1538-3881/aab70e) (2018), by Agnès Bischoff-Kim and Michael H. Montgomery

## Code Tools

[AD\_dnSVM](https://github.com/lauvergn/AD_dnSVM): Fortran Automatic Differentiation tool using forward mode for scalars (S), Vectors (V) and Matrices (M), by David Lauvergnat. It has no limit in terms of the number of independent variables (this number is defined at runtime) and can compute up to third derivatives.

[exceptions](https://github.com/arjenmarkus/exceptions): experiment with exceptions in Fortran via a simple preprocessing step, by Arjen Markus

[symengine.f90](https://github.com/symengine/symengine.f90): Fortran wrappers by Rikard Nordgren and Ondřej Čertík of SymEngine, a fast symbolic manipulation library, written in C++

## Compiler Tests

[paranoia](https://github.com/urbanjost/paranoia): tests floating-point arithmetic in a Fortran programming environment, by urbanjost. This is a version of the netlib PARANOIA Fortran programs converted to procedures. They can be embedded into programs such that one can verify the behavior of the options selected to execute a program, or the simple test program can be used to experiment with various compiler selections.

## Containers and Generic Programming

[M\_anything](https://github.com/urbanjost/M_anything): use polymorphism to allow promoting, casting and molding intrinsic types, by urbanjost

## Earth Science

[CFMIP (Cloud Feedbacks Model Intercomparison Project) Observation Simulator Package (COSP)](https://github.com/CFMIP/COSPv2.0): takes the models representation of the atmosphere and simulates the retrievals for several passive (ISCCP, MISR and MODIS) and active (CloudSat (radar) and CALIPSO (lidar)) sensors

## Error Handling

[errstat](https://github.com/degawa/errstat): error status and message handling library for Modern Fortran, by Tomohiro Degawa

[FException](https://github.com/csbrady-warwick/FException): provide an easy but flexible mechanism for handling errors in Fortran, from csbrady-warwick. FException does not try to implement C++/Python style exceptions but has its own approach that is a mixture of classical exceptions with propagating error codes

[Fortran Error Handler](https://github.com/samharrison7/fortran-error-handler): universal and comprehensive solution for applications requiring functional and robust error handling, utilising the power of modern object-oriented Fortran, by Sam Harrison and KellerV

[Fortran Error Handling](https://github.com/SINTEF/fortran-error-handling): makes error handling easier by providing a type, error\_t, to indicate if a procedure invocation has failed, from SINTEF. Errors can be handled gracefully and context can be added while returning up the call stack. It is also possible to programmatically identify and handle certain types or errors without terminating the application. It generate stacktraces along with any error when combined with the [Fortran Stacktrace](https://github.com/SINTEF/fortran-stacktrace) library, which enables generation of stacktraces for Fortran by wrapping the C++ library [backward-cpp](https://github.com/bombela/backward-cpp).

## Expression Parsers

[Fortran Function Parser (ffp)](https://github.com/jacobwilliams/ffp): evaluates a string containing a mathematical expression that can be formed by numbers, brackets, functions, and variables, by Wilton P. Silva and Ivomar B. Soares

[Fortran Parser](https://github.com/jacopo-chevallard/FortranParser): parser of mathematical expressions by hennink and Jacopo Chevallard, based on Roland Schmehl’s [fparser](http://fparser.sourceforge.net/)

[M\_matrix](https://github.com/urbanjost/M_matrix): Fortran callable version of old matlab-like interface, by urbanjost

## Fast Fourier Transform

[fstpack](https://github.com/thkrz/fstpack): library of Fast Stockwell transforms, including CUDA support, by Thomas Kreuzer

## Finite Elements

[Finite Element Multiphysics PARallel solvers (FEMPAR)](https://github.com/fempar/fempar): scientific software for the simulation of problems governed by partial differential equations (PDEs). It provides a set of state-of-the-art numerical discretizations, including finite element methods, discontinuous Galerkin methods, XFEM, and spline-based functional spaces.

## Fortran Books and Tutorials

[Introduction to Fortran Debugging](https://github.com/aperezhortal/fortran_debugging_introduction): reviews the most common types of errors and  
present simple ways to locate and correct those errors without the use of any debugging applications, by Andres Perez Hortal. The common errors are illustrated using simple Fortran applications where the simple debugging techniques are applied.

## Games

[adventure](https://github.com/ghfbsd/adventure): original Fortran version of Adventure by Will Crowther, updated by ghfbsd to work with a modern Fortran compiler

## General Purpose

[Algorithms](https://github.com/andreypudov/algorithms): The Laboratory of Algorithms, by Andrey Pudov.

[Fortran IFS and Arpege Toolkit (FIAT)](https://github.com/ecmwf-ifs/fiat): collection of selected Fortran utility libraries, extracted from the IFS/Arpege model, including drhook for tracing, gstats for timing, parkind to choose precision, mpl for MPI communication, mpi\_serial for MPI dummy symbols compiled into static library, and other routines

[fortran-sleep](https://github.com/scivision/fortran-sleep): OS/compiler-independent “sleep” Fortran subroutine that calls c\_sleep, from scivision

[funx](https://github.com/tranqv/funx): Unix commands from Fortran via calls to C, by tranqv

[reference-counter](https://github.com/sourceryinstitute/reference-counter): object-oriented, extensible reference-counting utility for Fortran, by Damian Rouson et al.

## Graphics, Plotting, and User Interfaces

[Fortran Terminal (fortty)](https://github.com/awvwgk/fortty): create colorful terminal applications in Fortran, by Sebastian Ehlert

[pyplot-fortran](https://github.com/jacobwilliams/pyplot-fortran): generate plots from Fortran using Python’s [matplotlib.pyplot](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html), by jacobwilliams

## Interoperability

[call\_py\_fort](https://github.com/nbren12/call_py_fort): call Python from Fortran, by Noah D. Brenowitz. Operates by pushing Fortran arrays into a global python dictionary, calling Python functions with this dictionary as input, and then reading NumPy arrays from this dictionary back into Fortran.

## Interpolation

[pytspack](https://github.com/noaa-oar-arl/pytspack): Python wrapper by Barry Baker and Zachary Moon of Robert J. Renka’s [TSPACK](http://www.netlib.no/netlib/toms/716), a curve-fitting package based on exponential tension splines with automatic selection of tension factors

[SHEPPACK](https://github.com/vtopt/sheppack): modified Shepard algorithm for interpolation of scattered multivariate data, by William Thacker and Layne Watson. It is [Algorithm 905](https://dl.acm.org/doi/10.1145/1824801.1824812) of ACM Transactions on Mathematical Software.

## Linear Algebra

[Automatically Tuned Linear Algebra Software (ATLAS)](https://github.com/math-atlas/math-atlas): applies empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK.

[Sparse Iterative parallel linear solver](https://github.com/tueboesen/Sparse-iterative-parallel-linear-solver): developed in Fortran/OpenMP by Tue Bosen, and designed with focus on speed especially in parallel. The code uses a block-splitting of the linear system without any overlap. It is intended to be used on matrices which have already been reordered using a reverse Cuthill-Mckee reordering.

## Neural Networks and Machine Learning

[fortran2xgb](https://github.com/christophkeller/fortran2xgb): interface for calling XGBoost from Fortran, by Christoph Keller. The idea is to train an XGBoost model externally, e.g. in Python, then save that model to disk (in the XGBoost internal binary format, e.g. using Booster.save\_model() in Python), and later call the model from Fortran to make a prediction.

## Numerical

[ForTrilinos](https://github.com/trilinos/ForTrilinos): provides Fortran interfaces for the following capabilities of the C++ [Trilinos](https://trilinos.github.io/) library: Parameter lists and XML parsers (through Teuchos); Distributed linear algebra object including sparse graphs, sparse matrices, and dense vectors (through Tpetra); Linear solvers and preconditioners (through Stratimikos, Ifpack2, Belos, MueLu); and Eigen solvers (through Anasazi).

[HOMPACK90](https://github.com/vtopt/hompack90): solves nonlinear systems of equations by homotopy methods. There are subroutines for fixed point, zero finding, and general homotopy curve tracking problems, utilizing both dense and sparse Jacobian matrices, and implementing three different algorithms: ODE-based, normal flow, and augmented Jacobian. Associated paper: [Algorithm 777: HOMPACK90: a suite of Fortran 90 codes for globally convergent homotopy algorithms](https://dl.acm.org/doi/10.1145/279232.279235), by Layne T. Watson et al.

[Jacobi Theta functions for Fortran](https://github.com/fremling/jacobi-theta-function-fortran): by Mikael Fremling

[specfunc-fullerton](https://github.com/arjenmarkus/specfunc-fullerton): library for evaluating special mathematical function, based on the [fn](http://www.netlib.org/fn/index.html) library of Wayne Fullerton, modernised by Arjen Markus. It has Airy functions, modified Bessel functions, beta functions, exponential and logarithmic integrals, gamma functions, inverse cosine and cosine hyperbolic integrals, miscellaneous functions, and Pochhammer symbols

## Optimization

[L-BFGS-B\_wrapper\_f90](https://github.com/snljty/L-BFGS-B_wrapper_f90): Fortran 90 wrapper of L-BFGS-B local minimization routine, by Mingda Zhang

[pdfo\_ref](https://github.com/zequipe/pdfo_ref): reference implementation of Powell’s derivative-free optimization solvers, namely COBYLA, UOBYQA, NEWUOA, BOBYQA, and LINCOA, by Zhang Zaikun and Tom M. Ragonneau. The goal is to implement these solvers in modern languages — first modern Fortran (F2003 or later), and then MATLAB, Python, and probably Julia and R. It will be a faithful implementation, in the sense that the new code will be mathematically equivalent to Powell’s, except for the bug fixing and improvements that we make intentionally.

[VTDIRECT95](https://github.com/vtopt/vtdirect95): implementation of D. R. Jones’ deterministic global optimization algorithm called DIRECT, which is widely used in multidisciplinary engineering design, biological science, and physical science applications, by Layne T. Watson and Masha Sosonkina. The package includes both a serial code and a data-distributed massively parallel code for different problem scales and optimization (exploration vs. exploitation) goals.

[VTMOP: Solver for Blackbox Multiobjective Optimization Problems](https://github.com/vtopt/VTMOP): package containing a robust, portable solver and a flexible framework for solving MOPs, by Tyler Chang and Layne Watson. Designed for for efficiency and scalability to an arbitrary number of objectives, VTMOP attempts to generate uniformly spaced points on a (possibly nonconvex) Pareto front with minimal cost function evaluations.

## Parallel Programming

[Advanced Parallel Programming](https://github.com/csc-training/advanced-parallel-prog): exercise material and model answers for a CSC course. Other CSC courses are [Elements of high-performance computing](https://github.com/csc-training/elements-of-hpc) and [Parallel Programming with MPI](https://github.com/csc-training/mpi-introduction) and [CSC Summer School in High-Performance Computing 2022](https://github.com/csc-training/summerschool).

[CUDA Fortran: Fortran programming on GPU](https://github.com/Koushikphy/Intro-to-CUDA-Fortran): a complete introduction for beginners by Koushik Naskar

## Physics

[LINVARIANT](https://github.com/PaulChern/LINVARIANT): universal model generator in the field of computational condensed matter physics, by Peng Chen et al. Using group theory, it mathematically models physical systems such as lattice, electron, spin and their coupling systems.

[w2dynamics](https://github.com/w2dynamics/w2dynamics): continuous-time hybridization-expansion Monte Carlo code for calculating n-particle Green’s functions of the Anderson impurity model and within dynamical mean-field theory, by Markus Wallerberger et al.

## Random Number Generation

[mersenne-twister-fortran](https://github.com/jacobwilliams/mersenne-twister-fortran): Mersenne Twister pseudorandom number generator, by Jacob Williams

## Sorting

[fsort](https://github.com/snljty/fsort): uses three different sorting methods to maximize speed within memory constraints, based on the size of the array, by Mingda Zhang

## Statistics

[FORtran library for Computational Environmental Systems (FORCES)](https://github.com/mhm-ufz/FORCES): codes for optimization, linear and nonparametric regression, random number generation, numerical integration, and other topics

[M\_datapac](https://github.com/urbanjost/M_datapac): NIST [DATAPAC](https://www.nist.gov/itl/sed/datapac) package modularized and made available as an fpm(1) package, by urbanjost, original code by James Filliben. There are routines for computing various probability functions.

[STooDs](https://github.com/STooDs-tools/STooDs): framework to build and estimate probabilistic models for data varying in space, time or other dimensions, by Ben Renard

## Strings

[mod\_pcreposix](https://github.com/tranqv/mod_pcreposix): module for working (in Unix) with the Perl compatible regular expressions, by tranqv

[stringmod](https://github.com/tcanich/stringmod): Fortran 2008 module by Tom Canich providing string manipulation functions: strtok, ntoken, to\_upper, to\_lower, rev

## Time Series

[sacbook](https://github.com/ghfbsd/sacbook): online analysis methods provided in [The Seismic Analysis Code: A Primer and User’s Guide](https://www.cambridge.org/us/academic/subjects/earth-and-environmental-science/solid-earth-geophysics/seismic-analysis-code-primer-and-users-guide?format=HB&isbn=9781107045453) by George Helffrich, James Wookey, and Ian Bastow

## Unit Testing

[FUnit](https://github.com/andreypudov/funit): lightweight library for writing, administering, and running unit tests in Fortran, by Andrey Pudov. It is an instance of the xUnit architecture and provides Fortran programmers a basic testing functionality with a flexible variety of user interfaces.

---

<div class="post-metadata">

**Author:** ![awvwgk](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/awvwgk/32/154_2.png) [@awvwgk](https://fortran-lang.discourse.group/u/awvwgk)\
**Post date:** [July 9, 2022, 8:20pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/15 "2022-07-09T20:20:06Z")

</div>

A post was split to a new topic: [Fortran bindings for zlib](https://fortran-lang.discourse.group/t/fortran-bindings-for-zlib/3964)

---

<div class="post-metadata">

**Author:** ![piotr](https://avatars.discourse-cdn.com/v4/letter/p/839c29/32.png) [@piotr](https://fortran-lang.discourse.group/u/piotr)\
**Post date:** [July 14, 2022, 7:49pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/16 "2022-07-14T19:49:53Z")

</div>

This is my first post on the forum, so _Hello, folks!_ 😀 I am also new to Fortran coming from Rust (literally, just a couple of days ago). This will probably look more like a programming exercise but I hope you will like my code:

> **[GitHub - piotrbajdek/strengthcalc: command line sport tools: estimate the one...](https://github.com/piotrbajdek/strengthcalc)**
>
> command line sport tools: estimate the one repetition maximum (1RM) - GitHub - piotrbajdek/strengthcalc: command line sport tools: estimate the one repetition maximum (1RM)

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [September 9, 2022, 1:00pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/17 "2022-09-09T13:00:12Z")

</div>

Update since July 8

## Astronomy and Astrophysics

[fastSHT](https://github.com/liuhao-cn/fastSHT): code associated with the paper [Accelerating spherical harmonic transforms for a large number of sky maps](https://arxiv.org/abs/2208.10154), by Chi Tian, Siyu Li, and Hao Liu

## Benchmarks

[ScalSALE](https://github.com/Scientific-Computing-Lab-NRCN/ScalSALE): Scalable SALE Benchmark Framework for Supercomputers, from Scientific Computing Lab NRCN

## Biology and Medicine

[lungsim (Aether)](https://github.com/LungNoodle/lungsim): pulmonary simulation library

## Climate and Weather

[GEOCLIM-dynsoil-steady-state](https://github.com/piermafrost/GEOCLIM-dynsoil-steady-state): computes geographically-distributed chemical weathering rates (along with associated parameters) at steady-state, according to the given climatology (temperature and runoff) for several CO2 levels (2 at least), the topographic slope and the lithology fraction in each grid cell, by Nick Swanson-Hysell and Yuem Park

## Containers and Generic Programming

[ClassicalDataStructuresF95](https://github.com/truongd8593/ClassicalDataStructuresF95): classical data structures such as the singly linked list and stack, by truongd and Sessh�maru

## Computational Fluid Dynamics

[LNS3D compressible Navier-Stokes Solver](https://github.com/sscollis/lns3d): part of the [Flow Physics & Simulation](https://flow-physics-simulation.github.io/flow-physics-simulation/) code suite of fluid mechanics analysis codes to explore linear and nonlinear phenomena, primarily for compressible flows, by S. Scott Collis

## Engineering

[MPM3D-F90](https://github.com/xzhang66/MPM3D-F90): simplified Fortran 90 version of MPM3D that serves as the companion open source code for the book X Zhang, Z Chen, Y Liu. [The Material Point Method - A Continuum-Based Particle Method for Extreme Loading Cases](https://www.elsevier.com/books/the-material-point-method/zhang/978-0-12-407716-4). Academic Press, 2016

## Expression Parsers

[shunting-yard-fortran](https://github.com/14NGiestas/shunting-yard-fortran): small expression parser using shunting yard algorithm, by Ian Giestas Pauli

## File I/O

[SDF\_FORTRAN](https://github.com/Warwick-Plasma/SDF_FORTRAN): library for accessing files in the SDF (self-descibing file) format, by Keith Bennett et al.

[table-for-fortran](https://github.com/aschneeberger/table-for-fortran): table for Fortran working in a similar way as for Astropy or pandas, by aschneeberger. Currently reads and writes csv.

## Finite Elements

[OpenRadioss](https://github.com/OpenRadioss/OpenRadioss): industry-proven analysis solution that helps users evaluate and optimize product performance for highly nonlinear problems under dynamic loadings. For more than 30 years, organizations have used Altair Radioss to streamline and optimize the digital design process, replace costly physical tests with quick and efficient simulation, and speed up design optimization iterations.

## Fortran Books and Tutorials

[compute-course-public](https://github.com/jonaslindemann/compute-course-public): course material for the [COMPUTE course - Scientific Program in Python and Fortran](https://www.compute.lu.se/courses/upcoming-courses/course/article/scientific-computing-with-python-and-fortran/) by Jonas Lindemann

## Games

[SDL77](https://github.com/interkosmos/sdl77): C library for game programming in FORTRAN 77 that provides some glue code to access the software renderer of SDL 1.2, by interkosmos

## General Purpose

[Fommons](https://github.com/ffadrique/Fommons): collection of common low level components to support XFunit, FTL and Frypto, by Fran Martinez Fadrique

[fortran-zlib](https://github.com/interkosmos/fortran-zlib): collection of Fortran 2018 ISO\_C\_BINDING interfaces to selected zlib functions, by interkosmos. Zlib is a lossless data-compression library.

[Frypto](https://github.com/ffadrique/Frypto): cryptographic library by Fran Martinez Fadrique

[mytimer](https://github.com/p-costa/mytimer): simple timing routines to be used in codes which use MPI and possibly CUDA, by Pedro Costa

## Graphics, Plotting, and User Interfaces

[fortran-gdlib](https://github.com/johandweber/fortran-gdlib): Fortran binding for the [GD graphics library](https://libgd.github.io/), by Johann Andreas Weber

## Interoperability

[python\_from\_fortran](https://github.com/halungge/python_from_fortran): examples of calling Python from Fortran using CFFI or [Forpy](https://github.com/ylikx/forpy), by halungge

## Interpolation

[spharm-interp](https://github.com/ahbarnett/spharm-interp): MATLAB and Fortran routines for interpolation from scattered points on the sphere via spherical harmonics, by Alex Barnett et al.

## Linear Algebra

[vanhuffel](https://github.com/ivan-pi/vanhuffel): partial total least squares routines from Sabine Van Huffel

## Mesh Generation

[gmsh-fpm](https://github.com/gnikit/gmsh-fpm): provides access to the Fortran F2018 API of Gmsh, examples of how to use the Fortran API, and a Fortran compiled executable for Gmsh itself, by gnikit

## Neural Networks and Machine Learning

[fortran-ml-bridge](https://github.com/Cambridge-ICCS/fortran-ml-bridge): code and examples on directly calling Tensorflow / Pytorch / Keras ML models from Fortran, by Athena Elafrou et al.

## Numerical

[fctables](https://github.com/mfontanaar/fctables): computes FC-Gram tables, by Mauro Fontana and sabian2008, using the MPFUN2020 library for arbitrary precision floating point arithmetic. The algorithm is described in the paper [Fourier continuation method for incompressible fluids with boundaries](https://www.sciencedirect.com/science/article/abs/pii/S0010465520302265?via%3Dihub)

[FMPFR](https://github.com/tkoenig1/FMPFR): Fortran binding to the [GNU MPFR Library multi-precision library](https://www.mpfr.org/), by Thomas Koenig

[NumFort](https://github.com/AnthonyKalaitzis/NumFort): numerical library for FORTRAN that includes quadpack, lapack, PLplot and Matplotlib source code, by Anthony Kalaitzis and Curtis Abell. It enables the use of handy mathematical macros such as linspace.

## Optimization

[Generalized PROgram for OPTimization (GPROPT)](https://github.com/iarlopes/GPROPT): generic tool to minimize a user-defined objective function, by Igor A. R. Lopes. Several classical methods are implemented along with a genetic algorithm.

[J](https://github.com/juhalappi/J): software for mathematical and statistical computations, with special reference to linear programming in forestry, by Juha Lappi

## Parallel Programming

[first-timer](https://github.com/p-costa/first-timer): simple timing routines to be used in codes which use MPI and possibly CUDA/OpenACC using NVTX markers, by Pedro Costa

[OpenMP\_fortran\_codes](https://github.com/kuldeep-tolia/OpenMP_fortran_codes): basic OpenMP codes written in Fortran, by Kuldeep Tolia

[RookieHPC](https://github.com/rookiehpc/rookiehpc.github.io): web site covers major technologies in High-Performance Computing (HPC), such as OpenMP and MPI, providing documentation along with examples, as well as exercises and sometimes tools

[standalone\_mpi\_f08\_module](https://github.com/jeffhammond/standalone_mpi_f08_module): attempt to implement MPI Fortran 2018 support, by Jeff Hammond

## Plasma Physics

[RAYS](https://github.com/ORNL-Fusion/RAYS): plasma ray tracing code from ORNL-Fusion. The primary objective is to provide a starting point for discussion of what a modern ray tracing code, built on a green-field site might look like.

## Physics

[Numerical Electromagnics Code (NEC2)](https://github.com/yeti01/nec2): UNIX version of NEC2 Antenna Modeler adapted for use with modern computers.

## Quantum Chemistry and Electronic Structure

[VALENCE](https://github.com/VALENCE-software/VALENCE): Massively Parallel Implementation of Variational Subspace Valence Bond, by Graham D. Fletcher et al.

[Without Empty STates (WEST)](https://github.com/west-code-development/West): massively parallel software for large scale electronic structure calculations within many-body perturbation theory, by Marco Govoni et al.

## Random Number Generation

[fortran-xorshift-64-star](https://github.com/Jonas-Finkler/fortran-xorshift-64-star): xorshift64\* random number generator for uniform and normal variates, by Jonas-Finkler

## Reactor Physics

[Stochastic Calculator Of Neutron transport Equation (SCONE)](https://github.com/CambridgeNuclear/SCONE): object-oriented Monte Carlo particle transport code for reactor physics, from CambridgeNuclear. It is intended as an accessible environment for graduate students to test and develop their ideas before contributing them to more established codes suitable for design calculations.

## Statistics

[ecgmm\_fortran](https://github.com/minzastro/ecgmm_fortran): Error-Corrected Gaussian Mixture Model algorithm, by Alexey Mints. Based on the paper Hao, J., Koester, B. P., Mckay, T. a., Rykoff, E. S., Rozo, E., Evrard, A., Annis, J., et al. (2009). [Precision Measurements of the Cluster Red Sequence Using an Error-Corrected Gaussian Mixture Model](https://iopscience.iop.org/article/10.1088/0004-637X/702/1/745). The Astrophysical Journal, 702(1), 745–758.

[npregfast](https://github.com/sestelo/npregfast): R package with Fortran code for obtaining nonparametric estimates of regression models with or without factor-by-curve interactions using local polynomial kernel smoothers or splines, by Marta Sestelo

[tweedie](https://github.com/PeterKDunn/tweedie): R code for Tweedie density calculations, including Fortran 77, by Peter K. Dunn

## Time Series

[EnKF\_analysis](https://github.com/geirev/EnKF_analysis): EnKF (Ensemble Kalman Filter) analysis routines in Fortran 90, by Geir Evensen. Stochastic and SQRT formulations with subspace inversion. There is a related [book](https://enkf.nersc.no/).

## Unclassified

[strengthcalc](https://github.com/piotrbajdek/strengthcalc): strengthcalc employs mathematical formulae from Mayhew et al. (1992) and Wathen (1994) to estimate the maximum weight one can lift in a single repetition of a physical exercise (known as 1RM: one repetition maximum), by Piotr Bajdek

---

<div class="post-metadata">

**Author:** ![pcosta](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/pcosta/32/5504_2.png) [@pcosta](https://fortran-lang.discourse.group/u/pcosta)\
**Post date:** [September 9, 2022, 1:27pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/18 "2022-09-09T13:27:25Z")

</div>

Thanks!

I renamed:

> [@Beliavsky](#):
>
> [mytimer](https://github.com/p-costa/mytimer): simple timing routines to be used in codes which use MPI and possibly CUDA, by Pedro Costa

to:

> [@Beliavsky](#):
>
> [first-timer](https://github.com/p-costa/first-timer): simple timing routines to be used in codes which use MPI and possibly CUDA/OpenACC using NVTX markers, by Pedro Costa

(GitHub redirects automatically the first one to first-timer)

So you could remove mytimer if you wish!

Thanks for keeping up with this nice list!

---

<div class="post-metadata">

**Author:** ![certik](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/certik/32/4_2.png) [@certik](https://fortran-lang.discourse.group/u/certik)\
**Post date:** [September 29, 2022, 9:14pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/19 "2022-09-29T21:14:07Z")

</div>

@piotr welcome to the forum, and thanks for the link!

---

<div class="post-metadata">

**Author:** ![piotr](https://avatars.discourse-cdn.com/v4/letter/p/839c29/32.png) [@piotr](https://fortran-lang.discourse.group/u/piotr)\
**Post date:** [September 30, 2022, 2:09pm UTC](https://fortran-lang.discourse.group/t/new-fortran-projects/2000/20 "2022-09-30T14:09:11Z")

</div>

Thanks, @certik! The truth is that I’ve actually switched away from Fortran. I’ve rewritten my program in Rust because of (1) a _much_ better error handling and (2) ease of distribution via [crates.io](http://crates.io), and declared the Fortran version as deprecated. However, as my tiny Fortran program is included on this list, and even has some clicks and likes, I think I’ll unarchive it, improve the code (subdivide it into modules and add functions) and try to maintain it in parallel with the Rust version. 😉

[Next page](https://fortran-lang.discourse.group/t/new-fortran-projects/2000.md?page=2)
