Displacement Controlled Isotropic Elasticity Examples in 2D and 3D
Hello,
I am using SfePy to compute the strain fields for an isotropic material in both 2D and 3D with displacement boundary conditions in the x boundaries and periodic boundary conditions on the other boundaries. The corners on the x line/plane are also fixed in all directions. Below are links to the files for both simulations.
3D https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel3D...
2D https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel.p...
In both of these files, the displacements are currently being returned and not the strain. In both models, the displacements fields should run from 0.0 to 3.0 in the xdirection and be zero in the other direction(s). The 2D example gives the expected values, while the 3D example does not. Below are the displacements of one row of vertices in each of the directions.
2D x  displacement [[ 0. 1. 2. 3.]] y  displacement [[ 0.00000000e+00 1.87759988e15 2.87436852e15 3.24740235e15]]
3D
x  displacement [[ 0. 4.2962163
5.88616087 3.]]
y  displacement [[ 0. 13.22615623
13.19390252 24.60315355]]
z  displacement [[ 0. 11.78213038
11.78213038 16.76530931]]
Any thoughts? Do I have the periodic boundary conditions correct or do I need to do something similar to what was suggested in this post https://groups.google.com/forum/#!topic/sfepydevel/VpVHXS7Jh0Q, but in 3D?
Thanks,
David
Hello David,
this was a tricky one  the code was perfectly correct. The only hint was provided by umfpack complaining about a singular matrix. The problem is an insufficient quadrature order  try increasing it from 3 to 4.
Explanation: the approx. order 2 means 2x2x2 for tensor product elements in 3D. The elasticity uses strains, but that then does not mean it is linear  the components have polynomial orders 1x2x2 (du_1/dx_1), etc. And two functions e(u) and e(v) are multiplied, which gives quadrature order 4 is necessary (in the sense 4x4x4).
Does that help? r.
On 06/20/2014 08:01 PM, David Brough wrote:
Hello,
I am using SfePy to compute the strain fields for an isotropic material in both 2D and 3D with displacement boundary conditions in the x boundaries and periodic boundary conditions on the other boundaries. The corners on the x line/plane are also fixed in all directions. Below are links to the files for both simulations.
3D https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel3D...
2D https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel.p...
In both of these files, the displacements are currently being returned and not the strain. In both models, the displacements fields should run from 0.0 to 3.0 in the xdirection and be zero in the other direction(s). The 2D example gives the expected values, while the 3D example does not. Below are the displacements of one row of vertices in each of the directions.
2D x  displacement [[ 0. 1. 2. 3.]] y  displacement [[ 0.00000000e+00 1.87759988e15 2.87436852e15 3.24740235e15]]
3D
x  displacement [[ 0. 4.2962163 5.88616087 3.]] y  displacement [[ 0. 13.22615623 13.19390252 24.60315355]] z  displacement [[ 0. 11.78213038 11.78213038 16.76530931]]
Any thoughts? Do I have the periodic boundary conditions correct or do I need to do something similar to what was suggested in this post https://groups.google.com/forum/#!topic/sfepydevel/VpVHXS7Jh0Q, but in 3D?
Thanks,
David
It works! Thanks. I really appreciate the fast and thorough response. You're awesome.
Thanks,
David
On Friday, June 20, 2014 5:54:55 PM UTC4, Robert Cimrman wrote:
Hello David,
this was a tricky one  the code was perfectly correct. The only hint was provided by umfpack complaining about a singular matrix. The problem is an insufficient quadrature order  try increasing it from 3 to 4.
Explanation: the approx. order 2 means 2x2x2 for tensor product elements in 3D. The elasticity uses strains, but that then does not mean it is linear  the components have polynomial orders 1x2x2 (du_1/dx_1), etc. And two functions e(u) and e(v) are multiplied, which gives quadrature order 4 is necessary (in the sense 4x4x4).
Does that help? r.
Hello,
I am using SfePy to compute the strain fields for an isotropic material in both 2D and 3D with displacement boundary conditions in the x boundaries and periodic boundary conditions on the other boundaries. The corners on the x line/plane are also fixed in all directions. Below are links to
On 06/20/2014 08:01 PM, David Brough wrote: the
files for both simulations.
3D
https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel3D...
2D
https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel.p...
In both of these files, the displacements are currently being returned
not the strain. In both models, the displacements fields should run from 0.0 to 3.0 in the xdirection and be zero in the other direction(s). The 2D example gives the expected values, while the 3D example does not. Below are the displacements of one row of vertices in each of the directions.
2D x  displacement [[ 0. 1.
and 2.
3.]]
y  displacement [[ 0.00000000e+00 1.87759988e15 2.87436852e15 3.24740235e15]]
3D
x  displacement [[ 0. 4.2962163 5.88616087 3.]] y  displacement [[ 0. 13.22615623 13.19390252 24.60315355]] z  displacement [[ 0. 11.78213038 11.78213038 16.76530931]]
Any thoughts? Do I have the periodic boundary conditions correct or do I need to do something similar to what was suggested in this post https://groups.google.com/forum/#!topic/sfepydevel/VpVHXS7Jh0Q,
but
in 3D?
Thanks,
David
On 06/23/2014 03:26 PM, David Brough wrote:
It works! Thanks. I really appreciate the fast and thorough response. You're awesome.
Hth! Those things should probably be somewhere in the docs.
r.
Thanks,
David
On Friday, June 20, 2014 5:54:55 PM UTC4, Robert Cimrman wrote:
Hello David,
this was a tricky one  the code was perfectly correct. The only hint was provided by umfpack complaining about a singular matrix. The problem is an insufficient quadrature order  try increasing it from 3 to 4.
Explanation: the approx. order 2 means 2x2x2 for tensor product elements in 3D. The elasticity uses strains, but that then does not mean it is linear  the components have polynomial orders 1x2x2 (du_1/dx_1), etc. And two functions e(u) and e(v) are multiplied, which gives quadrature order 4 is necessary (in the sense 4x4x4).
Does that help? r.
Hello,
I am using SfePy to compute the strain fields for an isotropic material in both 2D and 3D with displacement boundary conditions in the x boundaries and periodic boundary conditions on the other boundaries. The corners on the x line/plane are also fixed in all directions. Below are links to
On 06/20/2014 08:01 PM, David Brough wrote: the
files for both simulations.
3D
https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel3D...
2D
https://github.com/PyMKS/pymks/blob/issue663Dexample/pymks/elasticFEModel.p...
In both of these files, the displacements are currently being returned
not the strain. In both models, the displacements fields should run from 0.0 to 3.0 in the xdirection and be zero in the other direction(s). The 2D example gives the expected values, while the 3D example does not. Below are the displacements of one row of vertices in each of the directions.
2D x  displacement [[ 0. 1.
and 2.
3.]]
y  displacement [[ 0.00000000e+00 1.87759988e15 2.87436852e15 3.24740235e15]]
3D
x  displacement [[ 0. 4.2962163 5.88616087 3.]] y  displacement [[ 0. 13.22615623 13.19390252 24.60315355]] z  displacement [[ 0. 11.78213038 11.78213038 16.76530931]]
Any thoughts? Do I have the periodic boundary conditions correct or do I need to do something similar to what was suggested in this post https://groups.google.com/forum/#!topic/sfepydevel/VpVHXS7Jh0Q,
but
in 3D?
Thanks,
David
participants (2)

David Brough

Robert Cimrman