CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Fluid Structure Interaction using icoFsiFoam Problems (https://www.cfd-online.com/Forums/openfoam-solving/58513-fluid-structure-interaction-using-icofsifoam-problems.html)

 lr103476 April 13, 2007 02:49

Dear all, Besides the 3D fl

Dear all,

Besides the 3D flapping wing stuff I am also working on some fluid structure interaction problems.

In order to test the icoFsiFoam solver which came with the latest development sources (from prof. Jasak, 28 March 2007), I created a test case of a flexible plate attached to a rigid cylinder. At low Reynolds numbers the plate will start oscillating according to the von karman vortex street. This is particular interesting when the density of the structure approaches the density value of the fluid and when the structure equals very low stiffness. Only then significant deformation can be observed, which is what we want.

Unfortunately, at similar densities (structure / fluid) and low structural stiffness this problem is very strongly coupled. Together with the partitioned approach which is used by icoFsiFoam, this lead to serious divergence problems when:

1) The density ratio is of the order O(1),
2) The structural stiffness is low,
3) movingWallVelocity BC is chosen on the flexible plate. The divergence of the solution due to this BC is thought to be the result of the alternating correction of the ALE flux which is accounted for in movingWallVelocity BC.

Detailed info on this problem can be found on my website:
http://www.aero.lr.tudelft.nl/~frank...d/problems/fsi

I really hope that someone may provide some usefull hints and / or solutions. Eventually, when anyone would like to try this testcase I could post it here or on my site.

Thanks and regards,

Frank

 lr103476 April 13, 2007 10:46

Are there some guidelines when

Are there some guidelines when icoFsiFoam runs stable?

At various mechanical property settings the movingWallVelocity BC. blow the solution up very fast. Is someone running icoFsiFoam with this necessary boundary condition?

Could anyone please comment on this.

Regards, Frank

 ed_teller May 14, 2007 07:33

Hi Frank... Where did you

Hi Frank...

I am trying to build a multiphysics, moving mesh solver, and think that studying and hacking IcoFsiFoam might be a good start...

Alex

 lr103476 May 14, 2007 07:37

Dear Alex, icoFsiFoam is no

Dear Alex,

icoFsiFoam is not available in the official build of openFoam. You have to obtain a development version, maintained by prof. Jasak, which you can download from:

http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/release/

Rergards, Frank

 fw407 June 21, 2008 10:44

Hi everyone, I have been us

Hi everyone,

I have been using icoFsiFoam for several weeks, but there are still several basic points I am not 100% sure:

(1) only the pressure of the fluid is transfered to the solid but the shear stress is not.

(2) as the solid domain is updated at every step, at each time step, the pressure transfered from fluid is loaded on the boundary of the current configuration of the solid doamin, not on the initial configuration.

If I am wrong, please correct me!

feng

 gschaider June 25, 2008 08:05

Hi Mathieu! Yes. You're rig

Hi Mathieu!

Yes. You're right. The icoStructFoam requires that the meshes on the boundary zone of fluid and solid are exactly the same. Am not very proud of that, but it was the best I could do at the time

Bernhard

 fw407 June 26, 2008 15:02

Hi Mathieu, Thanks for your

Hi Mathieu,

Thanks for your help! I really appreciate it.

I have tried your code on my case, but I get totally different results, I think the problems may come from:

vectorField solidPatchTraction =
interpolatorFluidSolid.faceInterpolate
(
(sigmaFluid.boundaryField()[fluidPatchID]) & n
);

and I replace:
(sigmaFluid.boundaryField()[fluidPatchID]) & n
with
((-1)*sigmaFluid.boundaryField()[fluidPatchID]) & n

then I get results which is close to ones without considering shear stress.

So I think at the interface, the traction vector of the solid should be in the opposite direction to the traction vetor of the fluid.

If I am wrong, please correct me!

Kind regards

feng

 mathieu June 27, 2008 10:51

Hi Feng, You are right for

Hi Feng,

You are right for the minus sign. However, it depends on the sign implemented in your traction boundary condition. Also, I replaced the code in the setPressure.H file with the following (which is expressed in terms of the surface normal vector of the structural part) and I get better results :

//////////////////////////////////////////////
vectorField n = (stressMesh.Sf().boundaryField()[solidPatchID])/(stressMesh.magSf().boundaryFiel d()[solidPatchID]);

symmTensorField solidPatchTraction =
interpolatorFluidSolid.faceInterpolate
(
(sigmaFluid.boundaryField()[fluidPatchID])
);

solidPatchTraction *= rhoFluid.value();

tForce.traction() = solidPatchTraction & n;
//////////////////////////////////////////////

Keep me posted if you find some bugs or mismatches. I appreciate your comments.

Mathieu

 fw407 June 27, 2008 14:06

Hi Mathieu, Thanks for your

Hi Mathieu,

Your codes are working fine with me. I ave hmade a test case which is to calculate the shear stress on a flat plate due to the laminar flow on it, the result looks reasonable, and I will compare it with the analytical solution for validation.

On the other hand, I think I will find a way of how to merge the code of the structural solver using updated configuration in the paper you posted above with icoFsiFoam, so that icoFsiFoam can deal with large deformation for the structure.

Kind regards

feng

 christoph_heinrich August 26, 2008 09:13

Hi all, I'm trying to imple

Hi all,

I'm trying to implement a strong coupling scheme within the icoFsiFoam-solver. To do that I'd like to use a Quasi-Newton approach, which means, that I'm approximating the product of the jacobian and a vector by a finite difference. And that's the only thing I need for an iterative solver like GMRES. Now my problem:
as I'm calculating only on the interface variables, I don't know how to move the solid mesh. For the fluid it's no problem, because here the only thing that I need to move the mesh are the interface variables. But to move the solid mesh I need its internal field.
Would it be a good idea to do one more solid solve with the interface positions as a fixed value-bc in order to get the solid internal field?
If yes, how can I do that, that means, how can I change my boundary conditions from "tractionDisplacement" to "fixedValue" from within the solver?

Can anyone help me?

Kind regards,
Christoph

 mathieu August 26, 2008 10:42

Hi Christoph, I am not fami

Hi Christoph,

I am not familiar with the method you are using. Is it a monolithic coupling procedure or an iterative partitioned coupling procedure. Could you give more details so that I can see if I can help you. Regarding your idea to change the interface boundary condition from "tractionDisplacement" to "fixedValue", I don't think it's a good idea since it would not reproduce the physics. Can't you solve the solid field using the "tractionDisplacement" BC ? Regards,

Mathieu

 christoph_heinrich August 26, 2008 11:12

Hi Mathieu, thank you for y

Hi Mathieu,

thank you for your answer. I'm using an iterative partitioned coupling procedure as it is described in section 4.3 of ftp://ftp.inria.fr/INRIA/publication...RR/RR-4691.pdf
Here I have 3 iteration levels. One time level, one "strong-coupling"-level and one GMRES-level. In every level I'm only calculating on interface values. And in every "strong-coupling"- and GMRES-level I need to compute one full FSI-cycle. Before I can do that I need to move the fluid and the solid meshin the desired position. If I want to move the solid mesh like in icoFsiFoam I need to know the internal field of the solid. But as I'm computing on interface values I don't know the internal field and this is my problem. Is this explanation helpful?

Regards,
Christoph

 mathieu August 26, 2008 13:17

Hi Christoph, The structura

Hi Christoph,

The structural solver in icoFsiFoam is a linear elasticity solver (small deformation only). The mesh motion of the "solid" mesh is a trick to take large deformation into account.

The structural problem in the paper you sent is set in the initial reference frame. In this case, you don't need to move the "solid" mesh. So I guess you should modify the structural solver of icoFsiFoam to make it work in the initial reference frame with the appropriate constitutive law. I think that would make things easier for you.

Mathieu

 christoph_heinrich August 27, 2008 09:54

Thanks a lot Mathieu, but now

Thanks a lot Mathieu,
but now I have some new questions, I hope you can help me:
1. Could the structural solver in icoFsiFoam be seen as some kind of Updated-Lagrange-Solver?
2. What would be the difference in the results if I just commented out the solid mesh motion in icoFsiFoam?
3. The structural solver contained in icoFsiFoam is using the 2nd Piola-Kirchhoff stress tensor (right?) and therefore isn't it already the right consitutive law? Or could you give me any hint how to change the structural solver?

Kind regards,
Christoph

 mathieu August 27, 2008 14:34

Hi Christoph, 1. I would sa

Hi Christoph,

1. I would say yes but take a look to this paper for the right formulation of an Updated-Lagrange-Solver:
http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/papers/TukovicJasak_NonLinElastodynam ics_FAMENA_18-06-2007.pdf

2. The solid geometry would be distorted for large deformation (but it is a good idea to try it...).

3. See the paper for the right constitutive law. I modify the structural solver in icoFsiFoam so that it can take large deformation into account. The solver "works" in the initial (not updated though) reference frame. Contact me by email and I will send you some stuff... looks like I can't write code in my messages anymore...

Regards,

Mathieu

 christoph_heinrich September 4, 2008 03:08

Hi Mathieu and all the others,

Hi Mathieu and all the others,
some new problems...
I'm trying to implement a strong coupling scheme based on a fixed point iteration and Aitken relaxation. I was surprised by the results and I located the error in the following problem:

while(runTime.run())
{
.......
runTime++;

#include "solveFluid.H"
#include "setPressure.H"
#include "solveSolid.H"

#include "solveFluid.H"
#include "setPressure.H"
#include "solveSolid.H"
........
}
I expected to get the same pressure in both FSI-cycles, because the geometry and the mesh remains the same. But actually I get a different (higher) pressure in the second case.
Why? And how can I fix it?

I would be very happy if someone could help me!

Regards,
Christoph

 mathieu September 4, 2008 10:08

Hi Christoph, Suggestion :

Hi Christoph,

Suggestion : try with a large value of nCorrector in the PISO dictionary so that you can be sure the solution is converged at each call of the fluid solver.

In fact (correct me if I'm wrong), the fluid solver in icoFsiFoam uses a SIMPLE loop but the PISO dictionary is used to provide the number of iteration via the nCorrector parameter. Good luck,

Mathieu

 christoph_heinrich September 5, 2008 11:16

Thank you Mathieu, but that do

Thank you Mathieu, but that doesn't helphttp://www.cfd-online.com/OpenFOAM_D...lipart/sad.gif

When I use a coarse mesh, this effect is very small. But with a finer mesh I get a significant higher pressure at the interface and as a consequence wrong displacements.

But I need to solve fluid and solid several times per timestep when I want to use a strong coupling scheme like fixed point iteration with Aitken relaxation. This is an essential part of my Master's thesis, which I have to hand in soon. So I'm running out of timehttp://www.cfd-online.com/OpenFOAM_D...lipart/sad.gif

Could anyone help me or could you, Prof. Jasak, please give me a hint of what is going wrong?
I would be so happy...

HELP!!!

Christoph

 mathieu September 5, 2008 16:44

Hi Christoph,

Is your setPressure.H file independent of the solid solution (the displacement) ? In the case of large deformation, it should. If it is your case, then it might be what causes the difference in the pressure force. But if you were talking about the pressure field itself, then I don't know what to say. I ran a similar case and both FSI cycles gave me the same results after I modified my setPressure.H file to make it independent of Usolid (no iteration occurred in the second cycle since the solution is already converged). Keep me posted and again, good luck !

Mathieu

 pkleb September 30, 2008 08:38

Hi, I see that you are work

Hi,

I see that you are working quite a lot on this FSI features of OpenFOAM . We are interesting to simulate the fluid structure interaction between a flow and a flexible panel . Can these cases below be simulated with openFOAM ?:
- FSI with a thin flexible panel (with and without large displacement) ?
- FSI with a thin flexible porous panel (with and without large displacement) ?.

Do these cases require a huge amount of implementation and development?. For example these cases can be more or less be solved with FLUENT/MpCCI/Abaqus , is it possible with OpenFOAM ?