### Codes

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. 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)

**[more details]** **[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. 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)

**[more details]** **[source]**

#### TridiagLU

Serial and parallel (MPI) algorithms for the direct solution (LU decomposition) of non-periodic tridiagonal systems of equations: Two functions are available, one utilizing the recursive-doubling algorithm and the other solves the system in parallel by rearranging the points adjacent to the sub-domain boundaries. The latter algorithm uses the recursive-doubling or gather-and-solve algorithms to solve the reduced system resulting from the rearrangement. These functions can solve a single system as well as a stack of systems. A code is also provided to test the functions as well as their walltimes.
**Dependencies**: MPICH (if not available, a serial version is compiled)

**[more details]** **[source]**