CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   BCs in an FSI simulation of a flexble pipe (https://www.cfd-online.com/Forums/openfoam/63957-bcs-fsi-simulation-flexble-pipe.html)

vivekcfd April 24, 2009 11:57

BCs in an FSI simulation of a flexble pipe
 
Hi everyone
I have been using openFoam for quite a sometime and now I want to simulate an FSI problem of flow through a flexible/elastic pipe (with OF1.5-dev). On the net and the forum, there is little info available for such type of problems. I hope there is someone out there who can help me out setting boundary conditions for my case esp. for the structure side (since I am not familiar with BCs of icoFsiFoam).

Here is the description of my problem:

A straight pipe oscillating at the center and flow is entering from one side and leaving on other side of the pipe. My mesh on the structure side is structured mapped mesh and having only one cell (two faces) along the pipe thickness (like a thin shell model). The inner face of the cells is the FSI interface (i am calling it INTFSISOLIDSIDE) an the outer side is named as SOLID

For the FSI surface on the fluid side, I am using the following BC for 0/U:
FSIFLUIDSIDE
{
type movingWallVelocity;
value uniform (0 0 0);
}

and in 0/motionU:
FSIFLUIDSIDE
{
type fixedValue;
value uniform (0 0 0);
}

For the FSI-surface of the solid domain (solid/0/U), I have the following BCs:

INTFSISOLIDSIDE
{
type tractionDisplacement;
traction uniform (0 0 0);
pressure uniform 0;
value uniform (0 0 0);
}

and for the oscillating part I have:
OSCILLATINGWALL
{
type oscillatingDisplacement;
value uniform (0 0.001 0);
amplitude 0.001;
frequency 10;
refValue uniform (0 0 0);
}



Now my question is: nodes (except a few at the center) on the pipe outer surface are not a part of the FSI interface. Displacements on these nodes must be computed as a part of the solution. If I dont specify any BC on these patchs/nodes (named as SOLID), OpenFoam complains in that case. I must specifiy something (since all the patches must be defined)

For these nodes I specify tractionDisplacement as below, however I am not sure if this is the right approach.
SOLID
{
type tractionDisplacement;
traction uniform (0 0 0);
pressure uniform 0;
value uniform (0 0 0);
}


To summarize my question what kind of BCs in OpenFoam one should specify:
1) for the nodes or patches on the solid sides which are not in contact with the fluid and moreover are free to move.
2) for the fluid side FSI patch (in fluid/0/U and fluid/0/motionU) [if I am not right above]
3) for the solid side FSI patch (in solid/0/U) [if I am not right above]

Any kind of input in this regard will be deeply appriciated.:)

wishes
Vivek

WiWo November 23, 2009 11:24

Hi Vivek,

I've been working with OpenFOAM for about two month. At the moment I'm trying to define a model of a compliant blood vessel (flexible pipe) using icoFsiFoam.
My problem seems to be virtually identical to yours - I'm also not quite sure on how to set appropriate BCs (specially a the outer solid pipe surface).

I see that nobody has answered your request so far - still I was wondering if you maybe figured out how to solve this issue on your own somehow. Would be great if you or anybody else could give me a hint!

Best regards,
Wolfgang

mathieu November 23, 2009 11:57

Hi guys,

For the "free" surface of the solid, you should use a zero traction BC such as:

type tractionDisplacement;
traction uniform (0 0 0);
pressure uniform 0;
value uniform (0 0 0);

It is the same as the BC you use on the interface but the later is updated by the solver to match the pressure that comes from the fluid flow. Everything else seems fine.

Note that for blood flow, the density ratio is of the order of 1 and the icoFsiFoam solver will probably be unstable for that kind of problem because it uses a weak coupling scheme... Hope this helps,

Mathieu

WiWo November 24, 2009 06:38

Hi Mathieu,

Thanks a lot - that was a really fast response. And it worked - right as you described! :)
I'll check how stable the solver will be for blood asap - so far I have only used arbitrary but reasonable parameters. Thanks for the hint!

Cheers,
Wolfgang

vivekcfd November 24, 2009 07:08

Hi Wolfgang
I have a bit tried an FSI case, however did not get much success. Consequently, I wrote on the forum and unfortunatly didnt get any response. This gave me the impression that there is hardly anybody using icoFSIFoam. After that I did not pursue the work, the entire motivation is lost and moreover, I could simulate the same problem by coupling ANSYS with CFX.

Now it seems that there are a few people around who are interested in FSI with OpenFoam. I shall be glad if we could exchange our experiences on this problem.
My email id is vivekcfd@gmail.com.

wishes
Vivek

WiWo December 1, 2009 08:29

Hi vivek, hi mathieu

My compliant pipe with the tractionDisplacement BC works perfectly fine :-)
Next step I'm heading for is to introduce some oscillations. Vivek, you seem to have done that already by using oscillatingDisplacement BC - did it work out?
I tried it as well, but OpenFoam refuses to cooperate :rolleyes: What I intend is - just for the sake of learning to handle the oscillations - to have the bottom wall of the 2d pipe compliant whereas the top wall should be oscillating.
So I set the BC for oscillatingDisplacement (the way Vivek suggested previously) for the top wall of the fluid region of the pipe (removing it from the consoleFluid patch, creating a separate patch topWall). I also removed the solid region on the top side.
The geometrically the problem looks like this:
Patch topWall - OscillatingDisplacement BC
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF
consoleFluid - movingWall BC (fluid)
consoleSolid – tractionDisplacement BC (solid)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSS
Patch freeSolid - tractionDisplacement BC (solid)

As soon as I introduce the oscillatingDisplacement into fluid/0/U I run into the following problem:

gradientInternalCoeffs cannot be called for a genericFvPatchField (actual type oscillatingDisplacement) on patch topWall of field U in file "/home/wolfgang/Foams/playFoams/bloodVesselFSIsimple_longVessel_oscillating/fluid/0/U"
You are probably trying to solve for a field with a generic boundary condition.

From function genericFvPatchField<Type>::gradientInternalCoeffs( ) const
in file fields/fvPatchFields/basic/generic/genericFvPatchField.C at line 692.

Does anybody have an idea what I did wrong? Does oscillatingDisplacement have any special prerequisites?

I would be grateful for any advice! J

Cheers,
wolfgang

mathieu December 1, 2009 09:21

Hi Wolfgang,

oscillatingDisplacement is a pointPatchField intended to be used with the fvMotionSolver (for mesh motion). You should use oscillatingFixedValue if you want the wall to oscillate in the tangential direction (no additional mesh motion). On the contrary, if you want a motion normal to the wall, you'll need to apply the motion in motionU and use a movingWallVelocity on the moving patch in U.

Mathieu

elvis December 2, 2009 12:48

hi,

if i remember correctly professor Ivankovic group at
University College Dublin
did some Fsi stuff with Openfoam on various topics
look for papers from his group like

Kanyanta, V., Quinn, N., Kelly, S., Ivankovic, A. and Karac, A. (2008) Fluid-Structure Interaction in Bioengineering II 3rd OpenFOAM Workshop.

greets

elvis

WiWo December 10, 2009 11:43

Hi,

Thank you for your helpful postings!
Mathieu - I tried the wall motion using oscillatingFixedValue ... works fine. One slight flaw is, that when moving one wall (in a normal direction) the bodering walls will not deform accordingly but stay stiff, which leads to strange effects at the edges.
I found out about another awesome tool to do transient BCs, which is groovyBC contributed by Bernhard Gschaider. Maybe I can get this one to work with my moving walls as well - would add much more flexibility. Did anybody ever try that? Any experiences?
So far, the problem with applying groovyBC to an icoFsiFoam case wall motion seems to result from the tetPointVectorField class in motionU.

Elvis - Thank you for the hint. I'm going to read the suggested material tomorrow.

Cheers,
Wolfgang

WiWo December 16, 2009 10:46

Hi Foamers,

I'm still playing with icoFsiFoam. Instead of applying some boundary conditions by specifying their type I would now like to 'mess around' directely with the boundary fields.

I figuered out that I can access volScalarFields and volVectorFields simply by using e.g. U.boundaryField()[PatchID][ELEMENT] ... very nice so far.

For motionU - which is special because it's a tetPointVectorField object - I tried the same and motionU.boundaryField()[PatchID] works fine. BUT I can't specify an element to be chosen, which makes it impossible to assign any customized values to the field.

Now, my knowledge of OpenFOAM is very limited and my knowlegde of the properties of tetPointVectorFields is even worse (also because there is not much info available). As far as I understand, the tetPointVectorField is composed of values at the points and face centers ... is that correct?

My question is: How can I access the actual values of a tetPointVectorField and change them (in order to get my boundaries moving according to my liking)? ;) Is there any function doing that for me?


Thanks for you ideas and efforts!
Cheers,
Wolfgang

WiWo January 8, 2010 04:14

Hello everybody,

I found out how to manipulate the tetPointVectorField - it's explained in another thread.
So now my walls are moving and dancing Hula :-)

I want to refer back to an issue Mathieu pointed out earlier in this thread:

HTML Code:

Note that for blood flow, the density ratio is of the order of 1 and the icoFsiFoam solver will probably be unstable for that kind of problem because it uses a weak coupling scheme...
So finally I ran into that problem - icoFsiFoam uses a weak coupling scheme and my solver crashes whenever the density ratio of solid/fluid gets below 100. Seems that I'll need to implement a strong coupling here ...

Does anybody have experience on how to do this? Maybe somebody already tried to transform icoFsiFoam into a strongly coupled solver? Or is there another solver available which I failed to find ...

I would appreciate any suggestions and hints :-)

Best,
Wolfgang


All times are GMT -4. The time now is 16:32.