Mapping in Rotating Systems with OpenFOAM and preCICE Coupling

Hello everyone,
I am working on a wind turbine rotor FSI coupling problem using OpenFOAM with CalculiX through preCICE. I have a question about how preCICE handles mapping consistency when both solvers are performing synchronous rotations.
In OpenFOAM:
I am using the solidBodyDisplacementLaplacian solver, which supports both rigid body motion (rotation by using sliding mesh) and elastic deformation (DisplacementLaplacian). The rotation is defined in the dynamicMeshDict using a specified rotation axis, center, and angular velocity.
In CalculiX:
The structure is also rotating with the same angular velocity using a Predefined Field . This means that the deformation calculated in CalculiX includes the effect of rotation.
Then displacements (pointDisplacement) are transferred from CalculiX to OpenFOAM. Forces are transferred from OpenFOAM to CalculiX.
My Question is if both OpenFOAM and CalculiX are set to rotate synchronously with the same angular velocity, will the point-to-point mapping in preCICE (nearest-neighbor or nearest-projection) still work correctly? Since the CFD mesh in OpenFOAM is rotating, and the structure in CalculiX is also rotating, will preCICE recognize the relative positions of the points correctly during the coupling process?
Any help would be greatly appreciated! Thank you very much!

Hi @Luna927,

we don’t have any examples about this, so you are a bit in uncharted territory.

I assume that the two domains rotate with the same velocity and their relative velocity is zero, and that you are interested in the small displacements on top. I assume you could model this with an overset mesh, and this should be similar to the usual case.

I am not sure of the details here, but my gut feeling tells me that maybe @Claudio might have some clues on this interesting use case.

Hi @Luna927,
Unfortunately, I don’t have much experience with this kind of simulation. I wonder if you can use a moving reference frame for fluid and solid cases. There is room for a lot of experimentation here. If you like, we could try some simple tests to find the best configuration, assuming that what you are looking for is feasible with the current version of all the tools involved. Please reach out to me if you are interested.
Claudio

1 Like

Hi @Claudio ,
Thanks for replying! I’ve spent the last few days trying to couple a rotating wind‑turbine rotor to a structural model.

I get your idea: if both solvers run in the same moving reference frame (MRF), the interface motion is nearly zero and the coupling becomes simpler—definitely worth a try.

For my rotor, though, I’m using a sliding‑mesh (AMI) setup, because I need the transient effects (tip‑vortex shedding, dynamic stall) that MRF tends to smooth out; sliding meshes are the usual choice for blade‑resolved work. If I stick with AMI, do you think it still makes sense for us to search together for the ā€œbestā€ configuration?

Current setup

  • OpenFOAM – AMI + solidBodyDisplacementLaplacian: the grid follows the rigid rotation, then a Laplace solve adds the elastic part.
  • preCICE mapping – built once at t = 0. Since both meshes co‑rotate, only the small elastic displacement remains. I modified the adapter to subtract the rigid motion and send only the elastic part.

The mapping works, but the solver diverges when I pass the full displacement. If I scale it to 1 Ɨ 10⁻⁓ the run is stable more than 0.5s(Ī”t=0.0005s)—still tracking down the cause (possibly mesh quality) :sob:.

Any practical tips on wind‑turbine FSI are welcome. I can share a minimal case if you’d like to experiment.

Cheers,
Luna

@Luna927 if the current approach is not enough for your use case, maybe remeshing could be an option for you:

This is a new, experimental feature, and @fsimonis could use your feedback.

Hi @Makis,

Thanks for sharing the update!

I’ve been following the perpendicularFlap tutorial recently, and I’m happy to share that my wind turbine FSI case can now complete one full cycle (~5s) without crashing — which is a promising step forward.


You can see that the structural displacement is correctly transferred to OpenFOAM.

However, I’m currently facing a puzzling issue: when I use a coarse mesh, everything is stable; but when I refine either the fluid mesh, the simulation becomes unstable and diverges after a short time.

I’m attaching my current precice-config.xml file for reference. I wonder if this could be caused by the coupling scheme, the mapping method, or maybe enabling subcycling. Do you think there’s anything in the configuration that could be optimized to improve stability?
precice-config.xml (1.8 KB)

I’d truly appreciate any thoughts from you or @fsimonis.
Thanks again!

Best regards,
Luna

1 Like

Hi @Luna927 ,

I think the .xml file cannot be download now, and may it’s more easy to find problem if you can upload your whole case.

Thanks for pointing that out! Sorry about the issue, I have re-uploaded the .xml file.
precice-config.zip (805 Bytes)

As for the full case, it’s quite large and the simulation takes a long time to run before it eventually diverges, so it’s not very convenient to upload. I’ve already verified that the fine mesh works perfectly in non-coupled CFD simulations. So for now, I’d prefer to focus on debugging the coupling setup itself.

Please let me know if there’s any specific part of the case you’d like to take a closer look at, or if you have any suggestions on what to check next. Thanks again!

Best regards,
Luna

The configuration looks unproblematic. As you are using subcycling, you may want to use the latest release of preCICE as there have been quite some improvements to the internal handling of coupling time. What version are you currently using?

@Gong_CHEN @Luna927 The XML file can show an error when opening in the browser. A common workaround is right-click the error page and select ā€œView page sourceā€.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.