We are developing a particle filter data assimilation package in Julia. The primary use case is forecasting tsunamis using data from a sparse set of observations and a numerical model. The application is designed to run in parallel on multiple nodes of HPC clusters and interface with third-party numerical models. Using Julia has benefited us in many ways, including high performance, fast development, testing, and leveraging open-source libraries.
Tsunami forecasting has many similarities with weather forecasting. The problem is trying to infer the future state of a large dynamic system from a sparse set of observations. To solve this problem, we are developing a particle filter data assimilation package with researchers from the department of statistical science at University College London. The package is aimed at high parallel performance and can run on UK Tier 2 HPC facilities to quickly produce forecasts using an assimilation of observed data and numerical models. It uses MPI for distributed parallelism and HDF5 for serialisation.
We chose to use Julia because of its attractive combination of high performance and productivity and its active package ecosystem. It is also important for us to write code that scientists, who are more used to scripting languages such as MATLAB and R, can understand and reuse in their future work. At the same time, it is important to us to follow good software development practices and carefully document and test our code. Julia has allowed us to achieve a good balance of these aspects and is well worth considering for future scientific computing projects.
The code is public and can be found at https://github.com/Team-RADDISH/ParticleDA.jl