FSI coupling between OpenFOAM and MBDyn of a cycloidal rotor

In this project a FSI coupling was established together with @louisgag to investigate the influence of rotor blade deformation of cycloidal rotors and its effect on the rotor efficiency.
The preCICE OpenFOAM adapter uses the pointDisplacement function of OpenFOAM to couple motion data. However, simulating rotating bodies of a cyclorotor is not yet possible with this approach in OpenFOAM. Therefore an additional OpenFOAM class was added to couple the rotation motion directly from the MBDyn adapter to OpenFOAM.

The work was part of a Bachelor Thesis conducted at the Institute of Aerodynamics and Gas Dynamics Stuttgart, Germany (link).

A dataset of the simulation results including the base case setup can be found here:
Schließus, Julian and Gagnon, Louis, Data for: Create a Fluid-Structure Simulation Framework for Cycloidal Rotors, DaRUS, 2022, https://doi.org/10.18419/darus-2232

The results have also been presented at the HPC-Asia 2022 MMCP workshop (abstract, video).

The following software / adapters were used:

  • preCICE OpenFOAM adapter
  • adjusted preCICE MBDyn Adapter, developed by Hagen Leipprand at the Institute of Aerodynamics and Gas Dynamics Stuttgart, Germany
  • Python 3.7.6 to process the data between MBDyn and preCICE
  • C++ to couple the rotation motion of the rotor via a socket connection from the MBDyn adapter to OpenFOAM
  • preCICE v2.2.0
  • OpenFOAM v2012 as fluid solver
  • MBDyn as structure solver (utilized branch)

@JulianSchl since others often ask how to do FSI of rotating bodies, could you please give a summary of your research on which approaches/situations are currently working with the (unmodified) OpenFOAM-preCICE adapter? For example, does an overset grid approach (where the body is immersed into the inner, rotating grid) work? From your HPC Asia abstract, I understand that you followed this approach.

sorry for my late reply :slight_smile:

First of all I have to point out that it is not possible to couple the (rotaitional) movement of a body with preCICE, so you can only couple the parameters suggested here (e.g. deformations, forces, …).
You either have to set a motion via the OpenFOAM configuration files or couple the motion via a custom link between you solvers. In my case I used a TCP socket connection to couple the motion data betwenn my structure and CFD simulation.

Having in mind that you have to deal with the motion as mentioned, with preCICE v2.2.0 it is possible to rotate one single body using the solidBodyMotion while coupling deformations with the displacementLaplacian solver via preCICE.

However it is not possible to move multiple bodies with the OpenFOAM v2012 solidBodyMotion while simultaniously deforming the bodies with the displacementLaplacian solver. The problem is that for such cases OpenFOAM provides the multiSolidBodyMotionSolver, which is not supported by preCICE (yet :wink:).

To handle this issue, @louisgag created a coustomized version of the solidBody motion solver, the solidBodyDisplacementLaplacianMultiZone solver.
With this adjustment OpenFOAM can handle the motion of multiple moving zones while using the displacementLaplacian solver.

So I’m not sure if I understand your explanation of “overset grid” correctly, but the simulation of a single moving/rotating body over a background grid (chimera method) works fine with preCICE. If you want to move the background mesh additionally to a body, you may look at my github case where I implemented this with the solidBodyDisplacementLaplacianMultiZone solver.

1 Like