CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Fluid structure interaction on baloons (

vinz November 28, 2006 04:44

Hi everibody, After some we
Hi everibody,

After some weeks of using OpenFOAM, I'm beginning a new project on fluid structure interaction on a balloon. So far, I've used icoDyMFoam on a cylinder to try the mesh motion, and after a while I finally got a nice osiclating motion (with the development version dowloaded on Frnak Bos website).
Now I have different questions about fluid structure interaction:

a) Does it exist a specific solver (maybe with tutorial case) in te development version (11/09/2006) allowing to treat the FSI?

b)If not, are there solvers that I should combine to make it work? or should I build everything?

c)As a first step, I would like to model my ballon like the rising bubble modeled by Mr Tukovic. Is his work already implemented in OpenFOAM development version?

I know I'm asking a lot but since I'm a beginner in C++, I'm trying to find the easiest tools to use before begining to modify the code (which I will do if there is no other possibilities).
Thanks in advance to any person who will help me.


hjasak November 28, 2006 06:26

There is a specific FSI code d
There is a specific FSI code developed by dr. Tukovic and myself and it lives in the development line. However, the tutorial case will be held back until the papers are published and further validation is done. I would suggest you contact dr. Tukovic (he is a dr.) and ask him to share his work. Alternatively, you can re-use the components of shared matrix classes, fluids and structure solver and my interpolation stuff to put the solver together from components. Everything is already available in OpenFOAM.

BTW, how do you intend to deal with the stress analysis on a baloon - the stress analysis solver in OpenFOAM will not do shells (unless you wish to add it).


vinz November 28, 2006 07:30

Hi, and thanks for the answ

and thanks for the answer. I just found in the source code the solver named icoFsiFoam. It looks interesting but I have to understand how it works exactly, and to find the files needed to make it work. The work I'm doing at this time is in fact a first approach of the phenomenon. And to answer your question, depending on my results and on the development of OpenFOAM (done by your team or by me), a Phd should be done on this topic.
So I don't know at the moment how I'll deal with the stress analysis. Presently, I'm trying to find more simple cases which could be similar to the balloon study and would already give a good idea about the capacities of OpenFOAM in the domain.
Anyway, I'm going to contact dr. Tukovic (sorry to forget that he was a dr.) and see if he can share his work. It would be of great help to begin my study.


vinz December 11, 2006 08:56

Hi Hrv, I contacted dr.Tuko
Hi Hrv,

I contacted dr.Tukovic to talk about his bubble rising work. It's working well.
I also wanted to try you icoFsiFoam solver. Since there isn't any tutorial yet, I tried, by reading the code, to create the files needed to make the computation. Due to poor C++ knowledges, I run into troubles. In fact everithing is working fine until the call to readCouplingProperties.H and especialy the request for fvMesh. I end up with the followinf fatal error:

request for fvMesh surface from objectRegistry failed
available objects of type fvMesh are

Looking at the code, I thought I had to create a directory named fvMesh in the directory time 0. However, I don't know what type of files to put inside. Should it be mesh related files like for faMesh in the bubble case?
Thank you in advance for your help.



ananiev December 19, 2006 04:36

Hi Vincent! The following l
Hi Vincent!

The following link may be interesting for you:


hjasak December 19, 2006 04:42

Is this OpenFOAM? Because thi
Is this OpenFOAM? Because this one is:


vinz December 19, 2006 04:55

Hi, Thanks for the links. I

Thanks for the links. I tried with icoFsiFoam, but as you know it's a two regions solver, so it was not enough. Furthermore, I had problems running it since I don't know the files to put in the case directory(constant, system...).
But I found on the openfoam wiki, a nice code wich looks pretty close to icoFsiFoam, named icoStructFoam. This one is working fine.
However, since I wanted a three domains solver (fluid around the balloon, balloon structure and inside fluid) I modified it in order to handle it.
And it's working niccely.
What I didn't like, was that the structure is not auto moving, and I had to use warp function into paraview to make it match the fluid interface.
So I decided to mix icoFsiFoam and icoStructFoam in order to obtain the automatic mesh motion for all domains.
At this time, it's allmost working, but I still have some points which are not matching at the boundary (I don't know why yet, interpolation problem I guess).
Does someone else would be interested in such a solver? Could anyone help me to fix the interpolation problem?



vinz December 19, 2006 05:16

I forgot to post pictures of t
I forgot to post pictures of the boundary problem:

As you can see, some points of the boundary are not matching. However most of the poins (around80%) do match. Any advise to give me?

hjasak December 19, 2006 05:25

When you are moving the struct
When you are moving the structures mesh, you should be using the structural analysis solution to give you the mesh motion.

As for the interpolation, my patch-to-patch interpolation classes should work for all cases. When calculating the interpolation factors, it will check for a direct point-on-point hit and fur such locations simply transfer the value. If the meshes are not matched, proper interpolation will be used instead.

Just for reference, patch-to-patch interpolation will also take care of numbering - there is no need to number the patches in any particular way.


guus_kupers January 4, 2007 09:03

Hello everyone, Also I'm ju
Hello everyone,

Also I'm just getting started with OpenFOAM and I'm also trying to get icoFsiFoam running. However it appears that I'm having the same problem as Vincent had. I also get the folling error message:

request for fvMesh interior-3 from objectRegistry failed
available objects of type fvMesh are


I think this problem exist because of the fact that I don't know how to define the movingRegion in the couplingProperties file. Because when I put in solid for movingRegion in the couplingProperties file I get the following error message:

request for tetPointVectorField motionU from objectRegistry solid failed
available objects of type tetPointVectorField are


However I think solid is not the right region here. And therefore it goes wrong in the next step in readCouplingProperties.H

So can anyone tell me how to define movingRegion in couplingProperties? Or can anyone tell me what the defaultname for a fvMesh is?

Thanks in advance,

guus_kupers January 15, 2007 03:31

After some trial and error I t
After some trial and error I think I made some progress with the icoFsiFoam solver. However I'm still stuck at one point.

For some reason, I don't understand, I get the following message:

--> FOAM FATAL ERROR : Attempt to cast type fixedValue to type fixedValue

From function
in file /home/guusk/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/typeInfo.H at line 103.

I don't understand why it is a problem to cast a type fixedValue to a type fixedValue.

I think this problem again originates from the readCouplingProperties.H file namely in the following place:

fixedValueTetPolyPatchVectorField& motionUFuidPatch =

Does someone knows what the problem can be??


vinz January 15, 2007 04:43

Hi Guus, I spent a while lo
Hi Guus,

I spent a while looking into errors that I got from this solver. But solving one was resulting into another one and I didn't succeed to make it work. It's why I finally decided to create my own solver by combining the nice stuff that I found in this solver and other things tooken into the solver named icoStructFOAM (can be found on the wiki).
I also made this solver compressible and added a region in order to be able to treat my balloon problem. Rigth now, I'm trying to solve a three regions problem (fluid, solid, fluid). It's not working so bad.
But I'm asking a lot to my solver since I want to move in a short time a polyethylene structure of 1mm thick! And so far, my code is not stable. I don't give up, it will work.
Finally, the next step to handle this type of problem is to couple OpenFOAM with Impact. In order to be able to treat more complicate problems on a structure point of view.


jens_klostermann January 25, 2007 17:13

Hi Guus, How did you resolv
Hi Guus,

How did you resolve the fvMesh problem?
Any hints are welcome!


hjasak January 25, 2007 17:30

What fvMesh problem? Hrv
What fvMesh problem?


jens_klostermann January 25, 2007 17:50

Hi Hrv, this one By Guus Ku
Hi Hrv,

this one By Guus Kupers on Thursday, January 04, 2007 - 07:03 am

How to define the movingRegion in ouplingProperties?


hjasak January 26, 2007 06:05

Aha, got it: it will be a prob
Aha, got it: it will be a problem with the compilation. For historical and efficiency reasons, there are two sets of Finite Element (mesh motion) solvers. The first one uses cell and the second cell-and-face decomposition. It looks like half of the code was compiled with one and the other half with another decomposition.

I know this is pretty poisonous stuff: if you wish to switch from cell to cell-and-face decomposition, you need to recompile EVERYTHING. Choice of decomposition is controlled in ~/OpenFOAM/OpenFOAM-1.3/.cshrc by the two environment variables:


setenv WM_DECOMP_LIBS -lcellDecompFiniteElement
#setenv WM_DECOMP_LIBS -lfaceDecompFiniteElement
As you can see, I am using cell decomposition at the moment. Nowhere in the code outside the tet FEM solvers should one refer to cell- or face- decomposition headers directly: this is wrapped up in headers.

I don't know how Guus ended up with this error, but a properly built code should work. I can try it out if someone else has got a problem as well.


guus_kupers January 26, 2007 06:44

My problem was that I didn't k
My problem was that I didn't know how to define movingRegion keyword in the couplingProperties file, for the icoFsiFoam solver. And I still don't know this. However I created a work around in which I create my own createDynamicFvMesh.H. Which looks like this:

Info<< "Create mesh\n" << endl;
autoPtr<dynamicfvmesh> meshPtr

dynamicFvMesh& mesh = meshPtr();

As you can see I added "fluid", this way you have to put your polyMesh directory for your fluid region in a seperate directory. The advantage now is that you know the name of the fluid region and you can define movingRegion. However I'm still not able to run the icoFsiFoam solver. It might be possible that the new error has to do with the fact that what I'm doing is not allowed. Or there is another reason?


ztukovic January 26, 2007 07:09

The name of the moving region
The name of the moving region depends on the mesh motion type. If the complete mesh moves, use region0. If only a subset moves, use motionSubset

// movingRegion motionSubset;
movingRegion region0;


guus_kupers January 26, 2007 07:35

This indeed works!! Thanks...
This indeed works!! Thanks...

But I still get another error that I mentioned before (january 15th). Which is:

-> FOAM FATAL ERROR : Attempt to cast type fixedValue to type fixedValue

I don't understand why it is a problem to cast a type fixedValue to type fixedValue.


hjasak January 26, 2007 08:48

ON, a direct question requires
ON, a direct question requires a direct answer. Here is a list of objects in OpenFOAM that represent a fixed value boundary:


./finiteArea/fields/faPatchFields/basicFaPatchFields/fixedValue/fixedValueFaPatc hField.H
./OpenFOAM/fields/pointPatchFields/basicPointPatchFields/fixedValue/fixedValuePo intPatchFields.H
./tetDecompositionFiniteElement/tetPolyPatchFields/basicTetPolyPatchFields/fixed Value/fixedValueTetPolyPatchFields.H
./finiteVolume/fields/fvPatchFields/basicFvPatchFields/fixedValue/fixedValueFvPa tchField.H
./OpenFOAM/fields/PointPatchFields/BasicPointPatchFields/FixedValue/FixedValuePo intPatchField.H
They are all identified by the word fixedValue and you are mixing two of them.

More specifically, you are mixing:




Helps? (unfortunately, the forum software messes up the details of instantiation: the first one is on tetPolyPatchCellDecomp and the second on tetPolyPatchFaceDecomp.

I think I have already explained how to fix it: rebuild the executable.


All times are GMT -4. The time now is 11:58.