The Hybrid code solves the compressible Navier-Stokes equations for a calorically perfect gas with power-law viscosity-temperature relationships. It uses stretched Cartesian grids and high-order numerics. The code is written in C++ and is shared through GitLab upon request.


  • archive is a simple script for version control suitable for a single user. It is much simpler than git and has nowhere near the same functionality; I personally use it in addition to git, for keeping track of changes while I’m making changes to the code (i.e., before declaring my changes complete and committing to git).


  • initialTransientEstimate.m estimates the length of the initial transient (‘burn-in time’) in a signal based on the MSER statistic and some heuristics about the initial transient in the variance.
  • stderrorEstimate.m estimates the standard error in the sample mean and sample variance using the method of batch means and batch correlations by Russo & Luchini (2017).
  • smoothCurve.m smooths data to a length scale which may be uniform, linearly varying, or arbitrarily varying.
  • createGrid_doubleTanh.m creates a 1D grid where the grid-spacing varies as the combination of two tanh functions at different locations. This is useful for things like the streamwise grid in shock/turbulence or shock/boundary-layer interaction, where one wants a finer grid in the middle of the domain and coarsening towards the outlet.
  • createGrid_geometric.m creates a 1D grid where the grid-spacing varies geometrically. This is useful for things like RANS of boundary layers.
  • minMaxOfCurves.m takes multiple curves (defined as (x,y) arrays) as input, finds a common x array, and then finds the min/max y on this common x amongst all curves. This can be useful when plotting shaded regions showing the spread amongst multiple cases, or similar.


  • compressibleBLprofiles is a Python tool for computing estimated velocity and temperature profiles (and thus the friction and heat transfer coefficients) for compressible turbulent boundary layers. The tool implements the method described in Kumar & Larsson (2022).
  • shockFinder is a Python tool for finding the impinging and reflected shock waves (thus finding the interaction length) in canonical shock/boundary-layer interaction data. The algorithm is based on a computer vision technique for finding the straight lines in a dilatation, density gradient, or similar field. The method/code was developed by undergraduate student Max Mzhen during a summer internship and is described in more detail here.
  • pyChan is a Python code for simple channel flow direct numerical simulations (DNS). It solves the isothermal Navier-Stokes equations, meaning that it solves the compressible mass and momentum conservation equations and then assumes the temperature to be constant — this allows for fully explicit time-stepping without any need for a Poisson equation. The code was mostly developed by Nikhil Oberoi.
Source unknown