|
[Sponsors] |
April 24, 2009, 12:57 |
BCs in an FSI simulation of a flexble pipe
|
#1 |
Member
|
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 |
|
November 23, 2009, 12:24 |
|
#2 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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 |
|
November 23, 2009, 12:57 |
|
#3 |
Member
Mathieu Olivier
Join Date: Mar 2009
Location: Quebec City, Canada
Posts: 77
Rep Power: 17 |
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 |
|
November 24, 2009, 07:38 |
|
#4 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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 |
|
November 24, 2009, 08:08 |
|
#5 |
Member
|
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 |
|
December 1, 2009, 09:29 |
|
#6 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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 |
|
December 1, 2009, 10:21 |
|
#7 |
Member
Mathieu Olivier
Join Date: Mar 2009
Location: Quebec City, Canada
Posts: 77
Rep Power: 17 |
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 |
|
December 2, 2009, 13:48 |
|
#8 |
Senior Member
|
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 |
|
December 10, 2009, 12:43 |
|
#9 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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 |
|
December 16, 2009, 11:46 |
|
#10 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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 |
|
January 8, 2010, 05:14 |
|
#11 |
Member
Wolfgang W.
Join Date: Nov 2009
Location: Switzerland
Posts: 57
Rep Power: 17 |
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... 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 |
|
|
|
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 14:23 |
Terrible Mistake In Fluid Dynamics History | Abhi | Main CFD Forum | 12 | July 8, 2002 10:11 |