[MBDyn-users] CFD Coupling with MBDyn (External Forces)

masarati at aero.polimi.it masarati at aero.polimi.it
Mon Jun 28 22:53:54 CEST 2010

> MBDyn Users,
> I am a new MBDyn user, with only a couple weeks experience under my
> belt.  I am currently trying to build a micro-aerial flapping wing model
> in MBDyn.  I hope to capture aeroelastic effects, and therefore, need to
> couple a CFD code with MBDyn.
> If anyone has worked on a similar problem, who would be willing to share
> some of there experience, I am sure it would go a long way in helping
> me.  It appears that there are a few different ways to set up the
> communicator, and also several coupling parameters to choose from.  Any
> experience, knowledge, or advice regarding these issues would be
> especially helpful and appreciated.


I'm currently working with Jay Sitaraman at something similar.  We coupled
MBDyn to TURNS (the CFD code Jay's using) by means of the Python interface
we just developed for MBDyn.  You'll find it in the latest release,
1.3.15.  This thing is definitely experimental, as we're actively
developing it, but it seems to work just fine.  I warn you because some
details may change across versions until it freezes.

Assuming you know how to model your problem, the interface we have
developed so far consists in the "external" force family, consisting in
"external structural", "external modal" and their "mapping" variants.  The
latter I won't discuss in detail, because it is not complete yet.

The "external structural" force is an element that basically sends the
kinematics of a set of nodes to an external solver, and expects to receive
back the corresponding forces and moments.

To interface with CFD, you need to be able, in the CFD, to transform
pressures in equivalent nodal forces and moments, namely to reduce the
pressure field to the generalized forces corresponding to the virtual
displacement and rotation of each node of the set.  I assume you can
extract this type of information from the CFD code.

Then, MBDyn provides a python client library that takes care of
communicating with the solver.  You need to use this library in the CFD
solver to communicate the required information.  The whole procedure is
relatively simple; I'm posting a simple test case that corresponds to a
very simple helicopter rotor that talks to an external process, in Python,
that applies forces to all nodes.  It is available here
We used a rotor model because it was the focus of our research, and also
because it is relatively easy to compute CFD mesh deformation from nodes
corresponding to a rotor blade modeled with beams.

The key point is transforming the motion of a set of nodes into a CFD mesh
deformation.  Currently, MBDyn sends out the motion of its nodes, and
moves the burden of mesh deformation to the CFD solver.  We are working at
performing mesh boundary deformation inside MBDyn.  This uses the
"external structural mapping" element I mentioned earlier.  Basically,
MBDyn will compute the motion of a set of points (possibly corresponding
to the interface boundary of the CFD mesh) as an interpolation of the
motion of a set of its nodes.  We plan to complete the development by the
end of the summer the latest.  MBDyn's element is already implemented; we
are currently refining the interpolation strategy.

Please note that these features are only briefly documented in the
documentation available on the website, mainly because they are under
development.  I will upload more up-to-date documentation shortly.

I hope this helps.  If you need more details on specific topics, please ask.

Cheers, p.

More information about the MBDyn-users mailing list