CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions > OpenFOAM CC Toolkits for Fluid-Structure Interaction

[solidMechanics] Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend"

Register Blogs Community New Posts Updated Threads Search

Like Tree134Likes

Closed Thread
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 27, 2019, 10:46
Default
  #421
New Member
 
Duo Huang
Join Date: Nov 2018
Posts: 5
Rep Power: 8
erich1016 is on a distinguished road
Hi Phil,

The case is attached. Thanks so much for your time.

Duo
Attached Files
File Type: gz slabCooling.tar.gz (6.4 KB, 8 views)
erich1016 is offline  

Old   March 3, 2019, 18:31
Default Extend Bazaar FSI and RBF
  #422
New Member
 
Jonthan Cappola
Join Date: Apr 2018
Posts: 8
Rep Power: 8
jcappola is on a distinguished road
Hi All,

I'm using the foam-extend 4.0 bazaar to do FSI on flexible airfoils and I am having some trouble with mesh motion. It seems that the fsiFoam solver has only been implemented with RBF point interpolation and while RBFMeshMotionSolver is in the library, fsiFoam refuses to use it when I patch it into the dynamicMeshDict.

After the first time step's solid predictor I get the following error when the cell motion step occurs:

Code:
--> FOAM FATAL ERROR: 
Problem with fluid mesh motion solver selection

    From function fluidSolidInterface::moveFluidMesh()
    in file fluidSolidInterface/fluidSolidInterface.C at line 1922.

FOAM aborting
I am wondering if someone has been able to patch in the RBFMeshMotionSolver for fsiFoam and could give some hints on how to move forward as the .moveFluidMesh() call only allows for fe/fv motionSolvers to be used and is hard coded.

Thanks,

Jon
jcappola is offline  

Old   March 5, 2019, 06:23
Default
  #423
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by erich1016 View Post
Hi Phil,

The case is attached. Thanks so much for your time.

Duo
Hi Duo,

PM me your email address and I will send you the case that works with solids4foam (i.e. the slab contracts when T0 is 800 and expands when T0 is 100).

Philip
erich1016 likes this.
bigphil is offline  

Old   March 7, 2019, 12:25
Default
  #424
New Member
 
nima
Join Date: Feb 2018
Posts: 3
Rep Power: 8
nima.s is on a distinguished road
hi
i want using of Mooney-Rivlin hyperelastic model.
i can use icoFsiElasticNonLinULSolidFoam for this model?
regards,
nima
nima.s is offline  

Old   March 8, 2019, 07:27
Default
  #425
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by nima.s View Post
hi
i want using of Mooney-Rivlin hyperelastic model.
i can use icoFsiElasticNonLinULSolidFoam for this model?
regards,
nima
Hi nima,

Mooney-Rivlin is not currently implemented but it can be implemented, either directly in icoFsiElasticNonLinULSolidFoam or it may be more convenient in solids4foam (PM me if you want access).

Philip

Edit: compressible neo-Hookean is implemented in solids4foam is that is good enough.
Daniel_Khazaei and nima.s like this.

Last edited by bigphil; March 8, 2019 at 07:28. Reason: Add note at bottom
bigphil is offline  

Old   March 8, 2019, 12:30
Default
  #426
New Member
 
nima
Join Date: Feb 2018
Posts: 3
Rep Power: 8
nima.s is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi nima,

Mooney-Rivlin is not currently implemented but it can be implemented, either directly in icoFsiElasticNonLinULSolidFoam or it may be more convenient in solids4foam (PM me if you want access).

Philip

Edit: compressible neo-Hookean is implemented in solids4foam is that is good enough.
hi Philip,
thanks for your answer,
i want use Mooney-Rivlin assumed to be hyperelastic, isotropic, incompressible and homogeneous. where the strain energy density function assumes the form:‬
w=C1(I1-3)+C2(I2-3)+D1[(e^(D2(I1-3)))-1]
how can i implemented this model in icoFsiElasticNonLinULSolidFoam or in solids4foam.
thanks,
nima
note:i use foam-extend-3.2.
nima.s is offline  

Old   March 11, 2019, 06:32
Default
  #427
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi nima,

To implement a new constitutive law, you need to find a procedure/algorithm to calculate the stress tensor (e.g. Cauchy, 1st/2nd Piola Kirchhoff) from the deformation gradient. Once you have this procedure, you can code this into foam e.g. copy and rename the neo-Hookean hyperelastic mechanical law in solids4foam and then insert the new code for calculating the stress tensor in the "correct()" function.

Philip
alia and ilhado like this.
bigphil is offline  

Old   March 11, 2019, 13:26
Default
  #428
New Member
 
Join Date: Mar 2017
Posts: 15
Rep Power: 9
paulbr is on a distinguished road
Quote:
Originally Posted by cfdopenfoam View Post
Hi all,

just one more question here,

is mesh updated in solidDisplacementFoam (I guess not)? and how?

if I want to implement mesh motion/displacement due to solid mechanics, is there a basic solverFoam in OF and related tutorials?

Thanks in advance.


Hello,

I'm currently trying to simulate a rotating beam with FSI. The rotation is forced on one face of the solid, using timeVaryingFixedRotation while the others are considered as "FSI interface".

The fluid mesh at the interface follows quite well the structure mesh on the FSI interface patches. Yet, I still haven't managed a way to make the fluid mesh follow the solid one on the face where the rotation is forced.

plaquemeshrotation1.jpg

On the picture, the red face is where I force the rotation. As you can see, the fluid grid (white wireframe) doesn't follow the solid one on this specific face.

I have some questions:
- Did someone make something similar ?
- Is it possible to force a specific displacement/rotation on a surface patch of the fluid mesh ? And how ?

Any idea or hint is welcomed ! I can provide my case if I wasn't clear enough...

Regards,

Paul
paulbr is offline  

Old   March 12, 2019, 07:53
Default
  #429
New Member
 
nima
Join Date: Feb 2018
Posts: 3
Rep Power: 8
nima.s is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi nima,

To implement a new constitutive law, you need to find a procedure/algorithm to calculate the stress tensor (e.g. Cauchy, 1st/2nd Piola Kirchhoff) from the deformation gradient. Once you have this procedure, you can code this into foam e.g. copy and rename the neo-Hookean hyperelastic mechanical law in solids4foam and then insert the new code for calculating the stress tensor in the "correct()" function.

Philip
hi Philip,
i use Cauchy method to calculate the stress tensor.
how can i obtian solid4foam for foam-extend-3.2?
thanks for your answer,
nima
nima.s is offline  

Old   March 13, 2019, 12:23
Default
  #430
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by paulbr View Post
Hello,

I'm currently trying to simulate a rotating beam with FSI. The rotation is forced on one face of the solid, using timeVaryingFixedRotation while the others are considered as "FSI interface".

The fluid mesh at the interface follows quite well the structure mesh on the FSI interface patches. Yet, I still haven't managed a way to make the fluid mesh follow the solid one on the face where the rotation is forced.

Attachment 68811

On the picture, the red face is where I force the rotation. As you can see, the fluid grid (white wireframe) doesn't follow the solid one on this specific face.

I have some questions:
- Did someone make something similar ?
- Is it possible to force a specific displacement/rotation on a surface patch of the fluid mesh ? And how ?

Any idea or hint is welcomed ! I can provide my case if I wasn't clear enough...

Regards,

Paul
Hi Paul,

It seems like you need a suitable rotation fluid mesh motion boundary condition. I suggest you have a look through the tutorials for the different types of fluid mesh motion (motionU/pointMotionU fields) boundary conditions used.

Philip
bigphil is offline  

Old   March 13, 2019, 12:26
Default
  #431
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by nima.s View Post
hi Philip,
i use Cauchy method to calculate the stress tensor.
how can i obtian solid4foam for foam-extend-3.2?
thanks for your answer,
nima
Hi nima,

PM me your email address and I can share solids4foam with you; the latest master and development branches compile with foam-extend-4.0 and foam-extend-4.1, though there is also a deprecated foam-extend-3.2 branch.

Philip
bigphil is offline  

Old   March 19, 2019, 12:53
Default
  #432
New Member
 
Join Date: Mar 2017
Posts: 15
Rep Power: 9
paulbr is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Paul,

It seems like you need a suitable rotation fluid mesh motion boundary condition. I suggest you have a look through the tutorials for the different types of fluid mesh motion (motionU/pointMotionU fields) boundary conditions used.

Philip

Hi Philip,

First of all, thank you for taking time to answer.

I went through tutorials for the different fluid mesh motion, and I have found that I need something like angularOscillatingDisplacement. However, all of the examples are realized with dynamicTopoFvMesh and mesquiteMotionSolver. Is there a way to make it work with dynamicMotionSolverFvMesh and a "more classic" solver such as velocityLaplacian (as I heard mesquiteMotionSolver can be really tricky with FSI simulations) ?

I thing I'm missing something, but for now I haven't managed to make it work. The log.decomposePar sends me this:

Code:
--> FOAM FATAL IO ERROR: 
Unknown patchField type angularOscillatingDisplacement for patch type wall

Valid patchField types are :

16
(
calculated
cyclic
empty
fixedValue
generic
global
mixed
oscillatingFixedValue
processor
slip
symmetryPlane
timeVaryingUniformFixedValue
uniformFixedValue
value
wedge
zeroGradient
  )
Regards,

Paul
paulbr is offline  

Old   March 19, 2019, 17:45
Default Re: paulbr BCs
  #433
New Member
 
Jonthan Cappola
Join Date: Apr 2018
Posts: 8
Rep Power: 8
jcappola is on a distinguished road
Hi Paul,

There is a way to make what you want working with dynamicMotionSolverFvMesh it just requires a little bit of coding. If you could provide some more context about your case setup regarding the geometry and how you want to move things we can figure it out. Also, if you are using fe32 for your simulations still, I have some old code (including an old rotatingBC written by Dr. Cardiff) that might just solve your problem.

Regards,

Jon
jcappola is offline  

Old   March 20, 2019, 09:04
Default
  #434
New Member
 
Join Date: Mar 2017
Posts: 15
Rep Power: 9
paulbr is on a distinguished road
Quote:
Originally Posted by jcappola View Post
Hi Paul,

There is a way to make what you want working with dynamicMotionSolverFvMesh it just requires a little bit of coding. If you could provide some more context about your case setup regarding the geometry and how you want to move things we can figure it out. Also, if you are using fe32 for your simulations still, I have some old code (including an old rotatingBC written by Dr. Cardiff) that might just solve your problem.

Regards,

Jon

Hi Jonthan,



Thank you for your answer! I’ll have a look at this rotating BC in fe32. I’m currently using fe40.
My case is as follow:
  • I’m forcing the rotation on one solid face (red one on flatPlateDomain.jpg and flatPlateRotation.jpg) with timeVaryingFixedRotation. Note that for this case, the plate is fully immersed but it will be embedded in the flume wall.
  • The others faces (yellow on flatPlateDomain.jpg) are freed to deform wrt the hydrodynamic forces. The deformation is taken into account with the implicit FSI algorithm.

For now, the fluid mesh (white wireframe in plaquemeshrotation1.jpg) at the fluid structure interface precisely follows the solid mesh (bleu in plaquemeshrotation1.jpg) displacement except on the fluid nodes corresponding to the solid red face. They are not moving which is not surprising because they are not marked as “FSI interface”.

To overcome this problem, I think the easiest way is to force the displacement (which is known as it is the same as the solid one) of these nodes.
I can't provide my case here, even with coarse meshes, as my meshes are generated with ICEM... I sent you a private message.

Regards,


Paul
paulbr is offline  

Old   March 20, 2019, 15:23
Default
  #435
Member
 
Mike Tree
Join Date: Feb 2016
Location: Charlotte, NC
Posts: 37
Rep Power: 10
treem22 is on a distinguished road
Philip,

You recently provided me a copy of solids4foam that I'm running with foam-extend 4.1 (thanks again, by the way). I'm attempting to run the HronTurekFsi3 tutorial and am repeatedly met by a FOAM Warning that the NeoHookeanElastic model is enforcing material linearity for stability. The first few time steps that this warning occurs it eventually disappears, but at Time = 3.264 I'm seeing my fsi iterations not converging (50 fsi iterations was max). The subsequent time step (Time = 3.265) pops the enforced linearity warning again and by the 17th fsi iteration within Time = 3.265 everything comes to a crashing halt.

My current thinking is that I could start from a previous time step (Time = 3.2, for example) and decrease the time step size such that the burden on the fsi coupling is decreased and maybe Time = 3.264 will converge. I could also play with the fsi under-relaxation factors/algorithms.

Unfortunately, when I attempt to restart this simulation from a previous time step, I'm met with another error:

Code:
--> FOAM FATAL ERROR:
Master point addressing is not correct                                                    
    From function GGIInterpolation::masterToSlavePointInterpolate(constField<Type> pf) in file /beegfs/users/mtree/foam/foam-extend-4.1/src/foam/lnInclude/GGIInterpolation.C at line 492

FOAM aborting
I've attached the log files from the original solids4Foam solve as well as my attempt at a restart.

Am I interpreting what's happening in the original solids4Foam solve correctly? Is my strategy sound? What am I doing wrong when I'm attempting a restart from Time = 3.2? Do you need any more information to help me realize my mistake?

Any help is appreciated. Thanks!
Attached Files
File Type: gz log.solids4Foam.gz (184.0 KB, 3 views)
File Type: gz log.solids4Foam_restart.gz (1.4 KB, 1 views)
treem22 is offline  

Old   March 26, 2019, 05:59
Default Rectangular Tank with visco-elastic solid
  #436
New Member
 
Sri Nivas Chandrasekaran
Join Date: Feb 2019
Posts: 6
Rep Power: 7
srinc is on a distinguished road
Hi,

I am new to openFoam. I want to compare the shear stress (wall and fluid/solid) that occurs when a rectangular tank undergoes linear oscillation (in vertical or z-direction).

I was able to do that for the case when the fluid is inside the tank using tutorial 'sloshingTank3D' under the section multiphase with little modification.

But when I need to solve for viscoelastic solid inside the tank (collagen in my case), I am not sure where/how to start. I am using openFoam ext 4.0.

The purpose is to calculate the shear stress that occurs when cancer cells inside the cell well are subjected to oscillatory mechanical vibration (20 Hz to 90 Hz) in the vertical direction with substrates like cell medium and collagen. Cell medium is similar to water.

Any input/help is appreciated. Thanks!

(I created a separate thread for it already. Then I saw this is the support thread for solidMechanics. So posting it here also.)
srinc is offline  

Old   March 26, 2019, 09:47
Default
  #437
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Mike,

For the restart error:
Code:
--> FOAM FATAL ERROR:
Master point addressing is not correct                                                    
    From function GGIInterpolation::masterToSlavePointInterpolate(constField<Type> pf) in file /beegfs/users/mtree/foam/foam-extend-4.1/src/foam/lnInclude/GGIInterpolation.C at line 492

FOAM aborting
This problem is related to the re-creation of the interpolator (between solid and fluid) on restart, where the deformed position of the solid may not have been taken into account. I have just pushed a fix to the development branch; double-check it works for your case. I will push it to the master once I have performed other checks.

As regards the warning "enforcing material linearity for stability", this indicates that the solid model is struggling to converge. Possibly, under-relaxation (in fvSolution for the D field and/or equation) may help.

Philip
Daniel_Khazaei and treem22 like this.
bigphil is offline  

Old   March 26, 2019, 10:47
Default
  #438
Member
 
Mike Tree
Join Date: Feb 2016
Location: Charlotte, NC
Posts: 37
Rep Power: 10
treem22 is on a distinguished road
Phil,

I pulled from the development branch and can confirm that restarting now works.

I'll play around with the under-relaxation and/or time step from here. Thanks!
bigphil likes this.
treem22 is offline  

Old   April 27, 2019, 17:53
Default
  #439
New Member
 
Join Date: Oct 2018
Location: Germany
Posts: 5
Rep Power: 8
Goddi is on a distinguished road
Hi,

I´m doing a FSI on cylinders. Already made it work with one cylinder. Both fluid and solid meshes were created with sHM.

Now I want to simulate it with 4 cylinders. sHM can´t create a solidmesh with unconnected cylinders...I think. Forum. Or at least I didn´t find out how to do it yet. Ironically the simulation in the link is running for some time, even though there is only one meshed solid cylinder out of 4:


Anyway my workaround was to create the solid mesh with blockMesh.

So the fluidmesh is created with sHM and a solidmesh with blockMesh only. checkMesh says "ok" and the fluid mesh is running without issue as CFD.



But now the simulation stops after:

Code:
Reading coupling properties
Create fluid-to-solid and solid-to-fluid interpolators
 Check fluid-to-solid and solid-to-fluid interpolators
and my simulation log tells me:
Code:
Running icoFsiElasticNonLinULSolidFoam on   /pfs/data2/home/st/st_st/st_st140927/run/extend-4.0/Version_14/v14_vierzylinder/fluid
/opt/bwhpc/common/cae/openfoam/4.0-ext/foam-extend-4.0/bin/tools/RunFunctions:   Zeile 37: 118116 Speicherzugriffsfehler  $APP_RUN $* > $LOG_NAME   2>&1
"Speicherzugriffsfehler" is german and has the meaning of memory access error.


Do you have any idea what went wrong? Many thanks for your help in advance. File of the case is attached.
Using extend-4.0 for the simulation with icoFsiElasticNonLinULSolidFoam solver.


Things on my mind about this error:

I already checked if the error is because of the 4 unconnected solid cylinders. But it even crashes when I create a one cylinder case with sHM fluid and blockMesh solid. So maybe there is the problem?
Used 4.0-ext for creating the fluid mesh and 4.x for the solid mesh. Can using different Version of OpenFOAM be the reason for the error? (Had to use 4.x for the solid mesh because with 4.0-ext one of the cylinders had non-ortho..with 4.x all cylinders we´re fine) But the error is the same if I use 4.0-ext for creating fluid and solid mesh. (even if the non-ortho cylinder is left out - then it should at least run for some time steps as before with only 1 out of 4 solid cylinders).
(Edit* used 4.x to create both meshes and still have the same error. So using different versions for mesh creation was not the reason for the error)


Summarizing unconnected patches under one patch could cause issues or unrealistic results. But my predecessor (using blockMesh for fluid and solid in 3.2-ext) had at least a running simulation. Also there is no way I´m allowed to edit the source code of 4.0-ext on the cluster I´m using. (Which is required to implement the changes Phil proposed in 2016)

Last edited by Goddi; April 28, 2019 at 15:12.
Goddi is offline  

Old   May 2, 2019, 06:04
Default
  #440
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Goddi,

I am not sure why you are receiving a memory error; if the mesh is valid, then it suggests a problem in the code. Multiple solid unconnected solid meshes should not be a problem.

You may like to try the case in solids4foam (PM me your email and I will share it), to see if the issue is related to some bug that has been fixed.

By the way, you could use snappyHexMesh for four solid meshes by creating four cases, where each case will create a mesh of a different cylinder; then use mergeMeshes to merge all four meshes into one solid mesh.

Philip
Shifeng likes this.
bigphil is offline  

Closed Thread


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
GPU Linear Solvers for OpenFOAM gocarts OpenFOAM Announcements from Other Sources 37 August 17, 2022 15:22
[Virtualization] OpenFOAM oriented tutorial on using VMware Player - support thread wyldckat OpenFOAM Installation 2 July 11, 2012 17:01
New OpenFOAM Forum Structure jola OpenFOAM 2 October 19, 2011 07:55
Cross-compiling OpenFOAM 1.7.0 on Linux for Windows 32 and 64bits with Mingw-w64 wyldckat OpenFOAM Announcements from Other Sources 3 September 8, 2010 07:25
OpenFOAM Debian packaging current status problems and TODOs oseen OpenFOAM Installation 9 August 26, 2007 14:50


All times are GMT -4. The time now is 13:58.