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/issue66-3Dexample/pymks/elasticFEModel3D...
2D https://github.com/PyMKS/pymks/blob/issue66-3Dexample/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 x-direction 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.87759988e-15 -2.87436852e-15 -3.24740235e-15]]
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/#%21topic/sfepy-devel/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/issue66-3Dexample/pymks/elasticFEModel3D...
2D https://github.com/PyMKS/pymks/blob/issue66-3Dexample/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 x-direction 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.87759988e-15 -2.87436852e-15 -3.24740235e-15]]
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/#%21topic/sfepy-devel/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 UTC-4, 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.
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/issue66-3Dexample/pymks/elasticFEModel3D...
2D
https://github.com/PyMKS/pymks/blob/issue66-3Dexample/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 x-direction 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.
3.]]
y - displacement [[ 0.00000000e+00 -1.87759988e-15 -2.87436852e-15 -3.24740235e-15]]
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/#%21topic/sfepy-devel/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 UTC-4, 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.
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/issue66-3Dexample/pymks/elasticFEModel3D...
2D
https://github.com/PyMKS/pymks/blob/issue66-3Dexample/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 x-direction 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.
3.]]
y - displacement [[ 0.00000000e+00 -1.87759988e-15 -2.87436852e-15 -3.24740235e-15]]
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/#%21topic/sfepy-devel/VpVHXS7Jh0Q,
but
in 3D?
Thanks,
David