CFD Online Discussion Forums

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 (https://www.cfd-online.com/Forums/openfoam-solving/59208-fluid-structure-interaction.html)

fw407 January 12, 2008 11:36

Hello all, For my graduatio
 
Hello all,

For my graduation project, I 'm going to use a fluid structure interaction solver. So far I'm using icoStructFoam.First, I run the first case posted on the wiki for validation ,say Deformable channel. but the results i got is different from those on the wiki.

The problems are the fluid mesh is deformed,but the solid one is not, so the results i got shows that the solid-domain over-laps the fluid domain, and the distribution of stresses in the solid domain are also not correct.

I am not sure what is wrong, I think the solver is good, for many guys have tried it.but from the results i got there are problems in communication between the fluid and the structure.

Thanks in advance

Feng

gschaider January 14, 2008 04:54

Hi Feng! The solid mesh is
 
Hi Feng!

The solid mesh is NOT deformed during the calculation, but its deformation is calculated (sounds a bit Zen, but if you look at the source you will be enlightenend ;) ). The deformation has to be visualized during postprocessing and I answered that already last week: http://www.cfd-online.com/OpenFOAM_D...es/1/6334.html

@the solver: it was only a first shot at coupling solvers. Because of the undeformed solid mesh I am only confidenet with it for small deformations. At least have a look at icoFsiFoam in Hrv's-dev for an alternate implementation

Bernhard

braennstroem January 15, 2008 03:51

Hi Bernhard, happy new year
 
Hi Bernhard,

happy new year :-)
As it says on the wiki, the deformation of the solid is done by the pressure field. Would it be possible to add a deformation of the solid due to temperature as well, e.g. a movement of bi-metals in the flow?
Would be nice!
Fabian

gschaider January 15, 2008 06:53

Hi Fabian! In principle yes
 
Hi Fabian!

In principle yes. The only problem is that in iceStructFoam the energy/temperature is not implemented (but should be easy to do - basically by "stealing" from the relevant solvers), Basically the coupling of the temperatures (==heat transfer) can be implemented similar to the pressure BUT (and that is the part that is a bit harder to get to work stable) it has to work both ways (fluid->solid, solid->fluid). The mesh movement part doesn't care whether the displacement is due to pressure or thermal expansion so it won't have to be changed.

Currently I'm not activly working on FSI stuff (I managed to pass that to someone else at our place) and the icoStructFoam was only intended as a starting point. I think that because the numbers (N and M) of possible phenomena (engergy, turbulence, etc) in the two media a general basically multiplies with each other a "general" FSI-solver would be more complex than necessary for a demo.

But, if anybody is interested, I could put a version for 1.4.1 on the openfoam-extend-svn and whoever wants to extend it can have a go at it (maybe we can get some collaborative effort going)

Bernhard

fw407 January 15, 2008 17:59

Hi Bernhard I' ve got the d
 
Hi Bernhard

I' ve got the deformed mesh. ^_^. But after analysing the results I found sigamma_yy on the interface of the mesh does not conincide with the pressure of the fluid.

I read a message you posted which said I should replace the line
solidP[exchange[fI]]=fluidP[fI];

with something like
solidP[exchange[fI]]=fluidRho*fluidP[fI];

I put the definition of fluidRho in the creaticoFields.H( I am a new user of OF, this is the only place I found proper ). and this file changes to

Info<< "Reading transportProperties\n" << endl;

IOdictionary transportProperties
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh1,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);

dimensionedScalar fluidRho
(
transportProperties.lookup("fluidRho")
);

dimensionedScalar nu
(
transportProperties.lookup("nu")
);

Info<< "Reading field p\n" << endl;
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh1,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh1
);


Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh1,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh1
);


# include "createPhi.H"


label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, mesh1.solutionDict().subDict("PISO"), pRefCell, pRefValue);

But when I compile the solver, I end up with errors

icoStructFoam.C: In function 'int main(int, char**)':
icoStructFoam.C:224: error: cannot convert 'Foam::dimensionedScalar' to 'double' in assignment

On the other, if I just replace the line
solidP[exchange[fI]]=fluidP[fI];

with something like
solidP[exchange[fI]]=1000*fluidP[fI];

the results is terribly wrong!(In fact, the caculation in the fluid domain can not proceed and yeild no results)



All the best

Feng

braennstroem January 16, 2008 08:47

Hi Bernhard, thanks for you
 
Hi Bernhard,

thanks for your help. Maybe there is a chance to combine the 'struct' solver with the 'new' CHT solver of Hrvoje!?
A 1.4.1 version would be nice, if there is not such big difference to the april's 1.5 version... otherwise I could wait for the 1.5 'struct' version ;-)
Greetings!
Fabian

gschaider January 21, 2008 13:26

Hi Fabian! An updated versi
 
Hi Fabian!

An updated version for 1.4.1 now is available on the extend-svn by typing (or copying to the command line ;) ) these magic words:

svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breede r/solvers/other/IcoStructFoam

I havn't tested it too much (it compiles and the cases run)

Currently I don't have plans to extend/change the solver (apart from porting to new versions), so anybody who thinks that he might improve it should contact me by eMail and might get write access to it

Bernhard


BTW: I think Hrvs solver is around at least as long as icoStructFoam. Must have a look what the differences are (once I find time)

braennstroem January 22, 2008 05:00

Hi Bernhard, thanks, will d
 
Hi Bernhard,

thanks, will do it at home and will take a look at it ... in my spare time...

Regards!
Fabian

ziemowitzima February 14, 2013 14:31

Dear Bernhard,
and anyone who can help...

I am working currently on a solver with a moving mesh. Actually one boundary is changing according to solution of some other equation.
I implemented the mesh changes the same as in icoSructFoam solver. But to update my mesh I need to add following line:
HTML Code:

mesh.update();
which is not included in icoSructFoam...

I am confused because my mesh is not get updated without this command, but mesh in icoSructFoam is updated...

Moreover my solution, after mesh is updated, behaves somehow strange. Energy is added to the system, what is not a case if mesh is not deformed...

I hope anyone will have any suggestions.

ZMM

ziemowitzima February 14, 2013 17:25

Hi,

HTML Code:

mesh.update();
is not a problem anymore, I found the differences between my solver and icoStructFoam.

But I still have the problem with energy being added to the system after mesh is changed.
It happens for simple diffusion equation:
HTML Code:

fvScalarMatrix omEqn
        (
        dimDt*fvm::ddt(om)
      - fvm::laplacian(dimensionedScalar("1",dimensionSet(0, 2, 0, 0, 0),1), om)
        );       
        omEqn.solve();

if mesh does not change, or change only "a little" then it behaves as diff equation, namely field "om" diffuses out, and getting weaker.
But if mesh is changed "little more than a little" then "om" gets stronger and stronger with each time step...

Do you have any clue why it is like that ??

thanks
ZMM


All times are GMT -4. The time now is 00:12.