Fluid-structure interaction : Code_Saturne / Code_Aster coupling

3 October 2012

by C. Bodel, EDF R&D / AMA

Goal : Applying on a beam model an effort calculated by Code_Saturne (see the vector representation of the effort on the image below).

Code_Saturne calculates an unsteady effort applied to a beam, representing the turbulence induced by the flow around it. In Code_Saturne, an LES model has been used for turbulence, which allows to model the larger vortex structures.

Picture 1 : Excitation fluide.

Concerning mechanics, we wish to calculate the vibration of the beam subjected to this effort. Howto ?

  1. Load the fluid and solid meshes,
  2. Load fluid calculated data, that Code_Saturne has exported in MED format, in the form of a constant field per cell, consisting of three components vectors corresponding to the three components of the resultant force. For this, a small modification has been done in LIRE_RESU.
  3. Create, for each time step, three Aster functions parameterized by abscissa along the beam, whose value is a component of the imported force. Python routines, retrieving the cell of the fluid mesh corresponding to a given abscissa, were created for this.
  4. Apply force on the mechanical model (model with POU_D_T beams) with the loading option FORCE_POUTRE. The dynamic calculation is linear with shock, one use DYNA_VIBRA on temporal and modal base.

In most calculations in linear dynamics, the loading is defined by separation of variables in the form f(x).g(t), the function g corresponding to the FONC_MULT parameter in the definition of loads. It is not possible here, the loading being imported from the most general possible way. The load applied to the mechanical model is assembled as a result of transient dynamics (sd dyna_trans), and projected once on the generalized basis.
To do this, we created a new operator called PROJ_RESU_BASE similar to PROJ_VECT_BASE, to project in once all the time steps. For ease of use, this operator is used with the command PROJ_BASE (former MACRO_PROJ_BASE). An example is given in the test case sdls119b.

Concerning the computation time, the most important time cost is to recover the about 10000 fluid times steps, and apply them to the mechanical calculation. The use of Aster functions is the most rigourous solution, but not the most efficient. The duration for this part of the computation is about 4 hours. Dynamic calculation itself takes an hour (for a 6s transient calculation). But it remains far from two months of time necessary for the execution of the CFD-LES calculation with Code_Saturne ! Simple chaining, since the assumptions for its use are checked (no back-action of the solid on the fluid) permit to decouple the two calculations.

This is the displacement obtained on the multi-supported beam :

Picture 2 : Displacement on the whole part of the pulti-supported beam.

Finally, the calculation results are relatively good compared to full-scale trials. Comparison of auto-spectra in the figure below (a measurement point in the middle of crossing) shows.

Picture 3 : Auto-spectra