MmProcess
The GeMA Mesh Mapping Process Plugin
MmProcess

Introduction

The mesh mapping process is widely used in a multi scale / multi physics coupled simulation context where we could have to handle with different meshes or element types for each kind of simulation. It consists in transferring data from a source mesh to a destination mesh as described on Figure 1. The data can be stored on mesh nodes and/or on its elements gauss points.

gemaMmProcess_0.png
Figure 1: Mesh mapping process between two meshes

This plugin provides the implementation of the needed mesh mapping algorithms. It also provides the implementation of a spatial index object that, besides its use to speedup the data transfer, can also be used for general purpose settings.

The bucket index

The algorithm we use to speed up the mesh mapping consists in a bucket indexation of the nodes and elements. The index is represented by a dynamic grid partitioning the underlying space from which nodes and elements are drawn into equal-sized cells (see [1]). The use of the indexation structure considerably increases the speed of basic operations like getting the closest vertex or the containing element of a given point in the domain.

Since the bucket index is a standard spatial index object, it can be created in the model description as any other Spatial index object. The plugin options needed for configuring the bucket index can be found here.

A bucket index can also be created by the following funcion exported to the orchestration environment:

Its full documentation can be found here. Since the returned object is a spatial index, location queries can be executed using the standard spatial index methods.

[1] "Fast mapping of finite element field variables between meshes with different densities and element types" - Scrimieri, et al. 2013 [PDF]

The mesh mapping

Thanks to a bucket index with its locating operators and some interpolation methods (specified by the user cf. interpolator section), we are able to map data between two heterogeneous meshes. Figure 2 and Figure 3 show the result of a mapping between two meshes of a 2D domain observed on a sample region. A random field of scalar values associated to the nodes of a source mesh (a) is transferred on the nodes of a destination mesh (b) using a linear interpolation. Both meshes are structured grids and were locally modified through a local node perturbation process.

gemaMmProcess_1.png
Figure 2: Sample region on a triangular mesh with ~500k elements

gemaMmProcess_2.png
Figure 3: Sample region on a quadrangular mesh with ~250k elements

The functions relative to the mesh mapping and exported to the orchestration environment are:

Its full documentation can be found here.

GeMA project main page