stressedFoam with wall motion looses symmetry and does not converge
I am trying to run a solids problem with a deforming geometry and am encountering some stability problems, (not that the code diverges per se, but rather it never converges).
Stripping it down, I have now reverted to a simple case with cylindrical symmetry and using a slightly modified version of stressedFoam.
- the geometry is a 2D empty ring
- the inner surface is subjected to a uniform and constant pressure field
- the outer surface is fixed (U=0)
I have reduced the material properties to linear elastic.
With that I would expect the inner surface to expand uniformly due to the pressure and the resultant U field to have cylindrical symmetry as well.
Structured mesh, with cylindrical symmetry. The checkMesh output may be seen here.
The entire case set-up can be downloaded here:
Summary of the Problem Set-up
The code I am using right now is stressedFoam, to which I added a "deformMesh.H" header mostly taken from icoFsi. I am running OpenFoam1.6-ext
The modified stressedFoam code is here:
The only new files are:
Description of the results and problem
After a few iterations, the geometry has nicely deformed and the problem could appear to be solved. There are slight assymetries in the displacement field along the inner boundaries but these could seem rather small (10-4 after 20 iterations). However, if the code is allowed to run longer, the error increases (10-1 after 600 iterations) and the geometry starts to oscillate.
Running the same case with stressedFoam (as is, without any added motion) I do see some assymetries in the computed displacement field, along the inner boundary. They remain stable when there is no mesh deformation, but do not disappear even if the convergence criterion is pushed further down.
I am not really sure as to what is happening.
I was wondering if this could be due to discretization errors for my spatial operators, leading to the assymetries we observe even without mesh deformation. And whether these could then be amplified when the mesh deformation is added. Right now I am mostly using least square, Gauss linear and Gauss linear corrected for the gradient, divergence and laplacian operators (as is done in the plateHole tutorial). Would other discretization schemes be better suited? Is the error elsewhere?
As a side note, I realize that linear elasticity is not the best suited model for such large deformations, but this was more meant as a mean for me to track down my issue, using an equation that is inherently isotropic.
I am open to any suggestion or thoughts as to where the problem could be arising from.
Thank you in advance,
I looked at your modifications and I not quite sure why you are solving for mesh motion, the solid solver uses a Lagrangian approach so the motion of the mesh is defined by the computed displacement field (i.e. interpolate the displacements from cell centres to vertices to move the mesh).
Also stressedFoam assumes small strain (that's why the mesh is not moved), if you want to move the mesh then you need to update/rotate the stress fields after moving the mesh (an updated Lagrangian approach).
If you pm me your email, I can send you one of my solvers that is large strain with a moving mesh using an updated Lagrangian approach, that works fine on your test case.
|All times are GMT -4. The time now is 20:47.|