Parallel Computing


This functionality is a work in progress.

It is only available for NETGEN.

It is only available in TUI.

The goal here is to speed up computation by running sub-meshes in parallel (multi-threading).



In order to parallelise the computation of the mesh we split the geometry into:

  • A 1D+2D compound

  • A list of 3D solids

Then create a sub-mesh for each of those geometry. And associate Hypothesis to the mesh using a hypothesis on the whole geometry

We will first compute sequentially the 1D+2D compound with NETGEN_1D2D.

Then we will compute all the solids in parallel. Having done the 1D+2D first ensure that all the solids can be computed without any concurrency.

How to

You follow the same principle as the creation of a sequential Mesh.

  1. First you create the mesh:

    par_mesh = smesh.ParallelMesh(my_geom, name="par_mesh")
  2. Define the Global Hypothesis that will be split into an hypothesis for the 1D+2D compound and one for each of the 3D solids:

NETGEN_3D_Parameters_1 = smesh.CreateHypothesisByAverageLength( 'NETGEN_Parameters',
                                 'NETGENEngine', 34.641, 0 )
  1. Set the method for the parallelisation:

You have two methods for parallelisation:

  • Multihtreading: Will run the computation on your computer using the processors on your computer.

  • MultiNodal: Will run the computation on a remote resource (cluster) that is defined in your salome catalog.

  1. Set the parameters for the parallelism:

  • Multithread:

    param = par_mesh.GetParallelismSettings()
  • Multinode:

param = par_mesh.GetParallelismSettings()
  1. Compute the mesh:
    is_done = par_mesh.Compute()
    if not is_done:
        raise Exception("Error when computing Mesh")

See Also a sample script of Creating Parallel Mesh.