getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Getfem-users] unexpected non-zero values in a stiffness matrix K: a


From: Konstantinos Poulios
Subject: Re: [Getfem-users] unexpected non-zero values in a stiffness matrix K: a bar (or truss) problem
Date: Thu, 19 Sep 2019 15:18:11 +0200

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 <address@hidden> 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]