Description

For the modeling of solids, the constructive solid geometry (CSG) technique is often used. It allows to create models with rather complex surface by boolean operations such as intersection or union of simple objects like balls or cubes.

Netgen provides CSG support for three-dimensional objects already. The task is to add support for the simpler two-dimensional case. We have inherent scientific demand for such a two-dimensional add-on in order to be able to run flexible...

Description

Computational fluid dynamics (CFD) is a computationally intensive challenge and requires sophisticated algorithms as well as efficient implementations. NGSolve contains several methods for compressible and incompressible flow simulation on complex domains based on modern discontinuous Galerkin methods. We want to explore the benefit of graphics processing units (GPUs) for explicit time stepping methods in order to further reduce execution times of our solvers. The ViennaCL linear...

Description

NGSolve contains a Discontinuous Galerkin solver for time domain Maxwell equations. The explicit time stepping methods are inherently parallel, and are thus well suited for GPU computing. The ViennaCL linear algebra library should be used for accessing the vast computational resources of GPUs.

Benefit for the Student

The student will learn modern numerical methods in computational electromagnetics.

Benefit for the Project

We hope to improve the performance of the EM simulator...

Description

The linear algebra kernel in NGSolve is so far restricted to computations on the CPU. On the other hand, ViennaCL provides linear algebra on graphics processing units (GPUs) as a standalone library. The student should add appopriate switches within NGSolve in order to switch between the built-in NGSolve linear algebra and ViennaCL for general (black-box) linear algebra tasks.

Benefit for the Student

The student will gain experience with the pros and cons of general purpose...

Description

In order to unleash to full computational power of GPUs for sparse matrix-vector products, suitable storage schemes have to be used. The optimum storage scheme, however, depends on the structure of the underlying matrix. A number of different storage formats have been proposed with very different pros and cons. The difference in execution times for sparse matrix-vector products can be easily one order of magnitude if the wrong storage format is chosen. Support for the most...

Description

For the solution of a dense system of equation, LU-factorizations (aka. Gauss solver) are typically employed. However, a naive implementation of a Gauss-solver might fail for a large class of matrices and is rather sensitive to numerical noise.

A substantial improvement can be achieved by so-called pivoting. This is essentially nothing but a reordering of the equations. However, it ensures that the Gauss solver succeeds for all regular matrices and reduces the sensitivity with...

Description

ViennaCL provides a couple of solvers for systems of equations. For many applications it is in addition desired to compute the eigenvalues of the system matrix. As usual, the method of choice depends on the structure of the system matrix.

Subproject 1: For huge, sparse symmetric matrices the largest eigenvalues can be obtained by the iterative Lanczos' Method, which should be implemented by the student. For non-symmetric systems, Arnoldi's Method should be implemented. If only...

Description

The memory on a single graphics adapter is typically limited to dense matrices of at most 10.000 by 10.000 entries. However, for many applications much larger matrices need to be handled, which can be achieved by distributing the matrices to multiple computing nodes. On the API level, library users wish to have the distributed data handled automatically, as if the matrix were located on a single GPU.

The student should implement such a distributed matrix type and provide basic...

Description

When solving a sparse system of linear equations Ax = b for x by means of iterative methods, the convergence can be improved considerably by formally multiplying the system with a matrix B that is a good approximation to the inverse of A. One possibility is to construct an approximate sparse inverse B by minimizing ||AB - Id|| for a certain sparsity pattern of B, where Id denotes the identity matrix.

The task is to implement a sparse approximate inverse preconditioner in...

Description

To further improve the quality of the generated tetrahedral volume meshes the open source tool Stellar should be investigated. The student should investigate the source package and develop an interface for ViennaMesh.

Benefit for the Student

The student will get hands-on experience with a state-of-the-art mesh improvement tool and recognize the importance of code modularity in scientific software.

Benefit for the Project

The unified access to different meshing kernels in...

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...

Description

For many applications such as the simulation of human bones, a volume mesh is constructed out of a hull mesh. Due to the high complexity of the geometry such as for example on the picture provided to the right, it is of advantage to decompose the hull mesh into smaller segments. Such a decomposition is indicated by the coloring in the figure. Volume meshes are then created in a parallel, distributed manner. The student should provide a C++ interface for a hull mesh decomposition...

Description

ViennaMesh is based on a set of mesh related tools and algorithms for generation, adaptation, and classification. Due to the diversity of the input geometries there is no global optimal tool chain which results in high-quality meshes for all different input meshes. The student should investigate a generic algorithm to find an optimum for the mesh generation tool chain in regard to arbitrary coupled properties, for example, reducing the mesh element size by simultanously...