Skip to content

lento234/awesome-fluid-dynamics

Repository files navigation

Awesome Links CI License Last commit

Awesome

A curated list of repositories related to fluid dynamics.

Please send pull requests or raise issues to improve this list.

Contents

Educational

Notebooks

  • barbagroup/CFDPython - A sequence of Jupyter notebooks featuring the "12 Steps to Navier-Stokes". Python Jupyter
  • gpeyre/numerical-tours - Numerical Tours of Signal Processing and other materials. MATLAB Python Jupyter julia R
  • jfavre/Visualization-training - The material used for the Scientific Visualization course, organized online by the Swiss National Supercomputing Centre (CSCS) on May 17-18, 2021. Python Jupyter

Lecture Series

Books

  • Brunton, S., & Kutz, J. (2019). Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control. Cambridge: Cambridge University Press. DOI 📝 Book 📖
  • Castro, I. P., & Vanderwel, C. (2021). Turbulent Flows: An Introduction. IOP Publishing. DOI 📝 Book 📖
  • Thuerey, N., Holl, P., Mueller, M., Schnell, P., Trost, F., & Um, K. (2021). Physics-based Deep Learning. Book 📖

Meshing

  • nschloe/optimesh - Mesh optimization, mesh smoothing. Python
  • nschloe/pygmsh - Gmsh for Python. Python
  • nschloe/meshio - I/O for exhaustive number of mesh file types. Python
  • PyMesh/PyMesh - Geometry Processing Library for Python. C++ Python
  • cnr-isti-vclab/meshlab - The open source mesh processing system. C++
  • inducer/meshpy - 2D/3D simplicial mesh generator interface for Python (Triangle, TetGen, gmsh). C++ Python
  • gmsh - A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities C++. Python julia
  • CGAL/cgal - The Computational Geometry Algorithms Library (CGAL) is a C++ library that aims to provide easy access to efficient and reliable algorithms in computational geometry. C++

Computational Fluid Dynamics

Finite Difference Methods (FDM)

  • p-costa/CaNS - A code for fast, massively-parallel direct numerical simulations (DNS) of canonical flows. FORTRAN

Finite Element Methods (FEM)

  • JuliaFEM/JuliaFEM.jl - The JuliaFEM software library is a framework that allows for the distributed processing of large Finite Element Models across clusters of computers using simple programming models. julia Jupyter
  • FEniCS/dolfinx - Next generation FEniCS problem solving environment. C++ Python
  • deal.II - An open source finite element library. C++
  • firedrakeproject/firedrake - Firedrake is an automated system for the portable solution of partial differential equations using the finite element method (FEM). Python
  • KratosMultiphysics/Kratos - Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. C++ Python
  • FluidityProject/fluidity - An open-source computational fluid dynamics code with adaptive unstructured mesh capabilities. FORTRAN
  • kinnala/scikit-fem - Simple finite element assemblers. Python

Finite Volume Methods (FVM)

  • OpenFOAM/OpenFOAM-dev - OpenFOAM is a free, open source computational fluid dynamics (CFD) software package released by the OpenFOAM Foundation. C++
  • su2code/SU2 - SU2: An Open-Source Suite for Multiphysics Simulation and Design. C++ Python
  • cselab/aphros - Finite volume solver for incompressible multiphase flows with surface tension. C++
  • code-saturne/code_saturne - code_saturne public mirror. C++ FORTRAN Python
  • DelNov/T-Flows - T-Flows (stands for Turbulent Flows) is a Computational Fluid Dynamics (CFD) program, originally developed at Delft University of Technology, the Netherlands. FORTRAN
  • ucns3d-team/UCNS3D - Unstructured Compressible Navier Stokes 3D code (UCNS3D). FORTRAN
  • weymouth/WaterLily.jl - Fast and simple fluid simulator in Julia. julia
  • MFlowCode/MFC - MFC is a compressible multiphase fluid solver with high-order-accurate shock- and interface-capturing and GPU support via OpenACC. FORTRAN
  • nextfoam/Baram - BARAM is developed to mitigate the steep learning curve of Text-based Solvers. BARAM helps you focus on a problem itself with intuitive graphical user interface. For now, OpenFOAM® solvers modified by nextfoam are integrated into BARAM. Python

Spectral Methods

  • DedalusProject/dedalus - A flexible framework for solving PDEs with modern spectral methods. Python Jupyter
  • FourierFlows/FourierFlows.jl - Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains. julia
  • Nek5000/Nek5000 - NEK5000 is an spectral element CFD code developed at the Mathematics and Computer Science Division of Argonne National Laboratory. FORTRAN
  • spectralDNS/shenfun - High performance computational platform in Python for the spectral Galerkin method. Python Jupyter

Vortex Methods / Panel Methods / Blade Element Methods

Immersed Boundary Methods (IBM)

  • cwrowley/ibpm - Immersed Boundary Projection Method (IBPM). C++
  • barbagroup/PetIBM - PetIBM - toolbox and applications of the immersed-boundary method on distributed-memory architectures. C++
  • barbagroup/cuIBM - cuIBM: a GPU-based immersed boundary method code. C++
  • ChenguangZhang/sdfibm - Immersed boundary method empowered by signed distance field, and OpenFOAM. C++
  • IBAMR/IBAMR - An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method. C++

Weather and Climate

  • wrf-model/WRF - Weather Research and Forecasting (WRF) model is a numerical weather prediction (NWP) system designed to serve both atmospheric research and operational forecasting needs. FORTRAN

Building Energy and Urban Environments

  • NREL/EnergyPlus - EnergyPlus™ is a whole building energy simulation program that engineers, architects, and researchers use to model both energy consumption and water use in buildings. C++
  • uDALES/u-dales - uDALES: large-eddy-simulation software for urban flow, dispersion and microclimate modelling. FORTRAN
  • ladybug-tools/butterfly - 🦋 A light python API for creating and running OpenFoam cases for CFD simulation. Python

Shallow Water / Ocean Dynamics

  • jostbr/shallow-water - Python model solving the shallow water equations (linear momentum, nonlinear continuity). Python
  • team-ocean/veros - The versatile ocean simulator, in pure Python, powered by JAX. Python
  • CliMA/Oceananigans.jl - Julia software for fast, friendly, flexible, data-driven, ocean-flavored fluid dynamics on CPUs and GPUs. julia
  • OceanParcels/parcels - Parcels (Probably A Really Computationally Efficient Lagrangian Simulator) is a set of Python classes and methods to create customisable particle tracking simulations using output from Ocean Circulation models. Python Jupyter

Lattice Boltzmann Methods (LBM)

  • aromanro/LatticeBoltzmann - A 2D Lattice Boltzmann program. C++
  • lanl/MF-LBM - A Portable, Scalable and High-performance Lattice Boltzmann Code for DNS of Flow in Porous Media. FORTRAN
  • unigespc/palabos - Palabos is an open-source CFD solver based on the lattice Boltzmann method. C++

Design and Optimization

Coupling

  • precice/precice - A coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations. C++

Chemical Kinetics

  • Cantera/cantera - Chemical kinetics, thermodynamics, and transport tool suite. C++ Python

Supersonic / Hypersonic Flow

  • matteobernardini/STREAmS - STREAmS performs Direct Numerical Simulations of compressible turbulent flows in Cartesian geometry solving the unsteady, fully compressible Navier-Stokes equations for a perfect gas. FORTRAN
  • sergeas67/OpenHyperFLOW2D - 2D (flat/axisymmetrical) transient viscous compressible multicomponent sub/trans/supersonic reacting gas flow with RANS/URANS turbulence models. C++

Differential programming

Neural Networks for PDE

Graphics

Other Techniques

  • PyFR/PyFR - Framework for solving advection-diffusion type problems on streaming architectures using the Flux Reconstruction approach of Huynh. Python
  • pencil-code/pencil-code - A high-order finite-difference code for compressible hydrodynamic flows with magnetic fields and particles. FORTRAN Jupyter
  • NaluCFD/Nalu - Nalu: a generalized unstructured massively parallel low Mach flow code designed to support a variety of open applications of interest built on the Sierra Toolkit and Trilinos solver Tpetra solver stack. C++
  • lesgo-jhu/lesgo - The Large-Eddy Simulation framework from the Turbulence Research Group at Johns Hopkins University. FORTRAN
  • cornellius-gp/gpytorch - A highly efficient and modular implementation of Gaussian Processes in PyTorch. Python

Experimental Fluid Dynamics

PIV / PTV

  • JHU-NI-LAB/OpenLPT_Shake-The-Box - Open-source C++ code for Shake-the-box, particle tracking algorithm. C++ MATLAB
  • OpenPTV/openptv - OpenPTV - open source 3D-PTV software. C++
  • OpenPIV/openpiv-python - OpenPIV consists in a Python and Cython modules for scripting and executing the analysis of a set of PIV image pairs. Python MATLAB Jupyter
  • OpenPTV/pyptv - Python GUI for OpenPTV - open source three-dimensional particle tracking velocimetry. Python
  • ronshnapp/MyPTV - Python based 3D-PTV - open source pure Python three-dimensional particle tracking velocimetry. Python

ML / Optical Flow

Post-processing and Data Analysis

  • numpy/numpy - The fundamental package for scientific computing with Python. Python
  • mathLab/PyDMD - Python Dynamic Mode Decomposition. Python Jupyter
  • dynamicslab/pysindy - A sparse regression package with several implementations for the Sparse Identification of Nonlinear Dynamical systems. Python
  • ritchieng/eigenvectors-from-eigenvalues - This repository implements a calculation of eigenvectors from eigenvectors elegantly through PyTorch. Jupyter
  • mengaldo/PySPOD - A Python package for spectral proper orthogonal decomposition (SPOD). Python
  • belson17/modred - An easy-to-use and parallelized library for finding modal decompositions and reduced-order models. Python
  • Astroua/TurbuStat - Statistics of Turbulence Python Package. Python
  • SURGroup/UQpy - UQpy (Uncertainty Quantification with python) is a general purpose Python toolbox for modeling uncertainty in physical and mathematical systems. Python Jupyter
  • haller-group/LCStool - LCStool: LCS Tool is a computational engine for analyzing fluid flows by extracting their most influential material surfaces, Lagrangian Coherent Structures. MATLAB

Visualization

2D Visualization

3D Visualization

  • K3D-tools/K3D-jupyter - K3D lets you create 3D plots backed by WebGL with high-level API (surfaces, isosurfaces, voxels, mesh, cloud points, vtk objects, volume renderer, colormaps, etc). Python JavaScript Jupyter
  • sciapp/gr - GR framework: a graphics library for visualisation applications. C++ Python
  • QuantStack/ipygany - 3-D Scientific Visualization in the Jupyter Notebook. Python Jupyter
  • InsightSoftwareConsortium/itkwidgets - Interactive Jupyter widgets to visualize images, point sets, and meshes in 2D and 3D. Python JavaScript Jupyter
  • NVIDIA/ipyparaview - iPython widget for server-side ParaView rendering in Jupyter. Python JavaScript Jupyter
  • Kitware/Vtk - Visualization Toolkit. C++
  • Kitware/paraview - An open-source, multi-platform data analysis and visualization application. Python
  • pyvista/pyvista - 3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK). Python
  • blender/blender - A free and open source 3D creation suite, supporting the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing. Python

Benchmarks and Datasets

Datasets

Benchmarks

Reproducibility

  • iterative/dvc - Data Version Control, Git for Data & Models, ML Experiments Management. Python
  • sphinx-doc/sphinx - Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects. Python

Community

  • CFD Online Forum - A free community for everyone interested in Computational Fluid Dynamics.

Related Topics