CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Solver for FSI strongly coupled (https://www.cfd-online.com/Forums/openfoam-programming-development/85087-solver-fsi-strongly-coupled.html)

gascortado August 2, 2011 06:55

You have to compile the solver first. See this one http://www.cfd-online.com/Forums/ope...tml#post317171
Good luck!

gascortado August 3, 2011 00:11

4 Attachment(s)
Hi again. I'm trying to set up a FSI between a horizontal plate inside a fluid with the leading edge of the plate fixed. The basic geometry is similar to this one http://www.cfd-online.com/Forums/ans...tml#post293664

I want to test Charbel's solver for a 3D case using LES. I successfully modified the original consoleFluid so LES is used instead of laminar flow.

I create 2 meshes in gambit, one for the surrounding fluid (with the plate as a void) and another one with the plate only as my solidMesh. I convert them using fluent3DmeshToFoam. When I run the case I get the following error:

--> FOAM FATAL ERROR:
Problem with patch interpolation definition

From function testVorflexFoam
in file readCouplingProperties.H at line 30.

FOAM aborting

Aborted


the readCouplingProperties.H looks like this:

// Read solid patch data
word solidPatchName(couplingProperties.lookup("solidPat ch"));

label solidPatchID =
stressMesh.boundaryMesh().findPatchID(solidPatchNa me);


// Read fluid patch data
word fluidPatchName(couplingProperties.lookup("fluidPat ch"));

label fluidPatchID =
mesh.boundaryMesh().findPatchID(fluidPatchName);


if (solidPatchID < 0 || fluidPatchID < 0)
{
FatalErrorIn(args.executable())
<< "Problem with patch interpolation definition"
<< abort(FatalError);
}


Do you guys know what is the meaning of this error? Is my procedure right?
I'm attaching my boundary files for both solid and fluid meshes. I will appreciate any comments or information. Thanks

BTW: What does the MotionU file do?

charbel August 3, 2011 05:08

Hi Santiago,
Go into ~/fluid/constant/couplingProperties and modify the patch names as follows:
Code:

solidPatch      plate;

fluidPatch      plate;

movingRegion    region0;

You can use pimpleFsiFoam where some errors are corrected.

gascortado September 9, 2011 10:43

Hi,

I'm trying to extract the pressure that the fluid transfers to the plate. I see that at "setPressure.H" there is a scalarField created called "solidPatchPressure". Any idea of what I need to do in order to get these values and print them to a file? I want to take a look at those values and then apply the pressure to a finite element code to compare deformations. Any help?

Thanks

gascortado September 16, 2011 13:52

While trying to verify the pressure force exerted to the plate I come across the following line of code in setPressure.h

vector totalPressureForce =
sum
(
p.boundaryField()[fluidPatchID]*
mesh.Sf().boundaryField()[fluidPatchID]
);


While reading the pressure generated by p.boundaryField()[fluidPatchID] i see that the pressure is either negative or positive as expected.

Then while reading
mesh.Sf().boundaryField()[fluidPatchID] I see that we get the area vectors for each boundary cell and each of the component of this vector can be positive and negative.

Now, when the product of the area vector and the pressure is done it seems to me that the final sign of the pressure Force will be screwed up since the scalar pressure (+ or -) is multiplied by the area vector components (also + or -). Shouldn't if be done so the pressure magnitud at the cell center is multiplied by the absolute value of the the area of the cell??

Does anyone know if this is a bug or if I am mistaken? Thanks

ICL September 19, 2011 05:12

Has anyone faced the same probolem?
 
I tried to modify fluid solver of icoFSIFoam to ultimately model EHL in ball bearing. The computation stops after a few iterations. In order to re-check the fluid solver with extended version, I tried to solve the fluid region separately. The computation diverged after a number of iteration while the same fluid solver on the same domain converged using OF 2.0.0 and OF 1.5!



michaelb October 28, 2011 06:16

Hi Charbel,

first of all thanks for sharing this FSI solver. I successfully compiled and ran it.
Could you confirm that the computation is very slow on a single core : about 25 hours for 1sec of runTime ?
Did you managed to set up a parallel version of it with e.g. in the Allrun file ?:
decomposePar
runParallel $application 4
reconstructPar

I tried including a controlDecomposeParDict in my fluid/system folder but whithout any success : it is not working since the coupling with the solid solver is not done properly.
I'd be very interested if you would came up with a solution like specifying X procs for the fluid and Y procs for the solid !
thanks

Michael


waku2005 December 27, 2011 03:24

Hi Charbel,

Thanks a lot for sharing your FSI solver, pimpleFsiFoam.
I also successfully compiled and ran the test case attached with the previous version in the thread #14.

I'd like to ask you whether this solver can be applied to lower rhof/rhos cases.
My application is deformation of beam like structure (a silicon rubber block) in a water with retatively slow flow velocity of 0.1 m/s.
rho of fluid (water) is around 1000 kg/m3 and silicon rubber has almost the same, thus rhof/rhos is nearly unity.

Even I changed fluid density from 1 to 1000 kg/m3, and adjusted time step, solver diverged in several time steps.

Any comment will be highly appreciated.
Best regards,
waku

mechy January 24, 2012 08:29

Quote:

Originally Posted by gascortado (Post 317847)
Thanks for your reply Matz,

When I use the browser I can see the folder lnInclude inside $WM_PROJECT_DIR/src/tetDecompositionFiniteElement directory. Inside lnInclude I see a whole bunch of symbolic files among all tetFemMatrices.H.

However, when I try accessing
$WM_PROJECT_DIR/src/tetDecompositionFiniteElement/lnInclude by using the terminal the folder is not recognized. Furthermore, by using the "ls" command, the folder lnInclude is not listed:

santiago@santiago-laptop:/usr/lib/OpenFOAM-1.6-ext/src/tetDecompositionFiniteElement$ ls

Allwmake tetFemCalculus tetPolyMesh
elementMesh tetFemMatrix tetPolyMeshCellDecomp
fields tetFemMethod tetPolyMeshFaceDecomp
Make.cellDecomp tetFemSolution tetPolyPatchInterpolation
Make.faceDecomp tetPointMesh


When I tried doing:
cd $WM_PROJECT_DIR/src/tetDecompositionFiniteElement/lnInclude

bash: cd: /usr/lib/OpenFOAM-1.6-ext/src/tetDecompositionFiniteElement/lnInclude: No such file or directory

I then switched to this directory santiago@santiago-laptop:/usr/lib/OpenFOAM-1.6-ext/src/tetDecompositionFiniteElement$ ln -s ../tetFemMatrix/tetFemMatrices.H tetFemMatrices.H

ln: creating symbolic link `tetFemMatrices.H': Permission denied

I wonder why is the folder not showing up in the terminal. Does this mean that there is something wrong with the binary files?

This is very frustrating. Thanks again



dear gascortado
I have the same problem how I can remove this error
I hvae ubuntu 10.04
please tell me how I can solve the Permission denied error ?

best regards

wyldckat January 25, 2012 18:07

Greetings mechy,

Quote:

Originally Posted by mechy (Post 340858)
please tell me how I can solve the Permission denied error ?

Try using sudo:
Code:

sudo ln -s ../tetFemMatrix/tetFemMatrices.H tetFemMatrices.H
Best regards,
Bruno

M.Arima May 19, 2012 01:44

Hi,

I tried to set up pimpleFsiFoam under OF 1.5-dev, however, I failed!
Do I need to install OF1.6 to use this solver?

my procdure is to go into the directrory of pimpleFsiFoam and then typed in wclean and wmake.
the error is following!

:~/Desktop/pimpleFsiFoam$ wclean
:~/Desktop/pimpleFsiFoam$ wmake
Making dependency list for source file pimpleFsiFoam.C
Making dependency list for source file tractionDisplacement/tractionDisplacementFvPatchVectorField.C
could not open file turbulenceModel.H for source file pimpleFsiFoam.C
could not open file dynamicFvMesh.H for source file pimpleFsiFoam.C
could not open file createDynamicFvMesh.H for source file pimpleFsiFoam.C
SOURCE=tractionDisplacement/tractionDisplacementFvPatchVectorField.C ; g++ -m32 -Dlinux -DDP -DFOAM_DEV_REVISION_NUMBER=exported -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/dynamicFvMesh/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/dynamicMesh/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/meshTools/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/turbulenceModels/incompressible/turbulenceModel -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/transportModels -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/transportModels/incompressible/singlePhaseTransportModel -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude -DFACE_DECOMP -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/tetDecompositionFiniteElement/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/meshMotion/tetDecompositionMotionSolver/lnInclude -IlnInclude -I. -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/OSspecific/Unix/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGccDPOpt/tractionDisplacementFvPatchVectorField.o
SOURCE=pimpleFsiFoam.C ; g++ -m32 -Dlinux -DDP -DFOAM_DEV_REVISION_NUMBER=exported -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/dynamicFvMesh/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/dynamicMesh/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/meshTools/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/turbulenceModels/incompressible/turbulenceModel -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/transportModels -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/transportModels/incompressible/singlePhaseTransportModel -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude -DFACE_DECOMP -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/tetDecompositionFiniteElement/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/dynamicMesh/meshMotion/tetDecompositionMotionSolver/lnInclude -IlnInclude -I. -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude -I/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/OSspecific/Unix/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGccDPOpt/pimpleFsiFoam.o
pimpleFsiFoam.C:37:29: error: turbulenceModel.H: No such file or directory
pimpleFsiFoam.C:38:27: error: dynamicFvMesh.H: No such file or directory
pimpleFsiFoam.C:58:36: error: createDynamicFvMesh.H: No such file or directory
tractionDisplacement/tractionDisplacementFvPatchVectorField.C: In member function ‘virtual void Foam::tractionDisplacementFvPatchVectorField::upda teCoeffs()’:
tractionDisplacement/tractionDisplacementFvPatchVectorField.C:190: warning: suggest parentheses around ‘+’ in operand of ‘&’
tractionDisplacement/tractionDisplacementFvPatchVectorField.C:190: warning: suggest parentheses around ‘+’ in operand of ‘&’
tractionDisplacement/tractionDisplacementFvPatchVectorField.C:191: warning: suggest parentheses around ‘+’ in operand of ‘&’
In file included from pimpleFsiFoam.C:59:
/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude/readPIMPLEControls.H: In function ‘int main(int, char**)’:
/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude/readPIMPLEControls.H:1: error: ‘mesh’ was not declared in this scope
In file included from pimpleFsiFoam.C:66:
createFields.H:128: error: ‘incompressible’ was not declared in this scope
createFields.H:128: error: template argument 1 is invalid
createFields.H:129: error: invalid type in declaration before ‘(’ token
createFields.H:130: error: ‘incompressible’ is not a class or namespace
In file included from pimpleFsiFoam.C:67:
createStressMesh.H:12: error: ‘New’ is not a member of ‘Foam::volPointInterpolation’
In file included from solveFluid.H:29,
from weakCoupling.H:3,
from pimpleFsiFoam.C:103:
UEqn.H:5: error: base operand of ‘->’ is not a pointer
In file included from weakCoupling.H:3,
from pimpleFsiFoam.C:103:
solveFluid.H:116: error: base operand of ‘->’ is not a pointer
In file included from weakCoupling.H:7,
from pimpleFsiFoam.C:103:
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:25: warning: suggest parentheses around ‘+’ in operand of ‘&’
In file included from solveFluid.H:29,
from onlyCFD.H:1,
from pimpleFsiFoam.C:109:
UEqn.H:5: error: base operand of ‘->’ is not a pointer
In file included from onlyCFD.H:1,
from pimpleFsiFoam.C:109:
solveFluid.H:116: error: base operand of ‘->’ is not a pointer
In file included from solveFluid.H:29,
from strongCouplingConstant.H:5,
from pimpleFsiFoam.C:115:
UEqn.H:5: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingConstant.H:5,
from pimpleFsiFoam.C:115:
solveFluid.H:116: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingConstant.H:8,
from pimpleFsiFoam.C:115:
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:25: warning: suggest parentheses around ‘+’ in operand of ‘&’
In file included from solveFluid.H:29,
from strongCouplingAitken.H:9,
from pimpleFsiFoam.C:121:
UEqn.H:5: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingAitken.H:9,
from pimpleFsiFoam.C:121:
solveFluid.H:116: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingAitken.H:12,
from pimpleFsiFoam.C:121:
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:25: warning: suggest parentheses around ‘+’ in operand of ‘&’
In file included from solveFluid.H:29,
from strongCouplingAitken.H:36,
from pimpleFsiFoam.C:121:
UEqn.H:5: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingAitken.H:36,
from pimpleFsiFoam.C:121:
solveFluid.H:116: error: base operand of ‘->’ is not a pointer
In file included from strongCouplingAitken.H:39,
from pimpleFsiFoam.C:121:
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:24: warning: suggest parentheses around ‘+’ in operand of ‘&’
solveSolid.H:25: warning: suggest parentheses around ‘+’ in operand of ‘&’
/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude/readPIMPLEControls.H:3: warning: unused variable ‘nOuterCorr’
/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude/readPIMPLEControls.H:4: warning: unused variable ‘nCorr’
/home/c05arima/OpenFOAM/OpenFOAM-1.5-dev/src/finiteVolume/lnInclude/readTimeControls.H:40: warning: unused variable ‘maxCo’
pimpleFsiFoam.C:76: warning: unused variable ‘minGammaAitken’
pimpleFsiFoam.C:77: warning: unused variable ‘maxGammaAitken’

wyldckat May 19, 2012 17:58

Greetings Masashi,

It's probably best that you try to use 1.6-ext instead, since 1.5-dev is AFAIK no longer under development.

Best regards,
Bruno

danny261083 July 31, 2013 17:08

Hi Dr. Habchi,

I read through one of your recent journal publications on the ability of the pimple fsi solver to deal with large structural displacements and rotations using the StVk constitutive model & ALE formulation of the N-S equations for the 2D case. However, I was curious to know whether the solver could be readily extended to a 3D case involving complicated flow and solid domains with unstructured tri + tetrahedral meshes, (e.g. modeling bio-fluid structure interactions).

Regards

charbel August 5, 2013 04:10

Quote:

Originally Posted by danny261083 (Post 443158)
Hi Dr. Habchi,

I read through one of your recent journal publications on the ability of the pimple fsi solver to deal with large structural displacements and rotations using the StVk constitutive model & ALE formulation of the N-S equations for the 2D case. However, I was curious to know whether the solver could be readily extended to a 3D case involving complicated flow and solid domains with unstructured tri + tetrahedral meshes, (e.g. modeling bio-fluid structure interactions).

Regards

Hi
In fact mainly the solver can solve 3D case but the problem is that we cannot run parallel simulation.
Meanwhile you can find in the thread below new solvers including FSI and which may run in parallel...
http://www.cfd-online.com/Forums/ope...am-extend.html
Regards

arashfluid October 7, 2013 03:30

Hi Charbel
I set up a FSI problem for compressible flow over naca0012 airfoil with pitching motion. So i created a compressible solver by combine pimplefsifoam and sonicfoam. Solver has been properly compiled.

I create 2 meshes in gambit, one for the fluid and another one with the airfoil only as my solidMesh. I convert them using fluentmeshToFoam. When I run the case I get the following error:


--> FOAM FATAL ERROR:
Different dimensions for =
dimensions : [0 0 1 0 0 0 0] = [-1 3 1 0 0 0 0]


From function dimensionSet::operator=(const dimensionSet& ds) const
in file dimensionSet/dimensionSet.C at line 143.

FOAM aborting

what's problem?

VincentChai October 9, 2013 02:28

Hi Charbel,

I am also a new user to OpenFOAM. May i know have you validate the icoFsiFoam for your application? Thanks.

Regards,
Vincent

danny261083 October 14, 2014 10:51

Quote:

Originally Posted by waku2005 (Post 337075)
Hi Charbel,

Thanks a lot for sharing your FSI solver, pimpleFsiFoam.
I also successfully compiled and ran the test case attached with the previous version in the thread #14.

I'd like to ask you whether this solver can be applied to lower rhof/rhos cases.
My application is deformation of beam like structure (a silicon rubber block) in a water with retatively slow flow velocity of 0.1 m/s.
rho of fluid (water) is around 1000 kg/m3 and silicon rubber has almost the same, thus rhof/rhos is nearly unity.

Even I changed fluid density from 1 to 1000 kg/m3, and adjusted time step, solver diverged in several time steps.

Any comment will be highly appreciated.
Best regards,
waku

Hi waku,

I would like to know the correct implementation of this solver in OpenFOAM 1.6ext. Also, I am not sure that I have complied the updated solver (and test case). I would like to know whether you could post a link of the same.

Thanks in advance.

Maimouna February 17, 2015 12:05

Dear All who posted this thread,

many thanks for this really useful thread. I'll try to post my planning in the next period of time to get help and advice from your side.

Now, I'm working in vortex-induced vibration of an elastic circular cylinder using OpenFOAM. This is FSI problem including fluid and solid (elastic cylinder). I installed FSI solver in foam-extend-3.1. But I'm still struggling in the steps how to start working with this case in FSI solver. I already finished the VIV case for rigid cylinder. Now, I'm looking to get the simulation of an elastic one. For the elastic cylinder, the cylinder will change its shape because of some fluid forces affect on it. The equation that I have to solve here is the dynamic elasticity equation. Regarding my problem, I have some questions

1. Which solver is the best for my case, icoFsiFoam or icoFsiElasticNonLinULSolidFoam solver in solidMechanics tutorial?

Do you have any idea which case should follow to help me in my case problem? I'm thinking about flappingConsoleSmall case, would that help?


I'm looking forward to get your advice. I'll be really happy to work with you.

What about mesh generation? Shall I generate mesh for the plate and another one for cylinder separately? Note that, I generated mesh for the VIV for the rigid cylinder case by Gmsh? Any idea please.

Any answer would be really appreciated and many thanks in advanced.

Sorry, I posted my problem in http://www.cfd-online.com/Forums/ope...tml#post532175
because I don't know the correct place to post my problem.

yonni December 7, 2016 21:31

History of displacement of flexible plate
 
Dear all,
I would like to know how to plot the history of displacement of flexible plate (solid region) with time. I used probesDict to get the history of Usolid for FSI case and it doesn't work.
Thank you very much
Yonni


All times are GMT -4. The time now is 17:49.