Linear Elasticity Problem

Summary

Solves a 3D linear elasticity problem for the deformation of a mult-material cantiliver beam. This example is based on MFEM Example 2.

Description

This problem solves a linear elasticity problem for small deformations with strong form:

where Einstein notation for summation over repeated indices has been used, and the pull-down force is given by

In this example, the stress/strain relation is taken to be isotropic, such that

In this example, we solve this using the weak form

where

Material Parameters

In this example, the cantilever beam is comprised of two materials; a stiffer material on the block with domain attribute 1, and a more flexible material defined on the block with domain attribute 2. These materials are parametrised with different values for the Lamé parameters, and , on the two domains.

The two Lamé parameters can be expressed in terms of the Young's modulus and the Poisson ratio in each material, using

Example File

[Mesh]
  type = MFEMMesh
  file = gold/beam-tet.mesh
  dim = 3
  uniform_refine = 2
  displacement = "displacement"
[]

[Problem]
  type = MFEMProblem
[]

[FESpaces]
  [H1FESpace]
    type = MFEMVectorFESpace
    fec_type = H1
    fec_order = FIRST
    range_dim = 3
    ordering = "vdim"
  []
[]

[Variables]
  [displacement]
    type = MFEMVariable
    fespace = H1FESpace
  []
[]

[BCs]
  [dirichlet]
    type = MFEMVectorDirichletBC
    variable = displacement
    boundary = '1'
    values = '0.0 0.0 0.0'
  []
  [pull_down]
    type = MFEMVectorBoundaryIntegratedBC
    variable = displacement
    boundary = '2'
    values = '0.0 0.0 -0.01'
  []
[]

[Materials]
  [Rigidium]
    type = MFEMGenericConstantMaterial
    prop_names = 'lambda mu'
    prop_values = '50.0 50.0'
    block = 1
  []
  [Bendium]
    type = MFEMGenericConstantMaterial
    prop_names = 'lambda mu'
    prop_values = '1.0 1.0'
    block = 2
  []
[]

[Kernels]
  [diff]
    type = MFEMLinearElasticityKernel
    variable = displacement
    lambda = lambda
    mu = mu
  []
[]

[Preconditioner]
  [boomeramg]
    type = MFEMHypreBoomerAMG
    l_max_its = 500
    l_tol = 1e-8
    print_level = 2
  []
[]

[Solver]
  type = MFEMHyprePCG
  #preconditioner = boomeramg
  l_max_its = 5000
  l_tol = 1e-8
  l_abs_tol = 0.0
  print_level = 2
[]

[Executioner]
  type = MFEMSteady
  device = "cpu"
[]

[Outputs]
  [ParaViewDataCollection]
    type = MFEMParaViewDataCollection
    file_base = OutputData/LinearElasticity
    vtk_format = ASCII
  []
[]
(test/tests/kernels/linearelasticity.i)