wrong displacement values using "ElasticSolver"?
wrong displacement values using "ElasticSolver"?
Hi,
I obtain wrong displacement values using "ElasticSolver" and I cannot understand why.
The geometry is made up of two identical bodies, one on top of the other:
The dimensions of each body are 0.3(x) x 0.05(y) x 0.05 (z).
The mesh is made up of second order bricks (0.01 x 0.01 x 0.01).
Material:
Youngs modulus = 5e6
Poisson ratio = 0.0 (=> constant cross-section, linear problem)
Forces:
Force 3 = 5e5 (on top assembly face)
Force 3 = -5e5 (on bottom assembly face)
On the common face between the two bodies (similar results by setting the Displacements):
Boundary Condition 1
Target Boundaries(1) = 2
Name = "Ref"
!Displacement 1 = 0.0
!Displacement 2 = 0.0
!Displacement 3 = 0.0
Spring 1 = 1e2
Spring 2 = 1e2
Spring 3 = 1e2
End
The correct displacements on top and bottom faces are +5e-3 and -5e-3 respectively in the z direction.
StressSolver and ElasticSolver stress_zz result: 5e5 everywhere (as expected)
StressSolver top face z displacement (min, mean, max): 4.963e-3, 4.999e-3, 5.034e-3 (nearly correct. Much better results by setting the Displacements to 0 on BC1)
ElasticSolver top face z displacement (min, mean, max): 4.401e-3 4.401e-3 4.401e-3 (WHY??????? )
The z displacement obtained from the ElasticSolver is 88% the correct displacement everywhere. Why?
The other stress and displacement components are virtually zero from both Solvers.
I cannot understand what's wrong.
Also, is there a way to output the Elemental Fields? Adding Save Elemental Fields = True in ResultOutputSolver does not make any difference. Aren't stress and strain obtained from the nodal displacement and computed on the elements (Gauss Points) and then nodal stress and strain are obtained from the nodal values?
Elmersolver Version: 9.0 (Rev: Release, Compiled: 2024-04-26)
Thanks
I obtain wrong displacement values using "ElasticSolver" and I cannot understand why.
The geometry is made up of two identical bodies, one on top of the other:
The dimensions of each body are 0.3(x) x 0.05(y) x 0.05 (z).
The mesh is made up of second order bricks (0.01 x 0.01 x 0.01).
Material:
Youngs modulus = 5e6
Poisson ratio = 0.0 (=> constant cross-section, linear problem)
Forces:
Force 3 = 5e5 (on top assembly face)
Force 3 = -5e5 (on bottom assembly face)
On the common face between the two bodies (similar results by setting the Displacements):
Boundary Condition 1
Target Boundaries(1) = 2
Name = "Ref"
!Displacement 1 = 0.0
!Displacement 2 = 0.0
!Displacement 3 = 0.0
Spring 1 = 1e2
Spring 2 = 1e2
Spring 3 = 1e2
End
The correct displacements on top and bottom faces are +5e-3 and -5e-3 respectively in the z direction.
StressSolver and ElasticSolver stress_zz result: 5e5 everywhere (as expected)
StressSolver top face z displacement (min, mean, max): 4.963e-3, 4.999e-3, 5.034e-3 (nearly correct. Much better results by setting the Displacements to 0 on BC1)
ElasticSolver top face z displacement (min, mean, max): 4.401e-3 4.401e-3 4.401e-3 (WHY??????? )
The z displacement obtained from the ElasticSolver is 88% the correct displacement everywhere. Why?
The other stress and displacement components are virtually zero from both Solvers.
I cannot understand what's wrong.
Also, is there a way to output the Elemental Fields? Adding Save Elemental Fields = True in ResultOutputSolver does not make any difference. Aren't stress and strain obtained from the nodal displacement and computed on the elements (Gauss Points) and then nodal stress and strain are obtained from the nodal values?
Elmersolver Version: 9.0 (Rev: Release, Compiled: 2024-04-26)
Thanks
-
- Posts: 2418
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: wrong displacement values using "ElasticSolver"?
Your mesh looks good, and they are second order elements, all should be fine.
I assume that your iterative solver did not truly converge, leaving the answer a little short.
For solid mechanics I avoid that by using direct methods, there are three available.
No worries about convergence when solving direct. The down side of direct is you may run out of memory, in that case you need to make sure the solution is really converged.
Interesting that when I ran your settings it appears to converge, but the non-linear iterations is set to 20, and the answer was
as you stated.
Since there is nothing non-linear in the solution I set the non-linear iterations to 1
and the iterative solver arrived at the same correct answer as direct method.
I assume that your iterative solver did not truly converge, leaving the answer a little short.
For solid mechanics I avoid that by using direct methods, there are three available.
No worries about convergence when solving direct. The down side of direct is you may run out of memory, in that case you need to make sure the solution is really converged.
Interesting that when I ran your settings it appears to converge, but the non-linear iterations is set to 20, and the answer was
as you stated.
Since there is nothing non-linear in the solution I set the non-linear iterations to 1
and the iterative solver arrived at the same correct answer as direct method.
Re: wrong displacement values using "ElasticSolver"?
If ElasticSolver is used, the strain measure will be a nonlinear function of displacements. If nothing special is given in the sif file, the nonlinear measure of strain is computed as E = 1/2 [grad u + grad u^T + (grad u)^T(grad u)]. StressSolve neglects the nonlinear part 1/2 (grad u)^T(grad u) . If one gives
Code: Select all
Large Deflection = False
So this doesn't imply that the strain measure would be a linear function of displacements.
Re: wrong displacement values using "ElasticSolver"?
Hi kevinarden,
thanks for your reply.
This is a very simple test case which shows that the displacement obtained with ElasticSolver + iterative solver might be wrong.
However, I'll need to use this combination (ElasticSolver + iterative solver) on larger non-linear problems, where I cannot use direct solver (runs out of memory) and StressSolver (suitable for linear problems only).
So, my aim would be to obtain a correct solution on this simple test case by using ElasticSolver + iterative solver, so that I can be more confident to obtain a correct solution on more complex and larger problems, that I cannot verify by other means.
One thing I can't understand is how can ElasticSolver + iterative solver give wrong displacement (and strain) but correct stress values? (this, at least, is what I understand). Aren't stress and strain simply related by the Young's modulus? So, how can strain be wrong and stress be correct?
Very similar wrong displacement result obtained by using ElasticSolver + :
Elmer Version: 9.0 (Rev: Release, Compiled: 2024-05-23)
Linear System Solver = Iterative
Linear System Iterative Method = BiCGStab, BiCGStabl, TFQMR, GCR, CGS, CG
and
Linear System Solver = Direct
Linear System Direct Method = Umfpack, Banded
Thanks
thanks for your reply.
This is a very simple test case which shows that the displacement obtained with ElasticSolver + iterative solver might be wrong.
However, I'll need to use this combination (ElasticSolver + iterative solver) on larger non-linear problems, where I cannot use direct solver (runs out of memory) and StressSolver (suitable for linear problems only).
So, my aim would be to obtain a correct solution on this simple test case by using ElasticSolver + iterative solver, so that I can be more confident to obtain a correct solution on more complex and larger problems, that I cannot verify by other means.
One thing I can't understand is how can ElasticSolver + iterative solver give wrong displacement (and strain) but correct stress values? (this, at least, is what I understand). Aren't stress and strain simply related by the Young's modulus? So, how can strain be wrong and stress be correct?
Very similar wrong displacement result obtained by using ElasticSolver + :
Elmer Version: 9.0 (Rev: Release, Compiled: 2024-05-23)
Linear System Solver = Iterative
Linear System Iterative Method = BiCGStab, BiCGStabl, TFQMR, GCR, CGS, CG
and
Linear System Solver = Direct
Linear System Direct Method = Umfpack, Banded
Thanks
Re: wrong displacement values using "ElasticSolver"?
Hi mika,
thanks for your reply.
Adding
Large Deflection = False
to Solver 1 section did not make any difference.
thanks for your reply.
Adding
Large Deflection = False
to Solver 1 section did not make any difference.
Re: wrong displacement values using "ElasticSolver"?
Hi
Just noticed that with ElasticSolver,
regardless of the line
by setting
yields the correct displacement, while by setting
(or higher values) yields the wrong displacement.
However, on a more complex/larger problem, how can one know how to set the Nonlinear System Max Iterations?
The solution to this issue is still not clear to me, sorry!
Regards
Just noticed that with ElasticSolver,
regardless of the line
Code: Select all
Large Deflection = False
Code: Select all
Nonlinear System Max Iterations = 1
Code: Select all
Nonlinear System Max Iterations = 2
However, on a more complex/larger problem, how can one know how to set the Nonlinear System Max Iterations?
The solution to this issue is still not clear to me, sorry!
Regards
-
- Posts: 2418
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: wrong displacement values using "ElasticSolver"?
By "nothing non-linear" I meant I thought the displacements were to small too reach the large displacement theory,
Yes ElasticSolver is using the large deflection formulation
According to the manual
Large Deflection = False
only shows up in the shell solver, not ElasticSolver
Yes ElasticSolver is using the large deflection formulation
According to the manual
Large Deflection = False
only shows up in the shell solver, not ElasticSolver
-
- Posts: 2418
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: wrong displacement values using "ElasticSolver"?
If I run it in steps instead of steady state, the result path is not a linear line, there is a curve, a non-linear response
Large Deflection = False
which elastic solver ignores
This is with theLarge Deflection = False
which elastic solver ignores
Re: wrong displacement values using "ElasticSolver"?
Hi kevinarden,
in steady-state, the displacement of a spring is proportional to the force applied. The problem is linear.
If you do a transient analysis, the response of a mass-spring-damper system can go from exponential to oscillatory, depending on the system parameters. In our case there is no damping, so the response of a spring-mass system shall be sinusoidal.
By adding the density (1000) to the material properties and setting the Simulation section as follows (only relevant lines):
and by using the StressSolver one can obtain the following displacement:
which is similar to a sinusoidal waveform.
Now, I'm not an expert. This is not a lumped mass system, but a distributed mass system. In a lumped mass system with no damping the displacement must be sinusoidal (plus an offset which depends from the initial conditions). In our case, as I said, I don't know if the displacement shall be sinusoidal or not, but I'd suppose so.
in steady-state, the displacement of a spring is proportional to the force applied. The problem is linear.
If you do a transient analysis, the response of a mass-spring-damper system can go from exponential to oscillatory, depending on the system parameters. In our case there is no damping, so the response of a spring-mass system shall be sinusoidal.
By adding the density (1000) to the material properties and setting the Simulation section as follows (only relevant lines):
Code: Select all
Simulation Type = Transient
Timestepping Method = BDF
BDF Order = 2
Timestep Sizes = 0.1e-3
Timestep Intervals = 200
Now, I'm not an expert. This is not a lumped mass system, but a distributed mass system. In a lumped mass system with no damping the displacement must be sinusoidal (plus an offset which depends from the initial conditions). In our case, as I said, I don't know if the displacement shall be sinusoidal or not, but I'd suppose so.
-
- Posts: 2418
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: wrong displacement values using "ElasticSolver"?
I did not do transient, I did scanning, which does not incorporate the acceleration or velocity terms.