About the mesh and data Synchronization for FEM–BEM Coupling

Hi all,

I’m working on a problem that involves coupling FEM and BEM methods using FEniCSx and BEM++. The workflow I’m implementing is as follows:

I. I solve the Laplace equation using FEniCSx (in parallel) to obtain a potential field Phi.

II. I then use this potential as input for bempp (which runs in serial) to compute the normal flux on the boundary.

III. Finally, I want to use this computed boundary flux as input data for another PDE in FEniCSx.

What would be the optimal or recommended way to manage this FEM/BEM coupling, especially regarding mesh and data exchange?

Since FEniCSx runs in parallel using MPI, the mesh is distributed across different processes. However, BEM++ needs access to the full (serial) boundary data. I was considering loading the mesh twice — once in parallel for FEniCSx and once in serial for BEM++ — and then matching the boundary node indices between the two representations.

Does this approach make sense? Is there a better or more robust method for transferring boundary data between FEniCSx and BEM++?

thanks

Hello,

The best way to do this is probably to get Bempp to run on a single process, and FEniCSx to run on all other processes, then get FEniCSx to send the distributed boundary grid over to the Bempp process for Bempp to use.

This isn’t too different to loading the mesh twice - if your mesh isn’t too large, it may be simpler to implement it that way.

There was some work going on in Cambridge to implement parallel coupling with FEniCSx and Bempp, but I’m not sure what state it ended in. We’ve been working on a MPI parallelised new version of Bempp (bempp-rs) so when that’s eventually done, this may be easier to make work.

Thanks for the clear explanation.