Software

In computational science software is the central platform. It serves both to develop new ideas and algorithms, but also to test them on application-relevant problems, which in turn frequently needs to new research directions from the uncovered flaws and insufficiencies.

Even more so in the interdisciplinary research setting of the MatMat group software also serves as the scaffolding, which coordinates and collects the advances from various disciplinary communities. With this in mind a primary focus in our software projects is thus to make our codes accessible across research backgrounds and in this way facilitate cross-community fertilisation. Our software is open-source, see epfl-matmat on github, and often developed in collaboration with contributors across the globe.

DFTK: The density-functional toolkit

DFTK research fields

The Density-Functional ToolKit[1] is a Julia-based code for plane-wave density-functional theory simulations, which our group co-develops and employs to conduct the majority of our research (see Self-adapting simulations and Estimation of simulation error). DFTK was started in 2019 and despite only 7500 lines of code we unlocked a sizable feature set. This includes an efficiency to routinely treat systems beyond 1000 electrons (using MPI / GPU parallelisation) and at the same time support for arbitrary reduced models (e.g. analytical potentials, Gross-Pitaevskii-type problems, reduced dimensionality). Non-standard features include built-in support for automatic differentation and arbitrary precision, which make DFTK the ideal prototyping platform for solid-state DFT methods.

For some introductory material about DFTK, see the DFTK documentation.

JuliaMolSim and AtomsBase: Julia-based atomistic modelling

juliamolsim

Our group participates in ongoing community efforts to build the software infrastructure required for atomistic modelling in julia, such as the ones grouped within the JuliaMolSim github organisation.

Most importantly this includes AtomsBase, a package providing a common interface for atomic structures for other Julia packages to use. With AtomsBase packages for parsing structure files (e.g. AtomsIO), for visiualising structures or for running simulations (such as DFTK) can seamlessly integrate, allowing a data-flow of atomistic structures in a completely user-transparent way.

An overview on the state of julia tools for atomistic modelling, showcasing these efforts in practice, gives the recent (May 2023) Julia for Materials seminar talk by Michael (Youtube recording).

ReducedBasis: Spin systems and parametrised eigenproblems

With ReducedBasis we developed a Julia package to accelerate the setting, where one wishes to solve a parametrised eigenproblems for a number of parameter instances with low to medium precision. Our main interest for developing this package is our work on quantum spin systems, where the strength of interaction between the spins are the parameters of the problem. In turn solving a single eigenproblem requires expensive methods, for example tensor network approaches (MPS, DMRG), which can easily take hours to days per instantce. With ReducedBasis we manage to drastically reduce the number of parameter instances where the eigenproblem needs to be solved for standard tasks (e.g. phase diagrams)[2]. The code makes it easy to swap the considered eigenproblem or the underlying solvers, such that we believe this package to be useful beyond its original purpose.

Other contributions

Other projects where we participate and regularly contribute include:

[1] M. F. Herbst, A. Levitt, E. Cancès. JuliaCon Proceedings. 3, 69 (2021). DOI https://doi.org/10.21105/jcon.00069
[2] P. Brehmer, M. F. Herbst, S. Wessel, M. Rizzi, B. Stamm. Reduced basis surrogates for quantum spin systems based on tensor networks. arXiv 2304.13587

Edit this page on
Last modified: April 24, 2024. Website built with Franklin.jl and the Julia programming language.