Software Workshops

If you are interested in organizing a software workshop, please send a tentative title and a brief description to esco@fel.zcu.cz.

Growing preCICE from an as-is coupling library to a widely-used, batteries-included ecosystem

Organizer: Gerasimos Chourdakis (chourdak@in.tum.de, Technical University of Munich, Germany)

While you may already know about preCICE, a lot has happened in the past five years, as discussed in our latest preprint. From a library being used by just a few academic groups in Germany, it has now grown to a complete coupling ecosystem, used by more than 100 research groups worldwide. Apart from the library itself, we now also maintain ready-to-use adapters for several open-source solvers, language bindings, and tutorial cases. We have now developed extensive documentation, packages for common platforms, and a strong testing infrastructure, while we are making good progress in integrating contributors from the rapidly growing community.

In this session, I would like to discuss how we reached this point and what other software projects could learn from this journey.

PreCICE (https://www.precice.org/)

pyMOR

Organizer: René Fritze (rene.fritze@wwu.de, University of Münster, Germany)

pyMOR is a Python library for model order reduction applications. We had a presentation on ESCO 2018, got some valuable feedback and have since significantly grown both user and developer base. pyMOR implements many reduced basis methods algorithms for parametric linear and non-linear problems, as well as system-theoretic methods such as balanced truncation or IRKA. pyMOR operates on abstract interfaces and has bindings to several PDE solver libraries like FeNICS, Ngsolve and deal.II, as well as packages like Slycot and MESS.

The presentation would be in the style of a Jupyter-based interactive tutorial where participants will be able to code along without needing to install anything on their machines (other than a browser).

MercuryDPM

Organizer: Anthony Thornton (antrthorn@googlemail.com, 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.

NCLab: Changing Education Through Software

Organizer: Pavel Solin (pavel@nclab.com, University of Nevada, Reno, United States)

NCLab (Network Computing Lab) is a cloud computing platform designed to facilitate the design and operation of self-paced, practice-based courses in computer programming, computing, data analytics, 3D modeling, math, statistics, and related areas. The backend of the platform consists of a non-relational distributed database combined with an asynchronous system of engines. The frontend written in Javascript resembles a simplified Windows desktop where every user has their own file manager, suite of creative apps, and a selection of courses. In this workshop we will present interactive sampler courses, and then we will show participants how they can create their own interactive courses in NCLab.