Resources

A curated collection of software packages, libraries, and tools I use or recommend across CFD, hypersonic & reacting flows, discontinuity fitting, machine learning for physics, HPC, meshing, and scientific computing.

Thermodynamics & Transport
  • KAPPA C++
    Kinetic Approach to Physical Processes in Atmospheres — multi-temperature transport coefficients for partially-ionised gas mixtures.
  • Cantera C++/Python
    Chemical kinetics, thermodynamics, and transport processes. Widely used for combustion and reacting-flow simulations.
  • Mutation++ C++
    Multicomponent Thermodynamic And Transport in C++. Rigorous Chapman-Enskog transport for high-temperature and plasma flows.
  • CEA / STANJAN multi
    NASA's Chemical Equilibrium with Applications — standard reference for equilibrium composition and thermodynamic properties at high temperatures.
  • REFPROP NIST
    NIST Reference Fluid Thermodynamic and Transport Properties. The authoritative source for real-gas equations of state.
  • CoolProp Python/C++
    Open-source thermodynamic property library for 120+ fluids. Excellent Python interface and REFPROP-compatible calls.
CFD Solvers — General
  • OpenFOAM C++ MPI
    The reference open-source CFD toolbox. Finite-volume, unstructured, covers incompressible to reacting multi-phase flows. Vast community and solver library.
  • SU2 C++ MPI
    Multiphysics simulation and design software with discrete adjoint for aerodynamic optimisation and shape design.
  • COOLFluiD C++ MPI
    HPC platform for multi-physics simulations developed at VKI. Supports aerodynamics, MHD, radiation, and atmospheric re-entry.
  • Code_Saturne C/Fortran MPI
    EDF's open-source solver for incompressible, weakly-compressible, and thermal flows. Robust RANS and LES turbulence models.
  • Palabos C++
    Lattice Boltzmann solver from the University of Geneva. Modular and suited for complex geometry and porous-media flows.
  • MFC Fortran GPU
    Exascale compressible multiphase flow solver with NVIDIA and AMD GPU acceleration. 2025 Gordon Bell Prize finalist.
  • T-Flows Fortran MPI
    Turbulent Flows CFD code originally from TU Delft. LES/DNS capability on unstructured meshes.
CFD Solvers — Compressible & Hypersonic
  • UCNS3D Fortran MPI
    High-order unstructured compressible Navier-Stokes 3D solver. WENO/TENO schemes for shock-dominated flows.
  • Eilmer D/Python
    Transient, compressible flow solver from the University of Queensland. Designed for hypersonic and high-enthalpy flows; supports thermally-perfect and equilibrium gas models.
  • MPI-AMRVAC Fortran MPI
    Parallel adaptive mesh refinement framework for hyperbolic PDEs. Hydrodynamics and MHD modules with AMR shock-capturing.
  • hy2Foam C++
    Two-temperature open-source CFD model for hypersonic reacting flows built on OpenFOAM. Validated for non-equilibrium aerothermodynamics.
  • AMROC / AMREX C++ GPU MPI
    AMReX block-structured adaptive mesh refinement framework from LBNL. GPU-ready, exascale-capable, widely used in combustion and reacting flow codes.
  • WaterLily.jl Julia GPU
    Fast and simple fluid simulator in Julia. Immersed-boundary approach; runs on CPU and GPU with identical code.
Spectral, FEM & PDE Frameworks
  • Dedalus Python
    Flexible framework for solving PDEs with spectral methods. Supports Chebyshev, Fourier, and Jacobi bases; ideal for stratified/rotating flows.
  • Nek5000 / NekRS Fortran/C++ GPU
    Spectral-element DNS/LES code from Argonne National Laboratory. NekRS is the GPU-accelerated rewrite targeting exascale machines.
  • FEniCSx / Dolfin Python/C++
    Automated finite element framework. Expressive variational formulation via UFL; supports complex multiphysics and adjoint problems.
  • deal.II C++ MPI
    High-performance finite element library with AMR, hp-adaptivity, and large-scale parallel linear algebra via Trilinos/PETSc.
  • FourierFlows.jl Julia
    Pseudospectral PDE solver on periodic domains. GPU-ready; excellent for 2D turbulence and geophysical fluid dynamics.
Discontinuity Fitting
  • UnDiFi-2D Fortran
    Unstructured Discontinuity Fitting code in 2D. Reference implementation for fitting-based shock-boundary treatment on unstructured meshes.
  • OF_DBF C++
    OpenFOAM-based discontinuity boundary fitting library for general reacting compressible flows.
  • Fortran DF Framework Fortran MPI/OpenMP
    Modern Fortran discontinuity fitting framework supporting structured/unstructured meshes, Euler, Navier-Stokes and MHD physics, and hybrid parallelism.
ML & Physics-Informed Methods
  • DeepXDE Python
    Scientific machine learning library for PINNs and operator learning. Supports TensorFlow, PyTorch, JAX, and PaddlePaddle backends.
  • NVIDIA Modulus Python GPU
    AI-driven multi-physics simulation framework from NVIDIA. PINNs, neural operators, FNO, and physics-constrained surrogate models.
  • JAX Python GPU/TPU
    Composable function transformations (grad, jit, vmap, pmap) for high-performance numerical computing. Foundation for a growing ML-physics ecosystem.
  • Diffrax Python
    Differentiable ODE/SDE/CDE solvers in JAX. Ideal for neural ODEs and adjoint-based training of dynamical models.
  • neuraloperator Python
    Fourier Neural Operator (FNO) and related operator-learning architectures. Surrogate models for PDE solutions mapping function spaces.
  • GraphCast / GNNs for CFD Python
    Graph neural network architectures for mesh-based physics simulation. Increasingly applied for data-driven turbulence closure and flow prediction.
  • PyTorch Python GPU
    Leading deep learning framework. Strong ecosystem for custom physics loss functions, adjoint training, and surrogate CFD workflows.
  • scikit-learn Python
    Comprehensive classical ML toolkit. Useful for regression/classification in CFD data analysis, PCA of flow fields, and clustering of shock topologies.
Scientific Computing Libraries
  • PETSc C/C++/Fortran MPI
    Portable, extensible toolkit for parallel scientific computation. The workhorse for large-scale linear and non-linear solvers in CFD.
  • Trilinos C++ MPI
    Collection of reusable scientific software libraries from Sandia. Linear algebra (Tpetra/Epetra), solvers (Belos), preconditioners (MueLu/ML), and more.
  • hypre C MPI
    High-performance preconditioners and solvers including algebraic multigrid (BoomerAMG). Used inside PETSc and standalone for elliptic CFD sub-problems.
  • NumPy / SciPy Python
    Foundation of scientific Python. SciPy adds ODE integrators, sparse linear algebra, special functions, and optimisation essential for CFD post-processing.
  • CuPy Python GPU
    GPU-accelerated NumPy-compatible array library (CUDA/ROCm). Drop-in replacement for NumPy in performance-critical post-processing pipelines.
  • OpenBLAS / LAPACK Fortran/C
    Optimised basic linear algebra subroutines and eigensolvers. The numerical backbone of virtually every CFD solver.
  • FFTW C MPI
    Fastest Fourier Transform in the West. MPI-parallel version used in spectral flow solvers and turbulence spectrum analysis.
  • pyCGNS / cgnslib Python/C
    Python and C interfaces to the CFD General Notation System. For reading, writing, and converting CFD mesh and solution data.
HPC & Parallel Computing
  • Open MPI MPI
    High-performance MPI implementation. Standard choice for inter-node communication in distributed-memory CFD simulations.
  • OpenMP multi
    Shared-memory parallel programming API. Routinely combined with MPI in hybrid parallelisation of CFD codes.
  • CUDA Toolkit GPU
    NVIDIA's parallel computing platform and API. Essential for GPU-accelerated CFD solvers, ML training, and large-scale linear algebra.
  • Spack multi
    HPC package manager from LLNL. Indispensable for reproducible environment management on clusters and supercomputers.
  • Zoltan / PT-Scotch C/C++ MPI
    Graph and mesh partitioning tools for load-balanced parallel CFD. PT-Scotch and ParMETIS are the standard partitioners used by most CFD frameworks.
  • HDF5 / NetCDF Standard
    Parallel I/O libraries for large scientific datasets. HDF5 is the storage backend for many CFD post-processing and restart workflows.
Meshing
  • Gmsh C++/Python
    Full-featured 3D finite element mesh generator with CAD kernel, scripting API, and post-processing. The open-source standard for research meshes.
  • SALOME Python/C++
    Open-source platform integrating CAD (GEOM), meshing (SMESH), and physics solver coupling. Strong GUI and Python scripting interface.
  • cfMesh C++
    Robust automatic volume meshing library integrated with OpenFOAM. Delivers quality hex-dominant and polyhedral meshes on complex geometries.
  • enGrid C++
    Qt-based mesh generation tool with automatic prismatic boundary layer insertion for Navier-Stokes simulations. Outputs OpenFOAM and SU2 format.
  • TetGen C++
    Quality tetrahedral mesh generator and Delaunay mesh refinement. Widely used for unstructured 3D volume meshes in CFD and FEM.
  • Triangle C
    Constrained Delaunay triangulation and quality 2D mesh generation by J. R. Shewchuk. Reference tool for 2D unstructured mesh research.
  • PyMesh Python/C++
    Geometry processing library for Python. Wraps Triangle, TetGen, and CGAL; useful for mesh pre-processing and repair pipelines.
  • CGAL C++
    Computational Geometry Algorithms Library. Rigorous implementations of Delaunay triangulation, mesh generation, and surface remeshing.
  • meshio Python
    Reads and writes mesh data in 40+ formats (Gmsh, VTK, CGNS, Abaqus, etc.). Essential for cross-code mesh conversion in CFD workflows.
Visualization & Post-processing
  • ParaView Python/C++ MPI
    The open-source standard for large-scale scientific visualisation. Server-client architecture enables in-situ and remote post-processing of HPC data.
  • VisIt Python/C++ MPI
    LLNL's interactive parallel visualisation and graphical analysis tool. Strong support for AMR data and large-scale turbulence datasets.
  • Tecplot 360
    CFD-focused visualisation with automated PyTecplot scripting, precise contour control, and high-quality publication graphics.
  • Matplotlib Python
    2D plotting library for Python. Combined with NumPy and SciPy, the standard tool for CFD data analysis, spectral plots, and convergence histories.
  • Plotly / Dash Python
    Interactive visualisation library. Dash enables browser-based dashboards for CFD parameter sweeps and surrogate model exploration.
  • PyVista Python
    3D visualisation for Python built on VTK. Enables scriptable mesh inspection, streamline tracing, and interactive Jupyter rendering of CFD fields.
  • VTK C++/Python
    Visualisation Toolkit — the algorithmic backbone of ParaView and PyVista. Direct access to volume rendering, iso-surfacing, and streamline algorithms.
Data Formats & Standards
  • CGNS Standard
    CFD General Notation System — the community standard for storing and exchanging CFD mesh and solution data. Supported by most major solvers.
  • HDF5 Standard
    Hierarchical Data Format for large, complex, heterogeneous data. Underpins CGNS and many restart/checkpoint formats for HPC simulations.
  • VTK XML Formats Standard
    VTK's XML-based unstructured and rectilinear grid formats (.vtu, .vts). The native output of OpenFOAM's post-processing and most modern solvers.
  • NetCDF Standard
    Self-describing array data format common in geophysical and atmospheric CFD. Supports parallel I/O via PnetCDF and HDF5 backends.
  • meshio Python
    Universal mesh format converter. Bridges CGNS, Gmsh, VTK, Abaqus, MEDIT, and 35+ other formats in a single Python package.
Optimisation & Uncertainty Quantification
  • DAFoam Python/C++
    Discrete Adjoint with OpenFOAM for high-fidelity MDO. Gradient-based aerodynamic shape optimisation with parallel adjoint sensitivity computation.
  • OpenTURNS Python/C++
    Industrial framework for uncertainty treatment, reliability analysis, and sensitivity analysis (Sobol indices) for complex simulation codes.
  • SMT Python
    Surrogate Modeling Toolbox. Kriging/GP, RBF, and polynomial chaos surrogates for CFD design-space exploration and aerodynamic optimisation.
  • BoTorch / Ax Python ML
    Bayesian optimisation framework built on PyTorch. Used for sample-efficient parameter tuning of computationally expensive CFD simulations.
  • scikit-optimize Python
    Sequential model-based optimisation in Python. Gaussian Process and Random Forest surrogate methods for blackbox CFD objective minimisation.