G. P. Müller

G. P. Müller

Open source projects


My open source hobby projects, created by me and in collaboration with friends and colleagues
Follow @GPMueller

Spirit   Star

A major output of my PhD project, Spirit is a scientific software for simulating magnetism on the atomic scale.


Try Spirit Web!
📱 also runs on your smartphone 📱


Originally working on a Fortran codebase, I created this project to get access to better portability, better libraries and be able to add a real-time visualisation. Spirit runs on everything, from your smartphone to supercomputers and is already used by a multitude of researchers around the entire world, cited in a variety of scientific publications: G. P. Müller et al. (2019)


Spirit Spirit Spirit

clang-build   Star

A clang-based cross-platform C++ build system written in Python.

Having become fed up with the idiosyncracies of CMake already 5 years ago, I decided I had to try and do a better job for small C++ projects.

clang-build makes a set of opinionated assumptions in order to provide an easy way to build small projects without any configuration. Larger projects will often still require only little configuration, while projects like boost will still be quite easy to setup (though boost requires a lot of configuration due to its sheer size).


clang-build demonstration

ImGui App   Star

A basic cross-platform GUI application with some example features.

It is automatically built and released via the CI and deployed as a web app to gpmueller.github.io/imgui-app.

This is a hobby project on which I am trying to setup the most generic GUI application I can. The web app can already trigger desktop notifications, but there is lots more I would like to do.

trace   Star

Cross-platform exception backtracing using standard C++.

A topic that comes up regularly in C++ is how to deal with errors. Because I could not find a satisfactory solution without platform-specific dependencies, I created my own solution. The only drawback is the reliance on exceptions, which somewhat limits the possible applications.

By wrapping your functions into try/catch blocks, you can use the trace library to generate clean backtraces through your call stack as the exception is thrown up the call stack until it reaches the point where you handle it.

For a more minimalistic example, see github.com/GPMueller/mwe-exception.


Using trace, the following snippet from an example

try
{
    detail::library_function();
    return API_RETURN::SUCCESS;
}
catch( const std::exception & ex )
{
    detail::library_handle_exception(ex);
    return API_RETURN::FAILURE;
}

may produce a backtrace that looks something like this:

Library API: Exception caught in function 'api_function'
Backtrace:
~/git/mwe/src/detail/Library.cpp:17 library_function failed
~/git/mwe/src/detail/Library.cpp:13 could not open file "nonexistent.txt"

eigen-cuda   Star

How to use Eigen3 inside CUDA kernels.

An example kernel looks like this:

__global__ void cu_dot(Eigen::Vector3d *v1,
                       Eigen::Vector3d *v2,
                       double *out, size_t N)
{
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if(idx < N)
    {
        out[idx] = v1[idx].dot(v2[idx]);
    }
    return;
}

FMath   Star

An expression template library to do some vector- and matrix-math using Eigen3 with some nice slicing and dicing.

The following example shows some operations, functions and slicing

Field sf1{1,2,3,4,5,6}, sf2{1,2,3,4,5,6};
Field vf1(5), vf2(5);

// Element-wise dot product
Field sf_dot = vf1.dot(vf2);

// Operate on subsets
sf1[{0,1,2}] = sf2[{0,1,2}] + sf_dot[{3,4,5}];

// Assign slice of field from subset of other field
sf2.slice(0,1) = sf1[{1,2}];

arch-installer   Star

This repo provides an scripts that performs common installation steps like setting up the locale and installing commonly used packages.

ovf   Star

A file I/O library for the OOMMF vector file format. It has a C interface and wrappers in Python and Fortran.

clang-api-doc   Star

A clang-based cross-platform C++ API documentation generator written in Python.

Scientific papers


This is a list of my papers, published in peer-reviewed scientific journals

About Me


Coding is a passion for me, in particular open source, portable cross-platform software. I love simplifying tasks and automating anything repetitive. I always strive to increase the quality of my code as much as I can and to make it readable and simple.

Background

I am a software developer in autonomous driving since 2020, a topic that fascinates me not only due to its relevance to our society, but also its great complexity and technical depth.

I completed my PhD in theoretical Physics in 2019, with a focus on simulations and visualisations. My favourite aspect was the simplification of many tasks, including teaching, which I was able to achieve by creating modern software that runs well on everything from HPC machines to smartphones.

Language Skills

  • C++ logo C++: fluent, > 5 years
  • Python logo Python: fluent, > 6 years
  • CMake logo CMake: fluent, > 5 years
  • Fortran logo Fortran: proficient, > 2 years
  • JS logo JavaScript: basic knowledge
Envelope gpmueller@outlook.com