Hello everyone,
I have a question, probably a stupid one because I'm just starting with foam-extend. It it possible to extract the velocity of the solid in precise points when we run a fsi simulation? I'll try to be more precise, when I run a simulation I have new files in the fluid folder with new pressure, velocity fields... but not in the solid one so how can I get these informations Thanks, Maxime |
Quote:
Which solver are you using? The solid fields are typically written to the time-steps in a sub-directory called "solid". Philip |
Hi,
I have found it thank you for the quick reply! Maxime |
Quote:
I am currently trying to implement the Mooney-Rivlin model and an exponential model based on the first invariant of the right Cauchy-Green deformation tensor in solids4foam. However, both of these models use material constants that do not relate to the Lamé constants of the neo-Hookean constitutive model, for example. So, in this case, how should I calculate the implicit stiffness for a specific model? Based on a paper by Prof. Jasak regarding solvers for elasticity problems, I tried to extract the linear part of the complete equation when I replace the Cauchy stress expression in the governing equation and. hence, the coefficient of this Laplacian term would be the implicit stiffness. However, I am not sure if this is a theoretically correct procedure. Could you help me with this issue? Thanks in advance :) Best regards Iago Lessa |
Quote:
The 'implicit stiffness' coefficient only affects convergence and does not affect the result (assuming the procedure converges), so I suggest you try set it to "2*mu" (twice the linearised shear modulus, or something similar) and see if it converges. You may need some field relaxation for the D field (or DD depending on the solid model). Philip |
Quote:
I tried with the "2*mu" and with "2*c01" (c01 is one of the material constants of the Mooney model I am using), however both procedures lead to divergence :( I printed the determinant of the deformation gradient and it increases until divergence (since the initial iterations the Jacobian is negative and very high), even changing the relaxation. I am currently reviewing the code and the equations of the model, but do you think that it could be caused by the highly non-linear behavior of this model? Any help would be great :) Thanks again and kind regards, Iago |
sigh... I wrote a reply and then the internet dropped when I clicked "post". OK, here I go again (when my clipboard now has my back covered):
All hyperelastic laws should reduce to linear elasticity when the strains are small, so I suggest you try a case with small strains. Keep the case simple with a simple orthogonal mesh. Related to this is the traction boundaries, their implementation (in the tractionBoundarySnGrad function within a solid model) can also greatly affect convergence: you may need to use 2*mu there too. For trying under-relaxation for the D field, make sure to try values as low as 0.1. If your law is incompressible then how do you calculate the hydrostatic pressure? This could be causing the problem. I guess you need to solve a pressure equation, and then be careful of the boundary conditions. You may try a compressible form first to see if this is the issue. Philip |
solids4foam installation
Hello, I installed solids4foam but every tutorial crashes after few iterations. I joined the cavity tutorial log below.
I thought I just broke foam-extend-4.0 after replacing fvMesh.C, solution.C etc.. but the fe40 tuto works properly. Any idea of what I missed here? Thanks Code:
/*---------------------------------------------------------------------------*\ |
Quote:
I will do that, they are pretty new to me, especially the one about the traction boundaries, i didn't know that the change must done for the tractionBoundarySnGrad function too. Regarding the compressibility, I am modeling my problem as incompressible and the law I use is indicated to this case, but in the class implementation, I just changed the Cauchy stress tensor function without actually accounting for the hydrostatic pressure. So to include it i must also change the equation being solved, right? Because it will appear as a term in the Cauchy stress. And just to be sure: an incompressible form of the law is one that do not depend on the third invariant of the deformation tensor? iago |
Quote:
Apoligies, this is a temporary issue with the "master" branch: I will merge the fix from the development branch soon. For now, please change to the "development" branch: Code:
$> cd solids4foam-release |
Quote:
The mechanical law should return the total Cauchy stress i.e. deviatoric term plus volumetric/dilatation/pressure term. Can you give a link to the form of law you are using? Be careful in case you are just using the definition of deviatoric stress (shape change) without the pressure contribution. You may or may not need to solve an equation to get the pressure; there is probably no need to modify the solidModel as you could solve the equation within the mechanical law to get the pressure. Philip |
Quote:
restarted everything from 0, did that, but the problem is still the same unfortunately :confused: |
Quote:
I have pushed the fixes to the master now so try a fresh copy and see if it works: Code:
$> git clone git@bitbucket.org:philip_cardiff/solids4foam-release.git Philip |
Quote:
Quote:
Using a penalty parameter approach for an incompressible pressure term basically means assume the material is compressible and then use a large value for the bulk modulus (the bulk modulus is termed the penalty factor/stiffness in this case); as the bulk modulus is increased, the answer approaches the incompressible solution. So, I suggest you use the pressure term from the implemented compressible neo-Hookean law: Code:
// Calculate Jacobian Best, Philip |
How to choose a proper constitutive law?
Hi everyone!
I have a question(or stupid question). How do i know which constitutive law should be choosed? If my problem is small strain, small deformation then I should use the linear constitutive law. And if the problem is finite strain then need to use nonlinear constitutive law. But is there a simple idea to choose the proper constitutive law?:confused: Such like if the ratio of water depth to water length smaller than 1/20 (i.e h/L < 1/20) then I can say this is a shallow water problem. Wu |
Quote:
I would say that this is not a stupid question at all! Generally, if the strains are less than or equal to 1% and the rotations (or each cell/element) are small (less than a few degrees), then the linear geometry (small strain) approach is probably fine, though in some cases it is fine to larger strains e.g. ~5%. So if the linear geometry approach is OK, then you have to decide what material behaviour is most important i.e. what material are you modelling and what are you interested in? For example:
The same points also apply for finite/large strains, in that case, the constitutive laws can become more complex. Feel free to describe your material and problem for me and others to give our thoughts. Philip |
1 Attachment(s)
Hello!
I have successfully compiled solids4foam before with foam-extend-4.1. However, I tried again in a new machine yesterday and it did not completely compile due to the following error: Quote:
I tried in Ubuntu 16.04 and Ubuntu 18.04, with foam-extend-4.1. Thanks a lot, Iago |
Hello Philip,
I have implemented a solver for neo-hookean material deformation. Now, I want to extend it for mooney-rivlin model. I was thinking of finding a relation between Elasticity (E) and mooney-rivlin constants. Is there any relation like this? I have used B (left Cauchy-Green deformation) in my code. Do you think I can find Elasticity as a function of B which makes the material behave like mooeny-rivlin? |
Quote:
Many forms of Mooney-Rivlin laws can be found in the literature; for example of a compressible form, see equation 27 in the following paper: https://www.sciencedirect.com/scienc...478?via%3Dihub. Best, Philip |
Quote:
Which compiler are you using? My guess is that these errors are related to you using "too new" a compiler. It should work with gcc 4, 5 and 6 (as well as relatively recent Intel compilers); I have not (yet) checked with later gcc versions. Best, Philip |
Quote:
I already compiled it before at it worked with this version. Do you think it could be related to the foam-extend version? I noted this same kind of warning the last time I compiled it. Bests Iago |
Quote:
I am not sure about the warnings but I would not worry about them; for the error, it comes from compiler options not available with gcc5 (-Wno-ignored-attributes -Wno-misleading-indentation). I have removed these now and pushed the changes to the development branch. I will merge the changes to the master once I have performed checks. Philip |
Quote:
Thank you very much! I will check the development version then! Iago |
Quote:
In Article "A Lagrangian Cell-Centred Finite Volume Method for Metal Forming Simulation", Page (5), you mentioned "The relative deformation gradient is given in terms of the displacement increment as f = I + ∇(u)T". But I saw in solid mechanics book that the deformation gradient is f =I+∇(u), without transpose. In OpenFOAM the code of deformation gradient was Quote:
Quote:
because for grad different in OpenFOAM, I found this http://uupload.ir/files/56jm_untitled.jpg is it OK? |
friction BC without contact model
Hey all,
I am working on the poro-elastoplasitc solvers by Tian Tang. For a multitude if situations concerning geotechnical problems I need to specify a friction boundary condition. The BC should either specify the displacement or traction (depending on the situation) for the normal component of the DU field. For the tangential component DU should be 0 as long as the resulting shear stress doesn't exceed the maximum value given by Coulomb's friction law (maxShear proportional to normal traction). If it does exceed, it should chance to a fixed (tangential) traction BC for that face and iteration. I was looking at the solidContact Boundary condition, but i think it is a bit overkill for what i need, since i dont need the ability of detachment and re-attachment of the material (yet). So i was thinking, I should be able to build on the fixedDisplacementZeroShear BC. However i can not seem to find where the tangential components are specified. I think the confusion stems from the whole valueFraction-issue that is quite hard to get the head around at the start. Can someone point me to the right lines in the fixedDisplacementZeroShear to modify? Greetings Denis |
descomposePar solid problem
Hello,
I have a problem, I hope some one can help me. I am trying to do a FSI simulation. I create a Mesh for the fluid and use the utility extrudeMesh to get the solid Mesh. When I run my case in series I dont have problem. But when I try to run my case in parallel, and use the decomposePar utility for the solid region I get this error, and when I descompose the fluid region doesnt have problem. Code:
Decomposing mesh solid |
Quote:
I had a similar problem. My 2D mesh was imported from ICEM, but not perfectly 2D, you can check this by running checkMesh -region solid. You'll have warnings if it's not perfectly 2D, and that would most likely be the cause of your problem. However the case can still run in serial for some reasons. To solve the problem, simply make it properly 2D. If that is not the problem, I don't know then. Try different decomposition method (scotch method is cool). |
Quote:
maybe you describe your case, we can find your problem. |
fsiFoam&foam-extend4.0: Restart issue
Hi to everyone,
I'm working on fsi problems with foam-extend/4.0 and Fsifoam4.0. I'm currently trying to make a restart with initial data from specific time-step. The fluid side is not a problem and I'm sure the issue comes from the solid solver. I tried several possibilities but for now, I'm stuck with this error that I can't understand: Code:
Create time My first question is: Did anyone face the same issue ? Meanwhile, when I post-process my solid results for parallel cases, I'm unable to reconstruct them. (With paraview, I only use Decomposed Case.) It seems that I need meshPhi to reconstruct the solid domain. For now, I have changed the IOobject in unsTotalLagrangianSolid.C with no success because meshPhi is not written. Code:
My second question is: How can I nicely reconstruct the solid domain ? (in order to make a restart possible.) Until today, I'm executing this: Code:
#!/bin/bash Thanks in advance, Paul |
Hi Paul,
Although it will not directly solve your problem, it might be useful to try it out in solids4foam as some of these issues may have been fixed; PM me with your email address if you would like to use it. Philip |
Good afternoon,
When attempting to start the elasticOrthoNonLinULSolidFoam solver from a time other than zero, it complains of not being able to locate the materialDirections file in the timestep folder. Checking the orthotropicLinearElastic.C file, the materialDirections file is set to NO_WRITE. Is there any reason it shouldn't be changed to write in the saved timestep directories, to allow for the case to restart at a non-zero time? Thanks, Kellis |
Hi
I'm not familiar with this solver, but usually you can change IOobject to writing file in disk, it only increase storage. In general solvers, usually use NO_Write to make less storage. Quote:
|
Did you solve this?
Hi,
if you did solve this, could you let us know, what combination worked? I have the same errors. Thanks Quote:
|
Hi,
i'm currently writing my master thesis with geotechnical background. For my thesis i'm using the elasticSolidFoam Solver. Because of pressuretests i'm doing for my testcase models, i need to know what SI Unit foam-extend exactly uses. So my Boundary Conditions need some pressures. I'm guessing Pa for pressure? Has the pressure of the BC to be normalized with the density of the material? It would be very great, if you could help me. My BC for U looks like: boundaryField { pressureside { type solidTraction; traction uniform (0 0 0); // I would like to set 80 bar pressure pressure uniform 8e+06; value uniform (0 0 0); } side with role conditon { type symmetryPlane; } } Whats the difference between setting the pressure bc from: traction uniform (0 0 8e+06) to my current bc setting pressure uniform 8e+06 ? Or would the result be the same, if my pressure bc has to be set in z-direction? As i understand traction uniform () you can set different vectors in traction uniform (), right? Can i set the pressure bc with time variation, too? So like to set the pressure bc with increasing pressure from 10 to 80 bar? Sorry for so many questions i have. Kind regards Erik |
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Code:
myPatch Code:
( Philip |
Thank you very much Philip :)
Is it correct to say, that using only the nonuniform internalField from U volVectorField would be enougth for initial conditon for stress simulation? I'm using mapFields for getting the nonuniform internalField, but in the first step of my simulations i'm just getting the U Field interpolated to my next mesh. |
Quote:
The fluid solvers in solids4Foam still use kinematic pressure [m^2/s^2], but the solid solvers do use [Pa]? |
Hello everyone,
While using Solids4foam for my new cases, I need to finish some works with fsifoam (and FE4.0). I have mainly two situations: 1) I needed to refine my fluid mesh and it doesn't matter the time step value, the number of processors used for the decomposition, etc..., this kind of error appears (while my case was running with larger cells..): Code:
[1] --> FOAM FATAL ERROR: 2) As I'm not sure where my problem comes from, I tried to use the FE dynamic mesh solver, which I read gives much more robust results. I'm struggling to use it with fsiFoam and foam-extend/4.0. This error appears: Code:
--> FOAM FATAL ERROR: Code:
if (ff.size() != patch_.patch().size()) Could my second question solve the first one ? Any help is welcome on both situation... :) ! Best, Paul |
Paul,
Do you have your FSI boundaries declared as global face zones in the decomposeParDict for both fluid and solid? I.e.: Code:
globalFaceZones ( fsiBoundaryPatchName ) Thanks, Kellis |
Quote:
Some fluid solvers (incompressible flow) in OpenFOAM use kinematic pressure and most solid solvers use pressure in Pa. It depends on the specific solver. However, for the solidTraction solid boundary condition, it assumes Pa regardless of the solid solver using it. Philip |
All times are GMT -4. The time now is 19:29. |