|
[Sponsors] |
December 3, 2014, 04:53 |
Elastic or Plastic Deformations in OpenFOAM
|
#1 |
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 16 |
Hi everyone,
I apologize if I am not writing this thread at the right place. Anyway, I am an experienced user with OpenFOAM as I have done numerous simulations regarding non-Newtonian and Newtonian fluids. I'm interested at the moment on some issues regarding Solid Mechanics simulations and thinking that hopefully due to the vast capabilities of OpenFOAM that this can be done with this software. I would like to run a simple two dimensional case where a solid circular ring is "plastically" or elastically is deformed under load that actually squeezes the ring from two opposites sides, to deform (if plastic deformation) into some short of elliptical ring. I was thinking of doing so by using Dynamic Mesh but yet I haven't found any suitable solvers. The FSI approach I was also thinking would not work in my case since there is only one solid material. So, what solver can anybody suggest to approach this problem? Any suggestions are welcomed. Thanks in advance. Nickolas |
|
December 3, 2014, 11:36 |
|
#2 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Thank you for your question. I also think about this problem (without any solutions yet). I guess you speak about ring compression tests?
One starting point might be the solid mechanics solvers in the foam extend version: In the tutorials there is an example in solidMechanics/elasticPlasticSolidFoam/rigidBallPlasticBrick As the name says it a rigid ball is dropped on a plastic brick. For a ring compression test it has to be a plastic ring compressed by a rigid beam. I would be really interested in what you find out. |
|
December 3, 2014, 11:48 |
|
#3 |
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 16 |
Hi Joachim,
Thanks for the fast response. Just earlier today I came across about this solver in the Extended Foam project as you said. I am worried however that I did not see anywhere any files concerning Dynamic Mesh Handling. And I'm saying this because I would expect that the deformation of any arbitrary solid body to be physically represented by the deformation of it's mesh according to any deformation laws that applies there. Unless, if there is something I am missing about this solver. I cannot think of any other way to represent a body's displacement due to deformations at certain regions, other than deformation of the mesh itself. Do you agree on this? Did you by any chance solve the tutorial of the ball you are referring to? |
|
December 3, 2014, 12:02 |
|
#4 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
I just found this PhD thesis:
http://adhesion.ucd.ie/openfoam/UCD_...lPhdThesis.pdf If I understand the example correctly, it consists of two meshes which are moved. But you are right: It looks like that the mesh(s) are not deformed. But there is another solver (for fluid structure interaction) where the solid (and probably also the fluid) mesh is deformed. So perhaps you can somehow merge these two examples. |
|
December 3, 2014, 12:21 |
|
#5 |
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 16 |
Thank you very much for the file...I will take a look!
My simple example is even simpler...it doesn't have to do with FSI as there is no fluid to cause the deformation. It is actually as if you insert a ring between two plates that move vertically so that they can squeeze the ring and deform it to an ellipsoidal geometry. So in mesh terms, you have only one mesh consisting of the ring itself and the plates. And maybe in a more simple way, ignore the plates and assume that an "equal force" deforming the ring is applied at two opposite points around the ring. I thought that this was a simple example and still surprised that nobody has done it yet in OpenFOAM! Anyway, I will try to keep this thread alive and maybe find a solution to this issue the soonest. |
|
December 3, 2014, 12:38 |
|
#6 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Yes, it is clear that there is no fluid in your example. But the FSI solver has some code which handles the motion/deformation of the solid mesh.
Actually, I talked about this topic with the author of the PhD thesis I have linked above at the OpenFOAM workshop in Zagreb. His estimation for the effort of such a simulation with OpenFOAM were somewhere between a Master and a PhD thesis Unfortunately there seems to be not much documentation about the solid mechanics part of OpenFOAM (extended) (or even less then for the fluid part). Here are two presentations from the OpenFOAM Workshop 2014 in Zagreb: http://sourceforge.net/projects/open...4.pdf/download http://sourceforge.net/projects/open...4.pdf/download |
|
December 5, 2014, 14:39 |
|
#7 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
Hi,
I am actually currently working on a project using OpenFOAM for metal forming simulations, and I have looked at modelling such a pipe compression case, I copied the example in the Abaqus benchmarks manual 1.1.12. I intend to share the my general developments in the future; in the meantime I can certainly help you and steer you in the correct direction. The elasticPlasticSolidFoam solver in foam extend is for small strains and assumes J2 (Mises) plasticity, and is a good place to start to understand how plasticity is dealt with at the moment in FV and foam. Effectively, the two developments you would need to simulate this pipe compression case are:
elasticNonLinULSolidFoam is an example of a large strain elastic solver which uses an updated lagrangian approach (it moves the mesh), so something similar can be used. For the plasticity model, a book on computational plasticity is a good place to start; I have found these two useful:
Best regards, Philip |
|
December 18, 2014, 04:52 |
|
#8 |
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 16 |
Hi Philip,
Thank you for your insightful reply. I will start looking into the solvers you suggested and proceed with some preliminary results here. I see that there's not enough things done on this issue and so we can post here some of our findings in the future for the good of the OF solid mechanics field Nickolas |
|
January 6, 2015, 21:42 |
|
#9 | |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Hi Philip,
you wrote, ... Quote:
Instead the elasticNonLinTLSolidFoam solver is described as "appropriate for large strain and large rotations." Thank you very much for your help Joachim |
||
January 7, 2015, 06:58 |
|
#10 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,097
Rep Power: 34 |
Hi Joachim,
OK, sorry I am being inconsistent in my descriptions. I will try to clarify: The elasticNonLinTLSolidFoam solvers uses a total Lagrangian (TL) approach, whereas the elasticNonLinULSolidFoam solver uses an updated Lagrangian (UL) approach. Both TL and UL approaches can, in theory, be used for large strain, large rotation and large displacement analyses. However, the practical suitability of an approach (TL, UL, ALE, etc.) really depends on the correct choice (and implementation) of the constitutive model. In this regard, it could be argued that neither elasticNonLinTLSolidFoam and elasticNonLinULSolidFoam are strictly valid to describe any real material at large strains because they use the St. Venant-Kirchhoff model (this constitutive model does not describe any real material well at truly large strains). SO, if you want to implement a solver which accurately captures your specific material at large strains, then you first need to find a constitutive model which accurately describes your material (e.g. Neo-Hookean models might work well for large elastic strains in rubber-like materials, or for elasto-plastic metals you could use a hypo-elastic model (like in Abaqus) or a hyper-elastic-plastic model (like in Simo & Hughes). When the constitutive model is found, the mathematical model can be implemented as either TL or UL or whatever is most convenient. Hopefully this is a bit clearly, Philip |
|
January 7, 2015, 21:15 |
First try for simulation of ring compression test
|
#11 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Thank you for the help so far.
Now I have tried to start with a test case using the existing solver elasticNonLinULSolidFoam. All files of the test cases are on github: https://github.com/jmozmoz/foamRingCompressionTest Of course, I immediately hit some problems I tried a setup analogous to some ADINA simulations (see pages 17- in the (German) report http://www.grs.de/sites/default/file...GRS-A-3519.pdf and this paper (behind paywall) http://www.sciencedirect.com/science...2954931400209X) The left side of the ring and the bottom of the ring and the plunger are on symmetry planes. For the right side of the plunger (or how this is called?) I tried timeVaryingFixedDisplacement and timeVaryingSolidTraction boundary conditions. There is a solidContact boundary conditions between the ring and the plunger. Both cases crash (immediately, if the two objects have contact). Here is the output of the timeVaryingFixedDisplacement case: Code:
/*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | foam-extend: Open Source CFD | | \\ / O peration | Version: 3.1 | | \\ / A nd | Web: http://www.extend-project.de | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 3.1-7d8e040bf53d Exec : elasticNonLinULSolidFoam Date : Jan 08 2015 Time : 01:27:02 Host : iveragh PID : 5487 CtrlDict : /home/joachim/foam/foam-extend-3.1/etc/controlDict Case : /data/home/joachim/foam/joachim-3.1/run/elasticNonLinULSolidFoam/tutorials/ringTestDisp nProcs : 1 SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 Reading incremental displacement field DU Creating solidContact patch Normal contact model: standardPenalty Friction contact model: frictionless Interpolation of traction from slave to master: ggi Patch blockUp Traction boundary field: DU nonLinear set to updated Lagrangian Creating solidContact patch Patch hole Traction boundary field: DU nonLinear set to updated Lagrangian Reading accumulated displacement field U Reading accumulated strain field epsilon Reading accumulated stress field sigma Reading incremental stress field DSigma Selecting rheology model multiMaterial Selecting rheology model linearElastic Selecting rheology model linearElastic Selecting rheology model linearElastic Creating constitutive model Selecting solidInterface procedure none divSigmaExp method: surface divSigmaLargeStrainExp method: surface Move Mesh method: leastSquares Starting time loop Time = 0.01 Slave contact patch ring grabbing normalContactModel pointer from master Slave contact patch ring grabbing frictionContactModel pointer from master Time 0.01, Corrector 0, Solving for DU using DICPCG, res = 1, rel res = 1, inner iters 2 Time 0.01, Corrector 1, Solving for DU using DICPCG, res = 1, rel res = 0.905146, inner iters 7 Time 0.01, Corrector 2, Solving for DU using DICPCG, res = 0.318771, rel res = 0.346876, inner iters 4 Time 0.01, Corrector 3, Solving for DU using DICPCG, res = 0.214963, rel res = 0.174096, inner iters 4 Time 0.01, Corrector 4, Solving for DU using DICPCG, res = 0.135466, rel res = 0.0897763, inner iters 4 Time 0.01, Corrector 5, Solving for DU using DICPCG, res = 0.0788186, rel res = 0.0453993, inner iters 4 Time 0.01, Corrector 6, Solving for DU using DICPCG, res = 0.0432484, rel res = 0.0227575, inner iters 4 Time 0.01, Corrector 7, Solving for DU using DICPCG, res = 0.026917, rel res = 0.0114344, inner iters 7 Time 0.01, Corrector 8, Solving for DU using DICPCG, res = 0.0262867, rel res = 0.00606456, inner iters 7 Time 0.01, Corrector 9, Solving for DU using DICPCG, res = 0.0253862, rel res = 0.00454009, inner iters 7 Time 0.01, Corrector 10, Solving for DU using DICPCG, res = 0.0254976, rel res = 1, inner iters 7 Time 0.01, Corrector 11, Solving for DU using DICPCG, res = 0.266893, rel res = 0.982733, inner iters 20 Time 0.01, Corrector 12, Solving for DU using DICPCG, res = 0.0262712, rel res = 0.811591, inner iters 19 Time 0.01, Corrector 13, Solving for DU using DICPCG, res = 0.00586627, rel res = 0.665482, inner iters 18 Time 0.01, Corrector 14, Solving for DU using DICPCG, res = 0.00297913, rel res = 0.568317, inner iters 17 Time 0.01, Corrector 15, Solving for DU using DICPCG, res = 0.0022604, rel res = 0.511747, inner iters 17 Time 0.01, Corrector 16, Solving for DU using DICPCG, res = 0.00205008, rel res = 0.489955, inner iters 18 Time 0.01, Corrector 17, Solving for DU using DICPCG, res = 0.00201031, rel res = 0.488407, inner iters 18 Time 0.01, Corrector 18, Solving for DU using DICPCG, res = 0.00197379, rel res = 0.485961, inner iters 18 Time 0.01, Corrector 19, Solving for DU using DICPCG, res = 0.00194643, rel res = 0.48402, inner iters 18 Time 0.01, Corrector 20, Solving for DU using DICPCG, res = 0.00482397, rel res = 1.00953, inner iters 12 Time 0.01, Corrector 21, Solving for DU using DICPCG, res = 0.00403376, rel res = 2.23768, inner iters 17 Time 0.01, Corrector 22, Solving for DU using DICPCG, res = 0.0086619, rel res = 0.812756, inner iters 17 Time 0.01, Corrector 23, Solving for DU using DICPCG, res = 0.00330577, rel res = 0.612119, inner iters 17 Time 0.01, Corrector 24, Solving for DU using DICPCG, res = 0.00258677, rel res = 0.543335, inner iters 17 Time 0.01, Corrector 25, Solving for DU using DICPCG, res = 0.00246791, rel res = 0.513968, inner iters 17 Time 0.01, Corrector 26, Solving for DU using DICPCG, res = 0.00269836, rel res = 0.500082, inner iters 17 Time 0.01, Corrector 27, Solving for DU using DICPCG, res = 0.00334619, rel res = 0.491255, inner iters 16 Time 0.01, Corrector 28, Solving for DU using DICPCG, res = 0.00480308, rel res = 0.479822, inner iters 14 Time 0.01, Corrector 29, Solving for DU using DICPCG, res = 0.00797664, rel res = 0.481758, inner iters 12 Time 0.01, Corrector 30, Solving for DU using DICPCG, res = 0.0511407, rel res = 2.20945, inner iters 18 Time 0.01, Corrector 31, Solving for DU using DICPCG, res = 0.878745, rel res = 1.00548, inner iters 16 Time 0.01, Corrector 32, Solving for DU using DICPCG, res = 0.999997, rel res = 1, inner iters 17 Time 0.01, Corrector 33, Solving for DU using DICPCG, res = 1, rel res = 1, inner iters 18 Time 0.01, Corrector 34, Solving for DU using DICPCG, res = 1, rel res = 1, inner iters 18 Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | foam-extend: Open Source CFD | | \\ / O peration | Version: 3.1 | | \\ / A nd | Web: http://www.extend-project.de | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object DU; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; internalField uniform (0 0 0); boundaryField { left { type symmetryPlane; } ring { type solidContact; shadowPatch blockLeft; master no; contactActive yes; value uniform (0 0 0); } down { type symmetryPlane; } // up // { // type solidTractionFree; // nonLinear updatedLagrangian; // } hole { type solidTractionFree; nonLinear updatedLagrangian; } frontAndBack { type empty; } blockFrontAndBack { type empty; } blockDown { type symmetryPlane; } blockUp { type solidTractionFree; nonLinear updatedLagrangian; } blockRight { type timeVaryingFixedDisplacement; outOfBounds clamp; fileName "$FOAM_CASE/constant/timeVsRightDisp"; value uniform (0 0 0); } blockLeft { type solidContact; master yes; contactActive yes; rigidMaster no; shadowPatch ring; interpolationMethod ggi; //interpolationMethod patchToPatch; projectionAlgo visible; projectionDir contactSphere; //projectionDir vector; correctionFrequency 10; normalContactModel standardPenalty; standardPenaltyNormalModelDict { relaxationFactor 0.1; penaltyScale 1; returnScale 1.5; contactGapTol 1e-7; limitPenetration no; penetrationLimit -0.03; limitPressure no; pressureLimit 1e12; correctMissedVertices yes; distanceMethod point; //distanceMethod face; oscillationCorrection yes; smoothingSteps 1; infoFrequency 10; } frictionContactModel frictionless; value uniform (0 0 0); } } // ************************************************************************* // Also a (probably very ignorant) question: Assuming the model will work, how can the force be calculated the plunger exerts on the ring? Thank you for any help. Joachim |
|
January 8, 2015, 11:00 |
|
#12 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
It looks like there is a fundamental problem, using the elasticNonLinULSolidFoam solver together with the solidContact boundary condition: http://www.cfd-online.com/Forums/ope...lp-please.html
|
|
January 9, 2015, 06:14 |
|
#13 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
The problem seems to be related to the geometry of the case. I uploaded a case, where the solver is at least running to https://github.com/jmozmoz/foamRingC.../plateHoleDisp
Is there a problem if two solids have only contact at one point using the solidContact boundary condition? |
|
January 11, 2015, 13:06 |
|
#14 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
The problem was the parameter correctionFrequency for the solidContact boundary condition. By reducing it from 10 to 1 the simulation now works.
|
|
January 12, 2015, 20:24 |
|
#15 |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Ok, I will proceed with my monologue:
I have modified the elasticNonLinULSolidFoam so it outputs the product sigma & n (stress tensor dot surface normal). Integrating this quantity over a patch should give the force on this patch. In the attached graph the forces measured in an actual ring compression test are compared with the simulations of ADINA and OpenFOAM. The elastic part of OpenFOAM seems to be not to far off. As there is no consideration of the plasticity in the used solver this clear that the simulation breaks down at some point. |
|
January 14, 2015, 16:53 |
Litle video for fun !
|
#16 |
Member
Nicolas Lussier Clément
Join Date: Apr 2009
Location: Montréal, Qc, Canada
Posts: 61
Rep Power: 17 |
Hi Joachim,
I just did a dynamic case for fun with elasticNonLinIncrTLSolidFoam I change the correction correctionFrequency to be 1 as it help as you told us. I made a short video for fun ! This is dynamic case and the speed is shuch that we see wiggle !! https://www.youtube.com/watch?v=l0PKDVWA7qs |
|
January 14, 2015, 18:02 |
|
#17 | |
Senior Member
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 22 |
Thank you for sharing this. Would you be so kind to also share the input files (boundary conditions, blockMeshDict, fvS*).
Thank you very much Quote:
|
||
January 16, 2015, 11:22 |
|
#18 |
Member
Nicolas Lussier Clément
Join Date: Apr 2009
Location: Montréal, Qc, Canada
Posts: 61
Rep Power: 17 |
Yes why not this is a simple theoretic test i did just to see if i can get result and might not be totally consistent with what you try to do.
By changing in 0/DU rigidMaster to yes and changing topBar BC to timeVaryingFixedDisplacement you should have a correct setup case for rigid master. Please let me know if everything work for you. Hear it is: Last edited by nlc; January 19, 2015 at 09:35. |
|
February 17, 2015, 12:57 |
|
#19 |
Senior Member
ok
Join Date: Oct 2013
Posts: 346
Rep Power: 14 |
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. |
|
February 17, 2015, 14:15 |
|
#20 |
Member
Nicolas Lussier Clément
Join Date: Apr 2009
Location: Montréal, Qc, Canada
Posts: 61
Rep Power: 17 |
== solidMechanics/icoFsiElasticNonLinULSolidFoam:
Application icoFsiElastciNonLinSolidFoam Description Transient solver for fluid-solid interaction for an incompressible fluid and a large strain solid solid mesh is moved using U interpolated using least squares method VS == solidMechanics/deprecatedSolvers/icoFsiFoam : Application icoFoam Description Transient solver for incompressible, laminar flow of Newtonian fluids with mesh motion. Set up as a fake fluid structure interaction solver You decide !! It depend on your need you can look at the source code ! I need to precise that I have as of today no experience with FSI so you need to do your work and reed what those code do to make your own idea. But just by the description and the fact that that icoFsiFoam is in deprecatedSolvers folder I would go with icoFsiElastciNonLinSolidFoam !! By the way this post was not relay about FSI so starting an other post would be the god way to ask your question. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
OpenFOAM - Validation of Results | Ahmed | OpenFOAM Running, Solving & CFD | 10 | May 13, 2018 19:28 |
OpenFOAM Foundation releases OpenFOAM 2.2.2 | opencfd | OpenFOAM Announcements from ESI-OpenCFD | 0 | October 14, 2013 08:18 |
ESI-OpenCFD Releases OpenFOAM v2.2.0 | opencfd | OpenFOAM Announcements from ESI-OpenCFD | 13 | March 30, 2013 17:52 |
Critical errors during OpenFoam installation in OpenSuse 11.0 | amscosta | OpenFOAM | 5 | May 1, 2009 15:06 |
The OpenFOAM extensions project | mbeaudoin | OpenFOAM | 16 | October 9, 2007 10:33 |