Highlights
Fluid dynamics is the subdiscipline of fluid mechanics that is concerned with the flow of fluids – both liquids and gases. It has a wide range of applications across the science and engineering disciplines, from describing the flow of liquids through pipes, to the description of airflow around vehicles and other structures. Computational fluid dynamics (or CFD) is the application of computational and numerical methods to solve problems that involve fluid flows. High Performance Computing (or Supercomputing) is widely applied to CFD problems to improve the accuracy of solutions and to accelerate the time-to-solution.
Perhaps the most famous equations in CFD are the Navier-Stokes equations, used to treat laminar flows of viscous, incompressible fluids1 . The equations can be presented in numerous forms beside the derivation below, and are named after French engineer and physicist ClaudeLouis Navier and Anglo-Irish physicist and mathematician George Gabriel Stokes.
where ~u is flow velocity, t is time, p is pressure, Re is the dimensionless Reynolds number and ~g denotes body forces such as gravity.
For this assignment, you are provided with a simple solver for the Navier-Stokes equations. The solver operates according to the computational scheme described in Chapter 3 of the book by Griebel et al. [1]. In this assignment, we discretise our space in two dimensions, and we solve the equations using a finite-differencing scheme. We use a staggered grid, where the horizontal velocity u is stored on the vertical cell edges, the vertical velocity v is stored on the horizontal cell edges, and the pressure p is stored in the cell centers.
Figure 1: A staggered grid
1Fear not, you do not need to understand these equations. An implementation is provided. 2∇ and ∆ represent operations from vector calculus. You can read more about them in books such as “div, grad, curl and all that”, or from Wikipedia. Though again, understanding these equations is not required to solve this assessment.
Beginning at time t = 0, with given initial values for the u and v vector fields, we increment time by δt each step until tend is reached. At any time step n, the values of all variables are known, and those at time tn+1 are to be computed.
This manner of discretisation may be characterised as being explicit in the velocities and implicit in the pressure, i.e., the velocity field at time step tn+1 can be computed once the corresponding pressure is known.
The Problem
For this assignment you are provided with a simple CFD application, implemented according to the computational scheme by Griebel et al. [1]. It is set up to solve a problem often studied using CFD, known as a Kármán vortex street.
Named after the engineer and fluid dynamicist Theodore von Kármán, a vortex street is a repeating pattern of swirling vortices, caused by a process known as vortex shedding. A vortex street will only form at a certain range of flow velocities, specified by a range of Reynolds numbers, and they can be found when atmospheric air flows over obstacles such as buildings or even islands and isolated mountains. Figure 2 shows one such example.
Figure 2: Kármán vortex street caused by wind flowing around the Juan Fernández Islands
These turbulent flows, caused by a Kármán street, have even been known to damage the structure of tall buildings, and thus it is important for engineers to account for the effects of vortex shedding when designing structures. One particularly notable example is the Ferrybridge Power Station C cooling towers. In 1965, during high winds, three of the cooling towers collapsed, due to the vibrations caused by Kármán turbulence.
The application provided, vortex, sets up a problem where there is a circular object to the left of the domain, and the initial fluid velocity is such that it is flowing from left to right. Figure 3 shows the starting state of the simulation, while Figure 4 shows the state after approximately 5 seconds of simulation time,
Assignment
The vortex application is currently a simple single-threaded implementation of the NavierStokes equations as described above. Your task is to produce three parallelisations of the vortex application and complete a report detailing the parallelisation process, the performance of your three parallelisations, and a comparative study of these parallelisations.
You are expected to produce parallelisations using OpenMP, MPI and CUDA.
Your parallelisations should produce the same result (within some small tolerance due to floating point arithmetic) as the original single-threaded application for equivalent starting parameters. You are expected to fully evaluate your applications using the HPC hardware that is available within the University (e.g. CUDA-capable workstations within the Department, the Viking cluster, etc.), and that is appropriate for each particular programming model.
This COM00174M – IT and Computer Science has been solved by our PHD Experts at My Uni Paper.
© Copyright 2026 My Uni Papers – Student Hustle Made Hassle Free. All rights reserved.