Okay, it is already a couple of days ago, but I am really busy at the moment, so it took me some time to write this up. Last week I have been to Stuttgart on business: A course on Computational Fluid Dynamics at the
HLRS – the High Performance Computing Center (Höchstleistungsrechenzentrum) Stuttgart. I have been to a course organised by them
already in march, back then on MPI and OpenMP. This time it was not as brilliant, but still extremely good. But one thing after another. First:
How come that at 6am a train can already have a delay of more than 10 minutes?
I left in time from Berlin – and learned that I could have also get on the train in Wannsee, which would have saved me an hour – with the highly uncomfortable night train and was supposed to change in Augsburg within 5 minutes to the ICE going to Stuttgart. Well, I was standing there for close to twenty minutes but at least I could get a good nap in the ICE in the much more comfortable chair. Anyhow, I had sufficient time to grab some breakfast at a coffee shop in Stuttgart main station before I had to get on the train to the university. They had fresh orange juice, which was a bit surprising. Not surprising was the price: 5Eur and a bit for a (bad) coffee, a bretzel and the orange juice.
After the 10 minutes ride to the university and climbing up gazillion of stairs – probably the tunnel can also function as a nuclear war shelter – I got confused as to where to go exactly. The campus is pretty big and it took a few minutes to figure out in which specific direction (the general direction was easy) to go. I decided on taking the safe route (following the road) instead of trying to find my way through the different institutes and residences. It was only another 20 minutes walking, a bit annoying with the luggage; later I thought that it might have been a smart idea to leave the luggage in a locker at the train station, oh well.
Once being registered, meaning having payed the not really high fee of 40EUR, I could pick up my name-tag and choose a place in the seminar room to start browsing through the course material that was already laying on the desk. After a while I was joined by a newly arrived participant who introduced himself as Steffen. And as it turned out, he is also an astrophysicist. Interesting coincidence.
Anyhow the course started off with a general introduction to fluid dynamics and we could use a demo code to simulate the flow around a wedge profile. Not that amazingly fascinating but nonetheless a nice thing to start it off. During the coffee breaks and the lunch I got to know a few more people, always interesting to talk with guys doing something different.
After the last exercise I grabbed my luggage and started my journey back to the main station to walk from there to the youth hostel, where I had booked a place. That turned out to be slightly more difficult than anticipated: On the map it looks just like going out of the main station, turning left, following the road, turning left again, arriving. Sounds easy, doesn't it? Yeah, but how to follow the road if there are no sidewalks? So I zigzagged around, generally trying to follow the road until I saw the road disappearing in a tunnel. Hurrah. But luckily I spotted a sign to the youth hostel, so I followed that one up the hill. After some climbing up I finally arrived at the youth hostel. Well not quite. I arrived at the lower part of it. The part with the closed entrance. So it again meant climbing up quite some stairs, going around the building before arriving at the real entrance: a bridge leading to the top of glass tower which holds an elevator that goes down two floors to the reception.
There I had to wait for close to forty minutes before the five people before me checked in (and someone sneaked in between to check out). So I got the usual indoctrination ('No smoking!', 'No alcohol in the rooms') and my key-card. With this I had to go down another two floors, through two doors and again down two floors. Once I finally reached my room and had a look out of the window, I could verify that I was only one floor higher than the closed entry where I was standing nearly an hour ago. But okay, a little exercise supposedly is not bad. At least it was good for going to bed early.
The next day greeted me with rain. And of course I did not pack an umbrella. But due to waking up at 5:50am I had quite some time reserve which I decided on investing in buying an umbrella at the main station. There was no way I could reach the station without getting partially wet – not that getting a bit wet is such a bad thing, I was only worrying for the laptop in the backpack – but with the umbrella I would at least not get wet again when walking from the station at the university to the seminar room. But it is really difficult to find an umbrella at all those shops in the main station, one would expect to have a wide variety to choose from. After searching for 50 minutes I finally had the choice between a black and a red umbrella. I bought the black one.
While searching I completely dried and armed with the umbrella I managed to not get wet again during walking to the seminar room. At least a partial success.
The second day of the course introduced the basic methods to solve the fluid equations: finite differences, finite elements and finite volumes. The focus was on the FV which lead to the Riemann problem and Godunovs idea. Most of the time was then spent on introducing different flux solvers. For the practical part, we could try the different solvers on the standard shock tube problem and some other problems defined by Toro.
During the breaks I figured out that one of the girls was also staying at the youth hostel, so I had company for the breakfast and the ways back on forth for the rest of the week, quite nice. In the evening there was a short guided tour through Stuttgart with dinner afterwards. In my perception the city is not exactly beautiful, but also far from ugly. With more time I would have walked along the park belt. But well, I wasn't there for touristic reasons. Oh, I should mention that since I was now the proud owner of an umbrella it of course didn't rain anymore the whole week.
The third day of the course introduced higher order methods where I finally saw what flux limiters are used for and why they are needed. The spatial higher order is conceptually not that difficult to grasp, going from constant (1st order) via piecewise linear (2nd order) to piecewise parabolic (3rd order) is quite obvious. The nontrivial part lies actually in the higher order in time. A very interesting method besides the obvious Runge Kutta method is the Cauchy-Kovalevskaya method, which bases on the replacement of time derivatives by spatial derivatives. That looks really fascinating and I am already reading up on that, but cannot say that I completely grasped the method.
Also the discontinuous Galerkin methods was introduced, which is an extremely interesting (for me) way to go to higher orders without loosing the locality of lower orders. Read: Being at cell i I need to know – for e.g. 4th order – about i-3, i-2, i-1, i+1, i+2 and i+3 which requires to have a boundary of three cells. That is really bad for parallelizing, as each boundary cell has to be communicated. With the DG scheme it is sufficient to just know the direct neighbour. This of course comes with a price, mainly that it is way more complicated to implement. I am also reading up on that to check how feasible it is to work on that. The good thing of higher orders is of course, that I can reach the same effective error level as compared to a low order method with a coarser spatial (and temporal) discretization; which in turn can have a huge impact on the computational cost, as the size of the smallest grid cells determines the size of the time step. This requires quite some further investigation, but looks really promising.
On the fourth day, we started with implicit methods, which have their advantages in the application to slowly changing systems, as they are fully stable, meaning that the time step can be really large. The difference between explicit and implicit methods in the time step can be up to some million. But that does not quite look as something that is applicable to cosmological gas dynamics. Also it requires the solving of huge linear systems, which is a non trivial task. The introduction to turbulence basically only convinced me that this is a field of research where we do not really know a lot yet. A bit more interesting was the step from the Euler equations to the full Navier-Stokes equations, which makes the whole system a bit more interesting.
Also on Thursday, we planned on going to the state gallery for some culture, but as it turned out, a big exhibition (Monet) was about to finish, and hence there was quite a queue in front of the museum. So we decided on not going there but rather directly meet with some other guys and go with them to the cocktail bar instead of joining them there later.
So we went to a bar with 333 cocktails on the menu. Frankly, I don't take that as a sign for quality. But the two I had, a Long Island Ice Tea and a Surf tasted really nice and the cocktails of the others also looked okay. But still, I don't think that the quantity is such a convincing argument for a bar.
At the last day we finally had some lectures about parallelizing a hydro code. It was mainly a very short and thus not really detailed version of the course I visited in Dresden. But still it was a nice repetition. Completely uninteresting in my humble opinion was the talk about commercial codes, but then they for sure do have their merits.
In total is was a very good week, interesting and helpful talks, nice people, good location. Nonetheless I was happy to get on the train back to Berlin. It only took five hours from main station to main station, quite competitive to the plane. The batteries in my laptop hold for the bigger part of the ride, so I could relax with music – of course I forgot to put some movies on the hard drive before I left.