Dear Alex, Thanks for your interest in the framework. I guess it is all about the use of
asm_linear_elasticity which was probably never meant to be used in 1D. The brick that you have used is equivalent to the generic weak form language expression (lambda*Trace(Grad_u)*Id(qdim(u)) + mu*(Grad_u+Grad_u')):Grad_Test_u So basically you need to write the corresponding expression for a bar and use it with the asm_generic function instead of asm_linear_elasticity. Best regards Kostas On Thu, Sep 19, 2019 at 2:17 PM Alex Spring <[email protected]> wrote: > Dear All, > > I am handling a bar in GetFEM++ framework. This post is questioning about > unexpected non-zero values in a stiffness matrix K. I believe that thinking > about it helps deeper understanding of the framework. > > The problem considered is: > """ > Bar: > 0----1 > (point: 0, 1; convex: 0 (0-1), segment or 1d-simplex)) > (2 dof (u, v) on a single point) > Coordinate system: > ^ y, v, Fy > | > ----> x, u, Fx > Expected for the convex 0 (0-1): > K U = F > [ 1, 0, -1, 0] [u0] [Fx0] > [ 0, 0, 0, 0] [v0] [Fy0] > [-1, 0, 1, 0] [u1] [Fx1] > [ 0, 0, 0, 0] [v1] [Fy1] > (K: stiffness matrix, U: displacement vector, F: force vector) > (A bar should have zero stiffness in the transverse direction (i.e. y- > or v-direction here).) > """ > > I believe that we can handle a bar using FEM_PK(1, 1) ((1, 1): first 1 for > 1d-simplex (i.e. segment), second 1 for 2-nodes on a segment). > > However, obtained K has unexpected non-zero values: > """ > Obtained for the convex 0 (0-1) : > K U = F > [ 1, 0, -1, 0] [u0] [Fx0] > [ 0, 0.5, 0, -0.5] [v0] [Fy0] > [ -1, 0, 1, 0] [u1] [Fx1] > [ 0, -0.5, 0, 0.5] [v1] [Fy1] > (K22, K24, K42, K44 are expected to be 0.) > """ > > Can we know why K has 0.5 values like this? This behavior is unexpected > for me (or possibly for people with structural background), but I guess > that this behavior is logically expectable and explainable. I searched > getfem-users-archives and looked into FEM_PK, GT_PK and some > implementations but could not find the reason. The reason would be about > the same interpolation of u and v if |K22|, |K24|, |K42|, |K44| were 1, but > actually they are 0.5. > > Could you please give your comments? Any ideas are welcome. It really > helps understanding the framework. > > Attached is the script for python3. The script explicitly obtains > stiffness matrix K using gf.asm_linear_elasticity(...). The other part is > similar to Roman's one: > [Getfem-users] Solving truss structure in GetFEM++ (via Python) > https://lists.nongnu.org/archive/html/getfem-users/2011-03/msg00009.html > > *I like GetFEM++ way: separative design (GeoTrans, Mesh, Fem, Im, ...); > high and low layers (Model, asm_...); point and convex; and so on.and so > on. > > Best regards, > Alex Spring > >
