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

LinkBack  Thread Tools  Search this Thread  Display Modes 
February 5, 2018, 21:53 

#381 
Member
Join Date: Apr 2011
Posts: 57
Rep Power: 15 
I know there is an older version of this Solid Mechanics addon for OpenFOAM 2.02.3, but has anyone ported it to the ESI version of OpenFOAM (OpenFOAMv1706 and such  the ever changing names becomes confusing)?


March 14, 2018, 15:07 

#382  
New Member
Fábio Fonseca
Join Date: Dec 2017
Posts: 1
Rep Power: 0 
Quote:
I faced the same problem trying to use a dynamic motion solver coupled with adaptive mesh refinement with fsiFoam (dynamicMotionSolverRefineFvMesh). Is it possible to fix the mess after the topological change? Or is there another way to implement this kind of solver in fsiFoam? Best regards Fábio Fonseca 

March 31, 2018, 09:37 

#383 
New Member
Bitte wählen
Join Date: Mar 2018
Posts: 2
Rep Power: 0 
Hey All,
I am new to OpenFoam and found the solidMechanics solvers to be very helpful. So now to my Problem: I want to use the Gent elasticity model with the Terzaghi stress given by: Code:
1/det(F)*[I_lim/(I_lim(Tr(F*F.T)3))*F.T*FI] model with the solidMechanics solvers. All the solvers and most of the BCs seem to need the Lamé coefficients. Has someone already done something similar or knows how this could be done? 

April 3, 2018, 09:26 

#384  
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Quote:
I have been working on extending the solidMechanics code to make it easier to implement new constitutive laws such as this. I have some other hyperelastic laws implemented and you are welcome to try it out, just PM me your email address and I will send you a link. Philip 

April 10, 2018, 11:34 

#385 
New Member
Join Date: Nov 2011
Posts: 1
Rep Power: 0 
Hi, we are trying to run a FSI simulation (OFext 4) using the PronyViscoelastic rheology model. We are clueless on how to define the parameters (k, kDimensions, etc) of this model and will thank any help.
Could any of you give us an example? Or, for example, how the model g(t)=[1g1*(1exp(t/tau1))g2*(1exp(t/tau2))] could be implemented??? Thanks a lot!!! 

April 10, 2018, 16:03 

#386  
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Quote:
Separately from the PronySeries law in OF4.0EXT, I have also implemented the viscoelastic approach described in "Simo and Hughes, 2000, Computational Inelasticity", which uses a relaxation function just like you have shown. PM me your email and I will share it with you. Philip 

April 17, 2018, 12:53 
elasticOrthoSolidFoam

#387 
New Member
Join Date: Apr 2018
Posts: 2
Rep Power: 0 
Hello All,
Currently I'm trying to familiarize myself with OpenFOAM, particularly the elasticOrthoSolidFoam solver. (Foam Extend 4.0) First I just wanted to understand the basics so I took a simple cantilever, and tried to see how the simulation goes for normal and shear (bending) force. After I've read through this thread  if I understand correctly  I see that this shear case might be a little problematic with this solver. I thought about stress singularity so I've made a "base plate" with a fillet but I still failed to get good results. Setting nCorrectors to 20000 in fvSolutions did not help. What should I do in order to get close to the analytical results? With the normal force case I get perfect results. Here is a link to the case folder, if needed: https://www.dropbox.com/sh/m9roulbqe...grmz2VQNa?dl=0 Thanks, Bence 

April 17, 2018, 13:38 

#388  
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Quote:
Yes, you are right that the segregated algorithm employed by the solver is not so efficient in a bending cantilever case. However, the stress singularity does not cause a problem (for convergence or efficiency). From checkMesh, I can see that there are a number of severely nonorthogonal faces, these are not good for convergence (though the solver does seem to be converging). I suggest you try the case without the base plate and increase the nCorrectors further until convergence is achieved at least for a residual of 1e6: this should produce predictions close to the analytical results; if it slightly underestimates then you will need to tighten this tolerance. Separately, if you PM me your email, I can share a case using the solid block coupled solver, which will be much faster for this case (but orthotropy is not implemented yet...). Philip 

April 18, 2018, 14:43 

#389  
New Member
Join Date: Apr 2018
Posts: 2
Rep Power: 0 
Quote:
Thank you for your quick response, I will PM you! As I'm using a virtualbox the 30000 iterations took 2 hours, (without the base plate) but the residuals "look nice" even though it would need some more time to reach the target value. (https://www.dropbox.com/s/nlt3x48kju...uals3.JPG?dl=0) The results are getting closer to the analytical one, maybe I'll try a longer simulation during night, but I believe the results would be all right. Bence 

May 17, 2018, 06:57 

#390  
New Member
Ali Aghaei
Join Date: Oct 2014
Posts: 12
Rep Power: 11 
Quote:
Have you tried using Euler D2dt2 (D_) scheme? it could be more stable. the CrankNicolson also may be better to be replaced with more stable Euler scheme. Regards Ali 

May 24, 2018, 09:49 

#391 
Member
Join Date: Apr 2011
Posts: 57
Rep Power: 15 
Quick question about the hronTurek FSI function object. I'm using the FSI toolkit for foamextend4.0, however I've run into an issue with the hronTurek and pointHistory function objects.
Initially they would not compile, giving me errors about the virtual functions being pure. I fixed this by adding in public member functions for "updateMesh" and "movePoints" in the header file, and changing virtual bool execute() to virtual bool execute(const bool forceWrite); They now compile successfully, however they are only outputting force and position data for the very first timestep. After this they no longer are writing any output. Have the function object definitions changed in the updated foamextend version, or perhaps my modifications to fix the compiling issues were in error? 

July 16, 2018, 02:08 

#392 
Member
Karelke Yu
Join Date: Dec 2014
Posts: 96
Rep Power: 11 
Hi all,
I hope this is the right place to ask for help. I just want to understand the math theory and mechanics of a very simple solidMechanics solver, solidDisplacementFoam. I have initial OF coding experience but in fluid FVM. I hope someone here could offer me some basic materials and tutorials for solidDisplacementFoam, and much better if they can explain to me the code structure details corresponding to the full mechanics including thermal stress implementation in the solver. Many thanks in advance. 

July 16, 2018, 04:05 

#393  
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Quote:
The solidsDisplacementFoam solver is described in the following articles:
Also, I have provided descriptions of the background theory in some of my conference presentations (see my ResearchGate), such as:
I hope it helps, Philip 

July 16, 2018, 04:25 

#394  
Member
Karelke Yu
Join Date: Dec 2014
Posts: 96
Rep Power: 11 
Quote:


July 16, 2018, 06:52 

#395 
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Hooke's law can be extended to the socalled DuhamelNeumann form of Hooke's law by including a thermal stress term e.g. books like Mase and Mase, Continuum Mechanics for Engineers discuss linear thermoelasticity.
So the solid stress is a function of temperature and you end up with a source term in the momentum equation that is a function of temperature. For cases where the kinetic energy is small, this temperature equation is decoupled for momentum so you can solve temperature first and then solve momentum (only oneway coupling). If you PM your email, I can send you some slides I have that might help explain its OpenFOAM implementation. Philip 

July 23, 2018, 09:27 

#396 
Member
Karelke Yu
Join Date: Dec 2014
Posts: 96
Rep Power: 11 
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. 

July 23, 2018, 16:25 

#397 
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 51 
Hi,
short: No. The basic stress solvers in the Foundation version do not support mesh motion such as plastic movement of the solid. The solvers only handle linearelastic problems. If you are interested into problems which include plasticity, you should check the foamExtend version. Phil made huge workarounds here. I also refer to his Ph.D. if you are interested in the theory.
__________________
Keep foaming, Tobias Holzmann 

October 22, 2018, 23:37 

#398 
Member
Kellis
Join Date: Mar 2017
Posts: 39
Rep Power: 9 
Hello,
First off, hopefully this is the right spot for this question  if not, sorry! I've been struggling with an issue trying to run an FSI solver in parallel for a while now. It's based off of the standard icoFsiElasticNonLinULSolidFoam, but modified to work in a single rotating reference frame and to use the PISO algorithm for fluid solving. All of the solid mechanics stuff was untouched. For what it's worth, I tried running the standard solver (icoFsi...Foam) and received the same error. The case runs perfectly serially but refuses to run in parallel The mesh was created in blockMesh and builds without errors. It is then decomposed using the patchConstrained method, keeping the entire fluid/solid interface patch on one processor: Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM Extend Project: Open Source CFD   \\ / O peration  Version: 1.6ext   \\ / A nd  Web: www.extendproject.de   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object decomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // numberOfSubdomains 4; method patchConstrained; preservePatches ( AF side1 side2 ); patchConstrainedCoeffs { method metis; numberOfSubdomains 4; patchConstraints ( (side1 0) // cyclicGgi sides (side2 0) (AF 1) // this is the fluid patch that corresponds to the solid interface ); } metisCoeffs { processorWeights ( 1 1 1 1 ); } distributed no; roots ( ); // ************************************************************************* // Code:
kellis@desktop:~/foam/kellis3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid$ mpirun np 4 SRFPisoFSIFoam parallel /**\  =========    \\ / F ield  foamextend: Open Source CFD   \\ / O peration  Version: 3.2   \\ / A nd  Web: http://www.foamextend.org   \\/ M anipulation  For copyright notice see file Copyright  \**/ Build : 3.2a4e7bf3b15c0 Exec : SRFPisoFSIFoam parallel Date : Oct 22 2018 Time : 22:14:36 Host : desktop PID : 13246 CtrlDict : "/home/kellis/foam/kellis3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid/system/controlDict" Case : /home/kellis/foam/kellis3.2/run/wellsTurbine/FSITests/300FSITest_1022/caseDir/fluid nProcs : 4 Slaves : 3 ( desktop.13247 desktop.13248 desktop.13249 ) Pstream initialized with: nProcsSimpleSum : 16 commsType : blocking SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create dynamic mesh for time = 0 Selecting dynamicFvMesh dynamicMotionSolverFvMesh Initializing the GGI interpolator between master/shadow patches: side1/side2 Selecting motion solver: laplace Selecting motion diffusivity: quadratic Reading transportProperties Reading field p Reading field Urel Creating field Uabs Creating SRF model Selecting SRFModel rpm Reading/calculating face flux field phi Selecting incompressible transport model Newtonian Selecting turbulence model type RASModel Selecting RAS turbulence model kOmegaSST kOmegaSSTCoeffs { alphaK1 0.85; alphaK2 1; alphaOmega1 0.5; alphaOmega2 0.856; gamma1 0.555556; gamma2 0.44; beta1 0.075; beta2 0.0828; betaStar 0.09; a1 0.31; b1 1; c1 10; F3 false; } Reading incremental displacement field DU Patch AFS Traction boundary field: DU nonLinear set to updated Lagrangian Patch AFS Traction boundary field: Usolid nonLinear set to updated Lagrangian Reading incremental displacement field DV Reading accumulated velocity field V Reading accumulated stress field sigma Reading incremental stress field DSigma Selecting rheology model linearElastic Creating constitutive model Reading coupling properties Create fluidtosolid and solidtofluid interpolators Check fluidtosolid and solidtofluid interpolators [1] [1] [1] > FOAM FATAL ERROR: [1] given field does not correspond to patch. Patch size: 2842 field size: 0 [1] [1] From function PatchToPatchInterpolation::faceInterpolate(const Field<Type> ff) [1] in file /home/kellis/foam/foamextend3.2/src/foam/lnInclude/PatchToPatchInterpolate.C at line 132. [1] FOAM parallel run aborting [1]  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 13247 on node desktop exiting improperly. There are two reasons this could occur: 1. this process did not call "init" before exiting, but others in the job did. This can cause a job to hang indefinitely while it waits for all processes to call "init". By rule, if one process calls "init", then ALL processes must call "init" prior to termination. 2. this process called "init", but exited without calling "finalize". By rule, all processes that call "init" MUST call "finalize" prior to exiting or it will be considered an "abnormal termination" This may have caused other processes in the application to be terminated by signals sent by mpirun (as reported here).  The patch size is consistent with the number of faces on the fluid side of the interface patch, and the error originates from the processor I assigned it to. However, I can't find anything wrong with the case files and am not sure what to try next. Has anyone encountered a similar issue before? Thanks for any assistance! Kellis 

November 1, 2018, 15:11 

#399  
New Member
Kanuk
Join Date: Oct 2010
Posts: 28
Rep Power: 15 
Quote:
Kellis, I have had a similar problem in the past, with no success finding a solution. I had to resort to performing a full simulation (in my case, 3 blades of a wind turbine). I only post here to add my name to the list of people who are looking for a solution.. Cheers, Dave 

November 2, 2018, 07:36 

#400 
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 
Hi Kellis, Dave,
I suggest running the solver through a debugger (e.g. gdb) in debug mode and finding the lines of code where the solver stops. From there, it should be clear where the error is coming from and then hopefully a solution can be found. Philip 

Thread Tools  Search this Thread 
Display Modes  


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