Algorithms — Numerical Methods — Mathematics

The GWR GmbH develops algorithms and corresponding software for problems in Applied Mathematics and performs contract computations.

Our fields of expertise include:

We use a wide range of programming languages and tools, including C++, Lua, Python, Java and shell scripts. Our software development processes are continuously optimized through the use of Git for version control and Jenkins for automation.

Simulations
Simulation of fresh air distribution in greenhouse simulation with Age of Air theory algorithms
Fresh air distribution in a greenhouse: ‘Age of Air’ theory

Numerical simulations are used in many application areas – for example in flow simulations in automotive engineering, in finite element analyses for calculating stresses and deformations in components, or in modeling financial markets and weather developments. Many methods are based on mathematical models from physics, which allow complex phenomena to be represented realistically. Increasingly, artificial intelligence methods are also being used, for example to accelerate calculations or to analyze large data sets. Simulations enable virtual experiments that contribute to the development of new products or to the optimization of technical processes – in science, industry, and engineering.

Algorithms

A problem should be solved with the “right” algorithm, as the choice of an appropriate algorithm is crucial for efficiency. An impressive example is the Fast Fourier Transform[1] (FFT). Compared to the direct evaluation of the trigonometric sum formula, it offers a significant improvement. While the naive method requires \(\mathcal{O}(n^2)\) computational steps, the FFT only requires \(\mathcal{O}(n \log n)\).

Our example on modular exponentiation illustrates how the mere choice of method can dramatically speed up runtime. From originally 10 seconds, the computation time is reduced to just a few microseconds.

The importance of choosing a suitable algorithm is also evident in the numerical solution of the radiosity equation for calculating energy transport by thermal radiation as well as in parameter identification – both in terms of stability and computational efficiency.

Programming

Software, especially simulation programs, should be continuously developed in order to exploit the full potential of the available hardware. Special software techniques such as OpenMP and Threading Building Blocks for multicore architectures as well as SYCL for cross-platform programming (CPU + GPU) play a decisive role here. These techniques enable efficient use of modern hardware and help maximize the performance of applications.