CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solidMechanics] Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend" (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/126706-support-thread-solid-mechanics-solvers-added-openfoam-extend.html)

Brayanashel November 27, 2014 11:21

Probe for Solid Region
 
How can one be sure that the probe actually is located in the solid region? If the probe is defined in controlDict of the solid folder, it does not work during run because the code is running from the fluid folder. On the other hand if the probe is defined in the fluid folder, it cannot recognize the solid displacement; it recognizes only the pressure and velocity. Could you present a sample probe for solid region, please?

derkermit December 5, 2014 10:31

Quote:

Originally Posted by Brayanashel (Post 521414)
How can one be sure that the probe actually is located in the solid region? If the probe is defined in controlDict of the solid folder, it does not work during run because the code is running from the fluid folder. On the other hand if the probe is defined in the fluid folder, it cannot recognize the solid displacement; it recognizes only the pressure and velocity. Could you present a sample probe for solid region, please?

Sorry, I can't cause I haven't used that type of solvers yet.
Maybe you have to run the probe utility with explicit specification of the region (probeLocations -region ...) or run it in both regions seperatly and join that afterwards.

Brayanashel December 12, 2014 06:52

Quadratic Displacement
 
Hi,

I would like to know how a quadratic displacement can be used in Eq. (10) of the following paper, please. Do you know any similar work? How well can it improve the displacement and stress results?

http://powerlab.fsb.hr/ped/kturbo/Op...tressPaper.pdf

Thanks.

allenfieldin January 4, 2015 03:50

complex eigenvalues detected for tensor
 
Hi, Phillip, and all,

Thanks for the support of the icoNonlinear large displacement solver. I recently test a case for a cylinder with the icoFsiNonLinear solver, but the soveSolid part crashed after 3 inner loops during the first time step of the analysis. The details are below, and I have put some debugging icons in the solid solution part

Quote:

Solving Solid !!
Euler Scheme. !!
Loop location 1. !!
Loop location 2. !!
Loop location 3. !!
Loop location 4. !!
Loop location 1. !!
Loop location 2. !!
Loop location 3. !!
Loop location 4. !!
Loop location 1. !!
Loop location 2. !!
Loop location 3. !!
Loop location 4. !!
Loop location 1. !!
--> FOAM Warning :
From function eigenValues(const tensor&)
in file primitives/Tensor/tensor/tensor.C at line 170
complex eigenvalues detected for tensor: (4.18155 3.98554 0.0165307 -7.3138 -8.15028 -0.0375625 1.28697 1.66449 1.00722)
--> FOAM Warning :
From function eigenValues(const tensor&)
in file primitives/Tensor/tensor/tensor.C at line 170
complex eigenvalues detected for tensor: (4.18155 3.98554 0.0165307 -7.3138 -8.15028 -0.0375625 1.28697 1.66449 1.00722)
Floating point exception (core dumped)
the debugging icos are placed as below:
Quote:

do
{ Info<<"Loop location 1. !!"<<endl;
DU.storePrevIter();

fvVectorMatrix DUEqn
(
Cn*rho*fvm::ddt(DU)
- Co*rho*DV.oldTime()
==
fvm::laplacian(2*mu + lambda, DU, "laplacian(DDU,DU)")
- fvc::laplacian(mu + lambda, DU, "laplacian(DDU,DU)")
+ fvc::div
(
mu*gradDU.T()
+ lambda*(I*tr(gradDU))
+ mu*(gradDU&gradDU.T())
+ 0.5*lambda*(I*tr(gradDU & gradDU.T()))
+ (sigma & DF.T())
+ (DSigma & DF.T()),
"div(sigma)"
)
);
Info<<"Loop location 2. !!"<<endl;
solverPerf = DUEqn.solve();

DU.relax();

if(iCorr == 0)
{
initialResidual = solverPerf.initialResidual();
}
Info<<"Loop location 3. !!"<<endl;
gradDU = fvc::grad(DU);

DF = gradDU.T();

# include "calculateDSigma.H"
Info<<"Loop location 4. !!"<<endl;
}
while
(
solverPerf.initialResidual() > convergenceTolerance
&& ++iCorr < nCorr
);
I have no idea about the problem due to the Tensor.C, and I cannot even know which part of the DUEqn part needs a eigenvalue analysis and how it goes wrong.

I notice in a previous post some guy came into similar problem in #208, but my problem arise in the first time step. will you give some hint on what might cause the problem so I can move on to debug.

Thank you in advance:)

allenfieldin January 4, 2015 21:03

Hi, big Phillip, I have checked the error message, I think the eigen value error in the above post might happen due to the following large interpolate errors:
Quote:


Reading coupling properties
Create fluid-to-solid and solid-to-fluid interpolators
Check fluid-to-solid and solid-to-fluid interpolators
Fluid-to-solid face interpolation error: 2.40112
Solid-to-fluid face interpolation error: 2.40112
time step continuity errors : sum local = 0, global = 0, cumulative = 0
GAMG: Solving for pcorr, Initial residual = 0, Final residual = 0, No Iterations 0
GAMG: Solving for pcorr, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors : sum local = 0, global = 0, cumulative = 0
Courant Number mean: 0 max: 0 velocity magnitude: 0

Starting time loop
how can the solid-to-fluid face interpolation error so large? I have tracked this post and found some cases which this value could be ~0, so I return to the "createZoneToZoneInterpolation.H", but I found this code can't produce such large error as long as the setup is okay(geometry) with both the solid and fluid part. and I followed the tutorial case to set up my 3D case and I believe the geometry is okay.
So can you give me some hint on what probable wrong I have made to make such large interpolation error?

Thanks.:)

/Allen



Quote:

Originally Posted by allenfieldin (Post 526048)
Hi, Phillip, and all,

Thanks for the support of the icoNonlinear large displacement solver. I recently test a case for a cylinder with the icoFsiNonLinear solver, but the soveSolid part crashed after 3 inner loops during the first time step of the analysis. The details are below, and I have put some debugging icons in the solid solution part



the debugging icos are placed as below:


I have no idea about the problem due to the Tensor.C, and I cannot even know which part of the DUEqn part needs a eigenvalue analysis and how it goes wrong.

I notice in a previous post some guy came into similar problem in #208, but my problem arise in the first time step. will you give some hint on what might cause the problem so I can move on to debug.

Thank you in advance:)


mabinty February 22, 2015 08:40

Dear all,

am currently learning and testing the capabilities of elastiSolidFoam by analysing a simply bending beam clapmed on one side.

I read in a previous post that the segregated nature of the solver makes the convergence slow for such a problem. I can confirm that!

Furthermore, I observed much faster convergence in case I do not use aitkenRelaxation (set to "no" in the fvSolution dictionary). Now I would like to know why this is the case since Aitken relaxation should normally speed up convergence, isn't it?

Appreciate your comments!

Cheers,
Aram

orcus April 3, 2015 04:28

Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend"
 
Hi all,

I write because I would like to ask you for ideas. So I try to write my problem in short.

First, I have an object, like a cylindrical plastic flower pot (a smaller one). The object has thickness.
I want to place in the ground (the bottom side), and I want to crush with continuous force from the upper side.
The force has only Z (vertical) component eg.: (0 0 10000) [Pa].

I tried some boundary conditions, but none was work properly.
In all case appear shear stresses in the boundaries.

I include an image with the schematic representation of the object's profile.The horizontal green lines show the surface with the force (A) (upper side of the object) and the horizontal red lines show the surfaces which are standing on the ground (B). The ground is theoretically.

http://postimg.org/image/n1v2y0267/
http://postimg.org/image/n1v2y0267/

The boundary conditions were: A = force or displacement, B = force or displacement or zero displacement. The surfaces with black lines, always "walls".
The red arrows show the problems, the shear stresses.
The cases were opposedForces_elasticSolidFoam, the solver was PCG, the preconditioner was DIC.

I also tried the following option: I made two boards for the surfaces. Like I compressing it between my palms (my palms are equal the boards in OpenFOAM).
But this is very slow method (because is friction etc), I looking for a relatively fast method.

So, have anybody any idea, how can I eliminate the shear stresses? Or is there a model in OpenFOAM that can deal with this problem?

Thank you in advance!

derkermit April 3, 2015 07:42

Quote:

Originally Posted by orcus (Post 539783)
Hi all,

I write because I would like to ask you for ideas. So I try to write my problem in short.

First, I have an object, like a cylindrical plastic flower pot (a smaller one). The object has thickness.
I want to place in the ground (the bottom side), and I want to crush with continuous force from the upper side.
The force has only Z (vertical) component eg.: (0 0 10000) [Pa].

I tried some boundary conditions, but none was work properly.
In all case appear shear stresses in the boundaries.

I include an image with the schematic representation of the object's profile.The horizontal green lines show the surface with the force (A) (upper side of the object) and the horizontal red lines show the surfaces which are standing on the ground (B). The ground is theoretically.

http://postimg.org/image/n1v2y0267/
http://postimg.org/image/n1v2y0267/

The boundary conditions were: A = force or displacement, B = force or displacement or zero displacement. The surfaces with black lines, always "walls".
The red arrows show the problems, the shear stresses.
The cases were opposedForces_elasticSolidFoam, the solver was PCG, the preconditioner was DIC.

I also tried the following option: I made two boards for the surfaces. Like I compressing it between my palms (my palms are equal the boards in OpenFOAM).
But this is very slow method (because is friction etc), I looking for a relatively fast method.

So, have anybody any idea, how can I eliminate the shear stresses? Or is there a model in OpenFOAM that can deal with this problem?

Thank you in advance!

Regarding the shear stresses, you can try fixedDisplacementZeroShear BC.
Also I think you have to use a contact model in order to avoid penetration of pot and ground.

kirzoaktrt April 20, 2015 05:09

compression test by two contacting surfaces
 
1 Attachment(s)
Hello,

I am trying to simulate a compression problem by squeezing an object sandwiched between two surfaces. See the attached schematic. Here are the BC's:

load_down: fixed disp. (0 0 -1E-8)
load_up: fixed disp (0 0 -1E-8)
all other sides of the red surface: same fixed disp downwards
obj_up: contact with load_up slave
obj_down: contact with gnd_up slave
all other sides of obj: solidTractionFree
gnd_down: fixed disp. (0 0 0)
all other sides of gnd: same fixed disp.

So 'obj' is the geometry compressed by the two plates 'load' and 'gnd'.

I try to solve the problem with elasticSolidFoam following the frictionBall example. The problem is that there seems to be no contact between load and obj - load moves down, but the rest doesn't do anything.

I uploaded the case here: https://drive.google.com/file/d/0B_V...ew?usp=sharing

What am I doing wrong? Is it the BC's? The solver settings? Or the problem formulation itself?

Many thanks!

Attachment 38854

jherb April 20, 2015 10:38

I have tried the elasticNonLinULSolidFoam with a (somehow) similar setup. Have a look:
https://github.com/jmozmoz/foamRingCompressionTest

stephie April 24, 2015 10:31

Quote:

Originally Posted by davidsblom (Post 436504)
Hi Philipp,

[0]
[0]
[0] --> FOAM FATAL ERROR:
[0] Cannot find file "points" in directory "constant/solid/polyMesh"
[0]
[0] From function Time::findInstance(const fileName&, const word&, const IOobject::readOption)
[0] in file db/Time/findInstance.C at line [1]
[1]
[1] --> FOAM FATAL ERROR:
[1] Cannot find file "points" in directory "constant/solid/polyMesh"
[1]
[1] From function Time::findInstance(const fileName&, const word&, const IOobject::readOption)
[1] in file db/Time/findInstance.C at line 148.
[1]
FOAM parallel run exiting
[1]
148.
[0]
FOAM parallel run exiting
[0]
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun has exited due to process rank 1 with PID 20176 on
node tud276993 exiting without calling "finalize". This may
have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------
[tud276993:20174] 1 more process has sent help message help-mpi-api.txt / mpi-abort
[tud276993:20174] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages

__________________________________________________ _______________________________________--

Edit: I figured out how to run the case in parallel. When the computational domain is split up, the solid mesh should be available in fluid/processor*/. Therefore, the Allrun file needs to be modified accordingly, and the makeLinks script should be used to link the solid mesh.

Hello everyone,
I have got the same mistake.. I try to solve it since hours but I don't find any solution. Might anyone explain how I can solve it? I'm quit new in OpenFoam..

Thank you so much,
best regards,
Stephie

hxaxtma April 24, 2015 10:34

You have to create your links properly,

here is some example how this can be done:
Code:

#!/bin/bash

# Check for proper number of command line args.
if [ "$#" -ne 2 ]; then
  echo "Usage: makeLinks fluidCase solidCase"
  exit 1
fi

echo changing into fluid directory
cd $1/constant

echo creating links
ln -svf ../../$2/constant solid
cd ../system
ln -svf ../../$2/system solid
cd ../0
ln -svf ../../$2/0 solid
cd ..

echo creating processor links
for proc in processor*
do
  cd $proc
  cd 0
  ln -svf ../../../$2/$proc/0 solid
  cd ../constant
  ln -svf ../../../$2/$proc/constant solid
  cd ../..
done


stephie May 7, 2015 07:35

Dear Philip,

I'm a young student from Germany and I work just a few weeks with foam-ext. I tried the HronTurek Tutorial. I run the case in parallel (2 processors) and it worked. After the case finished, I tried to reconstruct it. If I run reconstructPar only the fluid data are reconstructed and the solid part is irgnored.
Might you have an idea how I can solve this problem?
I had a look in the Forum and there are some people with the same problem.. but without any solution. I wouls be really grateful if you might help my with this problem.

Thank you so much and best regards,
Stephie

hxaxtma May 7, 2015 08:36

Hey Stephie,


This small bash skript could help you

Code:

#!/bin/sh
    cd $1
    TIME_DIRS=`foamInfoExec -times | sed '1,/constant/d'`
    echo "makeFsiResultsLinks for" $TIME_DIRS
    cd ../$2
    for T in $TIME_DIRS
    do
        ln -s ../$1/${T}/solid ${T}
    done
    cd ..


Or in SHORT if you want to use the OF functions!

Code:

#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
makeFsiResultsLinks fluid solid


stephie May 10, 2015 12:44

Hey,

thank you so much for your answer.

I tried both of your scripts.

If I use the first one, there is an error:
sed1,/constant/d was not found, as well foamInfoExec-time was not found

and if I take the second one, time files where create in the solid folder but there aren't correct. There I got the following error message:
The link of (time file f.e. 0.1) is faulty. The link can not used, cos your target >>../fluid/0.1/solid<< does not exist.

Do you know, where the mistake might be?

I would be grateful if you might help me again.
Thank you so much!

Best regards,
Stephie

hxaxtma May 10, 2015 16:28

FSI Links
 
Hi

You really used the runTime Functions in the dictionary before the fluid and solid folder?

stephie May 11, 2015 03:25

yes, I did. And it would work, but one Link is missing. When I compare my case with the case which run on an other computer the solid file in the time files is missing. That is why the error appeared: The link can not used, cos your target >>../fluid/0.1/solid<< does not exist.

So is it possible to create this missing link?

(The first mistake ...not found was my mistake.. I forgot some space between the capitals, I correct it)

stephie May 11, 2015 04:55

I had a look on older cases...everytime I try to run the case in parallel this file is missing. I reconstructed it with reconstructPar and when I have a look into the reconstrecuted time file there are just the polymesh and the uniform folder. In comparison to the file, where I run the case with just on processor - there, the solid file exist next to the polymesh and the uniform file.
But why? is there a mistake with reconstructPar?

stephie May 13, 2015 02:56

Hey,

it's me again.
I am grateful of the help of Daniel Duque, who send me a script to create the missing solid folders and to reconstruct the case.

Here is his code:

#!/bin/bash

echo creating processor links
mkdir tmp

cd fluid
#reconstructPar

for proc in processor*; do
mkdir ../tmp/$proc
for time in $proc/*; do
mkdir ../tmp/$time
ln -s $time/solid/* ../tmp/$time
done
done
ln -s ../solid/system ../tmp/system
ln -s ../solid/constant ../tmp/constant
ln -s ../solid/0 ../tmp/0
cd ../tmp
reconstructPar

Unfortunately I got the problem, that there is no movement of the solid and I can't see the vortexes. Do anyone have the same problem or a solution?

With his bash file it was possible to reconstruct both parts, the solid and the fluid. Up to this, we have to open up two paraFoam file - one for the solid and one for the fluid and combine them by overlapping. This not the best solution. Are there any other ways to combine the fluid and the solid part?

Thank you for your support.

Best regards,
Stephie

stephie May 13, 2015 05:18

okay.. I find my mistake... I took the wrong density, this was the reason why I couldn't see any movement.

Svensen May 17, 2015 15:52

I'm trying to make FSI simulation of elastic pipe. icoFsiElasticNonLinULSolidFoam is used for this. When I use default values for material my simulation works OK. But when I try to change them to actual (increase fluid density from 1 to 1141), my simulation crashes on second FSI iteration with

--> FOAM FATAL ERROR:
zero and complex eigenvalues in tensor: (1.67727e+31 -3.07921e+31 -1.86008e+29 -2.51065e+31 4.60916e+31 2.78429e+29 -4.70076e+31 -3.74209e+31 6.17348e+31)

From function eigenValues(const tensor&)
in file primitives/Tensor/tensor/tensor.C at line 129.


The test case and log file are here: https://yadi.sk/d/OAfhaP7egdTHG
Can some one help me ? Thanks.

stephie May 19, 2015 09:03

Hello Svensen,
I also have the same problem. I use the icoFsiElasticNonLinULFoam Solver to run the HronTurekFsi Case. Unfortunately I allways get this mistake.
Did you find a solution?

I would be very grateful for anyone's help,
thank you and best regards,
Stephie

Svensen May 21, 2015 13:19

I can only guess where the problem exists. As you know, in all classical OpenFOAM cases you never write the fluid density value. Here (in FSI cases) we need to define it explicitly. I've searched the code of icoFsiElastic...Foam solver and find only one line where this density value is used. It is used for calculation of the force action by fluid on the solid and formula looks like nu*rho. All looks fine, but in the HronTurek case you can see that the nu value is 1e-3 and rho is only 1 (ONE !!) it's very low ! So, using the formula we have 1e-3 *1 = 1e-3. But when I put my actual data into the fluid parameters, using this formula (nu*rho) I've got something like 6.5e-3. I only can guess that this value is to big for this solver or the discretization schemes which it used by default. So it's become unstable and crashes.

It's only the suggestion...
If you will find the solution please let me know ! I need it very very much !!

stephie May 22, 2015 05:09

Hey, yes you might be right. I am running the case with a density of 1000 (water) which is really high in comparison.
Today I tried the hint of Philip Cardiff some posts before (#209).
I changed in the rotateSolidFields.H

rho = rho/J into //rho = rho/J

My case run around 0.476 s, after it become struggeling and stops, because of floating point except.

Time = 0.476, iteration: 34
Current fsi under-relaxation factor (Aitken): 3.47732e-08
Maximal accumulated displacement of interface points: 0.00970624
DILUPBiCG: Solving for Ux, Initial residual = 0.00112037, Final residual = 2.90452e-07, No Iterations 3
DILUPBiCG: Solving for Uy, Initial residual = 0.0060397, Final residual = 4.07335e-07, No Iterations 4
GAMG: Solving for p, Initial residual = 0.490316, Final residual = 0.00244083, No Iterations 6
time step continuity errors : sum local = 1.51006e-06, global = 5.84117e-09, cumulative = -0.000922631
Moving mesh time step continuity errors : sum local = 1.51006e-06, global = 5.84117e-09, cumulative = -0.000922625
Setting traction on solid patch
Total traction force = (-18.9099 -18.0944 3.34335e-17)
Solving for DU, Initial residual = 0.0130961, Final residual = 9.65723e-07, No outer iterations 142
Current fsi residual norm: 0.172987

Time = 0.476, iteration: 35
Current fsi under-relaxation factor (Aitken): 1.73919e-08
Maximal accumulated displacement of interface points: 0.00970624
DILUPBiCG: Solving for Ux, Initial residual = 0.00119781, Final residual = 4.88617e-07, No Iterations 4
DILUPBiCG: Solving for Uy, Initial residual = 0.0070903, Final residual = 1.57914e-07, No Iterations 5
Floating point exception

If I irgnore this error, the case stops again, but again because of "Floating point exception". The last time this was the point where I got the error of complex eigenvalues. I am not sure if it helps to comment this line out for stopping the mistake of complex eigenvalues or if it is luck.
I will further searching.. maybe there will be a better solution and the case will run.

Did you try HronTurekFsi3 from extend-bazaar? It is amazing. It run really fast and it has already a density of 1000 included. Maybe this might be an other possibility for you.

Svensen May 24, 2015 13:26

"Did you try HronTurekFsi3 from extend-bazaar? It is amazing. It run really fast and it has already a density of 1000 included. Maybe this might be an other possibility for you"

I've tried it today. Yes it is very fast, but when I've applyied my geometry and parameters to the test case there were no coupling. The solid domain didn't deformed... but in the old HronTurek case it works ! Very strange...

bigphil May 26, 2015 14:31

Quote:

Originally Posted by Svensen (Post 547501)
"Did you try HronTurekFsi3 from extend-bazaar? It is amazing. It run really fast and it has already a density of 1000 included. Maybe this might be an other possibility for you"

I've tried it today. Yes it is very fast, but when I've applyied my geometry and parameters to the test case there were no coupling. The solid domain didn't deformed... but in the old HronTurek case it works ! Very strange...

Hi,

Yep, the new FSI framework (currently located in foam-extend-3.1/extend-bazaar) supersedes the icoFsiElasticNonLinULSolidFoam solver.
Željko presented this framework at the OpenFOAM Workshop 2014 in Zagreb: abstract and slides.

The major improvement with regard to FSI coupling is the implementation of the IQN-ILS algorithm: this seems much better than Aitken's/fixed under-relaxation.
Also, the plugin approach used for the solid and fluid solvers should allow easier extension to other fluid/solid models e.g. multi-phase, compressible, plasticity, etc.

Best,
Philip

Svensen May 27, 2015 10:57

Quote:

Originally Posted by stephie (Post 547292)
If I irgnore this error, the case stops again, but again because of "Floating point exception". The last time this was the point where I got the error of complex eigenvalues. I am not sure if it helps to comment this line out for stopping the mistake of complex eigenvalues or if it is luck.
I will further searching.. maybe there will be a better solution and the case will run.

Did you find some way of how to solve this issue ? Because I had a similar problems. Today I've run my simulation with icoFsiElastic...Foam it runs sometime, all was OK, Courant is <1, but the suddenly it crashes with eigenvalues problem...
I think that we are working in the similar field, so we have the same issues with simulation..

stephie May 28, 2015 03:51

Hey,

first, thank you Philip for the links to tha abstract and the slides :)

I am sorry, but I didn't find a solution up to now. At the moment I try to figure out where the problem might be. The last days I tried to run the new solver of my tutor with the old HronTurek case. But it allways crashes after around 0.4 seconds. Yesterday, I turnd off the FSI to see if the fluid or the solid part might be the problem. With out coupling the case run, I can see the current. Than I tried to use the density and Emodul which is given be the case (density of 1 kg/m³ and E=1.4e6) and the case is still running ( at the moment 2.6sec). At home I startet the normal case with the icoFsiElsaticNon... and an adjusted density of 1000kg/m³. After 5 seconds the case stops because of complex eigenvalues.
I am not sure if it works to commend "rho = rho/J" out..there is allways the same mistake with floating point and complex eigenvalues. I think the density might be the problem, but I don't know how to solve it...
It would be wonderful if anyone had a solution. I really would like to use the old version to test the new solver of my tutor..it is the same structure.

iczajka May 28, 2015 07:03

Some months ago I had similar problems with FSI calculation. But it was related to mesh displacement. Mesh quality became very poor and floating point exeption was raised.
Better mesh, and my problem disapeared.

bigphil May 28, 2015 10:51

Quote:

Originally Posted by stephie (Post 547972)
Hey,

first, thank you Philip for the links to tha abstract and the slides :)

I am sorry, but I didn't find a solution up to now. At the moment I try to figure out where the problem might be. The last days I tried to run the new solver of my tutor with the old HronTurek case. But it allways crashes after around 0.4 seconds. Yesterday, I turnd off the FSI to see if the fluid or the solid part might be the problem. With out coupling the case run, I can see the current. Than I tried to use the density and Emodul which is given be the case (density of 1 kg/m³ and E=1.4e6) and the case is still running ( at the moment 2.6sec). At home I startet the normal case with the icoFsiElsaticNon... and an adjusted density of 1000kg/m³. After 5 seconds the case stops because of complex eigenvalues.
I am not sure if it works to commend "rho = rho/J" out..there is allways the same mistake with floating point and complex eigenvalues. I think the density might be the problem, but I don't know how to solve it...
It would be wonderful if anyone had a solution. I really would like to use the old version to test the new solver of my tutor..it is the same structure.

Hi Stephie,

Does the new solver work for you with the new cases?
The Hron-Turek-FSI-2 and Hron-Turek-FSI-3 are both provided as tutorials and should just work.
If your current case has convergence problems, I would closely compare the settings in the new tutorial cases to check if you have appropriate settings.

There are some small but important changes in the new code, for example, in the Hron-Turek cases a function object is used to enable FSI coupling once the flow has developed; this overcomes problems at the start with the flag bouncing around before the flow has developed.

Philip

stephie June 2, 2015 03:36

Hello Philip,

I couldn't use our new solver for the new case up to now. Unfortunately there are some differences with some terms. Maybe we will find a way and change this, so that we could run the solver with HronTurekFSI3.
While the last days I run HronTurekFSI2 with our solver with a density of 1 für the fluid and a density of 10 for the solid, and an Emodule of 1,4e6. And it works...the simulation ist still running.

I don't understand where the problem might be, when I increase the density of the fluid to 1000 and the solid to 10000. The case interrupts allways at 0.476s iteration 35. I tried many things, but it allways stops at this one point.

I also tried to turn off the coupling and start with developping the fluid and later join the coupling, but it also didn't work. The fluid part runs without any problems. But together withe the solid part it allways stops.

best regards,
Stephie

D_LEE June 2, 2015 06:07

Hello everyone,

I am also enjoying the new FSI library, but I would like to run the FSI solvers from a different start point (like stopping the solver and then starting it up again), and I don't think that functionality is implemented.

If I run the HronTureckFsi3 tutorial (in controlDict I set the startFrom to latestTime) for a few recorded timesteps and then stop it, I can't resume it with fsiFoam, the error that comes up is:
Code:

--> FOAM FATAL IO ERROR:
cannot open file

…../run/FluidStructureInteraction/run/fsiFoam/HronTurekFsi3_1/fluid/0.26/solid/V0 at line 0.

    From function regIOobject::readStream()
    in file db/regIOobject/regIOobjectRead.C at line 61.

FOAM exiting

The same thing happens if I run it with weakFsiFoam. I don't understand that error because if I grep -r V0 . to the whole folder nothing useful comes up yet in the time directories the fluid does have a V0 as volScalarField::DimensionedInternalField, and the solid does not.

Also, when I try and do this in parallel I get this kind of error:
Code:

[2]
[2]
[2] --> FOAM FATAL ERROR:
[2] local to global face zone point map is not correct
[2]
[2]    From function flowModel::calcGlobalToLocalFaceZonePointMap()
[2]    in file flowModels/flowModel/flowModel.C at line 244.
[2]
FOAM parallel run aborting
[2]

My questions are this:

Is such functionality going to be in the FSI library when it gets included in foam-extend?

Is it possible to do this with this FSI library in parallel as well as serial?

How would I go about editing the library to make it run from the latestTime?

Any help at all is appreciated.

bigphil June 2, 2015 11:14

Quote:

Originally Posted by stephie (Post 548508)
Hello Philip,

I couldn't use our new solver for the new case up to now. Unfortunately there are some differences with some terms. Maybe we will find a way and change this, so that we could run the solver with HronTurekFSI3.
While the last days I run HronTurekFSI2 with our solver with a density of 1 für the fluid and a density of 10 for the solid, and an Emodule of 1,4e6. And it works...the simulation ist still running.

I don't understand where the problem might be, when I increase the density of the fluid to 1000 and the solid to 10000. The case interrupts allways at 0.476s iteration 35. I tried many things, but it allways stops at this one point.

I also tried to turn off the coupling and start with developping the fluid and later join the coupling, but it also didn't work. The fluid part runs without any problems. But together withe the solid part it allways stops.

best regards,
Stephie

Stephie,

Yep, having comparable fluid and solid densities is a difficult FSI problem;
using a small fixed under-relaxation factor or the new IQN-ILS procedure should help to overcome the convergence problems.

Philip

bigphil June 2, 2015 11:17

Quote:

Originally Posted by D_LEE (Post 548525)
Hello everyone,

I am also enjoying the new FSI library, but I would like to run the FSI solvers from a different start point (like stopping the solver and then starting it up again), and I don't think that functionality is implemented.

If I run the HronTureckFsi3 tutorial (in controlDict I set the startFrom to latestTime) for a few recorded timesteps and then stop it, I can't resume it with fsiFoam, the error that comes up is:
Code:

--> FOAM FATAL IO ERROR:
cannot open file

…../run/FluidStructureInteraction/run/fsiFoam/HronTurekFsi3_1/fluid/0.26/solid/V0 at line 0.

    From function regIOobject::readStream()
    in file db/regIOobject/regIOobjectRead.C at line 61.

FOAM exiting

The same thing happens if I run it with weakFsiFoam. I don't understand that error because if I grep -r V0 . to the whole folder nothing useful comes up yet in the time directories the fluid does have a V0 as volScalarField::DimensionedInternalField, and the solid does not.

Also, when I try and do this in parallel I get this kind of error:
Code:

[2]
[2]
[2] --> FOAM FATAL ERROR:
[2] local to global face zone point map is not correct
[2]
[2]    From function flowModel::calcGlobalToLocalFaceZonePointMap()
[2]    in file flowModels/flowModel/flowModel.C at line 244.
[2]
FOAM parallel run aborting
[2]

My questions are this:

Is such functionality going to be in the FSI library when it gets included in foam-extend?

Is it possible to do this with this FSI library in parallel as well as serial?

How would I go about editing the library to make it run from the latestTime?

Any help at all is appreciated.

Hi,

In theory it should not be a problem to restart, we just have to make sure all the relevant fields are written out (something seems to want to old cell volumes V0, and also the golbalFaceZone field in parallel).
I will let you know if I get time to look at it.

In short to answer your questions, yep it would be intended to include such functionality.

Philip

Svensen June 9, 2015 03:32

Stephie, I've found the way how to make FSI simulations stable, but I'm not sure that this way is totally correct. I've tried to analyse the log and I've found that at some value of interface displacement my simulations crashes. After searching the source code I've found the following patter:

Info << "Maximal accumulated displacement of interface points: " << delta << endl;
if(delta < interfaceDeformationLimit) {
// Move only interface points ...
}
else {
// Move whole fluid mesh ...
}

When I changed the interfaceDeformationLimit value in the settings file, I've got a stable solution.
But the problem is: at the beginning of simulation my elastic pipe deforms very well, but after some period of time the amplitude becomes slower and slower.. and have a value about 1*10^-9 m. I don't know is it a result of my trick or not, but it looks unrealistic for my case. Maybe you will try to make the same thing (increase value interfaceDeformationLimit to 10^6) and run your simulation. I think that together we can solve this problem (with FSI convergence and stability) much faster. Maybe Philipp Cardiff also will give some help to us...

stephie June 10, 2015 09:08

Hey Svensen,

today I tested your proposal -interfaceDeformationLimit 1e6 and the computation stops after 0.288 because of floating point exception..the displacement goes up to over 150
First I did a mistake and wrote 10e6..the simulation chrashes after 0.288 with a displacement of around 170....
I also tried to changed the number just a litte bit, I took 0.1, but it also stops after 0.216 seconds because of complexe eigenvalues.
I am not sure if it is a goog idea to change this value.. the results seem to be unrealistic.
I also tried the hint of Philip and changed the fixed under-relaxation factor and used the new IQN-ILS procedur.. but I didn't get better results.
I will try further.. we will hopefully find a solution.

Maimouna August 21, 2015 17:16

1 Attachment(s)
Dear Cardiff and others,

HronTurekFsi3 in extend-bazaar was working fine, and then I tried to implement the similar case given in http://www.sciencedirect.com/science/article/pii/S0045782505005177 p. 5768 but unfortunately it gives me error I think that error belongs to blockMeshDict file. I went through that case many times but I couldn't notice the error. If any one could go through my attached case and let me know what is the problem, I will be really appreciated.

Lots of thanks in advanced.

Maimouna

Needled September 1, 2015 04:19

Hey guys,

Since I have been working on my master thesis with fsiFoam these past few months and since I had lots of problems that other people in these thread had that remain unanswered up at this point, I thought I would shed some light on these that I managed to solve (or temporarily bypass) and throw out a new issue I have encountered hoping that someone may shed some light. Also I want to thank the developers of this package and the continued support for the software and the community.

First, to address the globalFaceZones issue during decomposition, there is a simple explanation. After some searching through the source code I realized that there exists a different utility called decomposeParFsi compiled along with the rest of the FluidStructureInteraction package of the extend-bazaar. This works like a charm for decomposing a parallel case, just make sure to setup the face zones of the interface between the 2 meshes properly. Took some search to find, maybe there should be some documentation included along with the solver in some of the tutorials for parallel decomposition, in my opinion at least (maybe an Allrun script for parallel? Shouldn't be that hard to make!)

Also, for the restarting issue, I found that the problem lies with the backward d2dt2 scheme for the solid, when the solver can't find the old cell volume file for the solid, it should automatically switch to an Euler scheme (normally) but it doesn't. I haven't messed with the code to fix this, but I found a simple solution to bypass this. You simply need to delete the uniform folder, along with all the "old" values files (like D_0, D_0_0, V0 for the fluid mesh, U_0 and so on) for the time you want to restart from along with using an Euler d2dt2 scheme for the solid mesh and you should be fine restarting your case.

Now for a new issue I haven't seen addressed by anyone else yet. I have been trying to use the updated Lagrangian stress model for my simulation since I am working on an HPC model and resources are not really an issue (while simulation time is). I take it that the unsIncrTotalLagrangian stress model implemented along with the solver is the equivalent to an updated Lagrangian stress model from the old icoFsi...SolidFoam solver from the solid Mechanics branch of foam-extend-3.1. I seem to get a segmentation fault as soon as I reach the point in the simulation that the stress modelling happens and I haven't been able to figure out why this happens when I use the unsIncrTotalLagrangian model, while the simple unsTotalLagrangian works just fine. Also I tried using similar settings with my simulation in one of the tutorial cases (the 3dTube) and the unsIncrTotalLagrangian stress model and it seems to run perfectly. I have also enable the built-in debug flag in the stressProperties file, it doesn't print anything out so I guess it doesn't get very far before it crashes.
Here is the log file from before my case crashes:

Code:

Create time

Create dynamic mesh for time = 0

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Selecting motion solver: velocityLaplacian
Selecting motion diffusion: quadratic
Selecting motion diffusion: inverseDistance
 Reading stress mesh
Selecting incompressible transport model Newtonian
Selecting turbulence model type LESModel
Selecting LES turbulence model oneEqEddy
oneEqEddyCoeffs
{
    ce              1.048;
    ck              0.094;
}

Creating traction displacement incr boundary conditions
Creating fixed displacement boundary condition
Creating fixed displacement boundary condition
Selecting rheology model linearElastic
Creating constitutive model
Selecting coupling scheme IQN-ILS

Starting time loop

Creating pointHistory function object.
History point ID: 40086
History point coordinates: (-0.0023936 -0.00239322 -9.44141e-07)
Reference point coordinates: (0 0 0)
Time = 2e-05

Create extended GGI zone-to-zone interpolator
Checking fluid-to-solid face interpolator
Fluid-to-solid face interpolation error: 0.000590438
Checking solid-to-fluid point interpolator (GGI)
Extended GGI, master point distance, max: 1.04692e-07, avg: -1.6307e-07, min: -0.000599455
Extended GGI, master point orientation (<0), max: 0.999992, min: -1, nIncorrectPoints: 10/34288
Solid-to-fluid point interpolation error (GGI): 0.000599455
Number of uncovered master faces: 0
Number of uncovered slave faces: 0

Time = 2e-05, iteration: 1
Modes before clean-up : 0, modes after clean-up : 0
Current fsi under-relaxation factor: 0.05
Creating accumulated fluid interface displacement
Maximal accumulated displacement of interface points: 0
GAMG:  Solving for cellMotionUx, Initial residual = 0, Final residual = 0, No Iterations 1
GAMG:  Solving for cellMotionUy, Initial residual = 0, Final residual = 0, No Iterations 1
GAMG:  Solving for cellMotionUz, Initial residual = 0, Final residual = 0, No Iterations 1
GAMG:  Solving for cellMotionUx, Initial residual = 0, Final residual = 0, No Iterations 1
GAMG:  Solving for cellMotionUy, Initial residual = 0, Final residual = 0, No Iterations 1
GAMG:  Solving for cellMotionUz, Initial residual = 0, Final residual = 0, No Iterations 1
Evolving flow model
Courant Number mean: 0.0291375 max: 0.792268 velocity magnitude: 19.636
smoothSolver:  Solving for Ux, Initial residual = 0.0356957, Final residual = 5.89936e-06, No Iterations 4
smoothSolver:  Solving for Uy, Initial residual = 0.0322748, Final residual = 5.32878e-06, No Iterations 4
smoothSolver:  Solving for Uz, Initial residual = 0.00358901, Final residual = 1.6217e-06, No Iterations 3
GAMG:  Solving for p, Initial residual = 0.902127, Final residual = 0.0622434, No Iterations 1
GAMG:  Solving for p, Initial residual = 0.145781, Final residual = 0.0115296, No Iterations 6
time step continuity errors : sum local = 6.81989e-05, global = 4.35455e-07
GAMG:  Solving for p, Initial residual = 0.0242339, Final residual = 0.0021307, No Iterations 2
GAMG:  Solving for p, Initial residual = 0.00277903, Final residual = 7.85409e-07, No Iterations 12
time step continuity errors : sum local = 2.40709e-08, global = -2.87158e-10
smoothSolver:  Solving for k, Initial residual = 0.0100646, Final residual = 6.72539e-06, No Iterations 3
bounding k, min: 0 max: 22.0972 average: 0.796823
Setting traction on solid patch
Total force (fluid) = (-4.78269 -7.25492 24.9006)
Total force (solid) = (10.3924 11.2104 -45.6975)
Evolving stress model unsIncrTotalLagrangianStress
Time: 2e-05, outer iteration: 0
Application 2547001 exit codes: 139: Segmentation Fault.

If anyone has encountered a similar problem and can shed some light for me please let me know. Also please let me know if you want me to provide some additional information about my setup if you think it's needed to identify the cause of this issue.

Best regards,
Vasilis

Jibran September 7, 2015 10:16

Seeking literature for large strain solid dynamics in OpenFOAM
 
Dear All,

I am currently in the process of publishing my research on large strain solid dynamics implemented in OpenFOAM. The method we employ (visit my website for more details) is based on a mixed formulation which eliminates the shortcomings posed by the conventional displacement based formulations.

As part of the literature review, I am looking for literature (journal publications only) that anyone of you has published regarding large strain solid dynamics in OpenFOAM. After a quick search, I only found one article detailed as follows:

@Article{cardiff2014,
Title = {A large strain finite volume method for orthotropic bodies with general material orientations},
Author = {Cardiff, Philip and Kara{\v{c}}, A and Ivankovi{\'c}, A},
Journal = {Computer Methods in Applied Mechanics and Engineering},
Year = {2014},
Pages = {318--335},
Volume = {268},
Publisher = {Elsevier},
}

I would be pleased to know if there are more articles already published or in the process of publication on this topic. Thanks.

bigphil September 7, 2015 10:35

Quote:

Originally Posted by Jibran (Post 562761)
Dear All,

I am currently in the process of publishing my research on large strain solid dynamics implemented in OpenFOAM. The method we employ (visit my website for more details) is based on a mixed formulation which eliminates the shortcomings posed by the conventional displacement based formulations.

As part of the literature review, I am looking for literature (journal publications only) that anyone of you has published regarding large strain solid dynamics in OpenFOAM. After a quick search, I only found one article detailed as follows:

@Article{cardiff2014,
Title = {A large strain finite volume method for orthotropic bodies with general material orientations},
Author = {Cardiff, Philip and Kara{\v{c}}, A and Ivankovi{\'c}, A},
Journal = {Computer Methods in Applied Mechanics and Engineering},
Year = {2014},
Pages = {318--335},
Volume = {268},
Publisher = {Elsevier},
}

I would be pleased to know if there are more articles already published or in the process of publication on this topic. Thanks.

Hi Jibran,

I had a look at the presentation on your website, your approach looks very interesting. I would be very interested in seeing more details on your discretisation and solution methodology.
By "mixed", do you mean that your primary variables are displacement/velocity and pressure?

As regards publication of large strain solid dynamics in OpenFOAM, I am not aware of another journal paper but there are a few conference papers, such as:
Best regards,
Philip


All times are GMT -4. The time now is 14:04.