Project reference: 1614
There are many simulation codes that model the flow of fluids under different environments at a variety of scales. A relative simple model consists of the so-called “shallow water equations”, where the horizontal length scale is great than the vertical length scale. While simple, these equations have been used to simulate both small-scale and large-scale fluid flow; from water in a bathtub to waves in the ocean.
ICHEC has written a simple program that solves the shallow water equations in a re-entrant domain (i.e., what goes out on the right side comes back in from the left side; what goes out the top comes in from the bottom), using some different options for time-stepping schemes and solving either the “flux-form” equations or “grid-point” form. The aim of this project is then to build upon this program to (a) optimise its performance, and (b) produce 2D and 3D visualisation of the fluid flow being simulated. So the possible enhancements for this code include:
- Parallelisation work using OpenMP.
- Offload relevant computations to many-core technology (e.g. GPUs, Intel Xeon Phi co-processors).
- Visualise in 2D and/or 3D the output from the model.
- Explore varying depths, e.g. continental shelf, beaching.
- Explore the effects of rotation, e.g. Coriolis force.
- Implement rigid boundaries instead of re-entrant ones (i.e. reflections).
The project aims to introduce the student to fundamental concepts in modelling, parallelisation techniques as well as tools and methods to visualise simulation output. The program also serves as a simple framework for trying different numerical methods depending on the interests of the student.
Project Mentor: Dr. Adam Ralph
Site Co-ordinator: Simon Wong
Student: Thomas Wright
The student will be exposed to fundamental modelling/simulation concepts and numerical methods. Due to the relative simplicity of the program, it also provides an opportunity for students to implement basic parallelisation techniques (e.g. OpenMP).
Student Prerequisites (compulsory):
Basic Linux skills; basic programming skills; an interest in or flair for visualisation; good grounding in mathematics and numerical methods
Student Prerequisites (desirable):
Good knowledge of Fortran; prior experience with visualisation tools (e.g. Paraview); prior experience with writing/modifying simulation codes.
Week 1: Training week
Week 2-3: Induction and development of a project plan
Week 4-7: Developing the visualisation component and implement parallelisation.
Week 7-8: Project write-up and demonstration
Final Product Description:
Videos of fluid/wave simulations, with potential user interactivity depending on time and ability of the student.
Adapting the Project: Increasing the Difficulty:
Offload the more compute intensive parts of the code to many-core technologies.
Student can carry out this work on his/her own laptop (preferred), or a workstation can be provided on-site. Any required software will be identified and provided at the beginning of the project.