Description
Large mesh generation and adaptation tasks for real-world applications such as the simulation of a thigh bone (fermur, see picture) naturally introduce the need for parallelization. For a hull mesh consisting of separate pieces with well-defined interface, a volume mesh for the full structure can be obtained by meshing the individual pieces in parallel by serial meshing kernels such as Netgen. The student should accomplish such a parallel volume meshing step based on a small-scale shared-memory approach using Boost.Thread, and on a large-scale distributed-memory approach using Boost.MPI.
Benefit for the Student
The student will gain valuable experience with the parallelization of the mesh generation process for large scale simulations. Obvious and not-so-obvious differences between distributed and shared memory architectures are explored in a hands-on manner.
Benefit for the Project
ViennaMesh can access the full power of multi-core CPUs, reducing total meshing times to a bare minimum for an a-priori independent interiors of different segments.
Requirements
Good C++ skills are required accompanied by some basic experience in generic programming, like Tag-Dispatching. Basic skills in multi-threaded programming or in MPI programming are required.