C++ Python HPC OpenMP

Brusselator System Simulation.

\[ \begin{aligned} &\begin{cases} \dfrac{\partial U}{\partial t}=D_U\nabla^2U+A+U^2V-(B+1)U,\\[6pt] \dfrac{\partial V}{\partial t}=D_V\nabla^2V+BU-U^2V \end{cases} \qquad X\in[0,1]^2,\; t\in[0,T_{\max}] \\[12pt] &U(X,0)=U_0(X),\qquad V(X,0)=V_0(X) \\[8pt] &U(X,t)\big|_{\partial\Omega}=U_0(X)\big|_{\partial\Omega},\qquad V(X,t)\big|_{\partial\Omega}=V_0(X)\big|_{\partial\Omega} \\[8pt] &\Omega=[0,1]^2 \end{aligned} \]

Figure 1. Governing equations of the Brusselator system.

Overview

This project simulates a Brusselator reaction-diffusion system using coupled partial differential equations that describe the spatio-temporal evolution of two chemical species, \(U\) and \(V\). Where \(U(t, \mathbf{x})\) and \(V(t, \mathbf{x})\) represent chemical concentrations, \(D_U\) and \(D_V\) are diffusion coefficients, and \(A\) and \(B\) are system constants. The spatial domain is \(\Omega = [0,1]^2\), solved over the time interval \([0, T_{\max}]\) with Dirichlet boundary conditions.

Numerical Methods & Configuration

The solver employs finite difference discretization in space and Forward Euler integration in time over a \(1024 \times 1024\) node grid (\(\Delta x = \Delta y = 1/1024\), \(\Delta t = 0.0025\), \(T_{\max} = 1000\)). Model parameters are \(A = 1.0\), \(B = 3.0\), \(D_U = 5 \times 10^{-5}\), and \(D_V = 5 \times 10^{-6}\). Parallelization is achieved via OpenMP (16 threads), and simulation results are exported as .dat files and visualized with a Python post-processing script.

Brusselator simulation output

Figure 2. Simulation output — spatial concentration patterns of species U and V.