These are some codes that I am developing as a part of my research. They are mostly written in C and require only the GNU C compiler (and MPICH). Some versions may require PETSc. Compiling them is pretty straightforward. I use Git for source code management and maintain a copy of my repositories on Bitbucket, Gitlab, and Github. Feel free to download, modify and use these codes if you think they are useful. Most of them should have a helpful "readme" file. Feedback is welcome.

Since I am not a trained software developer, documentation may be lacking. However, the codes should make sense to someone with the appropriate background in numerical methods and the relevant physics.

HyPar

Numerical Solution of Hyperbolic-Parabolic partial differential equations: This provides a basic, unified framework (serial/parallel) for the numerical solution to n-dimensional hyperbolic-parabolic PDEs on Cartesian grids. A few physical models are included (linear advection-reaction-diffusion, Fokker-Planck model for power systems, Euler equations for inviscid fluid dynamics, etc) and others can be added with relative ease. Several spatial discretization schemes (1st order, 3rd order MUSCL, 5th order WENO, 5th order CRWENO, 2nd/4th order central compact and non-compact schemes, etc) and multi-stage Runge-Kutta time-integration schemes are available and new ones can be added easily. The code can also be compiled with PETSc to use the time-integration methods provided by its TS module.
Dependencies: MPICH (if not available, a serial version is compiled), PETSc (optional)
[Documentation]    [source]


TridiagLU

Parallel (MPI) solvers for non-periodic tridiagonal systems of equations: Contains functions to solve distributed tridiagonal systems. The parallel LU solver uses the iterative substructuring method, with the reduced system being solved directly ("gather-and-solve" + LU) or iteratively (point Jacobi). The functions are written to solve several systems of equations with one call (the systems need not share a common left- or right-hand-sides). A test suite is also provided to test the solvers and measure their wall times.
Dependencies: MPICH (if not available, a serial version is compiled)
[Documentation]    [Source]


IBCartINS3D

A 3D, Cartesian, incompressible Navier-Stokes solver with immersed boundary technique: The code is based on the fractional-step method and uses a higher-order upwind reconstruction schemes for the convection term and a second-order central discretization for the viscous and pressure correction terms. The viscous terms are treated using implicit time-integration and convection is treated explicitly. The parallel version uses a 3D, Cartesian domain decomposition.
Dependencies: MPICH (if not available, a serial version is compiled)
[more details]    [source]