Julia Incompressible DNS (2D Cylinder Flow)

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