CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM

BCs in an FSI simulation of a flexble pipe

Register Blogs Members List Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old   April 24, 2009, 11:57
Question BCs in an FSI simulation of a flexble pipe
  #1
Member
 
Vivek Kumar
Join Date: Mar 2009
Location: Switzerland
Posts: 34
Blog Entries: 1
Rep Power: 8
vivekcfd is on a distinguished road
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
vivekcfd is offline   Reply With Quote

Old   November 23, 2009, 12:24
Question
  #2
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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
WiWo is offline   Reply With Quote

Old   November 23, 2009, 12:57
Default
  #3
Member
 
Mathieu Olivier
Join Date: Mar 2009
Location: Quebec City, Canada
Posts: 76
Rep Power: 8
mathieu is on a distinguished road
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
mathieu is offline   Reply With Quote

Old   November 24, 2009, 07:38
Default
  #4
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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
WiWo is offline   Reply With Quote

Old   November 24, 2009, 08:08
Default
  #5
Member
 
Vivek Kumar
Join Date: Mar 2009
Location: Switzerland
Posts: 34
Blog Entries: 1
Rep Power: 8
vivekcfd is on a distinguished road
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
vivekcfd is offline   Reply With Quote

Old   December 1, 2009, 09:29
Default
  #6
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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 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
WiWo is offline   Reply With Quote

Old   December 1, 2009, 10:21
Default
  #7
Member
 
Mathieu Olivier
Join Date: Mar 2009
Location: Quebec City, Canada
Posts: 76
Rep Power: 8
mathieu is on a distinguished road
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
mathieu is offline   Reply With Quote

Old   December 2, 2009, 13:48
Default
  #8
Senior Member
 
Elvis
Join Date: Mar 2009
Location: Sindelfingen, Germany
Posts: 579
Blog Entries: 5
Rep Power: 13
elvis is on a distinguished road
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
elvis is offline   Reply With Quote

Old   December 10, 2009, 12:43
Default
  #9
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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 is offline   Reply With Quote

Old   December 16, 2009, 11:46
Default
  #10
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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 is offline   Reply With Quote

Old   January 8, 2010, 05:14
Default
  #11
Member
 
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 7
WiWo is on a distinguished road
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
WiWo is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
FSI TWO-WAY SIMULATION Smagmon CFX 1 March 6, 2009 14:24
How can i run a FSI simulation of a rotation wall romance CFX 0 November 27, 2007 08:35
FSI simulation thermal analysis Michelle CFX 2 November 3, 2007 10:15
Restart of FSI simulation V. Kumar CFX 3 July 20, 2006 13:23
Terrible Mistake In Fluid Dynamics History Abhi Main CFD Forum 12 July 8, 2002 09:11


All times are GMT -4. The time now is 06:35.