Julia Incompressible DNS (2D Cylinder Flow)

Partial Differential Equations
Computational Fluid Dynamics
Numerical Linear Algebra
Iterative Linear Solvers
Multigrid Methods
Julia
Julia Incompressible DNS (2D Cylinder Flow)

Description

This project is a from-scratch Julia implementation of a two-dimensional incompressible Navier–Stokes solver built as a learning and experimentation platform for numerical methods in CFD. The code advances momentum explicitly, solves a pressure Poisson problem, and projects the velocity field to enforce incompressibility, all within a clear modular architecture designed to expose the interaction between flow physics and linear solver behavior.

A major strength of the project is its pressure-solver ecosystem: classical relaxation methods, standalone multigrid, and preconditioned Krylov methods are all implemented against a consistent pressure operator, making the framework useful for comparing robustness, convergence, and solver architecture choices. Combined with multiple time-integration families and a Julia-native GLMakie frontend, the project serves as a compact but serious CFD testbed rather than a black-box flow code.

  • Implemented a 2D incompressible Navier–Stokes solver in Julia using a projection method with pressure correction.
  • Built support for weighted Jacobi, red-black Gauss-Seidel, Chebyshev, multigrid, PCG, FGMRES, and PBiCGSTAB pressure solvers.
  • Added explicit RK, SSPRK, SDIRK, and fully implicit Runge–Kutta time-integration schemes.
  • Created a Julia / GLMakie frontend for live progress tracking, visualization, and offline export workflows.
  • Used the code to study projection methods, solver stability, multigrid-preconditioned Krylov methods, and boundary-condition sensitivity in CFD.

Highlights and Learning Experiences

Projection-based incompressible flow solver

A 2D Navier–Stokes implementation with pressure correction, ghost cells, and immersed-boundary-style masking for cylinder flow.

Pressure solver ecosystem

Comparison of relaxation methods, multigrid, and Krylov solvers under a shared pressure operator.

Julia-native frontend and visualization

A GLMakie-based frontend for live simulation monitoring and field visualization, with ParaView-compatible outputs.


    Sreeram Shankar — Portfolio