2D Vorticity–Streamfunction CFD Simulator

Description
This project is a full-featured 2D incompressible flow simulator built around the vorticity–streamfunction formulation of the Navier–Stokes equations. A Fortran backend handles the numerical core, while a Python frontend provides a GUI for configuring the computational domain, physical parameters, solver settings, and obstacle geometry. The result is a compact but substantial CFD environment that combines lower-level numerical implementation with accessible experiment control.
The simulator supports multiple explicit Runge–Kutta methods for time integration, several classical Poisson solvers, and a broad visualization pipeline for both field quantities and integral diagnostics. Rather than serving as a black-box app, the project functions as a numerical testbed for studying solver behavior, flow structure, and derived aerodynamic quantities in two-dimensional incompressible settings.
- Implemented a vorticity–streamfunction formulation for 2D incompressible Navier–Stokes flow with optional circular obstruction.
- Built a Fortran numerical backend paired with a Python GUI frontend for experiment setup and result inspection.
- Added multiple time integrators including Euler, Heun, RK4, RK6, and RK8.
- Supported classical Poisson solver choices including Jacobi, Gauss–Seidel, and SOR.
- Generated full-field visualizations and scalar diagnostics including lift, drag, pressure drop, enstrophy, circulation, and kinetic energy.
Highlights and Learning Experiences
Flow field visualization
Velocity magnitude, streamfunction contours, vorticity, and relative pressure fields for 2D incompressible flow configurations.
Solver and geometry configuration
GUI-based setup for domain size, resolution, viscosity, solver choices, and optional cylindrical obstruction.
Time-history diagnostics
Lift, drag, pressure drop, enstrophy, circulation, kinetic energy, and flow-rate tracking over time.