New Fortran projects

Update since March 12, full list here

Astronomy and Astrophysics

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

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

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

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

Biology and Medicine

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

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

Climate and Weather

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

Compiler Tests

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

Computational Chemistry

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

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

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

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

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

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

Containers and Generic Programming

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

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

Computational Fluid Dynamics

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

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

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

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

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

Dates and Times

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

Earth Science

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

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

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

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

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

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

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

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

HAZ: Probabilistic Seismic Hazard Analysis, by Norm Abrahamson

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

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

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

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

Error Handling

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

Fast Fourier Transform

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

File I/O

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

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

Finite Elements

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

Fortran Books and Tutorials

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

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

Games

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

General Purpose

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

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

Interoperability

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

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

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

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

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

Linear Algebra

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

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

Materials Science

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

Mesh Generation

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

Molecular Dynamics

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

Neural Networks and Machine Learning

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

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

Numerical

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

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

Optimization

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

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

Parallel Programming

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

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

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

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

Partial Differential Equations

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

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

Plasma Physics

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

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

Physics

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

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

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

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

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

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

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

Quantum Chemistry and Electronic Structure

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

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

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

Random Number Generation

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

Statistics

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

Strings

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

Time Series

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

Unit Testing

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

6 Likes