Some samples from MaPra (mathematical practical course), where students have to solve several (non-numeric) mathematical problems in C++. The idea is to demonstrate the practical use of mathematics in all areas. For instance, excercises treat
Introductions into the software projects and the template libraries can be found here.
My thesis concerns the solution of the Riemann problem for the Euler
equation with nonconvex and nonsmooth equation of state.
The Riemann problem for the Euler equations
is also known as the shock tube problem, where the pressure p inside a tube may be distributed as seen in the following figure, i.e., there are different pressure states on either side of the diaphragm.
Instantaneously removing the diaphragm, what actually might be the burst of a 10 mm thick stainless steel plate, leads to a development of various moving waves. These are separated regions inside the tube where the fluid is compressed or rarefied in a specific manner. A typical solution at time t>0 for a perfect gas is given below.
In general, a solution strongly depends on the initial data, the equation of state and the fluid under consideration. The next situations show the solution of a shock tube problem, the corresponding wave curves and characteristics, when we choose a special BZT-fluid and initial conditions near the critical point.
In the pressure-volume plane we consider wave curves (isentropes and Hugoniot curves) crossing phase boundaries (liquid-vapor) and non-linear regions (fundamental derivative<0).
The exact Riemann solver calculates the wave curves and projects the solution onto space and time. All of our standard numerical schemes like Roe, ENO, etc., converge against our exact solution for all different effects which may occur.
As test cases we additionally computed a 2D-liquefaction shock
and a bubble collaps
All algorithms are implemented in a library called xrms. The rough structure reads