Software Workshops

If you are interested in organizing a software workshop, please send a tentative title and a brief description to

PRESSIO: An ecosystem to foster research on and facilitate usability of projection-based reduced-order modeling

Organizer: Francesco Rizzi (, NexGen Analytics)

Projection-based model reduction (pROM) is a model reduction technique that uses data but is grounded in physical laws. This technique relies on a projection process applied to the governing equations of interest. It has shown large potential, but its main drawback is an intrusive nature which has been, historically, one of the key barriers precluding it from impacting more broadly science and engineering.

As a consequence, this has also limited the range of applications and the capabilities tested. PRESSIO represents our effort to try to mitigate this intrusive nature of pROMs for large-scale codes, offering an ecosystem for developing, applying and using pROM methods. We have been developing this ecosystem from the ground up for a few years and currently it encompasses the following main components:

  • pressio: a core C++ library implementing some model reduction algorithms
  • rom-tools-and-workflows: a Python library containing a set of algorithms for constructing and exploiting ROMs
  • pressio-demoapps: a C++/Python library of proxy-apps offering a collection of 1D, 2D and 3D problems of varying complexity to try ROMs on

This presentation will first discuss the challenges associated in developing such a framework and involve an interactive session where participants will be able to try things on their own.


Organizer: Anthony Thornton (, University of Twente, Netherlands)

MercuryDPM is a code for discrete particle simulations. That is, it simulates the motion of particles, or atoms, by applying forces and torques that stem either from external body forces, (e.g. gravity, magnetic fields, etc...) or from particle interaction laws (e.g. Lennard-Jones). For granular particles, these are typically contact forces (elastic, plastic, viscous, frictional), while for molecular simulations, forces typically stem from interaction potentials (e.g. Lennard-Jones). The code has been developed extensively for granular applications, but could be adapted to include long-range interactions as well.

It was started by Anthony Thornton and Thomas Weinhart, and has been developed by many people since it was started. MercuryDPM is a very versatile, object-orientated C++ code which is easily understandable. It has been tested for several Linux distributions, Mac OS and Windows 10. The user specifies the particulars of their simulation (initial positions, inflow, outflow, walls, interaction parameters) in a single driver file, which calls the kernel to do the simulations. All kernel functions are documented here, and there are several driver samples available. To avoid breaking already existing code a suite of self-tests have been developed testing pre-existing features of the code.