Emmanuel Maitre - Homepage
Emmanuel Maitre - Homepage

BOMBEC : Benchmarking Of Models Based on Eulerian Coordinates

Bombec is a set of codes developed in Jean Kuntzmann Laboratory (LJK, U. Grenoble) and implementing the Eulerian approach to fluid-structure coupling problems. The sources can be downloaded by developers using svn on https://ljkforge.imag.fr/projects/bombec/. The main developers of these codes are Claire Bost, Georges-Henri Cottet, Emmanuel Maitre and Thomas Milcent. This Wiki aims at providing basic informations and usage guidelines about each tool included in the library. It is still under construction.

Acknowledgment: this project is supported by ANR COMMA.

Plume link: access to the Plume page of BOMBEC: French English

Library components

Elastic membrane interacting with a fluid

This set of codes implement the Level Set method developed in Cottet-Maitre (M3AS, 2006), and further developed in 3D by Thomas Milcent in his PhD thesis. Several codes are available:

  • Matlab Code: For educational purposes, we wrote two matlab codes implementing our method in 2D. One implicit with fixed time step and Choleski factorization an another explicit with variable time-step. Figure below on the left displays pressure field and stream lines during the relaxation of an ellitic membrane to a circle.
  • Membrane 2D: FORTRAN90 implementation of the level-set method in dimension 2, with membrane and curvature forces. Application to the simulation of the behavior of red blood cells in shear flow. Presently AMR techniques using AGRIF are under development.
  • Thomas 2D: C implementation of the same problem with different discretizations by Thomas Milcent.
  • Canal 2D (in progress): FORTRAN90 code for the motion of vesicles in Poiseuille flow. Pierre-Yves Gires presently develops this code in his PhD.
  • Instabilite 3D: Navier-Stokes 3D using projection method coupled with simple elastic energy of an immersed membrane (no curvature energy, C code). This code was developed to study the parametric instability of the coupling between the fluid and the elastic membrane starting from a work of Cortez et al (2002). See middle figure below, where an isovorticity surface is depicted (membrane not represented).
  • Thomas 3D: C implementation, in dimension 3, with membrane and flexural energy. Currently the code is able to find equilibrium shapes of vesicules in 3D, and to study trank-treading motion (picture on the right, below). The variable viscosity case is not yet implemented. Developer: Thomas Milcent.

Pressure plot of a relaxing elastic membrane. Matlab code. Tank treading motion of a 3D vesicle in shear flow. Thomas Milcent. Vorticity plot of a 3D membrane.

Generic Fluid/Elastic structure coupling

Real geometry of a cardiomyocyteRigid sphere falling in a fluid. Claire Bost PhD Thesis.

In this generic case we write elasticity in Eulerian coordinates inside the solid and fluid equations outside. We use a Level Set function to ensure stress continuity at interface. Our application concerns the simulation of isolated cardiomyocyte contraction (see picture of a numerized cardiomycyte on the right. Experimental data from Yves Usson). For the theory behind the method we refer to an article in M2AN in 2008, and a special issue of MCM on computational biology in 2009.

  • cardio3d: is a computational code written in C which implements the method developed in the fore mentioned articles. It encompasses a coupling between the cardiomyocyte elasticity, the carrier fluid equation, and an active contraction triggered by a the propagation of a calcium wave.

Coupling between a rigid solid and a fluid

This part has been mainly developed by Georges-Henri Cottet using particle methods and Claire Bost during her PhD Thesis using a finite difference computational code in 2D and 3D. We use penalization techniques to enforce the velocity field to be rigid in the solid part. In fact the solid part is first considered as fluid; then we compute a mean velocity and vorticity on the solid domain and penalize in an implicit manner (as a damping term) the fluid velocity distance to that rigid field. We prove a convergence result in a submitted article where this method is developed.

  • Solide rigide: Is a computational code developed in C by Claire Bost to implement the method studied in this preprint.

How to build and use Bombec ?

  1. The first thing to do is to get an up-to-date version of Bombec thanks to the following svn command:
    svn checkout svn+ssh://user@scm.ljkforge.imag.fr/svnroot/bombec

    where “user” is your login in LJKForge. This will create or update the directory bombec in your current location.

  2. Create at the same level as directory “sources” a directory named “build”. If this directory already exists, you can delete it to start from scratch.
  3. cd to directory “build” and type (need cmake version 2.6 or newer):
    cmake ../sources
    make
    make install

    Note: cmake selects automatically the C and Fortran 90 compilers. If it fails to choose the right compilers, you can force it. For instance on computer Abel to select Intel compilers you have to type:

    setenv FC /opt/intel/intel-fc/8.1.025/bin/ifort
    setenv CC /opt/intel/intel-cc/8.1.029/bin/icc
    setenv CXX /opt/intel/intel-cc/8.1.029/bin/icc

    before invoking cmake. If you first tried another compilers set, you have to start over from scratch by removing the “build” directory.

  4. cd to subdirectory corresponding to your application and launch the executable. For instance for membrane 2D:
    cd membrane2D
    ./membrane2d
  5. Visualize the results. Depending on the application this will require OpenDX or Paraview.

Work in progress / ToDo list

  • AMR using AGRIF on membrane2d and then membrane3d code. Collaboration with Laurent Debreu.
  • Device stable numerical schemes for stiff elastic interactions.
  • Adaptation of codes to model the motion of a cell on a substrate.
  • Motion of red blod cells in small vessels: behavior of vesicles in Poiseuille flow.
Back to top
bombec.txt · Last modified: 2011/02/09 00:04 by maitre