Computational Micromagnetics is a widely used technique to predict and improve the behaviour of magnetic devices, for example in the data storage and sensing industry. Spintronics, Magnonics, and most recently Skyrmions  are particular directions of development in nanotechnology research that offer opportunities to replace electronics as the technology that drives computing and can be simulated using micromagnetic models.
As research moves into assembly of logic units and combination of these into larger systems and devices, the need to simulate large-scale magnetic nanostructures becomes more pressing. Scientists have made use of multi-core CPUs in shared memory systems  to accelerate single-core computations, and codes have been developed that take advantage of GPUs . These approaches, while great progress, are limited by a number of cores available in a single machine and available RAM on the GPU, respectively, and cannot provide the large system simulations.
In this project, we will develop, evaluate and use simulation software that allows to carry out MPI-based large-scale computation which can run on today’s state of the art High Performance Computing (HPC) systems such as local Linux clusters and national high-end computing hardware, including the UK’s supercomputer Archer . Focus will be on solving the micromagnetic problem using finite differences and optimise scaling behaviour of the code across a large number of cores. Significant effort will go into the development of a scalable computation of the long-range demagnetisation field and its MPI implementation.
We will use modern software engineering approaches such as test-driven development, continuous integration and release the tool as open source to benefit all of the micromagnetic communities in academia and industry (see for example  for the wealth of micromagnetic applications).
For this project, we are looking for a computer scientist with interest in science and computational science, or a mathematician/physicist/engineer/… with interest in programming and software engineering, who can work independently and as part of a team.