fortranpack: A Modern Fortran Numerical & Scientific Programming Package
This is an experiment. It is basically just a Fortran Package Manager fpm.toml manifest file that uses the following packages:
| Library | Info | Version | Description |
|---|---|---|---|
| argv-fortran | A better get_command_argument for Fortran |
||
| bspline-fortran | Multidimensional B-Spline Interpolation of Data on a Regular Grid | ||
| carlson-elliptic-integrals | Carlson symmetric forms of elliptic integrals | ||
| conmax | Modern Fortran CONMAX Optimization Method for general nonlinearly constrained function minimization | ||
| conmin | Modern Fortran CONMIN Optimization Method | ||
| csv-fortran | Read and Write CSV Files Using Modern Fortran | ||
| daglib | Directed Acyclic Graphs With Modern Fortran | ||
| ddeabm | Modern Fortran implementation of the DDEABM Adams-Bashforth algorithm | ||
| dop853 | Modern Fortran Edition of Hairer's DOP853 ODE Solver | ||
| finterp | Multidimensional (1D-6D) Linear and Nearest-Neighbor Interpolation with Modern Fortran | ||
| fortran-mach | Modern Fortran Machine Constants Module (r1mach, d1mach, i1mach) | ||
| fortran-search-and-sort | Searching and sorting with modern Fortran | ||
| json-fortran | A Modern Fortran JSON API | ||
| lbfgsb | Modern Fortran Refactoring of L-BFGS-B Nonlinear Optimization Code | ||
| mersenne-twister-fortran | Mersenne Twister pseudorandom number generator for Fortran | ||
| nlesolver-fortran | Nonlinear Equation Solver with Modern Fortran | ||
| NumDiff | Modern Fortran Numerical Differentiation Library | ||
| optgra | Modern Fortran edition of OPTGRA optimization algorithm from ESA | ||
| pchip | Modern Fortran Piecewise Cubic Hermite Interpolation Package | ||
| pikaia | Modern Fortran Edition of the Pikaia Genetic Algorithm | ||
| polyroots-fortran | Modern Fortran library for finding the roots of real and complex polynomial equations | ||
| popen-fortran | Simple Fortran module for popen | ||
| psqp | Modern Fortran Edition of PSQP (Sequential quadratic programming algorithm) | ||
| pyplot-fortran | For generating plots from Fortran using Python's matplotlib.pyplot |
||
| quadpack | Modern Fortran QUADPACK Library for 1D numerical quadrature | ||
| quadrature-fortran | 1D-6D Adaptive Gaussian Quadrature with Modern Fortran | ||
| regridpack | Modern Fortran Edition of REGRIDPACK | ||
| rklib | Fixed and variable-step Runge-Kutta solvers in Modern Fortran | ||
| roots-fortran | A modern Fortran library for finding the roots of continuous scalar functions of a single real variable, using derivative-free methods. | ||
| simulated-annealing | Simulated Annealing with Modern Fortran | ||
| slsqp | Modern Fortran Edition of the SLSQP Optimizer | ||
| splpak | Modernized SPLPAK library for multidimensional least-squares cubic spline fitting | ||
| stringsort | Modern Fortran sorting routines for strings | ||
| uuid-fortran | Fortran module for generating UUIDs |
To use this, just add this to your project's fpm.toml file:
[dependencies]
fortranpack = { git="https://github.com/jacobwilliams/fortranpack.git" }By default, the library is built with double precision (real64) real values. Explicitly specifying the real kind can be done using the following preprocessor flags:
| Preprocessor flag | Kind | Number of bytes |
|---|---|---|
REAL32 |
real(kind=real32) |
4 |
REAL64 |
real(kind=real64) |
8 |
REAL128 |
real(kind=real128) |
16 |
For example, to build a quad precision version of the library, use:
fpm build --profile release --flag "-DREAL128"
- A Modern Fortran Scientific Programming Ecosystem, degenerateconic.com, Oct 12, 2022.
- Packs, degenerateconic.com, Feb 08, 2022.
- Fortran Standard Library
