Welcome to my homepage. I am a programmer living in Prague, Czech Republic.
On this page you can find some of the projects I did at school, at work, or just for fun.
If for any reason you would like to contact me, use one of these:
e-mail:
jakub.cerveny@gmail.com
phone: +420 774 696 074
You can download my
resume and my Ph.D.
thesis.
Recent Projects
Work for BISim (2011)
Currently I work at
Bohemia Interactive Simulations as an engine programmer, maintaining and improving their 3D military simulator. I work on a variety of tasks, including optimizations and removing limitations of the engine. The image shows a rendering of a virtual terrain with improved detail and extended view distance.
Work for Dynavix (2010)
At
Dynavix, a Czech company developing automobile GPS navigations, I worked on the core route finding component of their navigation software. I rewrote it from scratch and implemented support for dynamic road networks with speed profiles (i.e., the route is optimized according to the time of day in order to avoid traffic jams). The image on the right shows an example of the road speeds in Prague on Monday 8:00 am (warmer color means higher speed). The challenge is to store the search graph efficiently and to make the route search reasonably fast even on a low-performance device with limited memory. Substantial off-line precalculations need to be done on the map data, which is another area I worked on. I optimized several map processing utilities and parallelized them using OpenMP, reducing significantly the time needed to produce map updates.
GLSL Shaders (2009)
I finally got around to learning OpenGL 2.0 with GLSL shaders and basic modeling in
Blender. I needed it for a simple demo of a tunnel traffic simulation. The whole thing turned out to be quite easy in the end thanks to the decent documentation of Blender and the great
Lighthouse GLSL tutorial.
The demo shows a road tunnel with lighting precomputed ("baked") in Blender. Unfortunately I didn't succeed with radiosity in Blender so the lighting is very basic. The cars use per-pixel Blinn-Phong lighting and some environment mapping, both done in GLSL. I also played with normal mapping but didn't use it eventually. Car shadows are baked ambient occlusion maps.
Executables: Windows 32, Linux 64 (depends on libpng, glut, glew)
Data: tunnel-data.zip
Source: coming soon
Combustion Problem (2008)
After the h-adaptive Navier Stokes solver we wanted to try full hp-adaptivity on a dynamic mesh. In this combustion problem a laminar flame is propagating through a domain according to the Arrhenius law (top image). Fuel temperature and concentration are tracked and they share a higher-order mesh shown in the bottom image. The mesh is changing in time and is only refined near the flame, where more accuracy is needed. The constriction in the domain models two cooling rods which slow down the reaction.
Video: combust.avi (11MB)
See also the Hermes2D gallery.
Adaptive Navier-Stokes Solver (2008)
Hermes2D can also be used to solve problems of fluid flow and other time-dependent problems. This example is an experimental Navier-Stokes solver in which the finite element mesh is adaptive and moreover it is changing in time, which is unusual. This is possible thanks to the ability of Hermes2D to assemble the stiffness matrix of the problem over several different meshes at the same time (the meshes have to be nested). The adaptive solver allows using higher Reynolds numbers than a simple fixed mesh solver can. Please note that this is not hp-adaptivity, since the velocity mesh is quadratic only.
Videos: Re=1000 (zoom),
Re=4000 (zoom),
Re=20K (zoom),
Re=100K (zoom)
The code can be found in hermes2d/examples/36-ns-timedep-adapt.
Linear Elasticity with hp-Adaptivity (2007)
This is an example of solving an elliptic problem with Hermes2D. The task is to find displacements and elastic stresses in a bracket fixed on the right and loaded with a force on the top. The example demonstrates the ability of Hermes2D to use both triangular and quadrilateral elements, which can optionally be curved. The elements can of course have different polynomial degrees and the mesh is automatically hp-adapted. Exponential convergence is attained. This is now one of the basic examples in Hermes2D documentation and can be found in hermes2d/examples/10-adapt-system.
Hermes2D Project (2005-2008)
I was given the opportunity to participate on the development of the project Hermes2D in a
group led by
Dr. Solin at the University of Texas at El Paso. Hermes2D is an advanced finite element solver using higher-order polynomials (as opposed to standard piece-wise linear FEM codes). It also supports irregular meshes and is capable of hp-adaptivity, a powerful error reduction method which can achieve exponential convergence. More info at
http://hpfem.org/hermes2d/.
I joined the group in 2005. I redesigned the code, then still only working with regular meshes, to withstand the implementation of arbitrary-level hanging nodes. After adding support for hanging nodes I implemented automatic hp-adaptivity as well as other things. This work eventually became my Ph.D. thesis. I continued working on Hermes2D until the end of 2008.
The code can be obtained by cloning its GIT repository:
git clone git://hpfem.math.unr.edu/git/hermes2d.git
Here is also the state of the project at the time I was leaving the group: hermes2d-0.5.4.tar.bz2 (in case the above command does not work).