Hello, GetFEM project.

I have a problem using the add_bilaplacian_brick method of the Model
object. My wish is to get the following stiffness matrix in the attached
script file, but I got an empty stiffness matrix.

Trace 2 in getfem_fourth_order.cc, line 88: Stiffness matrix assembly of a
bilaplacian term
Computed matrix is...
matrix(2, 2)
( )
( )

Expected matrix is...
matrix(2, 2)
( (r0, 100) (r1, -100) )
( (r0, -100) (r1, 100) )

I'm sorry, but could you please review my script to see if there is any
problem?
I used the developing version in the git repository.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Python GetFEM interface
#
# Copyright (C) 2020-2020 Tetsuo Koyama.
#
# This file is a part of GetFEM
#
# GetFEM  is  free software;  you  can  redistribute  it  and/or modify it
# under  the  terms  of the  GNU  Lesser General Public License as published
# by  the  Free Software Foundation;  either version 2.1 of the License,  or
# (at your option) any later version.
# This program  is  distributed  in  the  hope  that it will be useful,  but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or  FITNESS  FOR  A PARTICULAR PURPOSE.  See the GNU Lesser General Public
# License for more details.
# You  should  have received a copy of the GNU Lesser General Public License
# along  with  this program;  if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
#
############################################################################
""" 1D Truss problem test.

  This program is used to check that python-getfem is working. This is
  also a good example of use of GetFEM.

  $Id$
"""
import getfem as gf
import numpy as np

E = 1.0E+05   # Young Modulus (N/mm^2)
A = 1.0       # Cross-Sectional Area (mm^2)
L = 1000.0    # Length (mm)

mesh = gf.Mesh("cartesian", [0, L])
mfu = gf.MeshFem(mesh, 1)

element_degree = 1
mfu.set_classical_fem(element_degree)

mim = gf.MeshIm(mesh, element_degree*2)

model = gf.Model("real")
model.add_fem_variable("u", mfu)

model.add_initialized_data("D", [E*A])
model.add_bilaplacian_brick(mim, "u", "D")

model.assembly()
SM = model.tangent_matrix()

print("Computed matrix is...")
print(SM)
print("Expected matrix is...")
SM = gf.Spmat("empty", 2, 2)
SM.add(0, 0, E*A/L)
SM.add(0, 1, -E*A/L)
SM.add(1, 0, -E*A/L)
SM.add(1, 1, E*A/L)
print(SM)

Reply via email to