Numerical modelling is a tool widely used in different fields of engineering and physics to predict the response of matter subjected to different conditions. Particle-based methods are a branch of numerical modelling techniques that allow the simulation of the response of granular materials, such as soils, subjected to wide ranges of deformation. Such simulations serve as predictions of the soil behaviour under specific conditions for civil engineering analyses. This project investigates different techniques aimed at the acceleration and optimization of computational routines developed as part of the implementation of a particle-based method. In particular, the Material Point Method (MPM) has been implemented into a Python program developed for geotechnical and soil simulation. MPM simplifies a solid as a collection of material points or particles and uses a background mesh for the solution of the system, similar to the finite element approach. Students will work with standalone Python scripts extracted from the full MPM program. The focus of the project lies on the optimization and benchmarking of low-level numerical operations, with the aim of improving computational efficiency. Possible developments of the standalone Python scripts include: - Computation of Shape Functions at Material Points
Optimize how shape functions and their gradients are computed, as well as the connectivity between material points and the background mesh. - Cell-Level Matrix/Vector Computation
Improve the performance of routines responsible for calculating cell-level quantities, including stiffness matrices and load vectors. Enhance the global assembly of matrices and vectors using contributions from the individual cells. The project includes a literature review focused on available techniques for parallelisation in Python, particularly those that are free and easily available to employ. Students are expected to assess and compare different approaches such as Numba and multiprocessing, among others; based on quantitative performance parameters. These parameters may include real time, speedup ratios, and scalability metrics, evaluated using standard Python tools and basic profiling utilities. |